HaXml (empty) → 1.13.2
raw patch · 234 files changed
+92354/−0 lines, 234 filesdep +basedep +haskell98build-type:Customsetup-changedbinary-added
Dependencies added: base, haskell98
Files
- Build.bat +84/−0
- COPYRIGHT +35/−0
- HaXml.cabal +68/−0
- LICENCE-GPL +342/−0
- LICENCE-LGPL +507/−0
- Makefile +110/−0
- README +87/−0
- Setup.hs +2/−0
- configure +311/−0
- docs/Combinators.html +37/−0
- docs/HaXml/Text-ParserCombinators-HuttonMeijerWallace.html +1108/−0
- docs/HaXml/Text-XML-HaXml-Combinators.html +2230/−0
- docs/HaXml/Text-XML-HaXml-DtdToHaskell-Convert.html +112/−0
- docs/HaXml/Text-XML-HaXml-DtdToHaskell-Instance.html +134/−0
- docs/HaXml/Text-XML-HaXml-DtdToHaskell-TypeDef.html +1063/−0
- docs/HaXml/Text-XML-HaXml-Escape.html +170/−0
- docs/HaXml/Text-XML-HaXml-Haskell2Xml.html +1176/−0
- docs/HaXml/Text-XML-HaXml-Html-Generate.html +1167/−0
- docs/HaXml/Text-XML-HaXml-Html-Parse.html +142/−0
- docs/HaXml/Text-XML-HaXml-Html-Pretty.html +152/−0
- docs/HaXml/Text-XML-HaXml-Lex.html +1334/−0
- docs/HaXml/Text-XML-HaXml-OneOfN.html +3791/−0
- docs/HaXml/Text-XML-HaXml-Parse.html +299/−0
- docs/HaXml/Text-XML-HaXml-Pretty.html +378/−0
- docs/HaXml/Text-XML-HaXml-Types.html +4832/−0
- docs/HaXml/Text-XML-HaXml-Validate.html +194/−0
- docs/HaXml/Text-XML-HaXml-Verbatim.html +429/−0
- docs/HaXml/Text-XML-HaXml-Wrappers.html +169/−0
- docs/HaXml/Text-XML-HaXml-Xml2Haskell.html +2315/−0
- docs/HaXml/Text-XML-HaXml-Xtract-Combinators.html +841/−0
- docs/HaXml/Text-XML-HaXml-Xtract-Lex.html +286/−0
- docs/HaXml/Text-XML-HaXml-Xtract-Parse.html +184/−0
- docs/HaXml/Text-XML-HaXml.html +336/−0
- docs/HaXml/Text.ParserCombinators.HuttonMeijerWallace.html +1075/−0
- docs/HaXml/Text.PrettyPrint.HughesPJ.html +845/−0
- docs/HaXml/Text.XML.HaXml.Combinators.html +2156/−0
- docs/HaXml/Text.XML.HaXml.DtdToHaskell.Convert.html +112/−0
- docs/HaXml/Text.XML.HaXml.DtdToHaskell.Instance.html +130/−0
- docs/HaXml/Text.XML.HaXml.DtdToHaskell.TypeDef.html +1027/−0
- docs/HaXml/Text.XML.HaXml.Escape.html +157/−0
- docs/HaXml/Text.XML.HaXml.Haskell2Xml.html +1134/−0
- docs/HaXml/Text.XML.HaXml.Html.Generate.html +1151/−0
- docs/HaXml/Text.XML.HaXml.Html.Parse.html +137/−0
- docs/HaXml/Text.XML.HaXml.Html.Pretty.html +146/−0
- docs/HaXml/Text.XML.HaXml.Lex.html +1277/−0
- docs/HaXml/Text.XML.HaXml.OneOfN.html +1799/−0
- docs/HaXml/Text.XML.HaXml.Parse.html +287/−0
- docs/HaXml/Text.XML.HaXml.Pretty.html +362/−0
- docs/HaXml/Text.XML.HaXml.Types.html +4775/−0
- docs/HaXml/Text.XML.HaXml.Validate.html +188/−0
- docs/HaXml/Text.XML.HaXml.Verbatim.html +421/−0
- docs/HaXml/Text.XML.HaXml.Wrappers.html +164/−0
- docs/HaXml/Text.XML.HaXml.Xml2Haskell.html +2300/−0
- docs/HaXml/Text.XML.HaXml.Xtract.Combinators.html +829/−0
- docs/HaXml/Text.XML.HaXml.Xtract.Lex.html +190/−0
- docs/HaXml/Text.XML.HaXml.Xtract.Parse.html +178/−0
- docs/HaXml/Text.XML.HaXml.html +331/−0
- docs/HaXml/doc-index-124.html +190/−0
- docs/HaXml/doc-index-33.html +182/−0
- docs/HaXml/doc-index-43.html +182/−0
- docs/HaXml/doc-index-47.html +190/−0
- docs/HaXml/doc-index-58.html +182/−0
- docs/HaXml/doc-index-60.html +190/−0
- docs/HaXml/doc-index-63.html +190/−0
- docs/HaXml/doc-index-A.html +390/−0
- docs/HaXml/doc-index-B.html +190/−0
- docs/HaXml/doc-index-C.html +464/−0
- docs/HaXml/doc-index-D.html +422/−0
- docs/HaXml/doc-index-E.html +814/−0
- docs/HaXml/doc-index-F.html +682/−0
- docs/HaXml/doc-index-G.html +210/−0
- docs/HaXml/doc-index-H.html +422/−0
- docs/HaXml/doc-index-I.html +342/−0
- docs/HaXml/doc-index-K.html +182/−0
- docs/HaXml/doc-index-L.html +254/−0
- docs/HaXml/doc-index-M.html +374/−0
- docs/HaXml/doc-index-N.html +510/−0
- docs/HaXml/doc-index-O.html +698/−0
- docs/HaXml/doc-index-P.html +522/−0
- docs/HaXml/doc-index-Q.html +182/−0
- docs/HaXml/doc-index-R.html +258/−0
- docs/HaXml/doc-index-S.html +690/−0
- docs/HaXml/doc-index-T.html +1218/−0
- docs/HaXml/doc-index-U.html +182/−0
- docs/HaXml/doc-index-V.html +222/−0
- docs/HaXml/doc-index-W.html +198/−0
- docs/HaXml/doc-index-X.html +314/−0
- docs/HaXml/doc-index-tA.html +135/−0
- docs/HaXml/doc-index-tB.html +45/−0
- docs/HaXml/doc-index-tC.html +191/−0
- docs/HaXml/doc-index-tD.html +117/−0
- docs/HaXml/doc-index-tE.html +271/−0
- docs/HaXml/doc-index-tF.html +59/−0
- docs/HaXml/doc-index-tG.html +59/−0
- docs/HaXml/doc-index-tH.html +65/−0
- docs/HaXml/doc-index-tI.html +101/−0
- docs/HaXml/doc-index-tJ.html +45/−0
- docs/HaXml/doc-index-tK.html +45/−0
- docs/HaXml/doc-index-tL.html +67/−0
- docs/HaXml/doc-index-tM.html +111/−0
- docs/HaXml/doc-index-tN.html +147/−0
- docs/HaXml/doc-index-tO.html +235/−0
- docs/HaXml/doc-index-tP.html +181/−0
- docs/HaXml/doc-index-tQ.html +45/−0
- docs/HaXml/doc-index-tR.html +59/−0
- docs/HaXml/doc-index-tS.html +117/−0
- docs/HaXml/doc-index-tT.html +133/−0
- docs/HaXml/doc-index-tU.html +45/−0
- docs/HaXml/doc-index-tV.html +71/−0
- docs/HaXml/doc-index-tW.html +45/−0
- docs/HaXml/doc-index-tX.html +101/−0
- docs/HaXml/doc-index-tY.html +45/−0
- docs/HaXml/doc-index-tZ.html +45/−0
- docs/HaXml/doc-index-vA.html +261/−0
- docs/HaXml/doc-index-vB.html +87/−0
- docs/HaXml/doc-index-vC.html +337/−0
- docs/HaXml/doc-index-vD.html +319/−0
- docs/HaXml/doc-index-vE.html +737/−0
- docs/HaXml/doc-index-vF.html +693/−0
- docs/HaXml/doc-index-vG.html +81/−0
- docs/HaXml/doc-index-vH.html +389/−0
- docs/HaXml/doc-index-vI.html +243/−0
- docs/HaXml/doc-index-vJ.html +45/−0
- docs/HaXml/doc-index-vK.html +57/−0
- docs/HaXml/doc-index-vL.html +155/−0
- docs/HaXml/doc-index-vM.html +223/−0
- docs/HaXml/doc-index-vN.html +417/−0
- docs/HaXml/doc-index-vO.html +429/−0
- docs/HaXml/doc-index-vP.html +425/−0
- docs/HaXml/doc-index-vQ.html +69/−0
- docs/HaXml/doc-index-vR.html +187/−0
- docs/HaXml/doc-index-vS.html +657/−0
- docs/HaXml/doc-index-vT.html +1271/−0
- docs/HaXml/doc-index-vU.html +57/−0
- docs/HaXml/doc-index-vV.html +101/−0
- docs/HaXml/doc-index-vW.html +81/−0
- docs/HaXml/doc-index-vX.html +177/−0
- docs/HaXml/doc-index-vY.html +45/−0
- docs/HaXml/doc-index-vZ.html +55/−0
- docs/HaXml/doc-index.html +168/−0
- docs/HaXml/haddock.css +260/−0
- docs/HaXml/haddock.js +15/−0
- docs/HaXml/haskell_icon.gif binary
- docs/HaXml/index.html +385/−0
- docs/HaXml/minus.gif binary
- docs/HaXml/plus.gif binary
- docs/Haskell2Xml.html +76/−0
- docs/Xml2Haskell.html +104/−0
- docs/Xtract.html +451/−0
- docs/brubeck.gif binary
- docs/changelog.html +308/−0
- docs/icfp99.dvi binary
- docs/icfp99.html +2215/−0
- docs/icfp99.ps.gz binary
- docs/index.html +280/−0
- examples/AlbumDTD.hs +313/−0
- examples/App.hs +22/−0
- examples/DTDpp.hs +32/−0
- examples/DTypes.hs +149/−0
- examples/DebugLex.hs +17/−0
- examples/Example.hs +14/−0
- examples/OpenOffice.org/Blocklist.dtd +62/−0
- examples/OpenOffice.org/chart.mod +290/−0
- examples/OpenOffice.org/datastyl.mod +234/−0
- examples/OpenOffice.org/defs.mod +84/−0
- examples/OpenOffice.org/drawing.mod +886/−0
- examples/OpenOffice.org/dtypes.mod +171/−0
- examples/OpenOffice.org/form.mod +340/−0
- examples/OpenOffice.org/meta.mod +118/−0
- examples/OpenOffice.org/nmspace.mod +80/−0
- examples/OpenOffice.org/office.dtd +83/−0
- examples/OpenOffice.org/office.mod +270/−0
- examples/OpenOffice.org/office2.dtd +4010/−0
- examples/OpenOffice.org/script.mod +79/−0
- examples/OpenOffice.org/settings.mod +77/−0
- examples/OpenOffice.org/style.mod +448/−0
- examples/OpenOffice.org/table.mod +522/−0
- examples/OpenOffice.org/text.mod +1126/−0
- examples/README +77/−0
- examples/SMIL/DTD_SMIL20.hs +2446/−0
- examples/SMIL/SMIL-anim.mod +175/−0
- examples/SMIL/SMIL-control.mod +71/−0
- examples/SMIL/SMIL-layout.mod +134/−0
- examples/SMIL/SMIL-link.mod +105/−0
- examples/SMIL/SMIL-media.mod +179/−0
- examples/SMIL/SMIL-metainformation.mod +48/−0
- examples/SMIL/SMIL-struct.mod +51/−0
- examples/SMIL/SMIL-timing.mod +80/−0
- examples/SMIL/SMIL-transition.mod +94/−0
- examples/SMIL/SMIL20.dtd +108/−0
- examples/SMIL/smil-attribs-1.mod +205/−0
- examples/SMIL/smil-datatypes-1.mod +41/−0
- examples/SMIL/smil-framework-1.mod +67/−0
- examples/SMIL/smil-model-1.mod +223/−0
- examples/SMIL/smil-qname-1.mod +164/−0
- examples/SimpleTest.hs +43/−0
- examples/SimpleTestBool.hs +16/−0
- examples/SimpleTestD.hs +103/−0
- examples/Types.hs +20/−0
- examples/album.dtd +34/−0
- examples/album.xml +40/−0
- examples/subjdb.xml +53/−0
- rpm.spec +120/−0
- script/echo.c +20/−0
- src/Makefile +114/−0
- src/Text/ParserCombinators/HuttonMeijerWallace.hs +297/−0
- src/Text/XML/HaXml.hs +34/−0
- src/Text/XML/HaXml/Combinators.hs +405/−0
- src/Text/XML/HaXml/DtdToHaskell/Convert.hs +126/−0
- src/Text/XML/HaXml/DtdToHaskell/Instance.hs +322/−0
- src/Text/XML/HaXml/DtdToHaskell/TypeDef.hs +204/−0
- src/Text/XML/HaXml/Escape.hs +278/−0
- src/Text/XML/HaXml/Haskell2Xml.hs +379/−0
- src/Text/XML/HaXml/Html/Generate.hs +175/−0
- src/Text/XML/HaXml/Html/Parse.hs +693/−0
- src/Text/XML/HaXml/Html/Pretty.hs +234/−0
- src/Text/XML/HaXml/Lex.hs +349/−0
- src/Text/XML/HaXml/OneOfN.hs +553/−0
- src/Text/XML/HaXml/Parse.hs +713/−0
- src/Text/XML/HaXml/Pretty.hs +259/−0
- src/Text/XML/HaXml/Types.hs +251/−0
- src/Text/XML/HaXml/Validate.hs +266/−0
- src/Text/XML/HaXml/Verbatim.hs +91/−0
- src/Text/XML/HaXml/Wrappers.hs +61/−0
- src/Text/XML/HaXml/Xml2Haskell.hs +465/−0
- src/Text/XML/HaXml/Xtract/Combinators.hs +84/−0
- src/Text/XML/HaXml/Xtract/Lex.hs +124/−0
- src/Text/XML/HaXml/Xtract/Parse.hs +395/−0
- src/pkg.conf +16/−0
- src/tools/Canonicalise.hs +29/−0
- src/tools/DtdToHaskell.hs +51/−0
- src/tools/MkOneOf.hs +82/−0
- src/tools/Validate.hs +27/−0
- src/tools/Xtract.hs +51/−0
+ Build.bat view
@@ -0,0 +1,84 @@+REM -- Build HaXml package using GHC +REM +REM Usage: +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 GHC installation directory: +set GHCDIR=C:\DEV\ghc\ghc-6.4 + +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 AR=C:\DEV\MinGW\bin\ar.exe +set LD=C:\DEV\ghc\ghc-6.4\gcc-lib\ld.exe + +rem Source directory for HaXml: +set SRC=C:\DEV\Haskell\lib\HaXml-1.13.2\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 + + +rem -- Get on with the real work -- + +if "%1"=="Remove" goto Remove +if "%1"=="Tools" goto Tools + +rem -- Compile sources and create library archive +COPY HaXml.cabal %SRC%\pkg.conf +cd %SRC% +%GHC% --make -cpp -i. -package-name HaXml %SRCS% +%AR% r libHSHaXml.a %OBJS% + +rem -- Create library file for GHCi +%LD% -r --whole-archive -o HSHaXml.o libHSHaXml.a + +rem -- Install the library archive(s) where GHC can find them +COPY libHSHaXml.a %GHCDIR% +COPY HSHaXml.o %GHCDIR% + +rem -- Install the interface files where GHC can find them +rem /L - list only, /Y - overrite without confirmation +rem /S - copy subdirectories, /T - create directories only +rem /F - display full filenames while copying +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 + +goto Exit + + +rem -- Remove GHC package for HaXml -- +:Remove +%GHCPKG% --remove-package HaXml + +goto Exit + + +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 +cd .. + +goto Exit + + +rem -- All done -- + +:Exit
+ COPYRIGHT view
@@ -0,0 +1,35 @@+The HaXml library and tools were written by and are copyright to+ (c) copyright 1998-2005 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+LICENCE-LGPL, with the following special exception:++----+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.+----++The HaXml tools Xtract, Validate, DtdToHaskell, and MkOneOf, are+licensed under the terms of the GNU General Public Licence (GPL),+which can be found in the file called LICENCE-GPL.++This library and toolset is distributed in the hope that it will be+useful, but WITHOUT ANY WARRANTY; without even the implied warranty+of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+Licences for more details.++If these licensing terms are not acceptable to you, please contact me for+negotiation. :-)+ Malcolm.Wallace@cs.york.ac.uk
+ HaXml.cabal view
@@ -0,0 +1,68 @@+name: HaXml+version: 1.13.2+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+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.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.Pretty,+ Text.XML.HaXml.Lex,+ Text.XML.HaXml.OneOfN,+ Text.XML.HaXml.Parse,+ Text.XML.HaXml.Pretty,+ Text.XML.HaXml.Types,+ Text.XML.HaXml.Validate,+ Text.XML.HaXml.Verbatim,+ Text.XML.HaXml.Wrappers,+ Text.XML.HaXml.Xml2Haskell,+ Text.XML.HaXml.Xtract.Combinators,+ Text.XML.HaXml.Xtract.Lex,+ Text.XML.HaXml.Xtract.Parse+hs-source-dir: src+build-depends: base, haskell98+extensions: CPP++Executable: Canonicalise+GHC-Options: -Wall -O2+Extensions: CPP+Hs-Source-Dirs: src/tools, src+Main-Is: Canonicalise.hs++Executable: Xtract+GHC-Options: -Wall -O2+Extensions: CPP+Hs-Source-Dirs: src/tools, src+Main-Is: Xtract.hs++Executable: Validate+GHC-Options: -Wall -O2+Extensions: CPP+Hs-Source-Dirs: src/tools, src+Main-Is: Validate.hs++Executable: MkOneOf+GHC-Options: -Wall -O2+Extensions: CPP+Hs-Source-Dirs: src/tools, src+Main-Is: MkOneOf.hs++Executable: DtdToHaskell+GHC-Options: -Wall -O2+Extensions: CPP+Hs-Source-Dirs: src/tools, src+Main-Is: DtdToHaskell.hs
+ LICENCE-GPL view
@@ -0,0 +1,342 @@+ GNU GENERAL PUBLIC LICENSE+ Version 2, June 1991++ Copyright (C) 1989, 1991 Free Software Foundation, Inc.+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+ Everyone is permitted to copy and distribute verbatim copies+ of this license document, but changing it is not allowed.++ Preamble++ The licenses for most software are designed to take away your+freedom to share and change it. By contrast, the GNU General Public+License is intended to guarantee your freedom to share and change free+software--to make sure the software is free for all its users. This+General Public License applies to most of the Free Software+Foundation's software and to any other program whose authors commit to+using it. (Some other Free Software Foundation software is covered by+the GNU Library General Public License instead.) You can apply it to+your programs, too.++ When we speak of free software, we are referring to freedom, not+price. Our General Public Licenses are designed to make sure that you+have the freedom to distribute copies of free software (and charge for+this service if you wish), that you receive source code or can get it+if you want it, that you can change the software or use pieces of it+in new free programs; and that you know you can do these things.++ To protect your rights, we need to make restrictions that forbid+anyone to deny you these rights or to ask you to surrender the rights.+These restrictions translate to certain responsibilities for you if you+distribute copies of the software, or if you modify it.++ For example, if you distribute copies of such a program, whether+gratis or for a fee, you must give the recipients all the rights that+you have. You must make sure that they, too, receive or can get the+source code. And you must show them these terms so they know their+rights.++ We protect your rights with two steps: (1) copyright the software, and+(2) offer you this license which gives you legal permission to copy,+distribute and/or modify the software.++ Also, for each author's protection and ours, we want to make certain+that everyone understands that there is no warranty for this free+software. If the software is modified by someone else and passed on, we+want its recipients to know that what they have is not the original, so+that any problems introduced by others will not reflect on the original+authors' reputations.++ Finally, any free program is threatened constantly by software+patents. We wish to avoid the danger that redistributors of a free+program will individually obtain patent licenses, in effect making the+program proprietary. To prevent this, we have made it clear that any+patent must be licensed for everyone's free use or not licensed at all.++ The precise terms and conditions for copying, distribution and+modification follow.+++ GNU GENERAL PUBLIC LICENSE+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION++ 0. This License applies to any program or other work which contains+a notice placed by the copyright holder saying it may be distributed+under the terms of this General Public License. The "Program", below,+refers to any such program or work, and a "work based on the Program"+means either the Program or any derivative work under copyright law:+that is to say, a work containing the Program or a portion of it,+either verbatim or with modifications and/or translated into another+language. (Hereinafter, translation is included without limitation in+the term "modification".) Each licensee is addressed as "you".++Activities other than copying, distribution and modification are not+covered by this License; they are outside its scope. The act of+running the Program is not restricted, and the output from the Program+is covered only if its contents constitute a work based on the+Program (independent of having been made by running the Program).+Whether that is true depends on what the Program does.++ 1. You may copy and distribute verbatim copies of the Program's+source code as you receive it, in any medium, provided that you+conspicuously and appropriately publish on each copy an appropriate+copyright notice and disclaimer of warranty; keep intact all the+notices that refer to this License and to the absence of any warranty;+and give any other recipients of the Program a copy of this License+along with the Program.++You may charge a fee for the physical act of transferring a copy, and+you may at your option offer warranty protection in exchange for a fee.++ 2. You may modify your copy or copies of the Program or any portion+of it, thus forming a work based on the Program, and copy and+distribute such modifications or work under the terms of Section 1+above, provided that you also meet all of these conditions:++ a) You must cause the modified files to carry prominent notices+ stating that you changed the files and the date of any change.++ b) You must cause any work that you distribute or publish, that in+ whole or in part contains or is derived from the Program or any+ part thereof, to be licensed as a whole at no charge to all third+ parties under the terms of this License.++ c) If the modified program normally reads commands interactively+ when run, you must cause it, when started running for such+ interactive use in the most ordinary way, to print or display an+ announcement including an appropriate copyright notice and a+ notice that there is no warranty (or else, saying that you provide+ a warranty) and that users may redistribute the program under+ these conditions, and telling the user how to view a copy of this+ License. (Exception: if the Program itself is interactive but+ does not normally print such an announcement, your work based on+ the Program is not required to print an announcement.)++These requirements apply to the modified work as a whole. If+identifiable sections of that work are not derived from the Program,+and can be reasonably considered independent and separate works in+themselves, then this License, and its terms, do not apply to those+sections when you distribute them as separate works. But when you+distribute the same sections as part of a whole which is a work based+on the Program, the distribution of the whole must be on the terms of+this License, whose permissions for other licensees extend to the+entire whole, and thus to each and every part regardless of who wrote it.++Thus, it is not the intent of this section to claim rights or contest+your rights to work written entirely by you; rather, the intent is to+exercise the right to control the distribution of derivative or+collective works based on the Program.++In addition, mere aggregation of another work not based on the Program+with the Program (or with a work based on the Program) on a volume of+a storage or distribution medium does not bring the other work under+the scope of this License.++ 3. You may copy and distribute the Program (or a work based on it,+under Section 2) in object code or executable form under the terms of+Sections 1 and 2 above provided that you also do one of the following:++ a) Accompany it with the complete corresponding machine-readable+ source code, which must be distributed under the terms of Sections+ 1 and 2 above on a medium customarily used for software interchange; or,++ b) Accompany it with a written offer, valid for at least three+ years, to give any third party, for a charge no more than your+ cost of physically performing source distribution, a complete+ machine-readable copy of the corresponding source code, to be+ distributed under the terms of Sections 1 and 2 above on a medium+ customarily used for software interchange; or,++ c) Accompany it with the information you received as to the offer+ to distribute corresponding source code. (This alternative is+ allowed only for noncommercial distribution and only if you+ received the program in object code or executable form with such+ an offer, in accord with Subsection b above.)++The source code for a work means the preferred form of the work for+making modifications to it. For an executable work, complete source+code means all the source code for all modules it contains, plus any+associated interface definition files, plus the scripts used to+control compilation and installation of the executable. However, as a+special exception, the source code distributed need not include+anything that is normally distributed (in either source or binary+form) with the major components (compiler, kernel, and so on) of the+operating system on which the executable runs, unless that component+itself accompanies the executable.++If distribution of executable or object code is made by offering+access to copy from a designated place, then offering equivalent+access to copy the source code from the same place counts as+distribution of the source code, even though third parties are not+compelled to copy the source along with the object code.++ 4. You may not copy, modify, sublicense, or distribute the Program+except as expressly provided under this License. Any attempt+otherwise to copy, modify, sublicense or distribute the Program is+void, and will automatically terminate your rights under this License.+However, parties who have received copies, or rights, from you under+this License will not have their licenses terminated so long as such+parties remain in full compliance.++ 5. You are not required to accept this License, since you have not+signed it. However, nothing else grants you permission to modify or+distribute the Program or its derivative works. These actions are+prohibited by law if you do not accept this License. Therefore, by+modifying or distributing the Program (or any work based on the+Program), you indicate your acceptance of this License to do so, and+all its terms and conditions for copying, distributing or modifying+the Program or works based on it.++ 6. Each time you redistribute the Program (or any work based on the+Program), the recipient automatically receives a license from the+original licensor to copy, distribute or modify the Program subject to+these terms and conditions. You may not impose any further+restrictions on the recipients' exercise of the rights granted herein.+You are not responsible for enforcing compliance by third parties to+this License.++ 7. If, as a consequence of a court judgment or allegation of patent+infringement or for any other reason (not limited to patent issues),+conditions are imposed on you (whether by court order, agreement or+otherwise) that contradict the conditions of this License, they do not+excuse you from the conditions of this License. If you cannot+distribute so as to satisfy simultaneously your obligations under this+License and any other pertinent obligations, then as a consequence you+may not distribute the Program at all. For example, if a patent+license would not permit royalty-free redistribution of the Program by+all those who receive copies directly or indirectly through you, then+the only way you could satisfy both it and this License would be to+refrain entirely from distribution of the Program.++If any portion of this section is held invalid or unenforceable under+any particular circumstance, the balance of the section is intended to+apply and the section as a whole is intended to apply in other+circumstances.++It is not the purpose of this section to induce you to infringe any+patents or other property right claims or to contest validity of any+such claims; this section has the sole purpose of protecting the+integrity of the free software distribution system, which is+implemented by public license practices. Many people have made+generous contributions to the wide range of software distributed+through that system in reliance on consistent application of that+system; it is up to the author/donor to decide if he or she is willing+to distribute software through any other system and a licensee cannot+impose that choice.++This section is intended to make thoroughly clear what is believed to+be a consequence of the rest of this License.++ 8. If the distribution and/or use of the Program is restricted in+certain countries either by patents or by copyrighted interfaces, the+original copyright holder who places the Program under this License+may add an explicit geographical distribution limitation excluding+those countries, so that distribution is permitted only in or among+countries not thus excluded. In such case, this License incorporates+the limitation as if written in the body of this License.++ 9. The Free Software Foundation may publish revised and/or new versions+of the General Public License from time to time. Such new versions will+be similar in spirit to the present version, but may differ in detail to+address new problems or concerns.++Each version is given a distinguishing version number. If the Program+specifies a version number of this License which applies to it and "any+later version", you have the option of following the terms and conditions+either of that version or of any later version published by the Free+Software Foundation. If the Program does not specify a version number of+this License, you may choose any version ever published by the Free Software+Foundation.++ 10. If you wish to incorporate parts of the Program into other free+programs whose distribution conditions are different, write to the author+to ask for permission. For software which is copyrighted by the Free+Software Foundation, write to the Free Software Foundation; we sometimes+make exceptions for this. Our decision will be guided by the two goals+of preserving the free status of all derivatives of our free software and+of promoting the sharing and reuse of software generally.++ NO WARRANTY++ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,+REPAIR OR CORRECTION.++ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE+POSSIBILITY OF SUCH DAMAGES.++ END OF TERMS AND CONDITIONS+++ How to Apply These Terms to Your New Programs++ If you develop a new program, and you want it to be of the greatest+possible use to the public, the best way to achieve this is to make it+free software which everyone can redistribute and change under these terms.++ To do so, attach the following notices to the program. It is safest+to attach them to the start of each source file to most effectively+convey the exclusion of warranty; and each file should have at least+the "copyright" line and a pointer to where the full notice is found.++ <one line to give the program's name and a brief idea of what it does.>+ Copyright (C) <year> <name of author>++ This program is free software; you can redistribute it and/or modify+ it under the terms of the GNU General Public License as published by+ the Free Software Foundation; either version 2 of the License, or+ (at your option) any later version.++ This program is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ GNU General Public License for more details.++ You should have received a copy of the GNU General Public License+ along with this program; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+++Also add information on how to contact you by electronic and paper mail.++If the program is interactive, make it output a short notice like this+when it starts in an interactive mode:++ Gnomovision version 69, Copyright (C) year name of author+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.+ This is free software, and you are welcome to redistribute it+ under certain conditions; type `show c' for details.++The hypothetical commands `show w' and `show c' should show the appropriate+parts of the General Public License. Of course, the commands you use may+be called something other than `show w' and `show c'; they could even be+mouse-clicks or menu items--whatever suits your program.++You should also get your employer (if you work as a programmer) or your+school, if any, to sign a "copyright disclaimer" for the program, if+necessary. Here is a sample; alter the names:++ Yoyodyne, Inc., hereby disclaims all copyright interest in the program+ `Gnomovision' (which makes passes at compilers) written by James Hacker.++ <signature of Ty Coon>, 1 April 1989+ Ty Coon, President of Vice++This General Public License does not permit incorporating your program into+proprietary programs. If your program is a subroutine library, you may+consider it more useful to permit linking proprietary applications with the+library. If this is what you want to do, use the GNU Library General+Public License instead of this License.
+ LICENCE-LGPL view
@@ -0,0 +1,507 @@+ GNU LESSER GENERAL PUBLIC LICENSE+ Version 2.1, February 1999++ Copyright (C) 1991, 1999 Free Software Foundation, Inc.+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+ Everyone is permitted to copy and distribute verbatim copies+ of this license document, but changing it is not allowed.++[This is the first released version of the Lesser GPL. It also counts+ as the successor of the GNU Library Public License, version 2, hence+ the version number 2.1.]++ Preamble++ The licenses for most software are designed to take away your+freedom to share and change it. By contrast, the GNU General Public+Licenses are intended to guarantee your freedom to share and change+free software--to make sure the software is free for all its users.++ This license, the Lesser General Public License, applies to some+specially designated software packages--typically libraries--of the+Free Software Foundation and other authors who decide to use it. You+can use it too, but we suggest you first think carefully about whether+this license or the ordinary General Public License is the better+strategy to use in any particular case, based on the explanations+below.++ When we speak of free software, we are referring to freedom of use,+not price. Our General Public Licenses are designed to make sure that+you have the freedom to distribute copies of free software (and charge+for this service if you wish); that you receive source code or can get+it if you want it; that you can change the software and use pieces of+it in new free programs; and that you are informed that you can do+these things.++ To protect your rights, we need to make restrictions that forbid+distributors to deny you these rights or to ask you to surrender these+rights. These restrictions translate to certain responsibilities for+you if you distribute copies of the library or if you modify it.++ For example, if you distribute copies of the library, whether gratis+or for a fee, you must give the recipients all the rights that we gave+you. You must make sure that they, too, receive or can get the source+code. If you link other code with the library, you must provide+complete object files to the recipients, so that they can relink them+with the library after making changes to the library and recompiling+it. And you must show them these terms so they know their rights.++ We protect your rights with a two-step method: (1) we copyright the+library, and (2) we offer you this license, which gives you legal+permission to copy, distribute and/or modify the library.++ To protect each distributor, we want to make it very clear that+there is no warranty for the free library. Also, if the library is+modified by someone else and passed on, the recipients should know+that what they have is not the original version, so that the original+author's reputation will not be affected by problems that might be+introduced by others.++ Finally, software patents pose a constant threat to the existence of+any free program. We wish to make sure that a company cannot+effectively restrict the users of a free program by obtaining a+restrictive license from a patent holder. Therefore, we insist that+any patent license obtained for a version of the library must be+consistent with the full freedom of use specified in this license.++ Most GNU software, including some libraries, is covered by the+ordinary GNU General Public License. This license, the GNU Lesser+General Public License, applies to certain designated libraries, and+is quite different from the ordinary General Public License. We use+this license for certain libraries in order to permit linking those+libraries into non-free programs.++ When a program is linked with a library, whether statically or using+a shared library, the combination of the two is legally speaking a+combined work, a derivative of the original library. The ordinary+General Public License therefore permits such linking only if the+entire combination fits its criteria of freedom. The Lesser General+Public License permits more lax criteria for linking other code with+the library.++ We call this license the "Lesser" General Public License because it+does Less to protect the user's freedom than the ordinary General+Public License. It also provides other free software developers Less+of an advantage over competing non-free programs. These disadvantages+are the reason we use the ordinary General Public License for many+libraries. However, the Lesser license provides advantages in certain+special circumstances.++ For example, on rare occasions, there may be a special need to+encourage the widest possible use of a certain library, so that it+becomes a de-facto standard. To achieve this, non-free programs must+be allowed to use the library. A more frequent case is that a free+library does the same job as widely used non-free libraries. In this+case, there is little to gain by limiting the free library to free+software only, so we use the Lesser General Public License.++ In other cases, permission to use a particular library in non-free+programs enables a greater number of people to use a large body of+free software. For example, permission to use the GNU C Library in+non-free programs enables many more people to use the whole GNU+operating system, as well as its variant, the GNU/Linux operating+system.++ Although the Lesser General Public License is Less protective of the+users' freedom, it does ensure that the user of a program that is+linked with the Library has the freedom and the wherewithal to run+that program using a modified version of the Library.++ The precise terms and conditions for copying, distribution and+modification follow. Pay close attention to the difference between a+"work based on the library" and a "work that uses the library". The+former contains code derived from the library, whereas the latter must+be combined with the library in order to run.+++ GNU LESSER GENERAL PUBLIC LICENSE+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION++ 0. This License Agreement applies to any software library or other+program which contains a notice placed by the copyright holder or+other authorized party saying it may be distributed under the terms of+this Lesser General Public License (also called "this License").+Each licensee is addressed as "you".++ A "library" means a collection of software functions and/or data+prepared so as to be conveniently linked with application programs+(which use some of those functions and data) to form executables.++ The "Library", below, refers to any such software library or work+which has been distributed under these terms. A "work based on the+Library" means either the Library or any derivative work under+copyright law: that is to say, a work containing the Library or a+portion of it, either verbatim or with modifications and/or translated+straightforwardly into another language. (Hereinafter, translation is+included without limitation in the term "modification".)++ "Source code" for a work means the preferred form of the work for+making modifications to it. For a library, complete source code means+all the source code for all modules it contains, plus any associated+interface definition files, plus the scripts used to control+compilation and installation of the library.++ Activities other than copying, distribution and modification are not+covered by this License; they are outside its scope. The act of+running a program using the Library is not restricted, and output from+such a program is covered only if its contents constitute a work based+on the Library (independent of the use of the Library in a tool for+writing it). Whether that is true depends on what the Library does+and what the program that uses the Library does.++ 1. You may copy and distribute verbatim copies of the Library's+complete source code as you receive it, in any medium, provided that+you conspicuously and appropriately publish on each copy an+appropriate copyright notice and disclaimer of warranty; keep intact+all the notices that refer to this License and to the absence of any+warranty; and distribute a copy of this License along with the+Library.++ You may charge a fee for the physical act of transferring a copy,+and you may at your option offer warranty protection in exchange for a+fee.++ 2. You may modify your copy or copies of the Library or any portion+of it, thus forming a work based on the Library, and copy and+distribute such modifications or work under the terms of Section 1+above, provided that you also meet all of these conditions:++ a) The modified work must itself be a software library.++ b) You must cause the files modified to carry prominent notices+ stating that you changed the files and the date of any change.++ c) You must cause the whole of the work to be licensed at no+ charge to all third parties under the terms of this License.++ d) If a facility in the modified Library refers to a function or a+ table of data to be supplied by an application program that uses+ the facility, other than as an argument passed when the facility+ is invoked, then you must make a good faith effort to ensure that,+ in the event an application does not supply such function or+ table, the facility still operates, and performs whatever part of+ its purpose remains meaningful.++ (For example, a function in a library to compute square roots has+ a purpose that is entirely well-defined independent of the+ application. Therefore, Subsection 2d requires that any+ application-supplied function or table used by this function must+ be optional: if the application does not supply it, the square+ root function must still compute square roots.)++These requirements apply to the modified work as a whole. If+identifiable sections of that work are not derived from the Library,+and can be reasonably considered independent and separate works in+themselves, then this License, and its terms, do not apply to those+sections when you distribute them as separate works. But when you+distribute the same sections as part of a whole which is a work based+on the Library, the distribution of the whole must be on the terms of+this License, whose permissions for other licensees extend to the+entire whole, and thus to each and every part regardless of who wrote+it.++Thus, it is not the intent of this section to claim rights or contest+your rights to work written entirely by you; rather, the intent is to+exercise the right to control the distribution of derivative or+collective works based on the Library.++In addition, mere aggregation of another work not based on the Library+with the Library (or with a work based on the Library) on a volume of+a storage or distribution medium does not bring the other work under+the scope of this License.++ 3. You may opt to apply the terms of the ordinary GNU General Public+License instead of this License to a given copy of the Library. To do+this, you must alter all the notices that refer to this License, so+that they refer to the ordinary GNU General Public License, version 2,+instead of to this License. (If a newer version than version 2 of the+ordinary GNU General Public License has appeared, then you can specify+that version instead if you wish.) Do not make any other change in+these notices.++ Once this change is made in a given copy, it is irreversible for+that copy, so the ordinary GNU General Public License applies to all+subsequent copies and derivative works made from that copy.++ This option is useful when you wish to copy part of the code of+the Library into a program that is not a library.++ 4. You may copy and distribute the Library (or a portion or+derivative of it, under Section 2) in object code or executable form+under the terms of Sections 1 and 2 above provided that you accompany+it with the complete corresponding machine-readable source code, which+must be distributed under the terms of Sections 1 and 2 above on a+medium customarily used for software interchange.++ If distribution of object code is made by offering access to copy+from a designated place, then offering equivalent access to copy the+source code from the same place satisfies the requirement to+distribute the source code, even though third parties are not+compelled to copy the source along with the object code.++ 5. A program that contains no derivative of any portion of the+Library, but is designed to work with the Library by being compiled or+linked with it, is called a "work that uses the Library". Such a+work, in isolation, is not a derivative work of the Library, and+therefore falls outside the scope of this License.++ However, linking a "work that uses the Library" with the Library+creates an executable that is a derivative of the Library (because it+contains portions of the Library), rather than a "work that uses the+library". The executable is therefore covered by this License.+Section 6 states terms for distribution of such executables.++ When a "work that uses the Library" uses material from a header file+that is part of the Library, the object code for the work may be a+derivative work of the Library even though the source code is not.+Whether this is true is especially significant if the work can be+linked without the Library, or if the work is itself a library. The+threshold for this to be true is not precisely defined by law.++ If such an object file uses only numerical parameters, data+structure layouts and accessors, and small macros and small inline+functions (ten lines or less in length), then the use of the object+file is unrestricted, regardless of whether it is legally a derivative+work. (Executables containing this object code plus portions of the+Library will still fall under Section 6.)++ Otherwise, if the work is a derivative of the Library, you may+distribute the object code for the work under the terms of Section 6.+Any executables containing that work also fall under Section 6,+whether or not they are linked directly with the Library itself.++ 6. As an exception to the Sections above, you may also combine or+link a "work that uses the Library" with the Library to produce a+work containing portions of the Library, and distribute that work+under terms of your choice, provided that the terms permit+modification of the work for the customer's own use and reverse+engineering for debugging such modifications.++ You must give prominent notice with each copy of the work that the+Library is used in it and that the Library and its use are covered by+this License. You must supply a copy of this License. If the work+during execution displays copyright notices, you must include the+copyright notice for the Library among them, as well as a reference+directing the user to the copy of this License. Also, you must do one+of these things:++ a) Accompany the work with the complete corresponding+ machine-readable source code for the Library including whatever+ changes were used in the work (which must be distributed under+ Sections 1 and 2 above); and, if the work is an executable linked+ with the Library, with the complete machine-readable "work that+ uses the Library", as object code and/or source code, so that the+ user can modify the Library and then relink to produce a modified+ executable containing the modified Library. (It is understood+ that the user who changes the contents of definitions files in the+ Library will not necessarily be able to recompile the application+ to use the modified definitions.)++ b) Use a suitable shared library mechanism for linking with the+ Library. A suitable mechanism is one that (1) uses at run time a+ copy of the library already present on the user's computer system,+ rather than copying library functions into the executable, and (2)+ will operate properly with a modified version of the library, if+ the user installs one, as long as the modified version is+ interface-compatible with the version that the work was made with.++ c) Accompany the work with a written offer, valid for at least+ three years, to give the same user the materials specified in+ Subsection 6a, above, for a charge no more than the cost of+ performing this distribution.++ d) If distribution of the work is made by offering access to copy+ from a designated place, offer equivalent access to copy the above+ specified materials from the same place.++ e) Verify that the user has already received a copy of these+ materials or that you have already sent this user a copy.++ For an executable, the required form of the "work that uses the+Library" must include any data and utility programs needed for+reproducing the executable from it. However, as a special exception,+the materials to be distributed need not include anything that is+normally distributed (in either source or binary form) with the major+components (compiler, kernel, and so on) of the operating system on+which the executable runs, unless that component itself accompanies+the executable.++ It may happen that this requirement contradicts the license+restrictions of other proprietary libraries that do not normally+accompany the operating system. Such a contradiction means you cannot+use both them and the Library together in an executable that you+distribute.++ 7. You may place library facilities that are a work based on the+Library side-by-side in a single library together with other library+facilities not covered by this License, and distribute such a combined+library, provided that the separate distribution of the work based on+the Library and of the other library facilities is otherwise+permitted, and provided that you do these two things:++ a) Accompany the combined library with a copy of the same work+ based on the Library, uncombined with any other library+ facilities. This must be distributed under the terms of the+ Sections above.++ b) Give prominent notice with the combined library of the fact+ that part of it is a work based on the Library, and explaining+ where to find the accompanying uncombined form of the same work.++ 8. You may not copy, modify, sublicense, link with, or distribute+the Library except as expressly provided under this License. Any+attempt otherwise to copy, modify, sublicense, link with, or+distribute the Library is void, and will automatically terminate your+rights under this License. However, parties who have received copies,+or rights, from you under this License will not have their licenses+terminated so long as such parties remain in full compliance.++ 9. You are not required to accept this License, since you have not+signed it. However, nothing else grants you permission to modify or+distribute the Library or its derivative works. These actions are+prohibited by law if you do not accept this License. Therefore, by+modifying or distributing the Library (or any work based on the+Library), you indicate your acceptance of this License to do so, and+all its terms and conditions for copying, distributing or modifying+the Library or works based on it.++ 10. Each time you redistribute the Library (or any work based on the+Library), the recipient automatically receives a license from the+original licensor to copy, distribute, link with or modify the Library+subject to these terms and conditions. You may not impose any further+restrictions on the recipients' exercise of the rights granted herein.+You are not responsible for enforcing compliance by third parties with+this License.++ 11. If, as a consequence of a court judgment or allegation of patent+infringement or for any other reason (not limited to patent issues),+conditions are imposed on you (whether by court order, agreement or+otherwise) that contradict the conditions of this License, they do not+excuse you from the conditions of this License. If you cannot+distribute so as to satisfy simultaneously your obligations under this+License and any other pertinent obligations, then as a consequence you+may not distribute the Library at all. For example, if a patent+license would not permit royalty-free redistribution of the Library by+all those who receive copies directly or indirectly through you, then+the only way you could satisfy both it and this License would be to+refrain entirely from distribution of the Library.++If any portion of this section is held invalid or unenforceable under+any particular circumstance, the balance of the section is intended to+apply, and the section as a whole is intended to apply in other+circumstances.++It is not the purpose of this section to induce you to infringe any+patents or other property right claims or to contest validity of any+such claims; this section has the sole purpose of protecting the+integrity of the free software distribution system which is+implemented by public license practices. Many people have made+generous contributions to the wide range of software distributed+through that system in reliance on consistent application of that+system; it is up to the author/donor to decide if he or she is willing+to distribute software through any other system and a licensee cannot+impose that choice.++This section is intended to make thoroughly clear what is believed to+be a consequence of the rest of this License.++ 12. If the distribution and/or use of the Library is restricted in+certain countries either by patents or by copyrighted interfaces, the+original copyright holder who places the Library under this License+may add an explicit geographical distribution limitation excluding those+countries, so that distribution is permitted only in or among+countries not thus excluded. In such case, this License incorporates+the limitation as if written in the body of this License.++ 13. The Free Software Foundation may publish revised and/or new+versions of the Lesser General Public License from time to time.+Such new versions will be similar in spirit to the present version,+but may differ in detail to address new problems or concerns.++Each version is given a distinguishing version number. If the Library+specifies a version number of this License which applies to it and+"any later version", you have the option of following the terms and+conditions either of that version or of any later version published by+the Free Software Foundation. If the Library does not specify a+license version number, you may choose any version ever published by+the Free Software Foundation.++ 14. If you wish to incorporate parts of the Library into other free+programs whose distribution conditions are incompatible with these,+write to the author to ask for permission. For software which is+copyrighted by the Free Software Foundation, write to the Free+Software Foundation; we sometimes make exceptions for this. Our+decision will be guided by the two goals of preserving the free status+of all derivatives of our free software and of promoting the sharing+and reuse of software generally.++ NO WARRANTY++ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.++ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH+DAMAGES.++ END OF TERMS AND CONDITIONS+++ How to Apply These Terms to Your New Libraries++ If you develop a new library, and you want it to be of the greatest+possible use to the public, we recommend making it free software that+everyone can redistribute and change. You can do so by permitting+redistribution under these terms (or, alternatively, under the terms of the+ordinary General Public License).++ To apply these terms, attach the following notices to the library. It is+safest to attach them to the start of each source file to most effectively+convey the exclusion of warranty; and each file should have at least the+"copyright" line and a pointer to where the full notice is found.++ <one line to give the library's name and a brief idea of what it does.>+ Copyright (C) <year> <name of author>++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License as published by the Free Software Foundation; either+ version 2.1 of the License, or (at your option) any later version.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA++Also add information on how to contact you by electronic and paper mail.++You should also get your employer (if you work as a programmer) or your+school, if any, to sign a "copyright disclaimer" for the library, if+necessary. Here is a sample; alter the names:++ Yoyodyne, Inc., hereby disclaims all copyright interest in the+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.++ <signature of Ty Coon>, 1 April 1990+ Ty Coon, President of Vice++That's all there is to it!+
+ Makefile view
@@ -0,0 +1,110 @@+SOFTWARE = HaXml+VERSION = 1.13.2++SRCS = \+ src/Text/XML/HaXml.hs src/Text/XML/HaXml/Combinators.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/Verbatim.hs src/Text/XML/HaXml/Escape.hs \+ src/Text/XML/HaXml/Xml2Haskell.hs src/Text/XML/HaXml/Haskell2Xml.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/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++AUX = configure Makefile src/Makefile src/pkg.conf docs/* examples/* \+ README LICENCE* COPYRIGHT script/echo.c rpm.spec Build.bat \+ HaXml.cabal Setup.hs+ALLFILES = $(SRCS) $(TOOLSRCS) $(AUX)+# These files in CVS are NOT included in the src distribution.+NOT = Makefile.inc Makefile.nhc98 src/Makefile.inc src/Makefile.nhc98++.PHONY: all libs tools haddock install register++COMPILERS = $(shell cat obj/compilers)+LIBS = $(patsubst %, libs-%, $(COMPILERS))+TOOLS = $(patsubst %, tools-%, $(COMPILERS))+INSTALL = $(patsubst %, install-%, $(COMPILERS))+FILESONLY = $(patsubst %, install-filesonly-%, $(COMPILERS))++all: $(LIBS) $(TOOLS)+libs: $(LIBS)+tools: $(TOOLS)+install: $(INSTALL)+install-filesonly: $(FILESONLY)+libs-ghc:+ cd obj/ghc; $(MAKE) HC=$(shell cat obj/ghccmd) libs+libs-nhc98:+ cd obj/nhc98; $(MAKE) HC=nhc98 libs+libs-hugs:+ @echo "No building required for Hugs version of HaXml libs."+tools-ghc:+ cd obj/ghc; $(MAKE) HC=$(shell cat obj/ghccmd) toolset+tools-nhc98:+ cd obj/nhc98; $(MAKE) HC=nhc98 toolset+tools-hugs:+ @echo "No building required for Hugs version of HaXml tools."+install-ghc:+ cd obj/ghc; $(MAKE) HC=$(shell cat obj/ghccmd) install-ghc+install-nhc98:+ cd obj/nhc98; $(MAKE) HC=nhc98 install-nhc98+install-hugs:+ hugs-package src+ cd obj/hugs; $(MAKE) install-tools-hugs+install-filesonly-ghc:+ cd obj/ghc; $(MAKE) HC=$(shell cat obj/ghccmd) install-filesonly-ghc+install-filesonly-nhc98:+ cd obj/nhc98; $(MAKE) HC=nhc98 install-filesonly-nhc98+install-filesonly-hugs: install-hugs+haddock:+ #do cpp -P -traditional -D__NHC__ $$file >$$file.uncpp;+ for file in $(SRCS); \+ do cpphs --noline -D__NHC__ $$file >$$file.uncpp; \+ done+ -mkdir docs/HaXml+ haddock -h -t HaXml -o docs/HaXml $(patsubst %, %.uncpp, $(SRCS))+ rm $(patsubst %, %.uncpp, $(SRCS))++# packaging a distribution++srcDist: $(ALLFILES) haddock+ 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++zipDist: $(ALLFILES) haddock+ 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+realclean: clean+ -rm -f DtdToHaskell Xtract Validate Canonicalise MkOneOf+
+ README view
@@ -0,0 +1,87 @@+ HaXml - Haskell utilities for processing XML+ --------------------------------------------++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.++ ./configure+ make+ make install++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++Complaints to: :-)+ Malcolm.Wallace@cs.york.ac.uk++P.S.+ For those building on Windows /without/ Cygwin, you can avoid the need+ for configure/make steps by simply running the minimal build script in+ Build.bat+ You will need to edit it for the location of your compiler etc.++----+What this package contains:++ docs/ Some rudimentary HTML documentation about the libraries.+ docs/HaXml/ Haddock-generated API documentation.+ examples/ Some small examples of how the libraries/tools are used.++ src/Text/XML/HaXml/ Numerous support modules for processing XML.+ (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.+ 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.+ 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.+ OneOfN.hs Some support types (OneOf2 - OneOf20) for code+ generated by tools/DtdToHaskell.++ src/Text/XML/HaXml/Html Extra support modules for processing HTML.+ Parse.hs An error-correcting HTML parser, produces the generic+ XML representation.+ Pretty.hs An HTML-specific pretty-printer.+ Generate.hs Some useful combinators for generating HTML content.++ src/tools/ Standalone tools based on the library above.+ DtdToHaskell Translates an XML doc containing a DTD into a Haskell+ module containing data/newtype definitions.+ Xtract A structured 'grep' for XML docs, loosely based on+ the XPath and XQL query languages.+ Validate A simple validation tool for XML docs. Give it a DTD+ file and an XML file, and it reports all validation+ errors it can find.+ Canonicalise A 'cat' filter for XML docs, shows our "standard"+ parsing and pretty-printing behaviour.+ MkOneOf Generates a OneOfN type, given an N, together with+ its required instance of XmlContent. Sometimes types+ larger than OneOf20 are required in code generated by+ DtdToHaskell.++ src/Text/XML/HaXml/Xtract Internal APIs of the Xtract tool.+ Parse.hs Parse an XPath query to produce a filter.+ Combinators.hs Modified version of the standard combinators.++ src/Text/XML/HaXml/DtdToHaskell Internal APIs of the DtdToHaskell tool.+ TypeDef.hs A representation of the Haskell types corresponding+ 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+ the TypeDefs.++----
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ configure view
@@ -0,0 +1,311 @@+#!/bin/sh+# configure -- prepare to compile/install the HaXml package+# author: Malcolm.Wallace@cs.york.ac.uk, August 2002++VERSION="1.13.2"++if [ -f obj/prefix ]+then INSTALLDIR=`cat obj/prefix`+else INSTALLDIR=/usr/local/bin+fi++# We need a working `echo' command: at least Solaris2.6 may not have it.+CCC=${CC-gcc}+case `echo -n hello | wc -c | ( read n ; echo $n )` in+ 5) ;;+ *) echo "The builtin 'echo' command doesn't do '-n' - emulating it."+ $CCC -o script/echo script/echo.c+ echo () { $PWD/script/echo "$@"; } ;;+esac++# We need a working `which' command: CYGWIN at least doesn't have it,+# and some installed 'which's behave badly, e.g. Solaris, OSF/1.+which () {+ ( for path in `echo \"$PATH\" | sed -e 's/:/\" \"/g'`+ do+ thefile=`echo $path | tr -d "\""`/$1+ if [ -f "$thefile" -a -x "$thefile" ]+ then echo $thefile+ exit 0+ fi+ done; exit 1 )+}++DARWIN=false+CYGWIN=false+MINGW=false+SUNOS=false+case `uname -s` in+ CYGWIN*) CYGWIN=true;;+ MINGW*) MINGW=true ;;+ Darwin*) DARWIN=true ;;+ SunOS*) SUNOS=true ;;+esac++# Process command-line arguments+while [ "$1" != "" ]+do+ case $1 in+ --buildwith=*) BUILDWITH=`echo "$1" | cut -c13-` ;;+ --buildopts=*) BUILDOPTS=$BUILDOPTS" "`echo "$1" | cut -c13-` ;;+ --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 " --buildopts=flags Give extra flags needed by your build compiler [none]"+ echo " --prefix=bindir Installed executables go in bindir [/usr/local/bin]"+ exit 0 ;;+ --version|-v) echo "HaXml: $VERSION"+ exit 0 ;;+ *) echo "`basename $0`: unrecognised option $1"+ echo ' (use --help for option information)'+ exit 1 ;;+ esac+ shift+done++echo "Looking for Haskell compilers:"+# Assume that we start out with a blank config.+HMAKEKNOWN=+GHCKNOWN=+NHCKNOWN=+HUGSKNOWN=+HMAKENUM=0+GHCNUM=0+NHCNUM=0+HUGSNUM=0++echo -n " Looking for hmake... "+if which hmake >/dev/null 2>&1+then+ HMAKEKNOWN=`which hmake`+ HMAKEVERSION=`${HMAKEKNOWN} --version | head -1 | cut -d' ' -f2`+ HMAKENUM=`echo $HMAKEVERSION | tr "v." " " | ( read x y z; echo $x$y )`+fi+if [ "$HMAKEKNOWN" != "" ]+then echo "found ${HMAKEVERSION}"+else echo "(not found)"+fi++echo -n " Looking for ghc... "+if which ghc >/dev/null 2>&1+then+ GHCKNOWN=`which ghc`+ GHCVERSION=`${GHCKNOWN} --version 2>&1 | sed 's/^.*version[ ]*\([0-9.]*\).*/\1/'`+ GHCNUM=`echo $GHCVERSION | tr "v." " " | ( read x y z; echo $x$y; )`+ if [ "$GHCNUM" -lt "100" ]+ then GHCNUM=${GHCNUM}0+ fi+fi+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."+ 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+ if $MINGW; then GHCLIBDIR=`echo $GHCLIBDIR | tr '\\\\' '/'`; fi+ GHCLIBDIR=`dirname $GHCLIBDIR`+ GHCINCDIR=$GHCLIBDIR/imports+ fi+fi++# There may be another version of ghc to look for.+if [ -n "$BUILDWITH" ]+then+if [ "`basename $BUILDWITH | cut -c1-3`" = "ghc" ]+then+ VER=`basename $BUILDWITH | cut -c5-`+ if [ -n "$VER" -a "$VER" != "$GHCVERSION" ]+ then+ echo -n " Looking for $BUILDWITH... "+ if which $BUILDWITH >/dev/null 2>&1+ then+ GHC2KNOWN=`which $BUILDWITH`+ GHC2VERSION=`${GHC2KNOWN} --version 2>&1 | sed 's/^.*version[ ]*\([0-9.]*\).*/\1/'`+ GHC2NUM=`echo $GHC2VERSION | tr "." " " | ( read x y z; echo $x$y; )`+ if [ "$GHC2NUM" -lt "100" ]+ then GHC2NUM=${GHC2NUM}0+ fi+ fi+ 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."+ GHC2KNOWN=+ else GHCKNOWN="$GHC2KNOWN"+ GHCVERSION="$GHC2VERSION"+ GHCNUM="$GHC2NUM"+ GHCLIBDIR=`${GHCKNOWN} -v 2>&1 | grep ' package config file: ' | head -1 | sed 's/.* package config file: //'`+ if $CYGWIN; then GHCLIBDIR=`cygpath -u $GHCLIBDIR`; fi+ if $MINGW; then GHCLIBDIR=`echo $GHCLIBDIR | tr '\\\\' '/'`; fi+ GHCLIBDIR=`dirname $GHCLIBDIR`+ GHCINCDIR=$GHCLIBDIR/imports+ fi+ fi+ fi+fi+fi++echo -n " Looking for nhc98... "+if which nhc98 >/dev/null 2>&1+then+ NHCKNOWN=`which nhc98`+ NHCVERSION=`${NHCKNOWN} --version | head -1 | cut -d' ' -f2`+ NHCNUM=`echo $NHCVERSION | tr "v." " " | ( read x y z; echo $x$y )`+fi+if [ "$NHCKNOWN" = "" ]+then echo "(not found)"+else echo "found ${NHCVERSION}"+ if [ "$HMAKENUM" -lt "306" ]+ 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."+ NHCKNOWN=+ else NHCLIBDIR=`grep '^NHC98LIBDIR' $NHCKNOWN | cut -c27- | cut -d'}' -f1 | head -1`+ NHCINCDIR=`grep '^NHC98INCDIR' $NHCKNOWN | cut -c27- | cut -d'}' -f1 | head -1`+ fi+fi++month() {+ read mon yr;+ case $mon in+ Jan*) echo 01;;+ Feb*) echo 02;;+ Mar*) echo 03;;+ Apr*) echo 04;;+ May) echo 05;;+ Jun*) echo 06;;+ Jul*) echo 07;;+ Aug*) echo 08;;+ Sep*) echo 09;;+ Oct*) echo 10;;+ Nov*) echo 11;;+ Dec*) echo 12;;+ *) echo 00;;+ esac;+}++echo -n " Looking for hugs... "+if which hugs >/dev/null 2>&1+then+ HUGSKNOWN=`which hugs`+ HUGSVERSION=`echo :q | $HUGSKNOWN 2>/dev/null | grep Version | cut -c18-32`+ HUGSNUM=`echo $HUGSVERSION | cut -d' ' -f2`+ HUGSNUM=$HUGSNUM`echo $HUGSVERSION | month`+fi+if [ "$HUGSKNOWN" = "" ]+then echo "(not found)"+else echo "found ${HUGSVERSION}"+ if [ "$HUGSNUM" -lt "200309" ]+ then echo " Warning: HaXml configuration only supports Hugs >= Sept 2003."+ HUGSKNOWN=+ fi+fi++if [ ! -z "$BUILDWITH" ]+then+ echo " You want to build for only... $BUILDWITH"+ if [ "`echo $BUILDWITH | cut -c1-3`" = "ghc" ]+ then+ if [ -z "$GHCKNOWN" ]+ then echo ' *** Did not find ghc - cannot continue.'+ exit 1+ else NHCKNOWN=+ HUGSKNOWN=+ fi+ else if [ "$BUILDWITH" = "nhc98" ]+ then+ if [ -z "$NHCKNOWN" ]+ then echo ' *** Did not find nhc98 - cannot continue.'+ exit 1+ else GHCKNOWN=+ HUGSKNOWN=+ fi+ else if [ "`echo $BUILDWITH | cut -c1-4`" = "hugs" ]+ then+ if [ -z "$HUGSKNOWN" ]+ then echo ' *** Did not find hugs - cannot continue.'+ exit 1+ else GHCKNOWN=+ NHCKNOWN=+ fi+ else echo ' *** I do not recognise this compiler:' $BUILDWITH+ exit 1+ fi;fi;fi;+fi++echo " Executables install into... $INSTALLDIR"+echo " (note: no extra /bin will be added to the end of that location)"+echo " ( re-run ./configure --prefix=... if this wasn't your intention)"++# Prepare to build.+if [ ! -d obj ]+then mkdir obj+fi+if [ -f obj/compilers ]+then rm obj/compilers+fi+if [ "$HUGSKNOWN" != "" ]+then+ echo hugs >>obj/compilers+ if [ ! -d obj/hugs ]+ then mkdir obj/hugs+ fi+ cp -Rp src/tools src/Makefile obj/hugs+fi+if [ "$GHCKNOWN" != "" ]+then+ echo ghc >>obj/compilers+ if [ ! -d obj/ghc ]+ then mkdir obj/ghc+ fi+ echo $GHCLIBDIR >obj/ghc/ghclibdir+ echo $GHCINCDIR >obj/ghc/ghcincdir+ if $CYGWIN || $MINGW+ then cygpath -w ${GHCLIBDIR} >obj/ghc/ghclibdirraw+ cygpath -w ${GHCINCDIR}/ >obj/ghc/ghcincdirraw+ else echo ${GHCLIBDIR} >obj/ghc/ghclibdirraw+ echo ${GHCINCDIR}/ >obj/ghc/ghcincdirraw+ fi+ if ghc-pkg-$GHCVERSION -l >/dev/null+ then echo ghc-pkg-$GHCVERSION >obj/ghc/ghcpkgcmd+ else echo ghc-pkg >obj/ghc/ghcpkgcmd+ fi+ 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+ fi+fi+if [ "$NHCKNOWN" != "" ]+then+ echo nhc98 >>obj/compilers+ if [ ! -d obj/nhc98 ]+ then mkdir obj/nhc98+ fi+ echo $NHCLIBDIR >obj/nhc98/nhc98libdir+ echo $NHCINCDIR >obj/nhc98/nhc98incdir+ 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+ 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+++echo "Ready to build. Type 'make' then (as root) 'make install'."+exit 0
+ docs/Combinators.html view
@@ -0,0 +1,37 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">+<html>+<head>+<title>+ HaXml: Haskell and XML+</title>+</head>++<body bgcolor='#ffffff'>++<center>+<h2>Combinators</h2>+</center>+<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.++<p>+<b>Usage:</b> <tt>import Text.XML.HaXml.Combinators</tt><br>++<p>+<b>Limitations</b><br>+Note that the combinator library defines the functions <tt>elm</tt> and+<tt>txt</tt> rather than the expected (<tt>elem</tt>+and <tt>text</tt>), to avoid a nasty name clash with a Prelude function.++<hr>++</body>+</html>
+ docs/HaXml/Text-ParserCombinators-HuttonMeijerWallace.html view
@@ -0,0 +1,1108 @@+<!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.HuttonMeijerWallace</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.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 -> [Either e t] -> ParseResult 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 => <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 -> s -> [Either String t] -> [(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 -> s -> [Either e t] -> 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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e a -> <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 => t -> <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 => [t] -> <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 -> <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 -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e b -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e b -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e (a -> a -> a) -> a -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e (a -> a -> a) -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e (a -> a -> a) -> a -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e (a -> a -> a) -> <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)] -> <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) => <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s (p, t) e a -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s (p, t) e b -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s (p, t) e c -> <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 => <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s (p, t) String a -> <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) => <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s (p, t) String a -> String -> <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 -> s) -> <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 -> a) -> <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] -> <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="arg"+><A NAME="v%3AP"+></A+><B+>P</B+> (s -> [Either e t] -> ParseResult 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"+><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-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+></DIV+></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 => <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 -> s -> [Either String t] -> [(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 -> s -> [Either e t] -> 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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e a -> <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 => t -> <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 => [t] -> <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 -> <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 -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e b -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e b -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e (a -> a -> a) -> a -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e (a -> a -> a) -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e (a -> a -> a) -> a -> <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 -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s t e (a -> a -> a) -> <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)] -> <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) => <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s (p, t) e a -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s (p, t) e b -> <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s (p, t) e c -> <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 => <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s (p, t) String a -> <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) => <A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#t%3AParser"+>Parser</A+> s (p, t) String a -> String -> <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 -> s) -> <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 -> a) -> <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] -> <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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-Combinators.html view
@@ -0,0 +1,2230 @@+<!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.Combinators</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.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+> -> [<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 -> [a]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Anone"+>none</A+> :: a -> [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 -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%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 -> <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+> -> <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+> -> <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 -> Bool) -> <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 -> (String -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Aiffind"+>iffind</A+> :: String -> (String -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3AifTxt"+>ifTxt</A+> :: (String -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Ao"+>o</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Aunion"+>union</A+> :: (a -> [b]) -> (a -> [b]) -> a -> [b]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acat"+>cat</A+> :: [a -> [b]] -> a -> [b]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AandThen"+>andThen</A+> :: (a -> c) -> (c -> a -> b) -> a -> b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3A%7C%3E%7C"+>(|>|)</A+> :: (a -> [b]) -> (a -> [b]) -> a -> [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+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Awithout"+>without</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3A%2F%3E"+>(/>)</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3A%3C%2F"+>(</)</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Aet"+>et</A+> :: (String -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Apath"+>path</A+> :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Adeep"+>deep</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Adeepest"+>deepest</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Amulti"+>multi</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Awhen"+>when</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Aguards"+>guards</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Achip"+>chip</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3AfoldXml"+>foldXml</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3AmkElem"+>mkElem</A+> :: String -> [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3AmkElemAttr"+>mkElemAttr</A+> :: String -> [(String, <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>)] -> [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Aliteral"+>literal</A+> :: String -> <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 -> <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 -> <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)] -> <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"+>(:>)</A+> a a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3A%3F%3E"+>(?>)</A+> :: (a -> [b]) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3AThenElse"+>ThenElse</A+> (a -> [b]) -> a -> [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+> -> [(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 -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+>LabelFilter</A+> 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%3Ax"+>x</A+> :: (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+>LabelFilter</A+> a) -> (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+>LabelFilter</A+> b) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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+> -> <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 -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> String -> <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+> -> <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 -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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+> -> <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+> -> a) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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+> -> [<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 -> [a]</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3Anone"+></A+><B+>none</B+> :: a -> [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 -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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 -> <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+> -> <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+> -> <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 -> Bool) -> <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 -> (String -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <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 -> (String -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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 -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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 -> [b]) -> (a -> [b]) -> a -> [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 -> [b]] -> a -> [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 -> c) -> (c -> a -> b) -> a -> 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+>(|>|)</B+> :: (a -> [b]) -> (a -> [b]) -> a -> [b]</TD+></TR+><TR+><TD CLASS="doc"+>Directional choice:+ in <TT+>f |>| 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+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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+>(/>)</B+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+></TD+></TR+><TR+><TD CLASS="doc"+>Pronounced <EM+>slash</EM+>, <TT+>f /> 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+>(</)</B+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+></TD+></TR+><TR+><TD CLASS="doc"+>Pronounced <EM+>outside</EM+>, <TT+>f </ 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 -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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+>] -> <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 "name1", attr "attr1", children, tag "name2"]</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+> -> <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+> -> <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+> -> <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+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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+> -> <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+> -> <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 -> [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>] -> <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 -> [(String, <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>)] -> [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>] -> <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 -> <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 -> <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 -> <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)] -> <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 ?> yes :> 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="arg"+><A NAME="v%3A%3A%3E"+></A+><B+>(:>)</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+>(?>)</B+> :: (a -> [b]) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3AThenElse"+>ThenElse</A+> (a -> [b]) -> a -> [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+> -> [(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 -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+>LabelFilter</A+> a -> <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+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+>LabelFilter</A+> a) -> (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+>LabelFilter</A+> b) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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+> -> <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 -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> String -> <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+> -> <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 -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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+> -> <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+> -> a) -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-DtdToHaskell-Convert.html view
@@ -0,0 +1,112 @@+<!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.DtdToHaskell.Convert</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.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="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Documentation</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3Adtd2TypeDef"+></A+><B+>dtd2TypeDef</B+> :: [<A HREF="Text-XML-HaXml-Types.html#t%3AMarkupDecl"+>MarkupDecl</A+>] -> [<A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3ATypeDef"+>TypeDef</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-DtdToHaskell-Instance.html view
@@ -0,0 +1,134 @@+<!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.DtdToHaskell.Instance</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.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+> -> 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+> -> 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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-DtdToHaskell-TypeDef.html view
@@ -0,0 +1,1063 @@+<!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.DtdToHaskell.TypeDef</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.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+> -> 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+> -> 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+> -> 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+> -> 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 -> <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 -> <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 -> String -> <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 -> String -> String -> <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 -> String -> <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 -> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Amanglef"+>manglef</A+> :: String -> 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="arg"+><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="arg"+><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"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:TypeDef')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:TypeDef" STYLE="display:block;"+><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+></DIV+></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="arg"+><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="arg"+><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="arg"+><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="arg"+><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="arg"+><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="arg"+><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="arg"+><A NAME="v%3AAny"+></A+><B+>Any</B+></TD+><TD CLASS="rdoc"+>XML's contentspec allows ANY+</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+> <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"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:StructType')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:StructType" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AStructType"+>StructType</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AStructType"+>StructType</A+></TD+></TR+></TABLE+></DIV+></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+> -> 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+> -> 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+> -> 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+> -> 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="arg"+><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="arg"+><A NAME="v%3AxName"+></A+><B+>xName</B+> :: String</TD+><TD CLASS="rdoc"+>original XML name+</TD+></TR+><TR+><TD CLASS="arg"+><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"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Name')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Name" STYLE="display:block;"+><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+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3Aname"+></A+><B+>name</B+> :: String -> <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 -> <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 -> String -> <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 -> String -> String -> <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 -> String -> <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 -> 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 -> 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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-Escape.html view
@@ -0,0 +1,170 @@+<!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.Escape</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.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="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Documentation</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3AxmlEscape"+></A+><B+>xmlEscape</B+> :: <A HREF="Text-XML-HaXml-Escape.html#t%3AXmlEscaper"+>XmlEscaper</A+> -> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> -> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3AxmlUnEscape"+></A+><B+>xmlUnEscape</B+> :: <A HREF="Text-XML-HaXml-Escape.html#t%3AXmlEscaper"+>XmlEscaper</A+> -> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> -> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A NAME="t%3AXmlEscaper"+></A+><B+>XmlEscaper</B+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3AstdXmlEscaper"+></A+><B+>stdXmlEscaper</B+> :: <A HREF="Text-XML-HaXml-Escape.html#t%3AXmlEscaper"+>XmlEscaper</A+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3AmkXmlEscaper"+></A+><B+>mkXmlEscaper</B+> :: [(Char, String)] -> (Char -> Bool) -> <A HREF="Text-XML-HaXml-Escape.html#t%3AXmlEscaper"+>XmlEscaper</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-Haskell2Xml.html view
@@ -0,0 +1,1176 @@+<!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 -> <A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"+>HType</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoContents"+>toContents</A+> :: a -> [<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+>] -> (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 -> Char</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxFromChar"+>xFromChar</A+> :: Char -> 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 => a -> <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+> -> <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 => <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> -> 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 => String -> 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 => a -> 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 => FilePath -> 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 => FilePath -> a -> 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 => Handle -> 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 => Handle -> a -> 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 -> <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 -> [<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+>] -> (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 -> 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 -> 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) => <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 => <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+> [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) => <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 => a -> <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+> -> <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 => <A HREF="Text-XML-HaXml-Types.html#t%3ADocument"+>Document</A+> -> 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 => String -> 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 => a -> 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 => FilePath -> 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 => FilePath -> a -> 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 => Handle -> 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 => Handle -> a -> 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
@@ -0,0 +1,1167 @@+<!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.Generate</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.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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>)] -> [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Amakehref"+>makehref</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Aanchorname"+>anchorname</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Ahpre"+>hpre</A+> :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Ahcentre"+>hcentre</A+> :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Ahem"+>hem</A+> :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Ahtt"+>htt</A+> :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Ahbold"+>hbold</A+> :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Aparens"+>parens</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Abullet"+>bullet</A+> :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Ahtable"+>htable</A+> :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Ahrow"+>hrow</A+> :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Ahcol"+>hcol</A+> :: [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%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 -> <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 -> <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 -> <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+>] -> 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"+>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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>)] -> [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>] -> <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+> -> [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>] -> <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+> -> [<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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+> -> <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+>] -> <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+>] -> <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+>] -> <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+>] -> <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 -> <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 -> <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 -> <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+>] -> 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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-Html-Parse.html view
@@ -0,0 +1,142 @@+<!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.Parse</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.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 -> String -> <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 -> String -> <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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-Html-Pretty.html view
@@ -0,0 +1,152 @@+<!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.Pretty</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.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="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Documentation</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+> -> Doc</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+> -> Doc</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3Aattribute"+></A+><B+>attribute</B+> :: <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+> -> Doc</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+> -> 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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-Lex.html view
@@ -0,0 +1,1334 @@+<!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.Lex</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.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 -> String -> [<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+> -> String -> [<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 -> Maybe <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"+>Posn</A+> -> <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 -> String -> [<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+> -> String -> [<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 -> Maybe <A HREF="Text-XML-HaXml-Lex.html#t%3APosn"+>Posn</A+> -> <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="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+></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"+>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="arg"+><A NAME="v%3ATokCommentOpen"+></A+><B+>TokCommentOpen</B+></TD+><TD CLASS="rdoc"+><!--+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokCommentClose"+></A+><B+>TokCommentClose</B+></TD+><TD CLASS="rdoc"+><UL+><LI+>->+</LI+></UL+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokPIOpen"+></A+><B+>TokPIOpen</B+></TD+><TD CLASS="rdoc"+><?+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokPIClose"+></A+><B+>TokPIClose</B+></TD+><TD CLASS="rdoc"+>?>+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokSectionOpen"+></A+><B+>TokSectionOpen</B+></TD+><TD CLASS="rdoc"+><![+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokSectionClose"+></A+><B+>TokSectionClose</B+></TD+><TD CLASS="rdoc"+>]]>+</TD+></TR+><TR+><TD CLASS="arg"+><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="arg"+><A NAME="v%3ATokSpecialOpen"+></A+><B+>TokSpecialOpen</B+></TD+><TD CLASS="rdoc"+><!+</TD+></TR+><TR+><TD CLASS="arg"+><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="arg"+><A NAME="v%3ATokEndOpen"+></A+><B+>TokEndOpen</B+></TD+><TD CLASS="rdoc"+></+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokEndClose"+></A+><B+>TokEndClose</B+></TD+><TD CLASS="rdoc"+>/>+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokAnyOpen"+></A+><B+>TokAnyOpen</B+></TD+><TD CLASS="rdoc"+><+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokAnyClose"+></A+><B+>TokAnyClose</B+></TD+><TD CLASS="rdoc"+><PRE+>+</PRE+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokSqOpen"+></A+><B+>TokSqOpen</B+></TD+><TD CLASS="rdoc"+>[+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokSqClose"+></A+><B+>TokSqClose</B+></TD+><TD CLASS="rdoc"+>]+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokEqual"+></A+><B+>TokEqual</B+></TD+><TD CLASS="rdoc"+>=+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokQuery"+></A+><B+>TokQuery</B+></TD+><TD CLASS="rdoc"+>?+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokStar"+></A+><B+>TokStar</B+></TD+><TD CLASS="rdoc"+>*+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokPlus"+></A+><B+>TokPlus</B+></TD+><TD CLASS="rdoc"+>++</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokAmp"+></A+><B+>TokAmp</B+></TD+><TD CLASS="rdoc"+>&+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokSemi"+></A+><B+>TokSemi</B+></TD+><TD CLASS="rdoc"+>;+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokHash"+></A+><B+>TokHash</B+></TD+><TD CLASS="rdoc"+>#+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokBraOpen"+></A+><B+>TokBraOpen</B+></TD+><TD CLASS="rdoc"+>(+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokBraClose"+></A+><B+>TokBraClose</B+></TD+><TD CLASS="rdoc"+>)+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokPipe"+></A+><B+>TokPipe</B+></TD+><TD CLASS="rdoc"+>|+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokPercent"+></A+><B+>TokPercent</B+></TD+><TD CLASS="rdoc"+>%+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokComma"+></A+><B+>TokComma</B+></TD+><TD CLASS="rdoc"+>,+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokQuote"+></A+><B+>TokQuote</B+></TD+><TD CLASS="rdoc"+>'' or ""+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokName"+></A+><B+>TokName</B+> String</TD+><TD CLASS="rdoc"+>begins with letter, no spaces+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokFreeText"+></A+><B+>TokFreeText</B+> String</TD+><TD CLASS="rdoc"+>any character data+</TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokNull"+></A+><B+>TokNull</B+></TD+><TD CLASS="rdoc"+>fake token+</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:TokenT')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:TokenT" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>TokenT</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%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="arg"+><A NAME="v%3ADOCTYPEx"+></A+><B+>DOCTYPEx</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AELEMENTx"+></A+><B+>ELEMENTx</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AATTLISTx"+></A+><B+>ATTLISTx</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AENTITYx"+></A+><B+>ENTITYx</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ANOTATIONx"+></A+><B+>NOTATIONx</B+></TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Special')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Special" STYLE="display:block;"+><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+></DIV+></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="arg"+><A NAME="v%3ACDATAx"+></A+><B+>CDATAx</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AINCLUDEx"+></A+><B+>INCLUDEx</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AIGNOREx"+></A+><B+>IGNOREx</B+></TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Section')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Section" STYLE="display:block;"+><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+></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-OneOfN.html view
@@ -0,0 +1,3791 @@+<!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.OneOfN</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.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) => Eq (<A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"+>OneOf2</A+> a b)</TD+></TR+><TR+><TD CLASS="decl"+>(Show a, Show b) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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) => 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) => 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) => <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="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-Parse.html view
@@ -0,0 +1,299 @@+<!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.Parse</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.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 -> 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%3AxmlParse%27"+>xmlParse'</A+> :: String -> String -> 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 -> 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%3AdtdParse%27"+>dtdParse'</A+> :: String -> String -> 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 -> 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.+ 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 -> String -> 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 -> 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+>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 -> String -> 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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-Pretty.html view
@@ -0,0 +1,378 @@+<!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.Pretty</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.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+> -> 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+> -> 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+> -> 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+> -> 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+> -> 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+> -> 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+> -> 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+> -> 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+> -> 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+> -> 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+> -> 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+> -> 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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-Types.html view
@@ -0,0 +1,4832 @@+<!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.Types</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.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 -> a -> <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> 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%3AlookupST"+>lookupST</A+> :: String -> <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> a -> 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 -> a -> <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> a -> <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 -> <A HREF="Text-XML-HaXml-Types.html#t%3ASymTab"+>SymTab</A+> a -> 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+></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-Validate.html view
@@ -0,0 +1,194 @@+<!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.Validate</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.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+> -> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> -> [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+> -> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</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"+><A NAME="v%3Avalidate"+></A+><B+>validate</B+> :: <A HREF="Text-XML-HaXml-Types.html#t%3ADocTypeDecl"+>DocTypeDecl</A+> -> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> -> [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+> -> <A HREF="Text-XML-HaXml-Types.html#t%3AElement"+>Element</A+> -> [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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-Verbatim.html view
@@ -0,0 +1,429 @@+<!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.Verbatim</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.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+><pre></TT+> tag, Docbook's <TT+><literallayout></TT+> tag,+ and many more.+</P+><P+>Theoretically, the document author could avoid this problem by+ wrapping the contents of these tags in a <![CDATA[...]]> 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+><element-name/></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 -> 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+> -> 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 -> 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:Verbatim')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Verbatim" 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+> Char</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+><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+> [a]</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) => <A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"+>Verbatim</A+> (Either a b)</TD+></TR+></TABLE+></DIV+></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+> -> 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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-Wrappers.html view
@@ -0,0 +1,169 @@+<!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.Wrappers</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.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+> -> 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+> -> 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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-Xml2Haskell.html view
@@ -0,0 +1,2315 @@+<!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 => String -> 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 => a -> 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 => Handle -> 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 => Handle -> a -> 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 => FilePath -> 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 => FilePath -> a -> 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+>] -> (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 -> [<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+>] -> a</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoAttrs"+>toAttrs</A+> :: a -> [<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 -> <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+> -> Maybe a</TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoAttrFrTyp"+>toAttrFrTyp</A+> :: String -> a -> 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 => (a -> b) -> ([<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>] -> (Maybe b, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>])) -> [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>] -> (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+>] -> (Maybe a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>])) -> String -> String -> [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>] -> (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+>] -> (Maybe a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>])) -> [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>] -> ([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+>] -> (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 -> [<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 -> a -> Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>) -> String -> Maybe a -> 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 -> a -> Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>) -> String -> <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3ADefaultable"+>Defaultable</A+> a -> 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 -> <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+> -> Maybe a) -> String -> String -> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>] -> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AdefaultA"+>defaultA</A+> :: (String -> <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+> -> Maybe a) -> a -> String -> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>] -> <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 -> <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+> -> Maybe a) -> String -> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>] -> Maybe a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AfromAttrToStr"+>fromAttrToStr</A+> :: String -> <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+> -> Maybe String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AtoAttrFrStr"+>toAttrFrStr</A+> :: String -> String -> 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 -> <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+> -> 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 => String -> 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 => a -> 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 => Handle -> 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 => Handle -> a -> 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 => FilePath -> 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 => FilePath -> a -> 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+>] -> (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 -> [<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) => <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) => <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 => <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 => <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 => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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+>] -> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3AtoAttrs"+></A+><B+>toAttrs</B+> :: a -> [<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 -> <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+> -> Maybe a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3AtoAttrFrTyp"+></A+><B+>toAttrFrTyp</B+> :: String -> a -> 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 => (a -> b) -> ([<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>] -> (Maybe b, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>])) -> [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>] -> (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+>] -> (Maybe a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>])) -> String -> String -> [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>] -> (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+>] -> (Maybe a, [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>])) -> [<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AContent"+>Content</A+>] -> ([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+>] -> (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 -> [<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 => Eq (<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AList1"+>List1</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+>??? a => 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 => <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 => 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 -> a -> Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>) -> String -> Maybe a -> 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 -> a -> Maybe <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>) -> String -> <A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3ADefaultable"+>Defaultable</A+> a -> 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 -> <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+> -> Maybe a) -> String -> String -> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>] -> a</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3AdefaultA"+></A+><B+>defaultA</B+> :: (String -> <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+> -> Maybe a) -> a -> String -> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>] -> <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 -> <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+> -> Maybe a) -> String -> [<A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+>] -> Maybe a</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3AfromAttrToStr"+></A+><B+>fromAttrToStr</B+> :: String -> <A HREF="Text-XML-HaXml-Types.html#t%3AAttribute"+>Attribute</A+> -> Maybe String</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3AtoAttrFrStr"+></A+><B+>toAttrFrStr</B+> :: String -> String -> 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 => Eq (<A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3ADefaultable"+>Defaultable</A+> a)</TD+></TR+><TR+><TD CLASS="decl"+>Show a => 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 -> <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+> -> 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-Xtract-Combinators.html view
@@ -0,0 +1,841 @@+<!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.Xtract.Combinators</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.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+> -> <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</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%3Alocal"+>local</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Aglobal"+>global</A+> :: <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</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%3Adfilter"+>dfilter</A+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</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%3Aoloco"+>oloco</A+> :: (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</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%3Aoglobo"+>oglobo</A+> :: (<A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</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%3Aooo"+>ooo</A+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</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%3A%7C%7C%3E%7C%7C"+>(||>||)</A+> :: (a -> b -> [c]) -> (a -> b -> [c]) -> a -> b -> [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+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</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%3Aowithouto"+>owithouto</A+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</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%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+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</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%3Aoiffindo"+>oiffindo</A+> :: String -> (String -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+>) -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</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%3AoifTxto"+>oifTxto</A+> :: (String -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+>) -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</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%3Aocato"+>ocato</A+> :: [a -> b -> [c]] -> a -> b -> [c]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3A%2F%2F%3E%3E"+>(//>>)</A+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</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%3A%3C%3C%2F%2F"+>(<<//)</A+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</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%3Aodeepo"+>odeepo</A+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <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+> -> <A HREF="Text-XML-HaXml-Types.html#t%3AContent"+>Content</A+> -> [<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+> -> <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+> -> <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+> -> <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+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <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+> -> <A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>CFilter</A+>) -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <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+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <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+>(||>||)</B+> :: (a -> b -> [c]) -> (a -> b -> [c]) -> a -> b -> [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+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <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+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <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+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <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 -> (String -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+>) -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <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 -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+>) -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <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 -> b -> [c]] -> a -> b -> [c]</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3A%2F%2F%3E%3E"+></A+><B+>(//>>)</B+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <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+>(<<//)</B+> :: <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>DFilter</A+> -> <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+> -> <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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml-Xtract-Lex.html view
@@ -0,0 +1,286 @@+<!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.Xtract.Lex</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.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="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Documentation</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="decl"+><A NAME="v%3AlexXtract"+></A+><B+>lexXtract</B+> :: String -> [<A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3AToken"+>Token</A+>]</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="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+> Int</TD+><TD CLASS="rdoc"+></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-Xtract-Lex.html#t%3APosn"+>Posn</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Xtract-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="section4"+>Constructors</TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="arg"+><A NAME="v%3ASymbol"+></A+><B+>Symbol</B+> String</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokString"+></A+><B+>TokString</B+> String</TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ATokNum"+></A+><B+>TokNum</B+> Integer</TD+><TD CLASS="rdoc"+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:TokenT')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:TokenT" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3ATokenT"+>TokenT</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3ATokenT"+>TokenT</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%3AToken"+></A+><B+>Token</B+> = 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+><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-Parse.html view
@@ -0,0 +1,184 @@+<!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.Xtract.Parse</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.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 -> <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 -> <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 -> <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 -> <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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/Text-XML-HaXml.html view
@@ -0,0 +1,336 @@+<!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</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</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-2.html"+>1.13.2</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.ParserCombinators.HuttonMeijerWallace.html view
@@ -0,0 +1,1075 @@+<!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 -> [Either e t] -> <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 => <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 -> s -> [Either String t] -> [(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 -> s -> [Either e t] -> 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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e a -> <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 => t -> <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 => [t] -> <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 -> <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 -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e b -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e b -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e (a -> a -> a) -> a -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e (a -> a -> a) -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e (a -> a -> a) -> a -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e (a -> a -> a) -> <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)] -> <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) => <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s (p, t) e a -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s (p, t) e b -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s (p, t) e c -> <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 => <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s (p, t) String a -> <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) => <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s (p, t) String a -> String -> <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 -> s) -> <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 -> a) -> <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] -> <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 -> [Either e t] -> <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 => <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 -> s -> [Either String t] -> [(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 -> s -> [Either e t] -> 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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e a -> <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 => t -> <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 => [t] -> <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 -> <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 -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e b -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e b -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e (a -> a -> a) -> a -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e (a -> a -> a) -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e (a -> a -> a) -> a -> <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 -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s t e (a -> a -> a) -> <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)] -> <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) => <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s (p, t) e a -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s (p, t) e b -> <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s (p, t) e c -> <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 => <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s (p, t) String a -> <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) => <A HREF = "Text.ParserCombinators.HuttonMeijerWallace.html#t%3AParser"+ >Parser</A+ > s (p, t) String a -> String -> <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 -> s) -> <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 -> a) -> <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] -> <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 view
@@ -0,0 +1,845 @@+<!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 -> <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"+ >Doc</A+ > -> <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 -> <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 -> <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 -> <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 -> <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 -> <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 -> <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+ > -> <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+ > -> <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+ > -> <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+ > -> <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+ > -> <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+ > -> <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+ >(<>)</B+ > :: <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"+ >Doc</A+ > -> <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"+ >Doc</A+ > -> <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+ > -> <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"+ >Doc</A+ > -> <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+ >] -> <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+ >] -> <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+ > -> <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"+ >Doc</A+ > -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ > -> Int -> <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"+ >Doc</A+ > -> <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+ > -> [<A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"+ >Doc</A+ >] -> [<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+ > -> 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+ > -> Int -> Float -> (<A HREF = "Text.PrettyPrint.HughesPJ.html#TextDetails"+ >TextDetails</A+ > -> a -> a) -> a -> <A HREF = "Text.PrettyPrint.HughesPJ.html#Doc"+ >Doc</A+ > -> 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 view
@@ -0,0 +1,2156 @@+<!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+ > -> [<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 -> [a]</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3Anone"+ >none</A+ > :: a -> [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 -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%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 -> <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+ > -> <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+ > -> <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 -> Bool) -> <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 -> (String -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Aiffind"+ >iffind</A+ > :: String -> (String -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3AifTxt"+ >ifTxt</A+ > :: (String -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Ao"+ >o</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Aunion"+ >union</A+ > :: (a -> [b]) -> (a -> [b]) -> a -> [b]</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3Acat"+ >cat</A+ > :: [a -> [b]] -> a -> [b]</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3AandThen"+ >andThen</A+ > :: (a -> c) -> (c -> a -> b) -> a -> b</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3A%7C%3E%7C"+ >(|>|)</A+ > :: (a -> [b]) -> (a -> [b]) -> a -> [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+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Awithout"+ >without</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3A%2F%3E"+ >(/>)</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3A%3C%2F"+ >(</)</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Aet"+ >et</A+ > :: (String -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Apath"+ >path</A+ > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Adeep"+ >deep</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Adeepest"+ >deepest</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Amulti"+ >multi</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Awhen"+ >when</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Aguards"+ >guards</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Achip"+ >chip</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3AfoldXml"+ >foldXml</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3AmkElem"+ >mkElem</A+ > :: String -> [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3AmkElemAttr"+ >mkElemAttr</A+ > :: String -> [(String, <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >)] -> [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Aliteral"+ >literal</A+ > :: String -> <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 -> <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 -> <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)] -> <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"+ >(:>)</A+ > a a</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3A%3F%3E"+ >(?>)</A+ > :: (a -> [b]) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3AThenElse"+ >ThenElse</A+ > (a -> [b]) -> a -> [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+ > -> [(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 -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"+ >LabelFilter</A+ > 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%3Ax"+ >x</A+ > :: (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"+ >LabelFilter</A+ > a) -> (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"+ >LabelFilter</A+ > b) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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+ > -> <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 -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> String -> <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+ > -> <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 -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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+ > -> <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+ > -> a) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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+ > -> [<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 -> [a]</TD+ ></TR+ ><TR+ ><TD CLASS = "s15"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3Anone"+ ></A+ ><B+ >none</B+ > :: a -> [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 -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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 -> <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+ > -> <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+ > -> <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 -> Bool) -> <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 -> (String -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <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 -> (String -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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 -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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 -> [b]) -> (a -> [b]) -> a -> [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 -> [b]] -> a -> [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 -> c) -> (c -> a -> b) -> a -> 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+ >(|>|)</B+ > :: (a -> [b]) -> (a -> [b]) -> a -> [b]</TD+ ></TR+ ><TR+ ><TD CLASS = "doc"+ >Directional choice:+in <TT+ >f |>| 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+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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+ >(/>)</B+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "doc"+ >Pronounced <EM+ >slash</EM+ >, <TT+ >f /> 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+ >(</)</B+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "doc"+ >Pronounced <EM+ >outside</EM+ >, <TT+ >f </ 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 -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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+ >] -> <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 "name1", attr "attr1", children, tag "name2"]</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+ > -> <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+ > -> <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+ > -> <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+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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+ > -> <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+ > -> <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 -> [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >] -> <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 -> [(String, <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >)] -> [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >] -> <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 -> <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 -> <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 -> <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)] -> <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 ?> yes :> 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+ >(:>)</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+ >(?>)</B+ > :: (a -> [b]) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3AThenElse"+ >ThenElse</A+ > (a -> [b]) -> a -> [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+ > -> [(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 -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"+ >LabelFilter</A+ > a -> <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+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"+ >LabelFilter</A+ > a) -> (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ALabelFilter"+ >LabelFilter</A+ > b) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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+ > -> <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 -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> String -> <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+ > -> <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 -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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+ > -> <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+ > -> a) -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <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 view
@@ -0,0 +1,112 @@+<!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+ >] -> [<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 view
@@ -0,0 +1,130 @@+<!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+ > -> 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+ > -> 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 view
@@ -0,0 +1,1027 @@+<!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+ > -> 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+ > -> 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+ > -> 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+ > -> 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 -> <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 -> <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 -> String -> <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 -> String -> String -> <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 -> String -> <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 -> String</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3Amanglef"+ >manglef</A+ > :: String -> 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+ > -> 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+ > -> 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+ > -> 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+ > -> 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 -> <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 -> <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 -> String -> <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 -> String -> String -> <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 -> String -> <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 -> 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 -> 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 view
@@ -0,0 +1,157 @@+<!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+ > -> <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"+ >Element</A+ > -> <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+ > -> <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"+ >Element</A+ > -> <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)] -> (Char -> Bool) -> <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 view
@@ -0,0 +1,1134 @@+<!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 -> <A HREF = "Text.XML.HaXml.Haskell2Xml.html#t%3AHType"+ >HType</A+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3AtoContents"+ >toContents</A+ > :: a -> [<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+ >] -> (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 -> Char</TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3AxFromChar"+ >xFromChar</A+ > :: Char -> 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 => a -> <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+ > -> <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 => <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"+ >Document</A+ > -> 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 => String -> 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 => a -> 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 => FilePath -> 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 => FilePath -> a -> 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 => Handle -> 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 => Handle -> a -> 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 -> <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 -> [<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+ >] -> (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 -> 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 -> 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 => <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) => <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 => <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) => <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 => a -> <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+ > -> <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 => <A HREF = "Text.XML.HaXml.Types.html#t%3ADocument"+ >Document</A+ > -> 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 => String -> 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 => a -> 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 => FilePath -> 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 => FilePath -> a -> 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 => Handle -> 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 => Handle -> a -> 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 view
@@ -0,0 +1,1151 @@+<!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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >)] -> [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Amakehref"+ >makehref</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Aanchorname"+ >anchorname</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Ahpre"+ >hpre</A+ > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Ahcentre"+ >hcentre</A+ > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Ahem"+ >hem</A+ > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Ahtt"+ >htt</A+ > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Ahbold"+ >hbold</A+ > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Aparens"+ >parens</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Abullet"+ >bullet</A+ > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Ahtable"+ >htable</A+ > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Ahrow"+ >hrow</A+ > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Ahcol"+ >hcol</A+ > :: [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%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 -> <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 -> <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 -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >)] -> [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >] -> <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+ > -> [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >] -> <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+ > -> [<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ > -> <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+ >] -> <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+ >] -> <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+ >] -> <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+ >] -> <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 -> <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 -> <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 -> <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+ >] -> <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 view
@@ -0,0 +1,137 @@+<!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 -> String -> <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 -> String -> <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 view
@@ -0,0 +1,146 @@+<!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+ > -> 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+ > -> 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+ > -> 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+ > -> 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 view
@@ -0,0 +1,1277 @@+<!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 -> String -> [<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+ > -> String -> [<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 -> Maybe <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"+ >Posn</A+ > -> <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 -> String -> [<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+ > -> String -> [<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 -> Maybe <A HREF = "Text.XML.HaXml.Lex.html#t%3APosn"+ >Posn</A+ > -> <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"+ ><!--</TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3ATokCommentClose"+ ></A+ ><B+ >TokCommentClose</B+ ></TD+ ><TD CLASS = "rdoc"+ ><UL+ ><LI+ >-></LI+ ></UL+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3ATokPIOpen"+ ></A+ ><B+ >TokPIOpen</B+ ></TD+ ><TD CLASS = "rdoc"+ ><?</TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3ATokPIClose"+ ></A+ ><B+ >TokPIClose</B+ ></TD+ ><TD CLASS = "rdoc"+ >?></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3ATokSectionOpen"+ ></A+ ><B+ >TokSectionOpen</B+ ></TD+ ><TD CLASS = "rdoc"+ ><![</TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3ATokSectionClose"+ ></A+ ><B+ >TokSectionClose</B+ ></TD+ ><TD CLASS = "rdoc"+ >]]></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"+ ><!</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"+ ></</TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3ATokEndClose"+ ></A+ ><B+ >TokEndClose</B+ ></TD+ ><TD CLASS = "rdoc"+ >/></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3ATokAnyOpen"+ ></A+ ><B+ >TokAnyOpen</B+ ></TD+ ><TD CLASS = "rdoc"+ ><</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"+ >&</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 ""</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 view
@@ -0,0 +1,1799 @@+<!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 view
@@ -0,0 +1,287 @@+<!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 -> 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%3AxmlParse%27"+ >xmlParse'</A+ > :: String -> String -> 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 -> 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%3AdtdParse%27"+ >dtdParse'</A+ > :: String -> String -> 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 -> 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.+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 -> String -> 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 -> 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+ >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 -> String -> 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 view
@@ -0,0 +1,362 @@+<!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+ > -> 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+ > -> 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+ > -> 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+ > -> 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+ > -> 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+ > -> 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+ > -> 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+ > -> 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+ > -> 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+ > -> 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+ > -> 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+ > -> 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 view
@@ -0,0 +1,4775 @@+<!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 -> a -> <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"+ >SymTab</A+ > 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%3AlookupST"+ >lookupST</A+ > :: String -> <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"+ >SymTab</A+ > a -> 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 -> a -> <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"+ >SymTab</A+ > a -> <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 -> <A HREF = "Text.XML.HaXml.Types.html#t%3ASymTab"+ >SymTab</A+ > a -> 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 view
@@ -0,0 +1,188 @@+<!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+ > -> <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"+ >Element</A+ > -> [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+ > -> <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"+ >Element</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"+ ><A NAME = "v%3Avalidate"+ ></A+ ><B+ >validate</B+ > :: <A HREF = "Text.XML.HaXml.Types.html#t%3ADocTypeDecl"+ >DocTypeDecl</A+ > -> <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"+ >Element</A+ > -> [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+ > -> <A HREF = "Text.XML.HaXml.Types.html#t%3AElement"+ >Element</A+ > -> [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 view
@@ -0,0 +1,421 @@+<!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+ ><pre></TT+ > tag, Docbook's <TT+ ><literallayout></TT+ > tag,+and many more.+</P+ ><P+ >Theoretically, the document author could avoid this problem by+wrapping the contents of these tags in a <![CDATA[...]]> 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+ ><element-name/></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 -> 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+ > -> 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 -> 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 => <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) => <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+ > -> 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 view
@@ -0,0 +1,164 @@+<!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+ > -> 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+ > -> 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 view
@@ -0,0 +1,2300 @@+<!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 => String -> 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 => a -> 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 => Handle -> 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 => Handle -> a -> 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 => FilePath -> 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 => FilePath -> a -> 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+ >] -> (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 -> [<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+ >] -> a</TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3AtoAttrs"+ >toAttrs</A+ > :: a -> [<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 -> <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ > -> Maybe a</TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3AtoAttrFrTyp"+ >toAttrFrTyp</A+ > :: String -> a -> 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 => (a -> b) -> ([<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >] -> (Maybe b, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >])) -> [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >] -> (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+ >] -> (Maybe a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >])) -> String -> String -> [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >] -> (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+ >] -> (Maybe a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >])) -> [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >] -> ([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+ >] -> (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 -> [<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 -> a -> Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ >) -> String -> Maybe a -> 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 -> a -> Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ >) -> String -> <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3ADefaultable"+ >Defaultable</A+ > a -> 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 -> <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ > -> Maybe a) -> String -> String -> [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ >] -> a</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3AdefaultA"+ >defaultA</A+ > :: (String -> <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ > -> Maybe a) -> a -> String -> [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ >] -> <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 -> <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ > -> Maybe a) -> String -> [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ >] -> Maybe a</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3AfromAttrToStr"+ >fromAttrToStr</A+ > :: String -> <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ > -> Maybe String</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3AtoAttrFrStr"+ >toAttrFrStr</A+ > :: String -> String -> 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 -> <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+ > -> 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 => String -> 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 => a -> 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 => Handle -> 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 => Handle -> a -> 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 => FilePath -> 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 => FilePath -> a -> 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+ >] -> (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 -> [<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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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) => <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 => <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+ > (Maybe 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+ > (<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+ >] -> a</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3AtoAttrs"+ ></A+ ><B+ >toAttrs</B+ > :: a -> [<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 -> <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ > -> Maybe a</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3AtoAttrFrTyp"+ ></A+ ><B+ >toAttrFrTyp</B+ > :: String -> a -> 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 => (a -> b) -> ([<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >] -> (Maybe b, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >])) -> [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >] -> (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+ >] -> (Maybe a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >])) -> String -> String -> [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >] -> (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+ >] -> (Maybe a, [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >])) -> [<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AContent"+ >Content</A+ >] -> ([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+ >] -> (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 -> [<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 => <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 => Eq (<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3AList1"+ >List1</A+ > a)</TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ >??? a => 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 => 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 -> a -> Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ >) -> String -> Maybe a -> 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 -> a -> Maybe <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ >) -> String -> <A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3ADefaultable"+ >Defaultable</A+ > a -> 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 -> <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ > -> Maybe a) -> String -> String -> [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ >] -> a</TD+ ></TR+ ><TR+ ><TD CLASS = "s15"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3AdefaultA"+ ></A+ ><B+ >defaultA</B+ > :: (String -> <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ > -> Maybe a) -> a -> String -> [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ >] -> <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 -> <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ > -> Maybe a) -> String -> [<A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ >] -> Maybe a</TD+ ></TR+ ><TR+ ><TD CLASS = "s15"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3AfromAttrToStr"+ ></A+ ><B+ >fromAttrToStr</B+ > :: String -> <A HREF = "Text.XML.HaXml.Types.html#t%3AAttribute"+ >Attribute</A+ > -> Maybe String</TD+ ></TR+ ><TR+ ><TD CLASS = "s15"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3AtoAttrFrStr"+ ></A+ ><B+ >toAttrFrStr</B+ > :: String -> String -> 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 => Eq (<A HREF = "Text.XML.HaXml.Xml2Haskell.html#t%3ADefaultable"+ >Defaultable</A+ > a)</TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ >Show a => 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 -> <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+ > -> 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 view
@@ -0,0 +1,829 @@+<!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+ > -> <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"+ >Content</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%3Alocal"+ >local</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Aglobal"+ >global</A+ > :: <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</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%3Adfilter"+ >dfilter</A+ > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</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%3Aoloco"+ >oloco</A+ > :: (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</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%3Aoglobo"+ >oglobo</A+ > :: (<A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</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%3Aooo"+ >ooo</A+ > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</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%3A%7C%7C%3E%7C%7C"+ >(||>||)</A+ > :: (a -> b -> [c]) -> (a -> b -> [c]) -> a -> b -> [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+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</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%3Aowithouto"+ >owithouto</A+ > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</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%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+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</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%3Aoiffindo"+ >oiffindo</A+ > :: String -> (String -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</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%3AoifTxto"+ >oifTxto</A+ > :: (String -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</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%3Aocato"+ >ocato</A+ > :: [a -> b -> [c]] -> a -> b -> [c]</TD+ ></TR+ ><TR+ ><TD CLASS = "s8"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A HREF = "#v%3A%2F%2F%3E%3E"+ >(//>>)</A+ > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</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%3A%3C%3C%2F%2F"+ >(<<//)</A+ > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</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%3Aodeepo"+ >odeepo</A+ > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <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+ > -> <A HREF = "Text.XML.HaXml.Types.html#t%3AContent"+ >Content</A+ > -> [<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+ > -> <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+ > -> <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+ > -> <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+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <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+ > -> <A HREF = "Text.XML.HaXml.Combinators.html#t%3ACFilter"+ >CFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <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+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <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+ >(||>||)</B+ > :: (a -> b -> [c]) -> (a -> b -> [c]) -> a -> b -> [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+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <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+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <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+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <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 -> (String -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <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 -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ >) -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <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 -> b -> [c]] -> a -> b -> [c]</TD+ ></TR+ ><TR+ ><TD CLASS = "s15"+ ></TD+ ></TR+ ><TR+ ><TD CLASS = "decl"+ ><A NAME = "v%3A%2F%2F%3E%3E"+ ></A+ ><B+ >(//>>)</B+ > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <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+ >(<<//)</B+ > :: <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <A HREF = "Text.XML.HaXml.Xtract.Combinators.html#t%3ADFilter"+ >DFilter</A+ > -> <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+ > -> <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 view
@@ -0,0 +1,190 @@+<!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 -> [<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 view
@@ -0,0 +1,178 @@+<!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 -> <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 -> <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 -> <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 -> <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 view
@@ -0,0 +1,331 @@+<!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
@@ -0,0 +1,190 @@+<!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-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"+><</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 (|)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>|>|</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"+>||>||</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3A%7C%7C%3E%7C%7C"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-33.html view
@@ -0,0 +1,182 @@+<!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-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"+><</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 (!)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>!</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3A%21"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-43.html view
@@ -0,0 +1,182 @@+<!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-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"+><</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 (+)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>+++</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3A%2B%2B%2B"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-47.html view
@@ -0,0 +1,190 @@+<!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-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"+><</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 (/)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>//>></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+></TR+><TR+><TD CLASS="indexentry"+>/></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+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-58.html view
@@ -0,0 +1,182 @@+<!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-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"+><</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 (:)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>:></TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3A%3A%3E"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-60.html view
@@ -0,0 +1,190 @@+<!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-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"+><</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 (<)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+></</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"+><<//</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3A%3C%3C%2F%2F"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-63.html view
@@ -0,0 +1,190 @@+<!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-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"+><</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 (?)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>?</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3A%3F"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>?></TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3A%3F%3E"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-A.html view
@@ -0,0 +1,390 @@+<!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-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"+><</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 (A)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>ANY</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>ANYContent</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AANYContent"+>Text.XML.HaXml.Xml2Haskell</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+></TD+></TR+><TR+><TD CLASS="indexentry"+>ATTLISTx</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3AATTLISTx"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>Any</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AAny"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>AttDef</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>AttList</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>AttListDecl</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>AttType</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>AttValue</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>AttrFields</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AAttrFields"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>Attribute</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>addST</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>anchor</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Aanchor"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>anchorname</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Aanchorname"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>andThen</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3AandThen"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>applypred</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aapplypred"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>attr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Aattr"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>attr2str</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3Aattr2str"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>attribute</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Pretty.html#v%3Aattribute"+>Text.XML.HaXml.Html.Pretty</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>attributed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Aattributed"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</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+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-B.html view
@@ -0,0 +1,190 @@+<!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-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"+><</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 (B)</TD+></TR+><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+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Abullet"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-C.html view
@@ -0,0 +1,464 @@+<!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-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"+><</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 (C)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>CDATAx</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ACDATAx"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>CDSect</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>CElem</TD+><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+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>CFilter</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#t%3ACFilter"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>CMisc</TD+><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+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>CP</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>CRef</TD+><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+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>CString</TD+><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+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>CharData</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>CharRef</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>Choice</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Comment</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>ConditionalSect</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Constr</TD+></TR+><TR+><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+></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+></TR+><TR+><TD CLASS="indexentry"+>Constructors</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AConstructors"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>Content</TD+><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+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>ContentSpec</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>cat</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="indexentry"+>catMaybes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AcatMaybes"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>cdata</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Acdata"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>chainl</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Achainl"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>chainl1</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Achainl1"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>chainr</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Achainr"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>chainr1</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Achainr1"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>children</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="indexentry"+>chip</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Achip"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>choice</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3Achoice"+>Text.XML.HaXml.Xml2Haskell</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-Html-Pretty.html#v%3Acontent"+>Text.XML.HaXml.Html.Pretty</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (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"+>cp</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Pretty.html#v%3Acp"+>Text.XML.HaXml.Pretty</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-D.html view
@@ -0,0 +1,422 @@+<!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-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"+><</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 (D)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>DFilter</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#t%3ADFilter"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>DOCTYPEx</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ADOCTYPEx"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>DTD</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>DataDef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3ADataDef"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>DefEntityValue</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>DefExternalID</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>Default</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3ADefault"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>DefaultDecl</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>DefaultTo</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Defaultable</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3ADefaultable"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3ADefaultable"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Defined</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3ADefined"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><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+></TR+><TR+><TD CLASS="indexentry"+>DocTypeDecl</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Document</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>deep</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"+>deepest</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="indexentry"+>defaultA</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AdefaultA"+>Text.XML.HaXml.Xml2Haskell</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+></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+></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+></TD+></TR+><TR+><TD CLASS="indexentry"+>dfilter</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Adfilter"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>doctypedecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Pretty.html#v%3Adoctypedecl"+>Text.XML.HaXml.Pretty</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>document</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (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+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Pretty.html#v%3Adocument"+>Text.XML.HaXml.Pretty</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>dtd2TypeDef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-Convert.html#v%3Adtd2TypeDef"+>Text.XML.HaXml.DtdToHaskell.Convert</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>dtdParse</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="indexentry"+>dtdParse'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3AdtdParse%27"+>Text.XML.HaXml.Parse</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-E.html view
@@ -0,0 +1,814 @@+<!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-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"+><</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 (E)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>ELEMENTx</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3AELEMENTx"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EMPTY</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>ENTITIES</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>ENTITY</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>ENTITYx</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3AENTITYx"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EV</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>EVRef</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>EVString</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>EightOf10</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf10"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf11</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf12</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf8</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf8"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EightOf9</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEightOf9"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EighteenOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEighteenOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EighteenOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEighteenOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>EighteenOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AEighteenOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>Elem</TD+><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+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>ElemTag</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Element</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>ElementDecl</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>ElevenOf11</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AElevenOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ElevenOf12</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AElevenOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ElevenOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AElevenOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ElevenOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AElevenOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ElevenOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AElevenOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ElevenOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AElevenOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ElevenOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AElevenOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ElevenOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AElevenOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ElevenOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AElevenOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ElevenOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AElevenOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>EncodingDecl</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>Entity</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>EntityDecl</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>EntityDef</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>EntityGEDecl</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>EntityPEDecl</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>EntityRef</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>EntityValue</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>EnumDef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AEnumDef"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>EnumeratedType</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Enumeration</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>ExtConditionalSect</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>ExtMarkupDecl</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>ExtPE</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>ExtParsedEnt</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>ExtSubset</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>ExtSubsetDecl</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>ExternalID</TD+><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+></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-Html-Pretty.html#v%3Aelement"+>Text.XML.HaXml.Html.Pretty</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (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="indexentry"+>elm</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="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Aelserror"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>emptyST</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>eof</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Aeof"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>et</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Aet"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>extracted</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Aextracted"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-F.html view
@@ -0,0 +1,682 @@+<!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-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"+><</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 (F)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry" COLSPAN="2"+>FIXED</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>FifteenOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFifteenOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FifteenOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFifteenOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FifteenOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFifteenOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FifteenOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFifteenOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FifteenOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFifteenOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FifteenOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFifteenOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf10</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf10"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf11</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf12</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf5</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf5"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf6</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf6"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf7</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf7"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf8</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf8"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FiveOf9</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFiveOf9"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf10</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf10"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf11</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf12</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf4</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf4"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf5</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf5"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf6</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf6"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf7</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf7"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf8</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf8"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourOf9</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourOf9"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourteenOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourteenOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourteenOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourteenOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourteenOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourteenOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourteenOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourteenOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourteenOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourteenOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourteenOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourteenOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>FourteenOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AFourteenOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>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+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>fWriteXml</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-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+></TD+></TR+><TR+><TD CLASS="indexentry"+>find</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Afind"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>fix2Args</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Wrappers.html#v%3Afix2Args"+>Text.XML.HaXml.Wrappers</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>foldXml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3AfoldXml"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>fromAttrToStr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfromAttrToStr"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>fromAttrToTyp</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfromAttrToTyp"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>fromAttrs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfromAttrs"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>fromContents</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AfromContents"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>fromElem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfromElem"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>fromText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AfromText"+>Text.XML.HaXml.Xml2Haskell</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+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-G.html view
@@ -0,0 +1,210 @@+<!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-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"+><</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 (G)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry" COLSPAN="2"+>GEDecl</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>global</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aglobal"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>guards</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Aguards"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-H.html view
@@ -0,0 +1,422 @@+<!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-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"+><</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 (H)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>HType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHType"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>Haskell2Xml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Haskell2Xml.html#t%3AHaskell2Xml"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>h1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ah1"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>h2</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ah2"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>h3</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ah3"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>h4</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ah4"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>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+></TD+></TR+><TR+><TD CLASS="indexentry"+>hName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AhName"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>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+></TD+></TR+><TR+><TD CLASS="indexentry"+>hbody</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahbody"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hbold</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahbold"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hbr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahbr"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hcentre</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahcentre"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hcol</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahcol"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hdiv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahdiv"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahem"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hhead</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahhead"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hhr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahhr"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hpara</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahpara"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hpre</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahpre"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hrow</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahrow"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>hspan</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahspan"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>htable</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahtable"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>htitle</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahtitle"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>html</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahtml"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>htmlParse</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="indexentry"+>htmlprint</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahtmlprint"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>htt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ahtt"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-I.html view
@@ -0,0 +1,342 @@+<!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-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"+><</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 (I)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>ID</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>IDREF</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>IDREFS</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>IGNOREx</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3AIGNOREx"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>IMPLIED</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>INCLUDEx</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3AINCLUDEx"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Ignore</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>IgnoreSect</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>IgnoreSectContents</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>IncludeSect</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>ifTxt</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"+>iffind</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="indexentry"+>interspersed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Ainterspersed"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>isPrefixOf</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AisPrefixOf"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>item</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Aitem"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-K.html view
@@ -0,0 +1,182 @@+<!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-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"+><</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 (K)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>keep</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Akeep"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-L.html view
@@ -0,0 +1,254 @@+<!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-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"+><</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 (L)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>LabelFilter</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#t%3ALabelFilter"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>List</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AList"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>List1</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AList1"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AList1"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>lexXtract</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Lex.html#v%3AlexXtract"+>Text.XML.HaXml.Xtract.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>literal</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Aliteral"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>local</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Alocal"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>lookupST</TD+><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+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-M.html view
@@ -0,0 +1,374 @@+<!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-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"+><</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 (M)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>MarkupDecl</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>MarkupMisc</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Maybe</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AMaybe"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><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+></TR+><TR+><TD CLASS="indexentry"+>Misc</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Mixed</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>Modifier</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>makehref</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Amakehref"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>mangle</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3Amangle"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>manglef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3Amanglef"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></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"+>Text.XML.HaXml.Html.Generate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>maybeToAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AmaybeToAttr"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>mkElem</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3AmkElem"+>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-Haskell2Xml.html#v%3AmkElem"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>mkElemAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3AmkElemAttr"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>mkElemC</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AmkElemC"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>mkInstance</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-Instance.html#v%3AmkInstance"+>Text.XML.HaXml.DtdToHaskell.Instance</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>mkXmlEscaper</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Escape.html#v%3AmkXmlEscaper"+>Text.XML.HaXml.Escape</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>multi</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Amulti"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-N.html view
@@ -0,0 +1,510 @@+<!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-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"+><</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 (N)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>NDATA</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>NDataDecl</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>NMTOKEN</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>NMTOKENS</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>NOTATION</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>NOTATIONx</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ANOTATIONx"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Name</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AName"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</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"+>3 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>Names</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>NineOf10</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf10"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineOf11</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineOf12</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineOf9</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineOf9"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineteenOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineteenOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NineteenOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ANineteenOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>NmToken</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>NmTokens</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>NonDefault</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3ANonDefault"+>Text.XML.HaXml.Xml2Haskell</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+></TD+></TR+><TR+><TD CLASS="indexentry"+>None</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>Notation</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>NotationDecl</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>NotationType</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>name</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="indexentry"+>name_</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="indexentry"+>name_a</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3Aname_a"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>name_ac</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3Aname_ac"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>name_f</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3Aname_f"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>none</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="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Anottok"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>numbered</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Anumbered"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-O.html view
@@ -0,0 +1,698 @@+<!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-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"+><</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 (O)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>OneOf</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AOneOf"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf10</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf10"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf10"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf11</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf12</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf13</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf14</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf15</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf16</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf17</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf18</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf19</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf2</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf2"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf2"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf20</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf3</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf3"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf3"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf4</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf4"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf4"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf5</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf5"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf5"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf6</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf6"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf6"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf7</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf7"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf7"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf8</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf8"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf8"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>OneOf9</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#t%3AOneOf9"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AOneOf9"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>o</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="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html#v%3Aononeo"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>oo</TD+><TD CLASS="indexlinks"+><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+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-P.html view
@@ -0,0 +1,522 @@+<!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-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"+><</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 (P)</TD+></TR+><TR+><TD+><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+></TR+><TR+><TD CLASS="indexentry"+>PCDATAplus</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>PEDecl</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>PEDef</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>PEDefEntityValue</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>PEDefExternalID</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>PEReference</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>PI</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>PITarget</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>PUBLIC</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>PUBLICID</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>Plus</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Posn</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#t%3APosn"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3APosn"+>Text.XML.HaXml.Xtract.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>Prim</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3APrim"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ProcessingInstruction</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Prolog</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>PubidLiteral</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>PublicID</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>papply</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Apapply"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>papply'</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Apapply%27"+>Text.ParserCombinators.HuttonMeijerWallace</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"+>Text.XML.HaXml.Xtract.Parse</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>partialValidate</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Validate.html#v%3ApartialValidate"+>Text.XML.HaXml.Validate</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>path</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Apath"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>posInNewCxt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3AposInNewCxt"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>position</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Aposition"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</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+></TD+></TR+><TR+><TD CLASS="indexentry"+>ppAName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AppAName"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ppHName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AppHName"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ppTypeDef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AppTypeDef"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ppXName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AppXName"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>processXmlWith</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Wrappers.html#v%3AprocessXmlWith"+>Text.XML.HaXml.Wrappers</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>prolog</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Pretty.html#v%3Aprolog"+>Text.XML.HaXml.Pretty</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-Q.html view
@@ -0,0 +1,182 @@+<!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-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"+><</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 (Q)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>Query</TD+><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+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-R.html view
@@ -0,0 +1,258 @@+<!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-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"+><</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 (R)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>REQUIRED</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>RefChar</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>RefEntity</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>Reference</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>readXml</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+></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+></TD+></TR+><TR+><TD CLASS="indexentry"+>render</TD+><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+><TD CLASS="indexentry"+>replaceAttrs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3AreplaceAttrs"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>replaceTag</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3AreplaceTag"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-S.html view
@@ -0,0 +1,690 @@+<!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-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"+><</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 (S)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>SDDecl</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>SYSTEM</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>Section</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#t%3ASection"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>Seq</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>SevenOf10</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf10"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf11</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf12</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf7</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf7"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf8</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf8"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SevenOf9</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASevenOf9"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SeventeenOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASeventeenOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SeventeenOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASeventeenOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SeventeenOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASeventeenOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SeventeenOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASeventeenOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf10</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf10"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf11</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf12</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf6</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf6"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf7</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf7"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf8</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf8"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixOf9</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixOf9"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixteenOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixteenOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixteenOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixteenOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixteenOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixteenOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixteenOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixteenOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SixteenOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ASixteenOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>Special</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#t%3ASpecial"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>Star</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>String</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AString"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><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+></TR+><TR+><TD CLASS="indexentry"+>StringType</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>StructType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3AStructType"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>SymTab</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>Symbol</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Lex.html#v%3ASymbol"+>Text.XML.HaXml.Xtract.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>SystemLiteral</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>sepby</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Asepby"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>sepby1</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Asepby1"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>showConstr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AshowConstr"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>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+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AshowXml"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>showattr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Html-Generate.html#v%3Ashowattr"+>Text.XML.HaXml.Html.Generate</A+>, 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+></TR+><TR+><TD CLASS="indexentry"+>stget</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Astget"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>stquery</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Astquery"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>str2attr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3Astr2attr"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>stupd</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Astupd"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-T.html view
@@ -0,0 +1,1218 @@+<!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-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"+><</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 (T)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>TagName</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>TenOf10</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATenOf10"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TenOf11</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATenOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TenOf12</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATenOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TenOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATenOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TenOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATenOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TenOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATenOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TenOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATenOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TenOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATenOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TenOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATenOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TenOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATenOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TenOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATenOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>TextDecl</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>ThenElse</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#t%3AThenElse"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>ThirteenOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThirteenOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThirteenOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThirteenOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThirteenOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThirteenOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThirteenOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThirteenOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThirteenOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThirteenOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThirteenOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThirteenOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThirteenOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThirteenOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThirteenOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThirteenOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf10</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf10"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf11</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf12</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf3</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf3"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf4</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf4"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf5</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf5"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf6</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf6"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf7</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf7"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf8</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf8"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>ThreeOf9</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3AThreeOf9"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokAmp</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokAmp"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokAnyClose</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokAnyClose"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokAnyOpen</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokAnyOpen"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokBraClose</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokBraClose"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokBraOpen</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokBraOpen"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokComma</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokComma"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokCommentClose</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokCommentClose"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokCommentOpen</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokCommentOpen"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokEndClose</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokEndClose"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokEndOpen</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokEndOpen"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokEqual</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokEqual"+>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"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokHash</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokHash"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokName"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokNull</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokNull"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokNum</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Lex.html#v%3ATokNum"+>Text.XML.HaXml.Xtract.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokPIClose</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokPIClose"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokPIOpen</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokPIOpen"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokPercent</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokPercent"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokPipe</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokPipe"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokPlus</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokPlus"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokQuery</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokQuery"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokQuote</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokQuote"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokSection</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokSection"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokSectionClose</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokSectionClose"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokSectionOpen</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokSectionOpen"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokSemi</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokSemi"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokSpecial</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokSpecial"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokSpecialOpen</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokSpecialOpen"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokSqClose</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokSqClose"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokSqOpen</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokSqOpen"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokStar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3ATokStar"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TokString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Lex.html#v%3ATokString"+>Text.XML.HaXml.Xtract.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Token</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#t%3AToken"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3AToken"+>Text.XML.HaXml.Xtract.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>TokenT</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#t%3ATokenT"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Lex.html#t%3ATokenT"+>Text.XML.HaXml.Xtract.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>TokenizedType</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>Tuple</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3ATuple"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><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+></TR+><TR+><TD CLASS="indexentry"+>TwelveOf12</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwelveOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwelveOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwelveOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwelveOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwelveOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwelveOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwelveOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwelveOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwelveOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwelveOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwelveOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwelveOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwelveOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwelveOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwelveOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwelveOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwelveOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwentyOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwentyOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf10</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf10"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf11</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf11"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf12</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf12"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf13"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf14"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf15"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf16"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf17</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf17"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf18</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf18"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf19</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf19"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf2</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf2"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf20</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf20"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf3</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf3"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf4</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf4"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf5</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf5"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf6</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf6"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf7</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf7"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf8</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf8"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TwoOf9</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-OneOfN.html#v%3ATwoOf9"+>Text.XML.HaXml.OneOfN</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>TypeDef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#t%3ATypeDef"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>tag</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Atag"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>tagWith</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3AtagWith"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>tagged</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Atagged"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>textlabelled</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Atextlabelled"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>toAttrFrStr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AtoAttrFrStr"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>toAttrFrTyp</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AtoAttrFrTyp"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>toAttrs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AtoAttrs"+>Text.XML.HaXml.Xml2Haskell</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>toContents</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AtoContents"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>toDTD</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AtoDTD"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>toEOF</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3AtoEOF"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>toElem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AtoElem"+>Text.XML.HaXml.Xml2Haskell</A+></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+></TR+><TR+><TD CLASS="indexentry"+>toText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#v%3AtoText"+>Text.XML.HaXml.Xml2Haskell</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+></TD+></TR+><TR+><TD CLASS="indexentry"+>tok</TD+><TD CLASS="indexlinks"+><A HREF="Text-ParserCombinators-HuttonMeijerWallace.html#v%3Atok"+>Text.ParserCombinators.HuttonMeijerWallace</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>txt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Atxt"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-U.html view
@@ -0,0 +1,182 @@+<!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-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"+><</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 (U)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>union</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Aunion"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-V.html view
@@ -0,0 +1,222 @@+<!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-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"+><</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 (V)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>Verbatim</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Verbatim.html#t%3AVerbatim"+>Text.XML.HaXml.Verbatim</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>VersionInfo</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>validate</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Validate.html#v%3Avalidate"+>Text.XML.HaXml.Validate</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>verbAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Verbatim.html#v%3AverbAttr"+>Text.XML.HaXml.Verbatim</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>verbatim</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Verbatim.html#v%3Averbatim"+>Text.XML.HaXml.Verbatim</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>version</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml.html#v%3Aversion"+>Text.XML.HaXml</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-W.html view
@@ -0,0 +1,198 @@+<!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-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"+><</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 (W)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry"+>when</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Awhen"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>with</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"+>without</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Awithout"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-X.html view
@@ -0,0 +1,314 @@+<!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-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"+><</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 (X)</TD+></TR+><TR+><TD+><TABLE CELLPADDING="0" CELLSPACING="5"+><TR+><TD CLASS="indexentry" COLSPAN="2"+>XMLDecl</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><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+></TR+><TR+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><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+></TR+><TR+><TD CLASS="indexentry"+>XmlAttrType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xml2Haskell.html#t%3AXmlAttrType"+>Text.XML.HaXml.Xml2Haskell</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+></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+></TD+></TR+><TR+><TD CLASS="indexentry"+>XmlEscaper</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Escape.html#t%3AXmlEscaper"+>Text.XML.HaXml.Escape</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>x</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Combinators.html#v%3Ax"+>Text.XML.HaXml.Combinators</A+>, Text.XML.HaXml</TD+></TR+><TR+><TD CLASS="indexentry"+>xFromChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AxFromChar"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>xName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html#v%3AxName"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>xToChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Haskell2Xml.html#v%3AxToChar"+>Text.XML.HaXml.Haskell2Xml</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>xmlEscape</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Escape.html#v%3AxmlEscape"+>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"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>xmlParse</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="indexentry"+>xmlParse'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Parse.html#v%3AxmlParse%27"+>Text.XML.HaXml.Parse</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>xmlReLex</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Lex.html#v%3AxmlReLex"+>Text.XML.HaXml.Lex</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>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"+>xtract</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HaXml-Xtract-Parse.html#v%3Axtract"+>Text.XML.HaXml.Xtract.Parse</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/doc-index-tA.html view
@@ -0,0 +1,135 @@+<!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 view
@@ -0,0 +1,45 @@+<!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 view
@@ -0,0 +1,191 @@+<!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 view
@@ -0,0 +1,117 @@+<!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 view
@@ -0,0 +1,271 @@+<!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 view
@@ -0,0 +1,59 @@+<!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 view
@@ -0,0 +1,59 @@+<!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 view
@@ -0,0 +1,65 @@+<!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 view
@@ -0,0 +1,101 @@+<!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 view
@@ -0,0 +1,45 @@+<!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 view
@@ -0,0 +1,45 @@+<!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 view
@@ -0,0 +1,67 @@+<!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 view
@@ -0,0 +1,111 @@+<!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 view
@@ -0,0 +1,147 @@+<!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 view
@@ -0,0 +1,235 @@+<!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 view
@@ -0,0 +1,181 @@+<!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 view
@@ -0,0 +1,45 @@+<!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 view
@@ -0,0 +1,59 @@+<!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 view
@@ -0,0 +1,117 @@+<!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 view
@@ -0,0 +1,133 @@+<!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 view
@@ -0,0 +1,45 @@+<!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 view
@@ -0,0 +1,71 @@+<!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 view
@@ -0,0 +1,45 @@+<!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 view
@@ -0,0 +1,101 @@+<!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 view
@@ -0,0 +1,45 @@+<!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 view
@@ -0,0 +1,45 @@+<!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 view
@@ -0,0 +1,261 @@+<!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 view
@@ -0,0 +1,87 @@+<!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 view
@@ -0,0 +1,337 @@+<!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 view
@@ -0,0 +1,319 @@+<!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 view
@@ -0,0 +1,737 @@+<!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 view
@@ -0,0 +1,693 @@+<!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 view
@@ -0,0 +1,81 @@+<!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 view
@@ -0,0 +1,389 @@+<!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 view
@@ -0,0 +1,243 @@+<!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 view
@@ -0,0 +1,45 @@+<!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 view
@@ -0,0 +1,57 @@+<!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 view
@@ -0,0 +1,155 @@+<!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 view
@@ -0,0 +1,223 @@+<!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 view
@@ -0,0 +1,417 @@+<!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 view
@@ -0,0 +1,429 @@+<!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 view
@@ -0,0 +1,425 @@+<!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 view
@@ -0,0 +1,69 @@+<!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 view
@@ -0,0 +1,187 @@+<!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 view
@@ -0,0 +1,657 @@+<!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 view
@@ -0,0 +1,1271 @@+<!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 view
@@ -0,0 +1,57 @@+<!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 view
@@ -0,0 +1,101 @@+<!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 view
@@ -0,0 +1,81 @@+<!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 view
@@ -0,0 +1,177 @@+<!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 view
@@ -0,0 +1,45 @@+<!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 view
@@ -0,0 +1,55 @@+<!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
@@ -0,0 +1,168 @@+<!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 CLASS="section1"+>Index</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-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"+><</A+></TD+><TD+><A HREF="doc-index-63.html"+>?</A+></TD+><TD+><A HREF="doc-index-124.html"+>|</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/haddock.css view
@@ -0,0 +1,260 @@+/* -------- Global things --------- */++BODY { + background-color: #ffffff;+ color: #000000;+ font-family: sans-serif;+ } ++A:link { color: #0000e0; text-decoration: none }+A:visited { color: #0000a0; text-decoration: none }+A:hover { background-color: #e0e0ff; text-decoration: none }++TABLE.vanilla {+ width: 100%;+ border-width: 0px;+ /* I can't seem to specify cellspacing or cellpadding properly using CSS... */+}++TABLE.vanilla2 {+ border-width: 0px;+}++/* <TT> font is a little too small in MSIE */+TT { font-size: 100%; }+PRE { font-size: 100%; }++LI P { margin: 0pt } ++TD {+ border-width: 0px;+}++TABLE.narrow {+ border-width: 0px;+}++TD.s8 { height: 8px; }+TD.s15 { height: 15px; }++SPAN.keyword { text-decoration: underline; }++/* Resize the buttom image to match the text size */+IMG.coll { width : 0.75em; height: 0.75em; margin-bottom: 0; margin-right: 0.5em }++/* --------- Contents page ---------- */++DIV.node {+ padding-left: 3em;+}++DIV.cnode {+ padding-left: 1.75em;+}++SPAN.pkg {+ position: absolute;+ left: 50em;+}++/* --------- Documentation elements ---------- */++TD.children {+ padding-left: 25px;+ }++TD.synopsis {+ padding: 2px;+ background-color: #f0f0f0;+ font-family: monospace+ }++TD.decl { + padding: 2px;+ background-color: #f0f0f0; + font-family: monospace;+ vertical-align: top;+ }++TD.topdecl {+ padding: 2px;+ background-color: #f0f0f0;+ font-family: monospace;+ vertical-align: top;+}++TABLE.declbar {+ border-spacing: 0px;+ }++TD.declname {+ width: 100%;+ }++TD.declbut {+ padding-left: 5px;+ padding-right: 5px;+ border-left-width: 1px;+ border-left-color: #000099;+ border-left-style: solid;+ white-space: nowrap;+ font-size: small;+ }++/* + arg is just like decl, except that wrapping is not allowed. It is+ used for function and constructor arguments which have a text box+ to the right, where if wrapping is allowed the text box squashes up+ the declaration by wrapping it.+*/+TD.arg { + padding: 2px;+ background-color: #f0f0f0; + font-family: monospace;+ vertical-align: top;+ white-space: nowrap;+ }++TD.recfield { padding-left: 20px }++TD.doc { + padding-top: 2px;+ padding-left: 10px;+ }++TD.ndoc { + padding: 2px;+ }++TD.rdoc { + padding: 2px;+ padding-left: 10px;+ width: 100%;+ }++TD.body { + padding-left: 10px+ }++TD.pkg {+ width: 100%;+ padding-left: 10px+}++TD.indexentry {+ vertical-align: top;+ padding-right: 10px+ }++TD.indexannot {+ vertical-align: top;+ padding-left: 20px;+ white-space: nowrap+ }++TD.indexlinks {+ width: 100%+ }++/* ------- Section Headings ------- */++TD.section1 {+ padding-top: 15px;+ font-weight: bold;+ font-size: 150%+ }++TD.section2 {+ padding-top: 10px;+ font-weight: bold;+ font-size: 130%+ }++TD.section3 {+ padding-top: 5px;+ font-weight: bold;+ font-size: 110%+ }++TD.section4 {+ font-weight: bold;+ font-size: 100%+ }++/* -------------- The title bar at the top of the page */++TD.infohead {+ color: #ffffff;+ font-weight: bold;+ padding-right: 10px;+ text-align: left;+}++TD.infoval {+ color: #ffffff;+ padding-right: 10px;+ text-align: left;+}++TD.topbar {+ background-color: #000099;+ padding: 5px;+}++TD.title {+ color: #ffffff;+ padding-left: 10px;+ width: 100%+ }++TD.topbut {+ padding-left: 5px;+ padding-right: 5px;+ border-left-width: 1px;+ border-left-color: #ffffff;+ border-left-style: solid;+ white-space: nowrap;+ }++TD.topbut A:link {+ color: #ffffff+ }++TD.topbut A:visited {+ color: #ffff00+ }++TD.topbut A:hover {+ background-color: #6060ff;+ }++TD.topbut:hover {+ background-color: #6060ff+ }++TD.modulebar { + background-color: #0077dd;+ padding: 5px;+ border-top-width: 1px;+ border-top-color: #ffffff;+ border-top-style: solid;+ }++/* --------- The page footer --------- */++TD.botbar {+ background-color: #000099;+ color: #ffffff;+ padding: 5px+ }+TD.botbar A:link {+ color: #ffffff;+ text-decoration: underline+ }+TD.botbar A:visited {+ color: #ffff00+ }+TD.botbar A:hover {+ background-color: #6060ff+ }+
+ docs/HaXml/haddock.js view
@@ -0,0 +1,15 @@+// Haddock JavaScript utilities+function toggle(button,id)+{+ var n = document.getElementById(id).style;+ if (n.display == "none")+ {+ button.src = "minus.gif";+ n.display = "block";+ }+ else+ {+ button.src = "plus.gif";+ n.display = "none";+ }+}
+ docs/HaXml/haskell_icon.gif view
binary file changed (absent → 911 bytes)
+ docs/HaXml/index.html view
@@ -0,0 +1,385 @@+<!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</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="section1"+>Modules</TD+></TR+><TR+><TD+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0"+><TR+><TD STYLE="width: 50em"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:0')" ALT="show/hide"+>Text</TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:0" STYLE="display:block;"+><TR+><TD STYLE="width: 48em"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:1')" ALT="show/hide"+>ParserCombinators</TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n: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"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:2')" ALT="show/hide"+>XML</TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n: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+><TD+></TD+><TD+></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+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="width: 44em"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:4')" ALT="show/hide"+>DtdToHaskell</TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:4" STYLE="display:block;"+><TR+><TD STYLE="padding-left: 1.25em;width: 42em"+><A HREF="Text-XML-HaXml-DtdToHaskell-Convert.html"+>Text.XML.HaXml.DtdToHaskell.Convert</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 42em"+><A HREF="Text-XML-HaXml-DtdToHaskell-Instance.html"+>Text.XML.HaXml.DtdToHaskell.Instance</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 42em"+><A HREF="Text-XML-HaXml-DtdToHaskell-TypeDef.html"+>Text.XML.HaXml.DtdToHaskell.TypeDef</A+></TD+><TD+></TD+><TD+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-Escape.html"+>Text.XML.HaXml.Escape</A+></TD+><TD+></TD+><TD+></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"+>Html</TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:5" STYLE="display:block;"+><TR+><TD STYLE="padding-left: 1.25em;width: 42em"+><A HREF="Text-XML-HaXml-Html-Generate.html"+>Text.XML.HaXml.Html.Generate</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 42em"+><A HREF="Text-XML-HaXml-Html-Parse.html"+>Text.XML.HaXml.Html.Parse</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+><TD+></TD+><TD+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-Lex.html"+>Text.XML.HaXml.Lex</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-OneOfN.html"+>Text.XML.HaXml.OneOfN</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-Parse.html"+>Text.XML.HaXml.Parse</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+><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+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-Validate.html"+>Text.XML.HaXml.Validate</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-Verbatim.html"+>Text.XML.HaXml.Verbatim</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-Wrappers.html"+>Text.XML.HaXml.Wrappers</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Text-XML-HaXml-Xml2Haskell.html"+>Text.XML.HaXml.Xml2Haskell</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="width: 44em"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:6')" ALT="show/hide"+>Xtract</TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"+><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:6" STYLE="display:block;"+><TR+><TD STYLE="padding-left: 1.25em;width: 42em"+><A HREF="Text-XML-HaXml-Xtract-Combinators.html"+>Text.XML.HaXml.Xtract.Combinators</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 42em"+><A HREF="Text-XML-HaXml-Xtract-Lex.html"+>Text.XML.HaXml.Xtract.Lex</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 42em"+><A HREF="Text-XML-HaXml-Xtract-Parse.html"+>Text.XML.HaXml.Xtract.Parse</A+></TD+><TD+></TD+><TD+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></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.8</TD+></TR+></TABLE+></BODY+></HTML+>
+ docs/HaXml/minus.gif view
binary file changed (absent → 56 bytes)
+ docs/HaXml/plus.gif view
binary file changed (absent → 59 bytes)
+ docs/Haskell2Xml.html view
@@ -0,0 +1,76 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">+<html> <head> <title> HaXml: Haskell and XML </title> </head>++<body bgcolor='#ffffff'>++<center>+<h2>Haskell2Xml</h2>+</center>+<hr>++<p>+<b>Text.XML.HaXml.Haskell2Xml</b> is a library for translating Haskell+data from any program into a valid XML document (and back again), by+generating a DTD and the appropriate functions to write and write the+XML format. In principle, it gives an alternative to the standard Read+and Show classes, and allows you to use other standard XML-processing+tools on your Haskell datafiles.++<p>+<b>Usage.</b>+It works rather like the existing <em>Read</em> and <em>Show</em>+classes: you must create an instance of the <em>Haskell2Xml</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>Haskell2Xml</em> class.+The only remaining thing is to ensure that you import the+<b>Text.XML.HaXml.Haskell2Xml</b> module everywhere you use it.++<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.)++<p>+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 :: Haskell2Xml a => a -> Document+ fromXml :: Haskell2Xml a => Document -> a++ readXml :: Haskell2Xml a => String -> Maybe a+ showXml :: Haskell2Xml a => a -> String++ fReadXml :: Haskell2Xml a => FilePath -> IO a+ fWriteXml :: Haskell2Xml a => FilePath -> a -> IO ()++ hGetXml :: Haskell2Xml a => Handle -> IO a+ hPutXml :: Haskell2Xml a => Handle -> a -> IO ()+</pre>++<p>+(These signatures are extremely similar to those in+<a href="Xml2Haskell.html">Xml2Haskell</a> - the only difference is+the class context, indicating how the types have been derived.)++<p>+Do not forget to resolve the overloading 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/Xml2Haskell.html view
@@ -0,0 +1,104 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">+<html>+<head>+<title>+ HaXml: Haskell and XML+</title>+</head>++<body bgcolor='#ffffff'>++<center>+<h2>DtdToHaskell tool</h2>+</center>+<hr>++<p>+<b>DtdToHaskell</b> is a tool (and <b>Text.XML.HaXml.Xml2Haskell</b>+provides the class framework) for translating any valid XML DTD+into equivalent Haskell types. 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.++<p>+Usage: <tt>DtdToHaskell [dtdfile [outfile]]</tt><br>+(Missing file arguments or dashes (<tt>-</tt>) indicate stdin+ or stdout respectively.)++<p>+The program reads and parses a DTD from <tt>dtdfile</tt> (which may be+either just a DTD, or a full XML document containing an internal DTD).+It generates into <tt>outfile</tt> a Haskell module containing a+collection of type definitions plus some class instance declarations+for I/O.++<p>+In order to use the resulting module, you need to import it, and also+to <tt>import Text.XML.HaXml.Xml2Haskell</tt>. To read and write+XML files as values of the declared types, use some of the following+convenience functions:+<pre>+ readXml :: XmlContent a => String -> Maybe a+ showXml :: XmlContent a => a -> String++ hGetXml :: XmlContent a => Handle -> IO a+ hPutXml :: XmlContent a => Handle -> a -> IO ()++ fReadXml :: XmlContent a => FilePath -> IO a+ fWriteXml :: XmlContent a => FilePath -> a -> IO ()+</pre>+not forgetting to resolve the overloading 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.) (Also, note+the similarity between these signatures and those provided by the+<a href="Haskell2Xml.html">Haskell2Xml</a> library.)++<p>+You will need to study the automatically-generated type declarations to+write your own transformation scripts - most things are pretty obvious+parallels to the DTD structure.++<p>+<b>Limitations</b><br>+The generated Haskell contains references to types like <tt>OneOf3</tt>+where there is a choice between <em>n</em> (in this case 3) different+tags. Currently, the module <b>Text.XML.HaXml.OneOfN</b> defines+these types up to <em>n</em>=20. If your DTD requires larger choices,+then use the tool <b>MkOneOf</b> to generate the extra size or range+of sizes you need.+<p>+We mangle tag names and attribute names to ensure that they have the+correct lexical form in Haskell, but this means that (for instance) we+can't distinguish <tt>Myname</tt> and <tt>myname</tt>, which are+different names in XML but translate to overlapping types in Haskell+(and hence probably won't compile).+<p>+Attribute names translate into named fields: but because Haskell doesn't+allow different types to have the same named field, this means your XML+document which uses the same name for similar attributes on different+tags would crash and burn. We have fixed this by incorporating the+tagname into the named field in addition to the attribute name, e.g.+<tt>tagAttr</tt> instead of just <tt>attr</tt>. Uglier, but more+portable.+<p>+XML namespaces. Currently, we just mangle the namespace identifier into+any tag name which uses it. Probably the right way to do it is to+regard the namespace as a separate imported module, and hence translate+the namespace prefix into a module qualifier. Does this sound about+right? (It isn't implemented yet.)+<p>+External subset. Since HaXml release 1.00, we support the+XML DTD external subset. This means we can read and parse a whole+bunch of files as part of the same DTD, and we respect INCLUDE and+IGNORE conditional sections.+<p>+There are some fringe parts of the DTD we are not entirely sure+about - Tokenised Types and Notation Types. In particular, there+is no validity checking of these external references. If you find+a problem, mail us: <tt>Malcolm.Wallace@cs.york.ac.uk</tt>++<hr>++</body>+</html>
+ docs/Xtract.html view
@@ -0,0 +1,451 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<HTML>+ <HEAD>+ <TITLE>Xtract: a query language for XML documents</TITLE>+ </HEAD>+ <BODY>+ <CENTER>+ <H1><EM>Xtract</EM>: a query language for XML documents</H1>+ </CENTER>+ <CENTER>+ <EM>Malcolm Wallace, </EM>+ <EM>Colin Runciman</EM>+ <BR />+ University of York+ </CENTER>+ <CENTER><B>December 1998,<BR />+ updated June, August 1999, February 2000</B></CENTER>+ <H2>Introduction</H2>+ <P> <EM>Xtract</EM>+ is a query language based originally on XQL, which was a+ W3C proposal that eventually mutated into XPath and XQuery.+ The syntax of Xtract is very similar to XPath, although+ not completely conformant.+ </P>+ <P> The idea of + <EM>Xtract</EM>+ is that it can be used as a kind of XML-grep at the + command-line, but it could also be used within a scripting + language (such as the Haskell XML combinator library) as a + shorthand for a complicated selection filter. + </P>+ <P> All queries return a sequence of XML document fragments+ (either whole tagged elements or text contained inside an + element): for our purposes, we also treat attribute + values as document fragments. + </P>+ <P>This document describes the expression language for queries. + </P>+ <H2>Queries</H2>+ <P> Just as in XPath, a query looks rather like a Unix file path, + where the ``directories'' are tags of parent nodes, and the + <TT>/</TT>+ separator indicates a parent/child relationship. Hence, + <PRE> matches/match/player </PRE>+ selects the + <TT>player</TT>+ elements inside + <TT>match</TT>+ elements inside a + <TT>matches</TT>+ element. The star + <TT>*</TT>+ can be used as a wildcard meaning any tagged element, thus: + <PRE> matches/*/player </PRE>+ means the + <TT>player</TT>+ elements inside + <EM>any</EM>+ element within a + <TT>matches</TT>+ element. The star can also be used as a suffix or prefix to + match a range of tags: + [+ Note that this is + <EM>not</EM>+ a full regular expression language: we just provide for the + common cases of wildcards.+ ]+ <PRE> html/h* </PRE>+ means all the headings (+ <TT><H1></TT>+ to + <TT><H6></TT>+ ) within an HTML document (and HR too!). A double slash+ indicates a recursive search for an element tag, so + <PRE> matches//player </PRE>+ means all + <TT>player</TT>+ elements found at any depth within a + <TT>matches</TT>+ element. The plain text enclosed within a tagged element is + expressed with a dash symbol: + <PRE> matches/location/- </PRE>+ means the plain text of the location, without any surrounding + <TT><location></TT>+ tags. Likewise, + <PRE> *//- </PRE>+ simply means to flatten the text of the document at all + levels, removing all tagged element structure. The union of + two queries is expressed with the + <TT>+</TT>+ operator and parentheses if required: + <PRE> matches/match/(player + spectators) </PRE>+ gives both the players and spectators at a match.+ Finally, + <PRE> matches//player/@goals </PRE>+ returns the value of the attribute `goals' on the selected+ player elements, if the attribute appears.+ <H2>Predicates</H2>+ There is a notion of a predicate on an element. The square + bracket notation is used: + <PRE> matches/match[player] </PRE>+ means all + <TT>match</TT>+ elements which contain at least one + <TT>player</TT>+ element. It is the match elements that are returned, not + the players they contain. One can also ask for the presence + of a particular attribute: + <PRE> *//player[@goals] </PRE>+ means those players (found anywhere within the tree) who + scored any goals. You can compare attribute values using + any of the operators + <TT>=</TT>+ , + <TT>!=</TT>+ , + <TT><</TT>+ , + <TT><=</TT>+ , + <TT>></TT>+ , + <TT>>=</TT>+ all of which use + <EM>lexicographical</EM>+ ordering. In this example: + <PRE> */match[player/@surname!=referee/@surname] </PRE>+ we only want those matches in which the referee does not + have the same surname as any of the players. A comparison + may be either against another attribute value, or against a + literal string; however a literal string may only appear to + the + <EM>right</EM>+ of the operator symbol. For instance, + <PRE> */match[player/@name='colin'] </PRE>+ asks for only those matches in which the player named + ``colin'' participated. If lexicographical comparison is + inappropriate, numeric comparisons are also possible: these + comparison operators are surrounded by dots: + <TT>.=.</TT>+ , + <TT>.!=.</TT>+ , + <TT>.<.</TT>+ , + <TT>.<=.</TT>+ , + <TT>.>.</TT>+ , + <TT>.>=.</TT>+ Again, either two attribute values are compared, or one + attribute value is compared with a literal integer. For + instance + <PRE> */match[@ourgoals .>. @theirgoals] </PRE>+ asks for the matches we won, while + <PRE> */match[@ourgoals .<=. 3] </PRE>+ asks for the matches in which we scored three or fewer + goals. (Note that the literal integer is not surrounded by + quote marks.) + <P>+ In addition to comparing attribute values, you can also+ compare the textual content of elements. For instance,+ <PRE> */match[player/- = 'Colin'] </PRE>+ asks for the matches in which ``Colin'' participated,+ where the name is recorded between the player tags, rather+ than as an attribute. All the same conditions and operations+ apply as for attribute value comparisons. Note however that+ you can only compare texts, not whole structures.++ <H2>Combining predicates</H2>+ Predicates can be combined using the common Boolean operations + <TT>&</TT>+ <TT>|</TT>+ and + <TT>~</TT>+ , with parentheses for disambiguation if they are required: + <PRE>+ + */match/[@ourgoals .=. @theirgoals | (player/@name='colin' + & ~(@opposition='city'))] + </PRE>+ means the matches which either ended in a draw, or in which + ``colin'' played but the opposition was not ``city''. + <H2>Positional selection</H2>+ The final feature of + <EM>Xtract</EM>+ is that the square bracket notation is overloaded to allow + the selection of elements by position: + <PRE> */match[3] </PRE>+ means the fourth match in the sequence (numbering starts at + zero). You can have a series of indexes, separated by + commas, and ranges are indicated with a dash. The dollar + symbol means the last in the sequence. For example: + <PRE> */match[0,2-$,1] </PRE>+ reorders the matches to place the second one last. + <H2>Complex queries</H2>+ The full expression language is highly recursive, + permitting you to build arbitrarily complex queries. For + instance: + <PRE> */match[player/@name='colin'][5-$]/referee[@age.>=.34] + </PRE>+ means: from the sixth onwards, of those matches in which + ``colin'' was a player, select those referees who are older + than 34. + <H2>Grammar</H2>+ <P>We give a full grammar for <EM>Xtract</EM>. </P>+ <TABLE>+ <TR>+ <TD><EM>textquery</EM></TD>+ <TD>= </TD>+ <TD><EM>query</EM></TD>+ <TD>elements</TD>+ </TR>+ <TR><TD /><TD>| </TD><TD><TT>-</TT></TD><TD>plain text</TD></TR>+ <TR></TR>+ <TR>+ <TD><EM>query</EM></TD>+ <TD>= </TD>+ <TD><EM>string</EM></TD>+ <TD>tagged element</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>string</EM><TT>*</TT></TD>+ <TD>prefix of tag</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><TT>*</TT><EM>string</EM></TD>+ <TD>suffix of tag</TD>+ </TR>+ <TR><TD /><TD>| </TD><TD><TT>*</TT></TD><TD>any element</TD></TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><TT>( </TT><EM>textquery </EM><TT>)</TT></TD>+ <TD>grouping</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>query</EM><TT>/</TT><EM>textquery</EM></TD>+ <TD>direct descendant</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>query</EM><TT>//</TT><EM>textquery</EM></TD>+ <TD>deep descendant</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>query</EM><TT>/@</TT><EM>string</EM></TD>+ <TD>value of attribute</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>query </EM><TT>+ </TT><EM>textquery</EM></TD>+ <TD>union</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>query</EM><TT>[</TT><EM>predicate</EM><TT>] </TT></TD>+ <TD>predicates</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>query</EM><TT>[</TT><EM>positions</EM><TT>] </TT></TD>+ <TD>indexing</TD>+ </TR>+ <TR></TR>+ <TR>+ <TD><EM>qa</EM></TD>+ <TD>= </TD>+ <TD><EM>textquery</EM></TD>+ <TD>has tagged element</TD>+ </TR>+ <TR>+ <TD /><TD>| </TD><TD><EM>attribute</EM></TD><TD>has attribute</TD>+ </TR>+ <TR></TR>+ <TR>+ <TD><EM>predicate</EM></TD>+ <TD>= </TD>+ <TD><EM>qa</EM></TD>+ <TD>has tagged element or attribute</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>qa </EM><EM>op </EM><EM>qa</EM></TD>+ <TD>lexical comparison of attribute values or element texts</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD>+ <EM>qa </EM><EM>op </EM><TT>'</TT><EM>string</EM><TT>'</TT>+ </TD>+ <TD>lexical comparison of attribute value or element text</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD>+ <EM>qa </EM><EM>op </EM><TT>"</TT><EM>string</EM><TT>"</TT>+ </TD>+ <TD>lexical comparison of attribute value or element text </TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>qa </EM><EM>nop </EM><EM>qa</EM></TD>+ <TD>numeric comparison of attribute values or element texts</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>qa </EM><EM>nop </EM><EM>integer</EM></TD>+ <TD>numeric comparison of attribute value or element text</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><TT>( </TT><EM>predicate </EM><TT>)</TT></TD>+ <TD>grouping</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>predicate </EM><TT>& </TT><EM>predicate</EM></TD>+ <TD>logical and</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>predicate </EM><TT>| </TT><EM>predicate</EM></TD>+ <TD>logical or</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><TT>~ </TT><EM>predicate</EM></TD>+ <TD>logical not</TD>+ </TR>+ <TR></TR>+ <TR>+ <TD><EM>attribute</EM></TD>+ <TD>= </TD>+ <TD><TT>@</TT><EM>string</EM></TD>+ <TD>attribute of this element</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>query</EM><TT>/@</TT><EM>string</EM></TD>+ <TD>attribute of descendant</TD>+ </TR>+ <TR></TR>+ <TR>+ <TD><EM>positions</EM></TD>+ <TD>= </TD>+ <TD><EM>position </EM>{ <TT>, </TT><EM>positions</EM>} </TD>+ <TD>comma-separated sequence</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><EM>position </EM><TT>- </TT><EM>position</EM></TD>+ <TD>range</TD>+ </TR>+ <TR></TR>+ <TR>+ <TD><EM>position</EM></TD>+ <TD>= </TD>+ <TD><EM>integer</EM></TD>+ <TD>positions start at zero</TD>+ </TR>+ <TR><TD /><TD>| </TD><TD><TT>$</TT></TD><TD>last element</TD></TR>+ <TR></TR>+ <TR>+ <TD><EM>op</EM></TD>+ <TD>= </TD>+ <TD><TT>=</TT></TD>+ <TD>lexical equality</TD>+ </TR>+ <TR>+ <TD /><TD>| </TD><TD><TT>!=</TT></TD><TD>lexical inequality</TD>+ </TR>+ <TR>+ <TD /><TD>| </TD><TD><TT><</TT></TD><TD>lexically less than</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><TT><=</TT></TD>+ <TD>lexically less than or equal</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><TT>></TT></TD>+ <TD>lexically greater than</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><TT>>=</TT></TD>+ <TD>lexically greater than or equal</TD>+ </TR>+ <TR></TR>+ <TR>+ <TD><EM>nop</EM></TD>+ <TD>= </TD>+ <TD><TT>.=.</TT></TD>+ <TD>numeric equality</TD>+ </TR>+ <TR>+ <TD /><TD>| </TD><TD><TT>.!=.</TT></TD><TD>numeric inequality</TD>+ </TR>+ <TR>+ <TD /><TD>| </TD><TD><TT>.<.</TT></TD><TD>numeric less than</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><TT>.<=.</TT></TD>+ <TD>numeric less than or equal</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><TT>.>.</TT></TD>+ <TD>numeric greater than</TD>+ </TR>+ <TR>+ <TD />+ <TD>| </TD>+ <TD><TT>.>=.</TT></TD>+ <TD>numeric greater than or equal</TD>+ </TR>+ </TABLE>+ </BODY>+</HTML>
+ docs/brubeck.gif view
binary file changed (absent → 9688 bytes)
+ docs/changelog.html view
@@ -0,0 +1,308 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">+<html>+<head>+<title>+ HaXml change log+</title>+</head>++<body bgcolor='#ffffff'>++<center>+<h1>HaXml change log</h1>+</center>+<hr>++<h3>Changes for 1.13.2</h3>+<p>+<ul>+<li> Updated to work with ghc-6.6 (removed uses of Data.FiniteMap).+</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.+</ul>++<h3>Changes for 1.12</h3>+<p>+<ul>+<li> The licence has changed. Previously covered by the Artistic Licence,+ we have now converted to the LGPL for all the library code, and GPL+ for the standalone tools.+<li> Now includes a minimal Build.bat script for Windows, so you can+ avoid any need for Cygwin utilities and get by with just GHC+ and Mingw.+<li> Fix a bug in DtdToHaskell, whereby an auxiliary datatype introduced+ by the translation into Haskell could (in certain circumstances)+ cause an extra layer of element tag nesting on the output (via the+ 'toElem' method).+<li> Fixed the parsing of entity/character references in the error-correcting+ HTML parser.+<li> Changes in the signatures of Xml2Haskell (made in version 1.09)+ have now been mirrored in the converse library, Haskell2Xml.+ Thus, there are new functions <tt>readXml</tt> and+ <tt>showXml</tt> converting to/from Strings, <tt>hGetXml</tt>+ and <tt>hPutXml</tt> use file Handles, and the old functions using+ filenames are renamed to <tt>fReadXml</tt> and <tt>fWriteXml</tt>.+</ul>++<h3>Changes for 1.11</h3>+<p>+<ul>+<li> Fix a tiny but embarrassing bug in the previous fix for complex+ DTDs being translated by DtdToHaskell. It broke on a very simple+ DTD like<br>+ <tt><!ELEMENT A (B|C)></tt><br>+ which became sequence<br>+ <tt>data A = A B C</tt><br>+ instead of choice<br>+ <tt>data A = AB B | AC C</tt><br>+</ul>++<h3>Changes for 1.10</h3>+<p>+<ul>+<li> All being well, HaXml now works again for Hugs (versions ≥+ September 2003). The library sources are installed using+ <em>hugs-package</em>, and the tools are installed as scripts+ for <em>runhugs</em>.+<li> Fixed the internal (and external) representations of XML character+ references.+<li> New combinators to `escape' and `unescape' reserved XML characters in+ text and attribute values has been contributed by George Russell.+ (e.g. to convert "<" into "&lt;".)+<li> Bugfixes to DtdToHaskell: A DTD content specification of the form<br>+ <tt><!ELEMENT A (B*,(C|(D?,E*)))></tt><br>+ was incorrectly translated to the Haskell<br>+ <tt>data A = A [B] (OneOf3 C (Maybe D) [E])</tt><br>+ but the new (correct) translation is<br>+ <tt>data A = A [B] (OneOf2 C (Maybe D,[E]))</tt><br>+</ul>++<h3>Changes for 1.09</h3>+<p>+<ul>+<li> <em>ghc-6.0</em> (and newer) are supported.+<li> <em>hmake</em> is no longer required to build HaXml, provided you+ have <em>ghc --make</em>.+<li> A new combinator <tt>path</tt> has been added to+ Text.XML.HaXml.Combinators, allowing queries to be expressed in the+ style of XPath.+<li> Some of the signatures in Text.XML.HaXml.Xml2Haskell have changed,+ in particular, there are new functions <tt>readXml</tt> and+ <tt>showXml</tt> that convert to/from Strings, <tt>hGetXml</tt> and+ <tt>hPutXml</tt> that use file Handles, and the old functions that+ use filenames are renamed to <tt>fReadXml</tt> and <tt>fWriteXml</tt>.+<li> DtdToHaskell previously generated incorrect code for reading an XML element+ given the following DTD fragment: <pre><!ELEMENT foo (a,b)+ ></pre>+<li> The parser had a fault when reading conditional sections nested inside an+ IGNORE section in a DTD.+<li> In Text.XML.HaXml.Html.Generate, all functions now generate HTML tags+ in lower-case rather than upper-case, to conform to the XHTML standard.+<li> DtdToHaskell now accepts NOTATION types for attributes. They are+ treated just like enumeration types.+<li> If you give an output filename as a command-line argument to DtdToHaskell,+ it now uses the filename as the basis for the generated module name.+<li> Fixed a configuration bug on the Cygwin platform with ghc-5.04.x.+<li> <em>make install</em> now places the executables (DtdToHaskell, Xtract,+ Validate, MkOneOf, Canonicalise) into the directory specified by+ <tt>./configure --prefix=...</tt>+</ul>++<h3>Changes for 1.08a</h3>+<p>+<ul>+<li> There were some simple import naming problems in some of the+ demonstration files in the examples/ directory.+<li> Embarrassingly, the string value of Text.XML.HaXml.version, previously+ "1.07", is only now updated to "1.08".+</ul>++<h3>Changes for 1.08</h3>+<p>+<ul>+<li> A new and highly useful function, Text.XML.HaXml.Validate.partialValidate,+ does validation except for checking whether the root element type matches+ that of the DTD's root element. This is just what you need in order to+ validate any partial document or sub-document.+<li> The function Text.XML.HaXml.Html.Generate.htmlprint had a little+ bug which caused it to loop infinitely if some text was longer+ than 60 characters without a space.+<li> The Xtract parser and combinators are now included in the HaXml+ library package, rather than existing solely for the Xtract+ command-line tool.+<li> Dependencies in ghc-5.04.x are fixed. You can now build HaXml for a+ specific compiler version, using e.g.+ <em>configure --buildwith=ghc-5.0x.x</em>.+</ul>++<h3>Changes for 1.07b</h3>+<p>+<ul>+<li> The code generated by DtdToHaskell had a minor cut-and-paste error.+</ul>++<h3>Changes for 1.07a</h3>+<p>+<ul>+<li> The file `script/echo.c' was missing from the distribution.+ This only affected the configuration step on systems where+ `echo -n' is not recognised (e.g. Solaris).+</ul>++<h3>Changes for 1.07</h3>+<p>+<ul>+<li> The hierarchical namespace <tt>Text.Xml</tt> was incorrect.+ It should be <tt>Text.XML</tt>+<li> The ghc package now also works in GHCi (but only for ghci-5.02.3+ and later).+<li> If you have both ghc and nhc98 compilers available, the package+ is built for both. However, now the <em>configure --buildwith=</em>+ option is available to choose to build for only one of them.+</ul>++<h3>Changes for 1.06</h3>+<p>+<ul>+<li> HaXml now uses the new hierarchical namespace for modules,+ specifically under the tree <tt>Text.Xml.HaXml</tt>.+<li> The HaXml libraries now install as a separate `package' in both ghc+ and nhc98. Use <em>-package HaXml</em> to access them.+<li> The library APIs are now documented using Haddock.+<li> Due to popular request, we have added a new validator for checking+ generic document content against a DTD. This is available both as+ a library function, and as a command-line tool.+<li> DrIFT is now distributed separately by John Meacham, with much better+ configuration and build support. You still only need it if you+ want to derive the <tt>Haskell2Xml</tt> class.+<li> Bugfix: the lexer and parser now accept NOTATION declarations in the DTD.+<li> Bugfix: a PublicId in a NOTATION decl is now correctly recognised by the+ keyword PUBLIC, not PUBLICID.+<li> Bugfix: the HTML parser now correctly accepts stand-alone tags like IMG.+<li> Bugfix: instances of XmlContent now accept an empty string where #PCDATA+ is expected. Likewise, comments, processing instructions, and+ character/entity references are now permitted to be scattered+ thoughout some #PCDATA text.+<li> Bugfix: the OneOfN types used in code generated by DtdToHaskell are+ now supplied by default up to size 20, and a utility for+ automatically generating larger sizes is included.+</ul>++<hr>+<p>+I didn't keep detailed changelogs for versions before 1.06, but+here are the highlights.++<h3>Changes for 1.05</h3>+<ul>+<li> In DtdToHaskell, fix some more bugs with empty PE References at the+ end of an element content specification.+</ul>++<h3>Changes for 1.04</h3>+<ul>+<li> In DtdToHaskell, fix a bug whereby an empty PE Reference at the end+ of an element content specification caused a parse error - the DTD+ is now accepted.+</ul>++<h3>Changes for 1.03</h3>+<ul>+<li> In DtdToHaskell, added tagname prefixes to the attribute names of+ enumeration types, to disambiguate when attributes of the same name+ have different value-sets within different tags.+<li> DtdToHaskell also now accepts Tokenized and Notation types, mapping+ them to Strings.+<li> Added an instance of Xml2Haskell for the Maybe type.+</ul>++<h3>Changes for 1.02</h3>+<ul>+<li> Added instances of Haskell2Xml for Float and Double.+<li> Fixed a fault in DtdToHaskell's treatment of default attribute values.+<li> Dtd parser now accepts (#PCDATA)* as a valid element content specification.+</ul>++<h3>Changes for 1.01</h3>+<ul>+<li> Fixed DtdToHaskell's treatment of default values for attributes.+</ul>++<h3>Changes for 1.00</h3>+<ul>+<li> Finally added support for the external subset of DTDs.+</ul>++<h3>Changes for 0.9</h3>+<ul>+<li> Reworked the Haskell2Xml and Xml2Haskell modules.+</ul>++<h3>Changes for 0.8b</h3>+<ul>+<li> Some minor bugfixes to DrIFT, ensuring H'98 compatibility.+</ul>++<h3>Changes for 0.8a</h3>+<ul>+<li> No code changes - just some restructuring of the build tree.+</ul>++<h3>Changes for 0.8</h3>+<ul>+<li> Bugfix: some PERefs didn't work.+</ul>++<h3>Changes for 0.7</h3>+<ul>+<li> Fixed imports for GHC.+</ul>++<h3>Changes for 0.6</h3>+<ul>+<li> Fixed preprocessor symbols to use the new standard __HASKELL98__.+</ul>++<h3>Changes for 0.5</h3>+<ul>+<li> Added GE entity reference-handling to parser.+<li> Tweaked the pretty-printer.+<li> Ensured Haskell'98 compliance.+</ul>++<h3>Changes for 0.4</h3>+<ul>+<li> Added separate HTML parser, some other bugfixes.+</ul>++<h3>Changes for 0.3</h3>+<ul>+<li> Bugfix release.+</ul>++<h3>Changes for 0.2</h3>+<ul>+<li> Added Haskell2Xml and Xml2Haskell.+<li> Improved XML parser and printer.+</ul>++<h3>Release 0.1</h3>+<ul>+<li> Initial release.+</ul>++</body>+</html>
+ docs/icfp99.dvi view
binary file changed (absent → 85688 bytes)
+ docs/icfp99.html view
@@ -0,0 +1,2215 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<HTML>+<HEAD><TITLE>Haskell and XML: Generic Combinators or Type-Based Translation?</TITLE></HEAD>+<BODY BGCOLOR=white TEXT=black>+<!--HTMLHEAD-->+<!--ENDHTML-->+<!--CUT DEF section 1 -->++<H1 ALIGN=center>Haskell and XML: Generic Combinators or Type-Based Translation?</H1>+<H3 ALIGN=center>Malcolm Wallace and Colin Runciman<BR>+<BR>++</H3><BR><BR><BR><BR>+<BR>+<BLOCKQUOTE><B>Abstract: </B>We present two complementary approaches to writing XML+document-processing applications in a functional language.<BR>+<BR>+In the first approach, the generic tree structure of XML documents is+used as the basis for the design of a library of combinators for generic+processing: selection, generation, and transformation of XML trees.<BR>+<BR>+The second approach is to use a type-translation framework for+treating XML document type definitions (DTDs) as declarations of algebraic+data types, and a derivation of the corresponding functions for reading+and writing documents as typed values in Haskell.<BR>+<BR>+Published in the Proceedings of the International Conference+on Functional Programming, Paris, Sept 1999. ACM Copyright.</BLOCKQUOTE>+<!--TOC section Introduction-->++<H2>1 Introduction</H2><!--TOC subsection Document markup languages-->++<H3>1.1 Document markup languages</H3>+XML (Extensible Markup Language) [<CITE><A HREF="#xml"><CITE>1</CITE></A></CITE>] is a recent simplification+of the older SGML (Standardised Generalised Markup Language) standard+that is widely used in the publishing industry. It is a markup+language, meaning that it adds structural information around the text+of a document. It is extensible, meaning that the vocabulary of the+markup is not fixed -- each document can contain or reference a+meta-document, called a DTD (Document Type Definition), which describes+the particular markup capabilities used.<BR>+<BR>+The use of XML is not however restricted to the traditional idea of a+document. Many organisations are proposing to use XML as an interchange+format for pure data produced by applications like graph-plotters,+spreadsheets, and relational databases.<BR>+<BR>+HTML (Hyper-Text Markup Language) is one well-known example of an+instance of SGML -- every HTML document is an SGML document conforming+to a particular DTD. Where XML improves over SGML is in removing+shorthand forms that require an application to have knowledge of a+document's DTD. For instance, in HTML some markup (such as a numbered+list) requires an end marker; other forms (such as paragraphs) have+implicit end markers understood when the next similar form starts; and+yet other markup (such as in-line images) is self-contained and needs+no end marker. An HTML application needs to be aware of the specific+kind of markup in order to do the right thing.<BR>+<BR>+<!--TOC subsection XML document structure-->++<H3>1.2 XML document structure</H3>XML is more regular. All markup has an explicit end marker+without exception: every document is <EM>well-formed</EM>; its nesting+structure is syntactically clear. One important consequence is that+an XML application does not need to know the meaning or interpretation+of all markup expressions -- parts of the document can be selected,+re-arranged, transformed, by structure alone rather than by meaning.<BR>+<BR>+An XML document is essentially a tree structure.+There are two basic `types' of content in a document: tagged elements,+and plain text. A tagged element consists of a start tag and an end+tag, which may enclose any sequence of other content (elements or text+fragments). Tagged elements can be nested to any depth, and the+document is well-formed if it consists of a single top-level element+containing other properly nested elements.+Start tags have the syntax <CODE><tag></CODE>, and end tags <CODE></tag></CODE>,+where <TT>tag</TT> is an arbitrary name. There is special syntax for an+empty element: <CODE><tag/></CODE> is exactly equivalent to+<CODE><tag></tag></CODE>.+The start and end tags for each element contain a tag name, which+identifies semantic information about the structure, indicating how the+enclosed content should be interpreted. The start tag may also contain+attributes, which are simple name/value bindings, providing further+information about the element.+Figure <A HREF="#exampledoc">1</A> shows an example XML document, illustrating+all these components.<BR>+<BR>+<BLOCKQUOTE><HR><PRE>+<?xml version='1.0'?>+<!DOCTYPE album SYSTEM "album.dtd">+<album>+ <title>Time Out</title>+ <artist>Dave Brubeck Quartet</artist>+ <coverart style='abstract'>+ <location thumbnail='pix/small/timeout.jpg'+ fullsize='pix/covers/timeout.jpg'/>+ </coverart>++ <catalogno label='Columbia' number='CL 1397'+ format='LP'/>+ <catalogno label='Columbia' number='CS 8192'+ format='LP'/>+ <catalogno label='Columbia' number='CPK 1181'+ format='LP' country='Korea'/>+ <catalogno label='Sony/CBS' number='Legacy CK 40585'+ format='CD'/>++ <personnel>+ <player name='Dave Brubeck' instrument='piano'/>+ <player name='Paul Desmond' instrument='alto sax'/>+ <player name='Eugene Wright' instrument='bass'/>+ <player name='Joe Morello' instrument='drums'/>+ </personnel>++ <tracks>+ <track title='Blue Rondo &agrave; la Turk'+ credit='Brubeck' timing='6m42s'/>+ <track title='Strange Meadow Lark'+ credit='Brubeck' timing='7m20s' />+ <track title='Take Five'+ credit='Desmond' timing='5m24s' />+ <track title='Three To Get Ready'+ credit='Brubeck' timing='5m21s' />+ <track title="Kathy's Waltz"+ credit='Brubeck' timing='4m48s' />+ <track title="Everybody's Jumpin'"+ credit='Brubeck' timing='4m22s' />+ <track title='Pick Up Sticks'+ credit='Brubeck' timing='4m16s' />+ </tracks>++ <notes author="unknown">+ Possibly the DBQ's most famous album,+ this contains+ <trackref link='#3'>Take Five</trackref>,+ the most famous jazz track of that period.+ These experiments in different time+ signatures are what Dave Brubeck is most+ remembered for. Recorded Jun-Aug 1959+ in NYC. See also the sequel,+ <albumref link='cbs-timefurthout'>+ Time Further Out</albumref>.+ </notes>+</album>+</PRE>+<DIV ALIGN=center>Figure 1: An example XML document.+<A NAME="exampledoc"></A></DIV>+<HR></BLOCKQUOTE><!--TOC subsection Representing XML in Haskell-->++<H3>1.3 Representing XML in Haskell</H3>This paper is about processing XML using the functional+language Haskell.<A NAME="text1"></A><A HREF="#note1"><SUP><FONT SIZE=2>1</FONT></SUP></A>++Modern functional languages are well-equipped to deal+with tree-structured data, so one expects the+language to be a good fit for the application.+Even so, a key issue is just how to represent documents, and in+particular how to reconcile the DTD datatype definitions+included in XML documents with the data types that can be+defined in Haskell. +We have investigated two complementary approaches:+<UL>+<LI>(1)+Define an internal data structure that represents contents+of <EM>any</EM> XML document, independent of all DTDs.++<LI>(2)+Given the DTD for some XML documents of interest, systematically+<EM>derive</EM> definitions for internal Haskell data types to represent them.+These definitions are closely based on the specific DTD.+</UL>Advantages of (1) include <EM>genericity</EM> and <EM>function-level scripting</EM>.+Generic applications handle a wide class of XML documents, not just+those sharing a specific DTD.+One example of a completely generic application is searching documents+to extract contents matching some pattern.+Our <EM>Xtract</EM><A NAME="text2"></A><A HREF="#note2"><SUP><FONT SIZE=2>2</FONT></SUP></A>+ is+an interpreter for a regular XML query language.<BR>+<BR>+The term `generic' also applies to applications that make <EM>some</EM>+assumptions about a document's structure but need not know the full+DTD,<A NAME="text3"></A><A HREF="#note3"><SUP><FONT SIZE=2>3</FONT></SUP></A>++for example, a small script to add a ``total'' column to the end of every+table (recognised by a particular markup tag) without altering any of+the surrounding structure.<BR>+<BR>+By <EM>function-level scripting</EM> we mean that the programmer does not have+to be concerned with details of programming over data structures.+All details of data structure manipulation can be hidden in a library of+high-level combinators. In effect, combinatory expressions serve as+an extensible domain-specific language.<BR>+<BR>+Advantages of (2) include <EM>stronger typing</EM> and <EM>fuller control</EM>.+A well-formed XML document is further said to be <EM>valid</EM> if it+conforms to a stated DTD. By establishing a correspondence between+DTDs and Haskell types, the concept of validity can be extended to+include applications that process documents.+Not only is there a static guarantee that applications cannot fail+in respect of+document structure if the input XML conforms to the stated DTD;+any XML output produced via a DTD-derived type is guaranteed to be valid.+With direct access to the DTD-specific data structure, the programmer has+fuller control over how computation is done.+They can use a full repertoire of programming techniques with the safeguard+that type-checked Haskell will automatically produce XML that is valid+in respect of a specified DTD.<BR>+<BR>+Both approaches rely on a toolkit of more basic components for processing+XML documents in Haskell: for instance, a parser and pretty-printer.+These supporting components are implemented using existing combinator+libraries [<CITE><A HREF="#Hughes95"><CITE>7</CITE></A>, </CITE><CITE><A HREF="#HuttonMeijer98"><CITE>8</CITE></A></CITE>].<BR>+<BR>+<!--TOC subsection Sections following-->++<H3>1.4 Sections following</H3>§<A HREF="#combinators">2</A> develops the approach using a generic representation+and a combinator library, including an illustrative application.+§<A HREF="#translation">3</A> develops the alternative based on translation between+DTDs and Haskell data types.+§<A HREF="#evaluation">4</A> discusses some pros and cons of the two approaches+based on our experience implementing and using both.+§<A HREF="#related">5</A> discusses related work; §<A HREF="#furtherwork">6</A> offers some+conclusions and suggestions for further work.+++<!--TOC section Generic combinators-->++<H2>2 Generic combinators</H2>+<A NAME="combinators"></A>In this section, we begin with a generic representation for the contents+of XML documents, excluding any DTD. We introduce <EM>content filters</EM>+as a suitable basic type for functions processing this representation,+and combinators for putting such filters together.+A complete table of basic+filters is given in Figure <A HREF="#basicdefs">2</A>, and of combinators and+their definitions in Figure <A HREF="#combinatordefs">3</A>. An example program+is shown in Figure <A HREF="#examplescript">4</A>.+One expected property of a fitting set of combinators is that they+satisfy algebraic laws; a table of laws satisfied by our combinators+is given in Figure <A HREF="#tablelaws">6</A>.<BR>+<BR>+<!--TOC subsection Documents and transformations-->++<H3>2.1 Documents and transformations</H3>++<H5>Data modelling</H5>+<PRE>+ data Element = Elem Name [Attribute] [Content]+ data Content = CElem Element+ | CText String+</PRE>Because functional languages are good at processing tree-structured data,+there is a natural fit between the XML document domain and Haskell tree+datatypes. In simplified form, the main datatypes which model an XML+document are <TT>Element</TT> and <TT>Content</TT>, whose definitions are+mutually recursive, together forming a multi-branch tree structure.<BR>+<BR>++<H5>The filter type</H5>+<PRE>+ type CFilter = Content -> [Content]+</PRE>Our basic type for all document processing functions is the <EM>content+filter</EM>, which takes a fragment of the content of an XML document+(whether that be some text, or a complete tagged element), and+returns some sequence of content. The result list might be empty, it+might contain a single item, or it could contain a large collection of+items.<BR>+<BR>+Some filters are used to select parts of the input document, and others+are used to construct parts of the output document. They all share the+same basic type, because when building a new document, the intention is+to re-use or extract information from parts of the old document. Where+the result of a filter is either empty or a singleton, the filter can+sometimes be thought of as a <EM>predicate</EM>, deciding whether or not to+keep its input.<BR>+<BR>++<H5>Program wrapper</H5>+<PRE>+ processXmlWith :: CFilter -> IO ()+</PRE>We assume a top-level wrapper function, which gets command-line+arguments, parses an XML file into the <TT>Content</TT> type, applies a+filter, and pretty-prints the output document. The given filter is+applied to the top-level enclosing element of the document.<BR>+<BR>++<H5>Basic filters</H5>+A complete list of predefined filters is shown in Figure <A HREF="#basicdefs">2</A>.+The simplest possible filters: <TT>none</TT> takes+any content and returns nothing; <TT>keep</TT> takes any content and+returns just that item. Algebraically, these are the zero and unit filters.<BR>+<BR>+<BLOCKQUOTE><HR>+<TABLE CELLSPACING=0 CELLPADDING=0>+<TR><TD><B>Predicates</B></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>none, </CODE> </TD>+<TD> </TD>+<TD><EM>zero/failure </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>keep, </CODE> </TD>+<TD> </TD>+<TD><EM>identity/success </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>elm, </CODE> </TD>+<TD> </TD>+<TD><EM>tagged element? </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>txt </CODE> </TD>+<TD> </TD>+<TD><EM>plain text? </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>tag, </CODE> </TD>+<TD> </TD>+<TD><EM>named element? </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>attr </CODE> </TD>+<TD> </TD>+<TD><EM>element has attribute? </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: String -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>attrval </CODE> </TD>+<TD> </TD>+<TD><EM>element has attribute/value? </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: (String,String) -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD><B>Selection</B></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>children </CODE></TD>+<TD> </TD>+<TD><EM>children of element </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>showAttr,</CODE></TD>+<TD> </TD>+<TD><EM>value of attribute </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>(?) </CODE></TD>+<TD> </TD>+<TD><EM>synonym for showAttr </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: String -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD><B>Construction</B></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>literal,</CODE></TD>+<TD> </TD>+<TD><EM>build plain text </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>(!) </CODE></TD>+<TD> </TD>+<TD><EM>synonym for literal </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: String -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>mkElem </CODE></TD>+<TD> </TD>+<TD><EM>build element </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: String -> [CFilter] -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>mkElemAttrs</CODE></TD>+<TD> </TD>+<TD><EM>build element with attributes </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: String -> [(String,CFilter)]</CODE></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE> -> [CFilter] -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>replaceTag</CODE></TD>+<TD> </TD>+<TD><EM>replace element's tag </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: String -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>replaceAttrs</CODE></TD>+<TD> </TD>+<TD><EM>replace element's attributes </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: [(String,CFilter)] -> CFilter</CODE></TD>+</TR></TABLE>+++<BR>+<DIV ALIGN=center>Figure 2: Basic content filters.+<A NAME="basicdefs"></A></DIV>+<HR></BLOCKQUOTE><UL>+<LI>+<EM>Predicate and selection filters</EM>. The filter <TT>elm</TT> is a+predicate, returning just this item if it is an element, or nothing+otherwise.<A NAME="text4"></A><A HREF="#note4"><SUP><FONT SIZE=2>4</FONT></SUP></A>++Conversely, <TT>txt</TT> returns this item only if is plain+text,<A NAME="text5"></A><A HREF="#note5"><SUP><FONT SIZE=2>5</FONT></SUP></A>++and nothing otherwise. The filter+<TT>children</TT> returns the immediate children of an element if it has+any, or nothing if this content-item is not an element. The filter+<TT>tag t</TT> returns this item only if it is an element whose tag name+is the string <TT>t</TT>. The filter <TT>attr a</TT> returns this item only+if it is an element containing the attribute name <TT>a</TT>. The filter+<TT>attrval (a,v)</TT> returns this item only if is an element containing+the attribute <TT>a</TT> with the value <TT>v</TT>.<BR>+<BR>++<LI>+<EM>Construction filters</EM>. The function <TT>literal s</TT>+makes a text content containing just the string <TT>s</TT>. The function+<TT>mkElem t fs</TT> builds a content element with the tag <TT>t</TT>; the+argument <TT>fs</TT> is a list of filters, each of which is applied+to the current item, and all their results are collected to become+the children of the new element. The function <TT>mkElemAttrs t avs fs</TT>+is just like <TT>mkElem</TT> except that its extra parameter <TT>avs</TT>+is a list of attribute values<A NAME="text6"></A><A HREF="#note6"><SUP><FONT SIZE=2>6</FONT></SUP></A>+ to be attached to the tag.</UL>A useful filter which involves both selection and construction is <TT>showAttr a</TT>, which extracts the value of the attribute <TT>a</TT> from the+current element and returns just that string as a piece of content.<BR>+<BR>+When constructing a new document (e.g. the script in Figure+<A HREF="#examplescript">4</A> which generates HTML), the <TT>mkElem</TT> function+occurs repeatedly. We define and use a small library of functions such+as <TT>htable</TT>, <TT>hrow</TT>, and <TT>hcol</TT> which are just synonyms for+particular applications of <TT>mkElem</TT> and <TT>mkElemAttrs</TT> to+different tagnames, reducing verbosity and making the syntax rather more+readable.<BR>+<BR>+Also for convenience, we define the new operators <TT>?</TT> and <TT>!</TT> as+synonyms for <TT>showAttr</TT> and <TT>literal</TT> respectively: they are+used in a bracketed postfix notation,<A NAME="text7"></A><A HREF="#note7"><SUP><FONT SIZE=2>7</FONT></SUP></A>++a style some programmers prefer.<BR>+<BR>+<!--TOC subsection Combinators-->++<H3>2.2 Combinators</H3>+The combinators used as intermediate code in compilers+can render programs `totally unfit for human consumption' [<CITE><A HREF="#Turner79"><CITE>11</CITE></A></CITE>]!+However, the idea of a combinator library for a specific class of applications+is to achieve a form of expression that is natural for the problem.+A combinator library should be like a language extension+tailored to the problem domain [<CITE><A HREF="#Fairbairn87"><CITE>4</CITE></A></CITE>]. +In this+sense, functional languages are extensible, just as XML itself is+extensible.+The combinators are higher-order operators serving as `glue'[<CITE><A HREF="#Hughes89"><CITE>6</CITE></A></CITE>]+to assemble functions into more powerful combinations.+We aim to keep the types of component functions as uniform as possible+so that any function can be composed with any other.+Within the lexical limits of the host language, choice of notation+should follow application conventions:+in Haskell we can, where appropriate, define new infix operator symbols+for combinators.<BR>+<BR>+So, having defined some basic filters already, in what ways can these usefully+be combined into more interesting and complex filters?+(See Figure <A HREF="#combinatordefs">3</A>.)<BR>+<BR>++<BLOCKQUOTE><HR>++<TABLE CELLSPACING=0 CELLPADDING=0>+<TR><TD> </TD>+<TD><CODE>o, </CODE> </TD>+<TD> </TD>+<TD><EM>Irish composition </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>(|||), </CODE> </TD>+<TD> </TD>+<TD><EM>append results </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>with, </CODE> </TD>+<TD> </TD>+<TD><EM>guard </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>without,</CODE> </TD>+<TD> </TD>+<TD><EM>negative guard </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>(/>), </CODE> </TD>+<TD> </TD>+<TD><EM>interior search </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>(</), </CODE> </TD>+<TD> </TD>+<TD><EM>exterior search </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>(|>|) </CODE> </TD>+<TD> </TD>+<TD><EM>directed choice </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: CFilter -> CFilter -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><CODE>f `o` g = concat . map f . g </CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>f ||| g = \c-> f c ++ g c </CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>f `with` g = filter (not.null.g) . f </CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>f `without` g = filter (null.g) . f </CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>f /> g = g `o` children `o` f </CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>f </ g = f `with` (g `o` children) </CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>f |>| g = f ?> f :> g </CODE></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><CODE>cat </CODE> </TD>+<TD> </TD>+<TD><EM>concatenate results </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: [CFilter] -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><CODE>cat fs = \c-> concat. map (\f->f c) fs </CODE></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><CODE>et </CODE> </TD>+<TD> </TD>+<TD><EM>disjoint union </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: (String->CFilter) -> CFilter -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><CODE>f `et` g = (f `oo` tagged elm)</CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE> |>| (g `o` txt) </CODE></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><CODE>(?>) </CODE> </TD>+<TD> </TD>+<TD><EM>if-then-else choice </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: CFilter -> ThenElse CFilter -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><CODE>data ThenElse a = a :> a </CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>p ?> f :> g = \c-> if (not.null.p) c</CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE> then f c else g c</CODE></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><CODE>chip, </CODE> </TD>+<TD> </TD>+<TD><EM>``in-place'' application to children </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>deep, </CODE> </TD>+<TD> </TD>+<TD><EM>recursive search (topmost) </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>deepest,</CODE> </TD>+<TD> </TD>+<TD><EM>recursive search (deepest) </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>multi, </CODE> </TD>+<TD> </TD>+<TD><EM>recursive search (all) </EM></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>foldXml </CODE> </TD>+<TD> </TD>+<TD><EM>recursive application </EM></TD>+</TR>+<TR><TD> </TD>+<TD> </TD>+<TD><CODE>:: CFilter -> CFilter</CODE></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><CODE>deep f = f |>| (deep f `o` children) </CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>deepest f = (deepest f `o` children) |>| f </CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>multi f = f ||| (multi f `o` children) </CODE></TD>+</TR>+<TR><TD> </TD>+<TD><CODE>foldXml f = f `o` (chip (foldXml f)) </CODE></TD>+</TR></TABLE>+++<BR>+<DIV ALIGN=center>Figure 3: Filter combinators and their definitions.+<A NAME="combinatordefs"></A></DIV>+<HR></BLOCKQUOTE>The most important and useful filter combinator is <CODE>`o`</CODE>.+We call this operator Irish composition, for reasons which should be+obvious. It plugs two filters together: the left filter is applied to+the results of the right filter. So, for instance, the expression+<PRE>+ text `o` children `o` tag "title"+</PRE>means ``only the plain-text children of the current element, provided the+current element has the <TT>title</TT> tag name''.<BR>+<BR>+Some other combinators are as follows.+<TT>f ||| g</TT> is an append operator: it joins the results of <TT>f</TT> and+<TT>g</TT> sequentially.+<TT>cat fs</TT> is the list generalisation of <TT>|||</TT>; it concatenates+the results of each of the filters from the <TT>fs</TT> list.+<TT>f `with` g</TT> acts as a guard on the results of <TT>f</TT>, pruning to+include only those which are productive under <TT>g</TT>.+The dual, <TT>f `without` g</TT>, excludes those results of <TT>f</TT> which+are productive under <TT>g</TT>.+The expression <TT>p ?> f :> g</TT> is a functional choice operator; if+the (predicate) filter <TT>p</TT> is productive, then the filter <TT>f</TT>+is applied, otherwise <TT>g</TT> is applied.+From this is derived a directed choice operator: <TT>f |>| g</TT> gives+either the results of <TT>f</TT>, or those of <TT>g</TT> only if <TT>f</TT> is+unproductive.<BR>+<BR>++<H5>Generalised Path Selectors</H5>+Selection of subtrees by <EM>path patterns</EM> is familiar to users of+the Unix file-system, where such patterns are used to access directory+structure, using a <TT>/</TT> notation to indicate the `containing'+relation. Similar patterns are used in XSLT, an XML transformation+language [<CITE><A HREF="#xslt"><CITE>3</CITE></A></CITE>]. In this connection, we define two path selection+combinators <TT>/></TT> and <TT></</TT>. Both combinators choose subtrees+to return based on whether the results of the left filter contain the+results of the right filter as children: <TT>/></TT> is an `interior'+selector, returning the inner structure; <TT></</TT> is an `exterior'+selector, returning the outer structure.<BR>+<BR>++<H5>An editing combinator</H5>+Aside from predicates, selectors, choice, and constructive filters,+there is one very useful combinator which stands in its own category --+an editing combinator. <TT>chip f</TT> processes the children of an+element in-place: the filter <TT>f</TT> is applied to its+children; the results are rebuilt as the new children of that+same element.<BR>+<BR>++<H5>Recursion</H5>+It is often useful to express recursive transformations on XML+documents: transformations which can be applied at many different+levels of the document tree.<BR>+<BR>+One family of such expressions is useful primarily in selecting a+subtree from an arbitrarily deep location, although they can of course+be used for editing and filtering as well as selection. The recursive+combinator <CODE>deep f</CODE> <EM>potentially</EM> pushes the action of filter+<TT>f</TT> deep inside the document sub-tree. It first tries the given+filter on the current item: if it is productive then it stops here, but+if no results are returned, then it moves to the children and tries+again recursively. When used with a predicate, this strategy searches+for the topmost matching elements in the tree. There are variations:+<CODE>deepest</CODE> searches for the bottommost matching elements; <TT>multi</TT> returns all matches, even those which are sub-trees of other+matches. However, as already noted, the action of these combinators is+not restricted to predicates or selectors.<BR>+<BR>+Another powerful recursion combinator is <TT>foldXml</TT>: the expression+<TT>foldXml f</TT> applies the filter <TT>f</TT> to every level of the tree,+from the leaves upwards to the root (at least conceptually -- of course+lazy evaluation makes this more efficient).<BR>+<BR>+<!--TOC subsection Example-->++<H3>2.3 Example</H3>+The use of these filters and combinators is illustrated in an example+script in Figure <A HREF="#examplescript">4</A>. This program transforms an+<TT><album></TT> element into an HTML document that provides a formatted+summary. The HTML output, rendered by the Netscape browser, is+illustrated in Figure <A HREF="#netscape">5</A>. Such a task might be fairly+common in e-commerce applications.<BR>+<BR>+We now describe some of the salient features of the example.<BR>+<BR>+<PRE>+ (albumf `o` deep (tag "album"))+</PRE>The script first searches recursively for the topmost element tagged+<TT><album></TT>, before applying the filter <TT>albumf</TT> to it. Thus, it works+equally well with any XML source document that contains an <TT><album></TT>+element anywhere within it, and (correctly) produces no output for+documents which do not contain album data.<BR>+<BR>+The output document's <TT><HEAD></TT> section contains the artist name and+album title separated by a colon. We note that the expression,+<PRE>+ txt `o` children `o` tag "artist"+ `o` children `o` tag "album"+</PRE>which grabs the textual content of the <TT><artist></TT> element within the+<TT><album></TT> element, is somewhat unwieldy. Moreover its trailing test+for the <TT><album></TT> tag is redundant, since the calling filter has+already performed that match. The expression can be simplified by+using path selectors to:+<PRE>+ keep /> tag "artist" /> txt+</PRE>and this style is used elsewhere in the example. (The+algebraic laws in Section <A HREF="#laws">2.5</A> guarantee that this rewriting+is safe.)<BR>+<BR>+Such expressions make some assumptions about the structure of the data+within the <TT><album></TT> element. In this instance, the assumption is+that an <TT><artist></TT> element is an immediate child,+and that <EM>its</EM> immediate children include text. If such+assumptions prove incorrect for a particular document, the filter+is simply unproductive; no error is flagged.<BR>+<BR>+With a suitable definition, <TT>hbody = mkElemAttr "BODY"</TT>+the expression+<PRE>+ hbody [("bgcolor",("white"!))] [...]+</PRE>can be understood to set the background colour attribute of+the <TT><BODY></TT> tag to the literal value <TT>white</TT>. Notice how the+attribute value is itself described by a filter. In this case, the+filter is not very exciting, but the later definition of+<TT>mkLink</TT> illustrates the generation of an HTML reference+by looking up the value of a supplied <TT>link</TT> attribute (using the+<TT>?</TT> filter).<BR>+<BR>+When the script is used on the particular document from Figure+<A HREF="#exampledoc">1</A>, the output is a re-ordering of the internal+components of the input: in the <TT><BODY></TT> part of the output, the+<TT><notes></TT> section is selected and transformed by <TT>notesf</TT> before+the <TT><catalogno></TT> elements are processed by the <TT>summaryf</TT> filter.+Although in the absence of a DTD it is impossible to be sure of any+input ordering, the script here ensures that the output ordering is+consistent.<BR>+<BR>+The definition of the <TT>notesf</TT> filter is interesting because it+makes fewer assumptions about the content of a <TT><notes></TT> structure, and+in addition it preserves the input ordering.+The chained if-then-else choice within the recursive <TT>foldXml</TT>+combinator causes all internal structure of the <TT><notes></TT> element to be+retained except for the replacement of <TT><trackref></TT>s by emphasised+text, and <TT><albumref></TT>s by HTML links.<BR>+<BR>+One of the most striking features of the example as a whole is how+selection and testing of old content and construction of new content are+uniform, and can be combined almost interchangeably.<BR>+<BR>+We will return to the treatment of <TT><catalogno></TT> elements in Section+<A HREF="#labelling">2.4</A> after introducing some extra <EM>labelling</EM> combinators.<BR>+<BR>+<BLOCKQUOTE><HR>+<PRE>+module Main where+import Xml+main =+ processXmlWith (albumf `o` deep (tag "album"))+albumf =+ html+ [ hhead+ [ htitle+ [ txt `o` children `o` tag "artist"+ `o` children `o` tag "album"+ , literal ": "+ , keep /> tag "title" /> txt+ ]+ ]+ , hbody [("bgcolor",("white"!))]+ [ hcenter+ [ h1 [ keep /> tag "title" /> txt ] ]+ , h2 [ ("Notes"!) ]+ , hpara [ notesf `o` (keep /> tag "notes") ]+ , summaryf+ ]+ ]+notesf =+ foldXml (txt ?> keep :>+ tag "trackref" ?> replaceTag "EM" :>+ tag "albumref" ?> mkLink :>+ children)+summaryf =+ htable [("BORDER",("1"!))]+ [ hrow [ hcol [ ("Album title"!) ]+ , hcol [ keep /> tag "title" /> txt ]+ ]+ , hrow [ hcol [ ("Artist"!) ]+ , hcol [ keep /> tag "artist" /> txt ]+ ]+ , hrow [ hcol [ ("Recording date"!) ]+ , hcol [ keep />+ tag "recordingdate" /> txt ]+ ]+ , hrow [ hcola [ ("VALIGN",("top"!)) ]+ [ ("Catalog numbers"!) ]+ , hcol+ [ hlist+ [ catno `oo`+ numbered (deep (tag "catalogno"))+ ]+ ]+ ]+ ]+catno n =+ mkElem "LI"+ [ ((show n++". ")!), ("label"?), ("number"?)+ , (" ("!), ("format"?), (")"!) ]+mkLink =+ mkElemAttr "A" [ ("HREF",("link"?)) ]+ [ children ]+</PRE>++<DIV ALIGN=center>Figure 4: An example document-processing script using the generic filter+ combinators.+<A NAME="examplescript"></A></DIV>+<HR></BLOCKQUOTE><BLOCKQUOTE><HR>++<img src="brubeck.gif" alt="picture of browser">+++<BR>+<BR>+<DIV ALIGN=center>Figure 5: The HTML results of the example script, rendered by a browser.+<A NAME="netscape"></A></DIV>+<HR></BLOCKQUOTE><!--TOC subsection Labellings-->++<H3>2.4 Labellings</H3>+<A NAME="labelling"></A>+One feature that is occasionally useful is the ability to attach labels+to items in a sequence, for instance, to number a list of items, or to+treat the first/last item of a list differently from the other items.+For this purpose, the library provides special labelling combinators.+We choose to introduce a new type:+<PRE>+ type LabelFilter a = Content -> [ (a,Content) ]+</PRE>A <TT>LabelFilter</TT> is like a <TT>CFilter</TT> except it attaches a label+to each of its results. We might have chosen to fold label+values inside the <TT>Content</TT> type, to yield a uniform <TT>CFilter</TT>+type, but keeping the labels separate allows them to be of+completely polymorphic type: a label could even be another filter+for example. <BR>+<BR>+There are several common labelling functions:+<PRE>+ numbered :: CFilter -> LabelFilter Int+ interspersed :: a -> CFilter -> a+ -> LabelFilter a+ tagged :: CFilter -> LabelFilter String+ attributed :: CFilter ->+ LabelFilter [(String,String)]+</PRE>These labelling functions lift a <TT>CFilter</TT> to the <TT>LabelFilter</TT> type:+<TT>numbered f</TT> transforms the ordinary filter <TT>f</TT>+into a new filter that attaches integers (from 1 upwards)+to the results of <TT>f</TT>;+<TT>interspersed a f z</TT> attaches the label <TT>a</TT> to all of the+results of <TT>f</TT> except the last, which gets the label <TT>z</TT>;+<TT>tagged f</TT> labels every tagged element with its tag name (and+non-elements with the empty string); <TT>attributed f</TT>+labels every tagged element with its attribute/value pairs (and+non-elements with the empty list).<BR>+<BR>+<PRE>+ `oo` :: (a->CFilter) -> LabelFilter a -> CFilter+</PRE>The combinator <TT>`oo`</TT> is a new form of composition which drops a+<TT>LabelFilter</TT> back to the <TT>CFilter</TT> type by application of+another filter that consumes the label.<BR>+<BR>+The use of this form of labelling is illustrated by the treatment of+<TT><catalogno></TT>s in the example of Figure <A HREF="#examplescript">4</A>:+<PRE>+ catno `oo` numbered (deep (tag "catalogno"))+</PRE>First, the desired elements are extracted from their topmost positions+in the tree, then they are given numeric labels, and finally the+<TT>catno</TT> filter incorporates the label into some generated text.+Another example can be seen in the definition of the <TT>`et`</TT>+combinator in Figure <A HREF="#combinatordefs">3</A>.+(<TT>`et`</TT> combines a filter <TT>f</TT> on elements with a filter <TT>g</TT>+on text. <TT>f</TT> pattern-matches against tagnames --+the tagnames are extracted by the labelling function <TT>tagged</TT>.)<BR>+<BR>+Furthermore, it is possible to combine labellings. The <TT>`x`</TT>+combinator glues two labelling functions together, pairing the+labels they produce.+<PRE>+ `x` :: (CFilter->LabelFilter a)+ -> (CFilter->LabelFilter b)+ -> (CFilter->LabelFilter (a,b))+</PRE><!--TOC subsection Algebraic laws of combinators-->++<H3>2.5 Algebraic laws of combinators</H3>+<A NAME="laws"></A>+We briefly show how combinators are defined in such a way that+various algebraic laws hold. The complete set of laws is given in+Figure <A HREF="#tablelaws">6</A>.<BR>+<BR>+<BLOCKQUOTE><HR>++<TABLE CELLSPACING=0 CELLPADDING=0>+<TR><TD> </TD>+<TD><B>Irish composition</B></TD>+</TR>+<TR><TD><CODE>f `o` (g `o` h) = (f `o` g) `o` h</CODE> </TD>+<TD> </TD>+<TD><EM>associativity </EM></TD>+</TR>+<TR><TD><CODE>none `o` f = f `o` none = none</CODE> </TD>+<TD> </TD>+<TD><EM>zero </EM></TD>+</TR>+<TR><TD><CODE>keep `o` f = f `o` keep = f</CODE> </TD>+<TD> </TD>+<TD><EM>identity </EM></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><B>Guards </B></TD>+</TR>+<TR><TD><CODE>f `with` keep = f</CODE> </TD>+<TD> </TD>+<TD><EM>identity </EM></TD>+</TR>+<TR><TD><CODE>f `with` none = none `with` f = none</CODE> </TD>+<TD> </TD>+<TD><EM>zero </EM></TD>+</TR>+<TR><TD><CODE>(f `with` g) `with` g = f `with` g</CODE> </TD>+<TD> </TD>+<TD><EM>idempotence </EM></TD>+</TR>+<TR><TD><CODE>(f `with` g) `with` h</CODE></TD>+</TR>+<TR><TD><CODE> = (f `with` h) `with` g</CODE> </TD>+<TD> </TD>+<TD><EM>promotion </EM></TD>+</TR>+<TR><TD><CODE>(f `o` g) `with` h</CODE></TD>+</TR>+<TR><TD><CODE> = (f `with` h) `o` g</CODE> </TD>+<TD> </TD>+<TD><EM>promotion </EM></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD><CODE>f `without` keep = none `without` f</CODE></TD>+</TR>+<TR><TD><CODE> = none</CODE> </TD>+<TD> </TD>+<TD><EM>zero </EM></TD>+</TR>+<TR><TD><CODE>f `without` none = keep</CODE> </TD>+<TD> </TD>+<TD><EM>identity </EM></TD>+</TR>+<TR><TD><CODE>(f `without` g) `without` g</CODE></TD>+</TR>+<TR><TD><CODE> = f `without` g</CODE> </TD>+<TD> </TD>+<TD><EM>idempotence </EM></TD>+</TR>+<TR><TD><CODE>(f `without` g) `without` h</CODE></TD>+</TR>+<TR><TD><CODE> = (f `without` h) `without` g</CODE> </TD>+<TD> </TD>+<TD><EM>promotion </EM></TD>+</TR>+<TR><TD><CODE>(f `o` g) `without` h</CODE></TD>+</TR>+<TR><TD><CODE> = (f `without` h) `o` g</CODE> </TD>+<TD> </TD>+<TD><EM>promotion </EM></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><B>Path selectors </B></TD>+</TR>+<TR><TD><CODE>f /> (g /> h) = (f /> g) /> h</CODE> </TD>+<TD> </TD>+<TD><EM>associativity </EM></TD>+</TR>+<TR><TD><CODE>none /> f = f /> none = none</CODE> </TD>+<TD> </TD>+<TD><EM>zero </EM></TD>+</TR>+<TR><TD><CODE>keep /> f = f `o` children</CODE> </TD>+<TD> </TD>+<TD> </TD>+</TR>+<TR><TD><CODE>f /> keep = children `o` f</CODE> </TD>+<TD> </TD>+<TD> </TD>+</TR>+<TR><TD><CODE>keep /> keep = children</CODE> </TD>+<TD> </TD>+<TD> </TD>+</TR>+<TR><TD><CODE>none </ f = f </ none = none</CODE> </TD>+<TD> </TD>+<TD><EM>zero </EM></TD>+</TR>+<TR><TD><CODE>f </ keep = f `with` children</CODE> </TD>+<TD> </TD>+<TD> </TD>+</TR>+<TR><TD><CODE>(f </ g) </ g = f </ g</CODE> </TD>+<TD> </TD>+<TD><EM>idempotence </EM></TD>+</TR>+<TR><TD><CODE>(f </ g) /> g = f /> g</CODE> </TD>+<TD> </TD>+<TD><EM>idempotence </EM></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD><CODE>(f /> g) </ h = f /> (g </ h)</CODE> </TD>+<TD> </TD>+<TD><EM>promotion </EM></TD>+</TR>+<TR><TD><CODE>(f </ g) </ h = (f </ h) </ g </CODE> </TD>+<TD> </TD>+<TD><EM>promotion </EM></TD>+</TR>+<TR><TD><CODE>f `o` (g /> h) = g /> (f `o` h)</CODE> </TD>+<TD> </TD>+<TD><EM>promotion </EM></TD>+</TR>+<TR><TD><CODE>(f /> g) `o` h = (f `o` h) /> g</CODE> </TD>+<TD> </TD>+<TD><EM>promotion </EM></TD>+</TR>+<TR><TD><CODE>(f /> g) `with` h = f /> (g `with` h)</CODE></TD>+<TD> </TD>+<TD><EM>promotion </EM></TD>+</TR>+<TR><TD><CODE>(f </ g) `with` h = (f `with` h) </ g</CODE></TD>+<TD> </TD>+<TD><EM>promotion </EM></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><B>Directed choice </B></TD>+</TR>+<TR><TD><CODE>(f |>| g) |>| h = f |>| (g |>| h)</CODE> </TD>+<TD> </TD>+<TD><EM>associativity </EM></TD>+</TR>+<TR><TD><CODE>keep |>| f = keep</CODE> </TD>+<TD> </TD>+<TD> </TD>+</TR>+<TR><TD><CODE>none |>| f = f |>| none = f</CODE> </TD>+<TD> </TD>+<TD><EM>identity </EM></TD>+</TR>+<TR><TD><CODE>f |>| f = f</CODE> </TD>+<TD> </TD>+<TD><EM>idempotence </EM></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><B>Recursion </B></TD>+</TR>+<TR><TD><CODE>deep keep = keep</CODE> </TD>+<TD> </TD>+<TD><EM>simplification </EM></TD>+</TR>+<TR><TD><CODE>deep none = none</CODE> </TD>+<TD> </TD>+<TD><EM>simplification </EM></TD>+</TR>+<TR><TD><CODE>deep children = children</CODE> </TD>+<TD> </TD>+<TD><EM>simplification </EM></TD>+</TR>+<TR><TD><CODE>deep (deep f) = deep f</CODE> </TD>+<TD> </TD>+<TD><EM>depth law </EM></TD>+</TR>+<TR><TD> </TD>+</TR>+<TR><TD> </TD>+<TD><B>Misc </B></TD>+</TR>+<TR><TD><CODE>elm |>| txt = txt |>| elm = keep</CODE> </TD>+<TD> </TD>+<TD><EM>completeness </EM></TD>+</TR>+<TR><TD><CODE>elm `o` txt = txt `o` elm = none</CODE> </TD>+<TD> </TD>+<TD><EM>excl. middle </EM></TD>+</TR>+<TR><TD><CODE>children `o` elm = children</CODE> </TD>+<TD> </TD>+<TD> </TD>+</TR>+<TR><TD><CODE>children `o` txt = none</CODE> </TD>+<TD> </TD>+<TD>+</TD>+</TR></TABLE>+++<BR>+<DIV ALIGN=center>Figure 6: Algebraic laws of combinators.+<A NAME="tablelaws"></A></DIV>+<HR></BLOCKQUOTE>Giving all content filters the same type maximises the usefulness of+combinators for plugging together functions of this type. However, it+is still helpful to identify subclasses of content filters that offer+extra guarantees. Two examples of such classes are:+<OL>+<LI>+A <EM>predicate</EM> <TT>p</TT> has the property that <TT>p c</TT>+always gives as result either <TT>[c]</TT> or <TT>[]</TT>.++<LI>+A <EM>selector</EM> <TT>s</TT> has the property that <TT>s c</TT>+always gives as result a sequence of contents taken from+<TT>c</TT>.+Resulting items do not overlap, and+the result sequence respects the order in which the contents+were found in <TT>c</TT>.+</OL>+So a predicate is a selector, but a selector is not necessarily+a predicate.<BR>+<BR>+The <TT>`o`</TT> form of filter composition+could be defined using a Haskell <EM>list comprehension</EM>+<PRE>+ (f `o` g) c = [c'' | c' <- g c, c'' <- f c']+</PRE>However, we prefer the equivalent higher-order definition+<CODE> f `o` g = concat . map f . g </CODE>+because it is more convenient in algebraic+calculation.<A NAME="text8"></A><A HREF="#note8"><SUP><FONT SIZE=2>8</FONT></SUP></A>++Composition is associative, with <TT>none</TT> as zero, and <TT>keep</TT> as+identity.<BR>+<BR>+The <TT>`with`</TT> form of guarded composition is <EM>not</EM> associative,+but we do have some laws, particularly idempotence. We also have a+promotion law about combined uses of <TT>`with`</TT> and <TT>`o`</TT>.+The dual operator, <TT>`without`</TT> has parallel laws.<BR>+<BR>+The <TT>/></TT> path selector is associative but <TT></</TT> is not, and there+are some idempotence laws for both. Most important however, are the+various promotion laws for changing the order of application of <TT>/></TT>,+<TT></</TT>, and <TT>with</TT>.<BR>+<BR>+The directed choice operator <TT>|>|</TT> viewed by itself appears to be+algebraically sensible, but it does not seem to have useful algebraic+properties in connection with other combinators because of its bias+towards the left operand. The simpler result-appending combinator <TT>|||</TT> could be an alternative to the directed choice operator, and would+probably lead to more laws, but it has less `application bite'. A+potentially serious problem is that the <TT>|||</TT>-combination of two+selectors is not necessarily a selector.<BR>+<BR>+The recursion operator <TT>deep</TT> has some minor laws, one of which,+the depth law, is more profound. We have not yet fully investigated+the properties of <TT>deepest</TT>, <TT>multi</TT>, and <TT>foldXml</TT>.<BR>+<BR>++<BR>+<BR>+<!--TOC section Translation of DTDs to Types-->++<H2>3 Translation of DTDs to Types</H2>+<A NAME="translation"></A><!--TOC subsection DTDs-->++<H3>3.1 DTDs</H3>+So far we have considered document-processing by generic tree+transformations, where markup is matched textually at runtime, and+no account is taken of any deeper meaning of tags.<BR>+<BR>+However, when the DTD for a document is available, the meaning it+defines for markup tags can be used to powerful effect. The most basic+use is to confirm semantic <EM>validity</EM>: a stronger notion than mere+syntactic well-formedness. A DTD defines a grammar for document+content: it specifies a vocabulary of markup tags, and the allowed+content and attributes for each tag. Document validation is therefore a+straightforward check that the document's structure conforms to the+vocabulary and grammar given in the DTD.<BR>+<BR>+XML document validators are readily available. However, we go further+and define the idea of <EM>valid document processing</EM>. A valid+processing script is one which produces a valid document as output,+given a valid document as input. We achieve this by demonstrating a+correspondence+between the DTD of a document and the+definition of a set of algebraic types in Haskell, and the consequent+correspondence between the document's content and a structured Haskell+value. Hence, by writing document processing scripts to manipulate the+typed Haskell value, the script validation problem is just an instance+of normal Haskell type inference.<A NAME="text9"></A><A HREF="#note9"><SUP><FONT SIZE=2>9</FONT></SUP></A>+<BR>+<BR>+<BLOCKQUOTE><HR>+<PRE>+<?xml version='1.0'?>+<!DOCTYPE album SYSTEM "album.dtd" [+<!ELEMENT album (title, artist, recordingdate?,+ coverart, (catalogno)+,+ personnel, tracks, notes) >+<!ELEMENT title #PCDATA>+<!ELEMENT artist #PCDATA>+<!ELEMENT recordingdate EMPTY>+ <!ATTLIST recordingdate date CDATA #IMPLIED+ place CDATA #IMPLIED>+<!ELEMENT coverart (location)? >+ <!ATTLIST coverart style CDATA #REQUIRED>+<!ELEMENT location EMPTY >+ <!ATTLIST location thumbnail CDATA #IMPLIED+ fullsize CDATA #IMPLIED>+<!ELEMENT catalogno EMPTY >+ <!ATTLIST+ catalogno+ label CDATA #REQUIRED+ number CDATA #REQUIRED+ format (CD | LP | MiniDisc) #IMPLIED+ releasedate CDATA #IMPLIED+ country CDATA #IMPLIED>+<!ELEMENT personnel (player)+ >+<!ELEMENT player EMPTY >+ <!ATTLIST player name CDATA #REQUIRED+ instrument CDATA #REQUIRED>+<!ELEMENT tracks (track)* >+<!ELEMENT track EMPTY>+ <!ATTLIST track title CDATA #REQUIRED+ credit CDATA #IMPLIED+ timing CDATA #IMPLIED>+<!ELEMENT notes (#PCDATA | albumref | trackref)* >+ <!ATTLIST notes author CDATA #IMPLIED>+<!ELEMENT albumref #PCDATA>+ <!ATTLIST albumref link CDATA #REQUIRED>+<!ELEMENT trackref #PCDATA>+ <!ATTLIST trackref link CDATA #IMPLIED>+]>+</PRE>++<DIV ALIGN=center>Figure 7: An example DTD.+<A NAME="exampledtd"></A></DIV>+<HR></BLOCKQUOTE><BLOCKQUOTE><HR>+<PRE>+module AlbumDTD where++data Album = + Album Title Artist (Maybe Recordingdate)+ Coverart [Catalogno] Personnel+ Tracks Notes+newtype Title = Title String+newtype Artist = Artist String+newtype Recordingdate =+ Recordingdate Recordingdate_Attrs+data Recordingdate_Attrs = Recordingdate_Attrs {+ date :: Maybe String,+ place :: Maybe String }+newtype Coverart = Coverart (String, Maybe Location)+newtype Location = Location Location_Attrs+data Location_Attrs = Location_Attrs {+ thumbnail :: Maybe String,+ fullsize :: Maybe String }+newtype Catalogno = Catalogno Catalogno_Attrs+data Catalogno_Attrs = Catalogno_Attrs {+ label :: String,+ number :: String,+ format :: Maybe Format,+ releasedate :: Maybe String,+ country :: Maybe String }+data Format = CD | LP | MiniDisc+newtype Personnel = Personnel [Player]+newtype Player = Player Player_Attrs+data Player_Attrs = Player_Attrs {+ name :: String,+ instrument :: String }+newtype Tracks = Tracks [Track]+newtype Track = Track Track_Attrs+data Track_Attrs = Track_Attrs {+ title :: String,+ credit :: Maybe String,+ timing :: Maybe String }+newtype Notes = Notes (Maybe String, [Notes_])+data Notes_ = + Notes_Str String+ | Notes_Albumref Albumref+ | Notes_Trackref Trackref+newtype Albumref = Albumref (String,String)+newtype Trackref = Trackref (Maybe String,String)+</PRE>++<DIV ALIGN=center>Figure 8: The example DTD translated to Haskell types.+<A NAME="haskelldtd"></A></DIV>+<HR></BLOCKQUOTE><!--TOC subsection DTD translations.-->++<H3>3.2 DTD translations.</H3>An example DTD for the document shown earlier is given in+Figure <A HREF="#exampledtd">7</A>. The immediate features to note are:+(1) For every element, there is a specification of allowed inner elements+ (<CODE>ELEMENT</CODE> declaration), and possibly also a specification of allowed+ attribute values (<CODE>ATTLIST</CODE> declaration).+(2) For inner content, the grammar allows sequence (commas), choice+ (vertical bar), optionality (question mark), and repetition (star or plus).+(3) Where the inner content declaration allows free text (<CODE>#PCDATA</CODE>),+ choice between text and other elements is permitted, but sequencing of+ those elements is not permitted.+(4) In attribute lists, some values are mandatory (<CODE>#REQUIRED</CODE>) and+ some are optional (<CODE>#IMPLIED</CODE>); attribute values can either be+ unconstrained strings (<CODE>CDATA</CODE>) or a member of some pre-defined+ set of string values.<BR>+<BR>+There seem to be some obvious correspondences between this very+restricted form of type language and the richer type language of+Haskell. Each element declaration is roughly speaking a new datatype+declaration. Sequence is like product types (i.e. single-constructor+values). Choice is like sum types (i.e. multi-constructor values).+Optionality is just a <TT>Maybe</TT> type. Repetition is lists.<BR>+<BR>+Attribute lists also have a translation: because they are unordered and+accessed by name, Haskell named-fields look like a good+representation. Optionality can again be expressed as <TT>Maybe</TT>+types. Attribute values that are constrained to a particular value-set+can be modelled by defining a new enumeration type encompassing the+permitted strings.<BR>+<BR>+<!--TOC subsection Implementation-->++<H3>3.3 Implementation</H3>+These rules are formalised in the appendix (Figure <A HREF="#DTDrules">9</A>).+An implementation of these rules (with some additional rules to+eliminate redundancy) translated the DTD in Figure <A HREF="#exampledtd">7</A>+into the Haskell type declarations shown in Figure <A HREF="#haskelldtd">8</A>.<BR>+<BR>+Also needed, along with the type declarations, are functions which read+and write values of these types to and from actual XML documents.+These are generated automatically from the type declarations alone.+Using an appropriate set of pre-defined type classes, we derive a new+instance for each generated type using a tool like DrIFT [<CITE><A HREF="#DRiFT"><CITE>16</CITE></A></CITE>].<BR>+<BR>+<!--TOC subsection Discussion-->++<H3>3.4 Discussion</H3>+Although this type-based translation looks straightforward, it turns+out that there are several tricky issues.<BR>+<BR>+First, the type translation may only use datatypes and newtypes, never+type synonyms. This is a result of needing to write values out as XML+-- a type synonym in Haskell is indistinguishable from the type it+abbreviates, but the generated types must be distinct in order to be+able to re-introduce enclosing start and end tags with the correct+markup.<BR>+<BR>+A separate type is introduced for each collection of attributes.+Hence, an element is represented by a pairing of the attributes+and the content. Where a tagged element directly contains an optional+type or a sequence of types which are themselves sum-types, it is+necessary to interpose a separate Haskell type, e.g. <CODE>Notes</CODE>+contains a <CODE>[Notes_]</CODE> where the auxiliary type <CODE>Notes_</CODE> has+three alternatives.<BR>+<BR>+Naming is a big issue. Case matters in XML, so a <TT><tag></TT> differs+from a <TT><TAG></TT> and attribute <TT>attr</TT> differs from <TT>Attr</TT>.+In Haskell however, types must begin with upper-case, and field-names+must begin with lower-case. Where auxiliary types are necessary,+we have chosen to append an underscore character to the name. All+of these factors impose restrictions on the use of this+translation, due to the potential name conflicts.<BR>+<BR>+Furthermore, there is a mismatch between Haskell's named fields and the+attribute naming/scoping rules in XML. In XML, different elements may+have attributes of the same name and type, whereas Haskell's named+fields are restricted to use within a single type. A system of typed+extensible records [<CITE><A HREF="#Gaster98"><CITE>5</CITE></A></CITE>] would be a much better fit.<BR>+<BR>+Despite these problems in expressing DTDs within the Haskell+typesystem, the latter is very much more powerful than DTDs -- for+instance, DTDs have no notion of polymorphism. Indeed, there are+frequent occasions when DTD writers resort to textual+macros<A NAME="text10"></A><A HREF="#note10"><SUP><FONT SIZE=2>10</FONT></SUP></A>+ to indicate more+detailed structuring than DTDs permit (including polymorphism and+qualified typing), even though such implicit structuring cannot be+validated by XML tools. It is significant to note the XML community's+recognition of these limitations of DTDs -- recent proposals for <EM>schemas</EM><A NAME="text11"></A><A HREF="#note11"><SUP><FONT SIZE=2>11</FONT></SUP></A>++address the question of richer+typing in a more disciplined manner.<BR>+<BR>+One area in which the type system of Haskell in particular (as opposed+to other functional languages) is exploited is type classes. This+systematic overloading mechanism is very useful for codifying the I/O+conversions.<BR>+<BR>++<!--TOC section Pros and cons of the two schemes-->++<H2>4 Pros and cons of the two schemes</H2>+<A NAME="evaluation"></A><!--TOC subsection Combinators-->++<H3>4.1 Combinators</H3>++Compared with the mainstream solution for XML processing,+namely new domain-specific languages for expressing and scripting+transformations, the combinator approach has several advantages:<BR>+<BR>++<H5>Ease of extension and variation</H5>+ Scripting languages sometimes lack useful facilities, or provide+ them in convoluted ways. Extending the language is difficult. A+ combinator library, however, can be enlarged comparatively+ straightforwardly -- the definitions are accessible, and most are+ short and simple.<BR>+<BR>++<H5>Computational power</H5>+ Scripting languages tend to offer either a+ very limited expression language, or a hook into a programming+ system at a completely different level of abstraction. But if XML+ scripts are programs in a language such as Haskell, the full power+ of the native language is immediately available.<BR>+<BR>++<H5>Abstraction, generality and reuse</H5>+ Almost any pattern occurring in a combinator program can be isolated+ and defined as a separate re-usable idea [<CITE><A HREF="#Hughes89"><CITE>6</CITE></A></CITE>]. This also+ applies at the application level, where common ideas from similar+ applications might easily be defined in a higher-level library.+ This form of re-use makes program development much quicker and less+ error-prone.<BR>+<BR>++<H5>Laws for reasoning about scripts</H5>+ The semantics of a scripting language are often defined by+ illustration. So it is hard to reason with confidence about the+ meanings of scripts. Is <I>A</I> just a stylistic variation of <I>B</I> or+ are there inputs for which the two could give different results?+ But when the semantics of scripts can be defined in terms of the+ equations for the combinators, properties such as associativity and+ distribution can often be demonstrated simply.<BR>+<BR>++<H5>Implementation for free</H5>+ Does a scripting language have an interactive interpreter? A+ compiler? A type-checker? A profiler? All these things are+ immediately available to XML scripts directly expressed as Haskell+ programs.<BR>+<BR>++Of course, there are disadvantages too.<BR>+<BR>++<H5>Distance from target language</H5>+ XSLT [<CITE><A HREF="#xslt"><CITE>3</CITE></A></CITE>] has the property that a script is an expression in+ the target language: it uses exactly the XML syntax for+ building new content. Combinator-based scripts must+ use a different syntax due to the underlying language.+ The linguistic gap might cause confusion and increase learning costs.<BR>+<BR>++<H5>Living in an unfamiliar world</H5>+ Combinator programs <EM>look like</EM> scripts in a small+ domain-specific language. Writers may be beguiled by this apparent+ simplicity, make a small error, and drop into an unknown corner of+ Haskell. Error messages may be incomprehensible, or worse,+ the script might work but do something utterly strange.<BR>+<BR>+<!--TOC subsection Type-based translation-->++<H3>4.2 Type-based translation</H3>+Some of the advantages of the fully-typed representation of XML+documents have already been mentioned.<BR>+<BR>++<H5>Validity</H5>+ The ability for the system to spot errors automatically, not just+ in the data, but in the program, and also to prevent the generation+ of incorrect document markup.<BR>+<BR>++<H5>Direct programming style</H5>+ Functional languages encourage the use of pattern-matching (binding+ values to variables) on the left-hand-side of equations. However,+ using higher-order combinators, data structures tend not to be+ mentioned in equations at all. The DTD translation approach is+ much more in keeping with the pattern-binding style, which+ sometimes leads to shorter programs! Whereas with combinators, it+ is sometimes necessary to re-traverse the same selection path with+ slight variations, the pattern-binding gives direct access for+ free.<BR>+<BR>+<BR>++Disadvantages are:<BR>+<BR>++<H5>High startup cost</H5>+ Before scripting document transformations, it is necessary to+ acquire, check, and process the DTD. Although the generation of+ Haskell types is automated, few people are familiar enough with+ DTDs to be able to start using them immediately. They require+ careful study and understanding before correct scripts can be written+ and the initial investment of effort pays off.<BR>+<BR>++<H5>Incomplete type model</H5>+ The grammar of DTDs is small and restrictive compared to the+ sophisticated type systems available in functional languages.+ Better means of type-specification in XML are still under+ development. In the meantime, there is little scope for using+ the full power of features like polymorphism.<BR>+<BR>++<!--TOC section Related Work-->++<H2>5 Related Work</H2>+<A NAME="related"></A>+<H5>XML Processing</H5>+There are infant processing languages surrounding XML. Of most+interest here are:<BR>+<BR>+<UL>+<LI>XSLT [<CITE><A HREF="#xslt"><CITE>3</CITE></A></CITE>]+ (eXtensible Style Language for Transformation) is a W3C-proposed+ declarative language for expressing a limited form of transformations+ on XML documents, originally intended for rendering to a layout-based+ format, e.g. HTML, PostScript, etc., but now widely used for+ XML->XML transformations.++<LI>DSSSL [<CITE><A HREF="#dsssl"><CITE>12</CITE></A></CITE>]+ (Document Style Semantics and Specification Language) is a mature ISO+ standard with no complete implementations. It is similar in essence+ to XSLT, but deals with full SGML input, and is based on Scheme.+</UL>Not many functional language researchers are visibly engaged in+XML-related work, but+two other toolkits for XML-processing are Christian Lindig's XML+parser in+O'Caml<A NAME="text12"></A><A HREF="#note12"><SUP><FONT SIZE=2>12</FONT></SUP></A>++and Andreas Neumann's validating XML parser in+SML<A NAME="text13"></A><A HREF="#note13"><SUP><FONT SIZE=2>13</FONT></SUP></A>+.+To our knowledge, neither of these provides transformation capabilities+in either a combinator style or a type-translation style. Philip+Wadler has written a short formal semantics of XSL selection patterns+[<CITE><A HREF="#WadlerXSL"><CITE>15</CITE></A></CITE>].<BR>+<BR>++<H5>Application-based combinators</H5>+Parsing is the most extensively studied application for combinator+libraries. Since the original treatment by Burge [<CITE><A HREF="#Burge75"><CITE>2</CITE></A></CITE>], there+have been many variations on the theme. Swierstra and Duponcheel's+method incorporating on-the-fly grammar analysis and error-correction+is a notable recent example [<CITE><A HREF="#SwierstraDuponcheel96"><CITE>10</CITE></A></CITE>]. We hope it+may be possible to incorporate DTD-analysis in our combinators in a+similar style.<BR>+<BR>+Although many other libraries of application combinators have been+devised, the general design principles for such libraries are scarcely+referred to in the literature. Hughes' exposition of a design for+pretty-printing combinators [<CITE><A HREF="#Hughes95"><CITE>7</CITE></A></CITE>] is a unique resource in+this respect, and we have yet to exploit it fully.<BR>+<BR>++<H5>Tree-processing operators</H5>An earlier version of this paper prompted more than one+pointer to the work of Eelco Visser and colleagues [<CITE><A HREF="#Visser98"><CITE>13</CITE></A></CITE>].+Their motivating application is specification of strategies for program+optimisation, treated as rewriting over expression trees.+The result of applying a strategy is either a single term or failure:+non-determinism is achieved by backtracking but only the first success+is computed, whereas we deal in `lists of successes' [<CITE><A HREF="#Wadler85"><CITE>14</CITE></A></CITE>].+Their operators for combining strategies include composition,+directed choice, and an explicit µ operator for recursion.+They have several operators for specifying transformation of+child subterms: some are not so relevant to XML where+subtree position and arity are less often fixed than in program+syntax; however, one of the most frequently+applied operators is close to our <CODE>foldXml</CODE>.+Most significantly, Visser et. al. achieve great expressive+power by decomposing the match/re-build stages of rewriting,+and introducing <EM>explicit environments</EM> by which these stages+communicate. This makes it possible to+deal with subtleties such as variable bindings+in the program terms under transformation.+Although the structure of XML is simpler than the structure of+a programming language, our library could benefit from the addition+of support for binding variables when matching subtrees.<BR>+<BR>+Programming functions explicitly over the XML data-structure,+without the abstraction of combinators, Haskell pattern matching+provides bindings for subtrees. But only at a fixed (small) depth+from the root, beneath an explicitly stated pattern of constructors.+Mohnen [<CITE><A HREF="#Mohnen96"><CITE>9</CITE></A></CITE>] defines an extension of the pattern language+for deep matching: variables in a pattern can be bound to subterms+at arbitrary depth inside the original term. +The result of the match includes a <EM>context function</EM> representing+the original subject term with `holes' at the sites of matching;+subterms for these holes are supplied by arguments to the function.+So contexts are the complements of environments.+Mohnen shows how his matching extension simplifies various+tree-processing tasks, and also how it can be translated into+standard Haskell.+This work could provide one component of a hybrid solution,+with DTD-specific representation <EM>and</EM> generic forms of+traversal and matching.<BR>+<BR>+Visser et. al. [<CITE><A HREF="#Visser98"><CITE>13</CITE></A></CITE>] also discuss several other approaches+to the tree transformation problem.<BR>+<BR>++<!--TOC section Conclusions and Future Work-->++<H2>6 Conclusions and Future Work</H2>+<A NAME="furtherwork"></A>In our experience, Haskell is a very suitable language for+XML processing.+For generic applications, a small set of combinators+designed with algebraic properties in mind can be powerful enough and+flexible enough to describe a full range of selection, testing, and+construction operations in a uniform framework.+For applications where the DTD is fixed, a tool deriving corresponding+types and associated I/O routines turns XML processing into Haskell+programming over typed data structures, and the Haskell typechecker+validates scripts.<BR>+<BR>+However, there is plenty of scope for further work, in several directions:<BR>+<BR>++<H5>Generality of combinators</H5>Though we have had generality as a design aim for our present combinator+library there is scope for generalising it further.<BR>+<BR>+<UL>+<LI>+<EM>Wider functionality.</EM>+Most content filters in our current library+are either pure selectors (with results that are sequences+of sub-trees from the full document tree) or pure constructors+(creating document content from values of other types).+The design could usefully be extended to include a more general class+of <EM>deletion</EM> operations in which sub-trees can be+thinned and pruned in various ways.+More general still are combinators for <EM>editing and transforming</EM>,+where some of the ideas in Visser's work could usefully be+transferred.++<LI>+<EM>Multiple inputs and outputs.</EM>+An interesting extension of single-document scripting is the handling+of multiple documents. Producing more than one output document+is no great problem.+But it is far more challenging to design appropriate combinators+for dealing with several inputs.++<LI>+<EM>More general types.</EM>+The labelling scheme has proved useful for some applications,+but the need for a separate <TT>LabelFilter</TT> type is a blemish.+We hope to generalise the <TT>CFilter</TT> type to incorporate <TT>LabelFilter</TT>+as a special case.+By making the <TT>CFilter</TT> type parametric it might even be possible+to incorporate the type-translation of DTDs within the combinator framework.+</UL>+<H5>Efficiency of combinators</H5>The current combinator library is quite usable, but here+are some possible routes to greater efficiency.+<UL>+<LI>+<EM>Algebraic normalisation</EM>+So far we have merely established that laws hold, and occasionally+appealed to them when writing scripts. +The implementation simply defines the combinators by their+specifying equations.+Instead, laws could be exploited at the implementation level.+Following Hughes [<CITE><A HREF="#Hughes95"><CITE>7</CITE></A></CITE>], we have in mind an implementation+that automatically reduces all combinations to a <EM>normal form</EM>,+that is the least expensive equivalent computationally. ++<LI>+<EM>Space-efficient formulation</EM>+Some lazy functional programs that process trees in pre-order+left-to-right fashion can be formulated to run in log(N) space.+The part of the tree that is held in memory corresponds to +a path from the root to some node that is currently the focus+of computation: to the left are `garbage' subtrees already processed,+to the right are subtrees not yet evaluated.+However, our current combinators have not been formulated+to guarantee this sort of space behaviour, even in favourable cases.+This problem might be tackled by the normalisation approach.++<LI>+<EM>DTD-aware combinators</EM>+The current combinator library just ignores DTDs. Combinators that+maintain DTD information might, for example, achieve far more+efficient search in some cases by pruning branches bound to fail.+They could also be used to produce+first-class XML documents as the results of queries, not just+raw extracts of unknown type.+As we have already noted,+DTDs could perhaps be attached as labels in the sense of §<A HREF="#labelling">2.4</A>:+either as explicit values or implicitly in type information.+</UL>++<H5>Relations between DTDs</H5>As we have seen, in the DTD-directed approach with known fixed DTDs for +input and output, validation translates to static type-checking;+whereas generic combinators could in principle acquire+and compute DTDs dynamically.+These represent extremes with disadvantages of inflexibility+on the one hand and some insecurity on the other.+There are many other ways of handling +relations between DTDs.+For example:<BR>+<BR>+<UL>+<LI>+<EM>Polymorphic and higher-order scripts.</EM> +The generic approach would gain security if one could+<EM>infer</EM> a DTD->DTD function.+By analogy with functional programs+it is then natural to assign scripts polymorphic+and higher-order DTDs, making explicit their+degree of genericity.<BR>+<BR>++<LI>+<EM>Inclusion between DTDs.</EM>+This has been implicitly assumed already, but has practical+importance in its own right. As stock DTDs are+refined, XML documents will inhabit a hierarchy of+specialisation. Given several similar DTDs,+one would like to derive a DTD for a virtual common root+(intersection) or common descendent (union).+This goes well beyond the abilities of current type-inference+systems, but would make a useful addition to our functional+toolkit for XML processing.+</UL>+<!--TOC section Acknowledgements-->++<H2>Acknowledgements</H2>+Canon Research Centre (Europe) Ltd. suggested this line of work and+funded it. Philip Wadler, Christian Lindig, and Joe English gave very+helpful comments on an earlier draft of this paper and software.+Several anonymous referees also gave useful advice.<BR>+<BR>+<!--TOC section References-->++<H2>References</H2><DL COMPACT>+<DT><FONT COLOR=purple>[1]<A NAME="xml"></A></FONT><DD>+Tim Bray, Jean Paoli, and C.M. Sperberg-Macqueen.+ Extensible Markup Language (XML) 1.0 (W3C+ Recommendation).+ <CODE>http://www.w3.org/TR/REC-xml</CODE>, WWW Consortium,+ February 1998.<BR>+<BR>++<DT><FONT COLOR=purple>[2]<A NAME="Burge75"></A></FONT><DD>+W H Burge.+ <EM>Recursive Programming Techniques</EM>.+ Addison-Wesley, 1975.<BR>+<BR>++<DT><FONT COLOR=purple>[3]<A NAME="xslt"></A></FONT><DD>+James Clark (ed).+ XSL Transformations (Working Draft).+ <CODE>http://www.w3.org/TR/WD-xslt</CODE>, WWW Consortium,+ April 1999.<BR>+<BR>++<DT><FONT COLOR=purple>[4]<A NAME="Fairbairn87"></A></FONT><DD>+Jon Fairbairn.+ Making form follow function: An exercise in functional programming+ style.+ <EM>Software -- Practice and Experience</EM>, 17(6):379--386, June 1987.<BR>+<BR>++<DT><FONT COLOR=purple>[5]<A NAME="Gaster98"></A></FONT><DD>+Benedict R Gaster.+ <EM>Records, Variants, and Qualified Types</EM>.+ Dept of Computer Science, University of Nottingham,+ <EM>PhD Thesis</EM>, 1998.<BR>+<BR>++<DT><FONT COLOR=purple>[6]<A NAME="Hughes89"></A></FONT><DD>+John Hughes.+ Why functional programming matters.+ <EM>Computer Journal</EM>, 32(2), April 1989.<BR>+<BR>++<DT><FONT COLOR=purple>[7]<A NAME="Hughes95"></A></FONT><DD>+John Hughes.+ The design of a pretty-printing library.+ In <EM>1st </EM><EM>I</EM><EM>ntl. </EM><EM>S</EM><EM>chool on </EM><EM>A</EM><EM>dvanced </EM><EM>F</EM><EM>unctional+ </EM><EM>P</EM><EM>rogramming</EM>, pages 53--96. Springer LNCS Vol. 925, 1995.<BR>+<BR>++<DT><FONT COLOR=purple>[8]<A NAME="HuttonMeijer98"></A></FONT><DD>+Graham Hutton and Erik Meijer.+ Monadic parsing in Haskell.+ <EM>Journal of Functional Programming</EM>, 8(4), July 1998.<BR>+<BR>++<DT><FONT COLOR=purple>[9]<A NAME="Mohnen96"></A></FONT><DD>+Markus Mohnen.+ Context patterns in Haskell.+ In <EM>W</EM><EM>orkshop on </EM><EM>I</EM><EM>mplementation of </EM><EM>F</EM><EM>unctional </EM><EM>L</EM><EM>anguages</EM>,+ pages 41--57. Springer LNCS Vol 1268, September 1996.<BR>+<BR>++<DT><FONT COLOR=purple>[10]<A NAME="SwierstraDuponcheel96"></A></FONT><DD>+Doaitse Swierstra and Luc Duponcheel.+ Deterministic error-correcting combinator parsers.+ In <EM>2nd </EM><EM>I</EM><EM>ntl. </EM><EM>S</EM><EM>chool on </EM><EM>A</EM><EM>dvanced </EM><EM>F</EM><EM>unctional+ </EM><EM>P</EM><EM>rogramming</EM>, pages 184--207. Springer LNCS Vol 1129, August 1996.<BR>+<BR>++<DT><FONT COLOR=purple>[11]<A NAME="Turner79"></A></FONT><DD>+David A Turner.+ A new implementation technique for applicative languages.+ <EM>Software -- Practice and Experience</EM>, 9(1):31--50, January 1979.<BR>+<BR>++<DT><FONT COLOR=purple>[12]<A NAME="dsssl"></A></FONT><DD>+Unknown.+ Document Style Semantics and Specification Language+ (DSSSL) (Final Draft).+ <CODE>http://occam.sjf.novell.com/dsssl/dsssl96/</CODE>,+ Novell Publications, 1996.<BR>+<BR>++<DT><FONT COLOR=purple>[13]<A NAME="Visser98"></A></FONT><DD>+Eelco Visser, Zine el Abidine Benaissa, and Andrew Tolmach.+ Building program optimisers with rewrite strategies.+ In <EM>I</EM><EM>nternational </EM><EM>C</EM><EM>onference on </EM><EM>F</EM><EM>unctional </EM><EM>P</EM><EM>rogramming</EM>,+ pages 13--26. ACM Press, September 1998.<BR>+<BR>++<DT><FONT COLOR=purple>[14]<A NAME="Wadler85"></A></FONT><DD>+Philip Wadler.+ How to replace failure by a list of successes.+ In <EM>F</EM><EM>unctional </EM><EM>P</EM><EM>rogramming </EM><EM>L</EM><EM>anguages and </EM><EM>C</EM><EM>omputer+ </EM><EM>A</EM><EM>rchitecture</EM>, pages 113--128. Springer LNCS Vol 201, September 1985.<BR>+<BR>++<DT><FONT COLOR=purple>[15]<A NAME="WadlerXSL"></A></FONT><DD>+Philip Wadler.+ A formal model of pattern matching in XSL.+ Technical Report <CODE>http://www.cs.bell-labs.com/~wadler/xsl/</CODE>,+ Bell Labs, January 1999.<BR>+<BR>++<DT><FONT COLOR=purple>[16]<A NAME="DRiFT"></A></FONT><DD>+Noel Winstanley.+ Reflections on instance derivation.+ In <EM>1997 </EM><EM>G</EM><EM>lasgow </EM><EM>F</EM><EM>unctional </EM><EM>P</EM><EM>rogramming </EM><EM>W</EM><EM>orkshop</EM>. BCS+ Workshops in Computer Science, September 1997.</DL>+++<BLOCKQUOTE><HR><!--TOC section Appendix: DTD translation rules-->++<H2>Appendix: DTD translation rules</H2>+++<TABLE CELLSPACING=2 CELLPADDING=0>+<TR><TD ALIGN=center NOWRAP COLSPAN=3><B>Type declarations</B></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>T</I></FONT>[[<TT><ELEMENT n </TT><TT><EM>spec</EM></TT><TT>></TT>]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><TT>newtype </TT><TT><EM>m</EM></TT><TT> =</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE> </CODE><TT><EM>m</EM></TT><TT> (</TT><TT><EM>m</EM></TT><TT>_Attrs, </TT><TT><EM>m</EM></TT><TT>_)</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><TT>newtype </TT><TT><EM>m</EM></TT><TT>_ = </TT><TT><FONT COLOR=red><I>D</I></FONT></TT><TT>[[</TT><TT><EM>spec</EM></TT><TT>]]</TT><TT> </TT><TT><EM>m</EM></TT><TT> </TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=right NOWRAP>where <TT><EM>m</EM></TT><TT> </TT><TT>=</TT><TT> </TT><TT><FONT COLOR=red><I>M</I></FONT></TT><TT>[[</TT><TT>n</TT><TT>]]</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>T</I></FONT>[[<TT><ATTLIST n</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><CODE> </CODE><TT><I><I>decl</I><SUB><FONT SIZE=2>0</FONT></SUB></I></TT><TT> ... </TT><TT><I><I>decl</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB></I></TT><TT><TT>></TT></TT>]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><TT>data </TT><TT><EM>m</EM></TT><TT>_Attrs = </TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE> </CODE><TT><EM>m</EM></TT><TT>_Attrs {</TT><TT><FONT COLOR=red><I>F</I></FONT></TT><TT>[[</TT><TT><I><I>decl</I><SUB><FONT SIZE=2>0</FONT></SUB></I></TT><TT>]]</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE> ,</CODE> ...</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE> ,</CODE><TT><FONT COLOR=red><I>F</I></FONT></TT><TT>[[ </TT><TT><I><I>decl</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB></I></TT><TT>]]</TT><TT> }</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=right NOWRAP>where <TT><EM>m</EM></TT><TT> </TT><TT>=</TT><TT> </TT><TT><FONT COLOR=red><I>M</I></FONT></TT><TT>[[</TT><TT>n</TT><TT>]]</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><FONT COLOR=red><I>A</I></FONT>[[<I><I>decl</I><SUB><FONT SIZE=2>0</FONT></SUB></I>]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP>...</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><FONT COLOR=red><I>A</I></FONT>[[ <I><I>decl</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB></I>]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+</TR>+<TR><TD ALIGN=center NOWRAP COLSPAN=3><B>RHS of type declarations</B></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>[[ ( <I>x</I><SUB><FONT SIZE=2>0</FONT></SUB>, <I>x</I><SUB><FONT SIZE=2>1</FONT></SUB>, ..., <I>x</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ) ]] <I>m</I></TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><FONT COLOR=red><I>C</I></FONT>[[ <I>m</I> <I>x</I><SUB><FONT SIZE=2>0</FONT></SUB> ... <I>x</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE> </CODE> <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2>0</FONT></SUB> ]]+ <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2>1</FONT></SUB> ]]+ ... <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>[[ ( <I>x</I><SUB><FONT SIZE=2>0</FONT></SUB> | <I>x</I><SUB><FONT SIZE=2>1</FONT></SUB> | ... | <I>x</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ) ]] <I>m</I></TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP> <FONT COLOR=red><I>C</I></FONT>[[ <I>m</I> <I>x</I><SUB><FONT SIZE=2>0</FONT></SUB> ]] <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2>0</FONT></SUB> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE>|</CODE> <FONT COLOR=red><I>C</I></FONT>[[ <I>m</I> <I>x</I><SUB><FONT SIZE=2>1</FONT></SUB> ]] <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2>1</FONT></SUB> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE>|</CODE> ...</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE>|</CODE> <FONT COLOR=red><I>C</I></FONT>[[ <I>m</I> <I>x</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ]] <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>[[ (<I>x</I>)? ]] <I>m</I></TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><TT>Maybe</TT> <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>[[ (<I>x</I>)+ ]] <I>m</I></TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><TT>List1</TT> <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>[[ (<I>x</I>)* ]] <I>m</I></TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><CODE>[</CODE> <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I> ]] <CODE>]</CODE></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>[[ <I>x</I> ]] <I>m</I></TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><FONT COLOR=red><I>C</I></FONT>[[ <I>m</I> <I>x</I> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+</TR>+<TR><TD ALIGN=center NOWRAP COLSPAN=3><B>Inner type expressions</B></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>'[[ ( <I>x</I><SUB><FONT SIZE=2>0</FONT></SUB>, <I>x</I><SUB><FONT SIZE=2>1</FONT></SUB>, ..., <I>x</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ) ]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><TT>(</TT> <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2>0</FONT></SUB> ]]+ <TT>,</TT> <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2>1</FONT></SUB> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE> </CODE>+ <TT>,</TT> ... <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ]]+ <TT>)</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>'[[ ( <I>x</I><SUB><FONT SIZE=2>0</FONT></SUB> | <I>x</I><SUB><FONT SIZE=2>1</FONT></SUB> | ... | <I>x</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ) ]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><TT>(OneOf</TT><TT><SUB><FONT SIZE=2><I>n</I></FONT></SUB></TT>+ <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2>0</FONT></SUB> ]]+ <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2>1</FONT></SUB> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE> </CODE>+ ...+ <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ]] <TT>)</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>'[[ (<I>x</I>)? ]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><TT>(Maybe</TT> <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I> ]] <TT>)</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>'[[ (<I>x</I>)+ ]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><TT>(List1</TT> <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I> ]] <TT>)</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>'[[ (<I>x</I>)* ]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><CODE>[</CODE> <FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I> ]] <CODE>]</CODE></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>D</I></FONT>'[[ <I>x</I> ]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><FONT COLOR=red><I>C</I></FONT>[[ <I>x</I> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+</TR>+<TR><TD ALIGN=center NOWRAP COLSPAN=3><B>Name mangling</B></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>C</I></FONT>[[ <I>m</I> <I>x</I><SUB><FONT SIZE=2>0</FONT></SUB> <I>x</I><SUB><FONT SIZE=2>1</FONT></SUB> ... <I>x</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP>... <EM>unique constructor name</EM></TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE> </CODE><EM>based on </EM><EM><TT>m</TT></EM></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>M</I></FONT>[[ <I>n</I> ]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP>... <EM>ensure initial upper-case</EM></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>M</I></FONT>'[[ <I>n</I> ]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP>... <EM>ensure initial lower-case</EM></TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+</TR>+<TR><TD ALIGN=center NOWRAP COLSPAN=3><B>Named fields</B></TD>+</TR>+<TR><TD ALIGN=left NOWRAP COLSPAN=3><FONT COLOR=red><I>F</I></FONT>[[ <TT>n CDATA #REQUIRED</TT> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><FONT COLOR=red><I>M</I></FONT>'[[ <I>n</I> ]] <TT>:: String</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP COLSPAN=3><FONT COLOR=red><I>F</I></FONT>[[ <TT>n CDATA #IMPLIED</TT> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><FONT COLOR=red><I>M</I></FONT>'[[ <I>n</I> ]] <TT>:: Maybe String</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP COLSPAN=3><FONT COLOR=red><I>F</I></FONT>[[ <TT>n (</TT><TT><I>s</I><SUB><FONT SIZE=2>0</FONT></SUB>|<I>s</I><SUB><FONT SIZE=2>1</FONT></SUB>|...|<I>s</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB></TT><TT>) #REQUIRED</TT> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><FONT COLOR=red><I>M</I></FONT>'[[ <I>n</I> ]] <TT>::</TT> <FONT COLOR=red><I>M</I></FONT>[[ <I>n</I> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP COLSPAN=3><FONT COLOR=red><I>F</I></FONT>[[ <TT>n (</TT><TT><I>s</I><SUB><FONT SIZE=2>0</FONT></SUB>|<I>s</I><SUB><FONT SIZE=2>1</FONT></SUB>|...|<I>s</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB></TT><TT>) #IMPLIED</TT> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><FONT COLOR=red><I>M</I></FONT>'[[ <I>n</I> ]] <TT>:: Maybe </TT> <FONT COLOR=red><I>M</I></FONT>[[ <I>n</I> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+</TR>+<TR><TD ALIGN=center NOWRAP COLSPAN=3><B>Constrained attributes</B></TD>+</TR>+<TR><TD ALIGN=left NOWRAP><FONT COLOR=red><I>A</I></FONT>[[ <TT>n CDATA ...</TT> ]]</TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP>0</TD>+</TR>+<TR><TD ALIGN=left NOWRAP COLSPAN=3><FONT COLOR=red><I>A</I></FONT>[[ <TT>n (</TT><TT><I>s</I><SUB><FONT SIZE=2>0</FONT></SUB>|<I>s</I><SUB><FONT SIZE=2>1</FONT></SUB>|...|<I>s</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB></TT><TT>) ...</TT> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP>=</TD>+<TD ALIGN=left NOWRAP><TT>data </TT> <FONT COLOR=red><I>M</I></FONT>[[ <I>n</I> ]] <TT>=</TT></TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE> </CODE>+ <FONT COLOR=red><I>M</I></FONT>[[ <I>s</I><SUB><FONT SIZE=2>0</FONT></SUB> ]] <TT>|</TT>+ <FONT COLOR=red><I>M</I></FONT>[[ <I>s</I><SUB><FONT SIZE=2>1</FONT></SUB> ]]</TD>+</TR>+<TR><TD ALIGN=left NOWRAP> </TD>+<TD ALIGN=center NOWRAP> </TD>+<TD ALIGN=left NOWRAP><CODE> </CODE> <TT>|</TT> ... <TT>|</TT>+ <FONT COLOR=red><I>M</I></FONT>[[ <I>s</I><SUB><FONT SIZE=2><I>k</I></FONT></SUB> ]]</TD>+</TR></TABLE>+++<BR>+<DIV ALIGN=center>Figure 9: DTD translation rules.+<A NAME="DTDrules"></A></DIV>+<HR></BLOCKQUOTE><!--BEGIN NOTES document-->+<HR ALIGN=left WIDTH="50%">+<DL>+<DT><A NAME="note1"></A><A HREF="#text1"><FONT SIZE=5>1</FONT></A>+<DD>The XML toolkit from this paper is available+on the WWW at <TT>http://www.cs.york.ac.uk/fp/HaXml/</TT>++<DT><A NAME="note2"></A><A HREF="#text2"><FONT SIZE=5>2</FONT></A>+<DD><EM>Xtract: a `grep'-like tool+for XML documents.</EM> +<TT>http://www.cs.york.ac.uk/fp/Xtract/</TT>++<DT><A NAME="note3"></A><A HREF="#text3"><FONT SIZE=5>3</FONT></A>+<DD>In light of the ``XML Namespaces'' recommendation,+in effect a mechanism for permitting multiple DTDs, such+facilities could be particularly useful. See+<TT>http://www.w3.org/TR/REC-xml-names</TT>++<DT><A NAME="note4"></A><A HREF="#text4"><FONT SIZE=5>4</FONT></A>+<DD>The shortened name <TT>elm</TT> was chosen to avoid a+clash with the Standard Prelude function <TT>elem</TT>.++<DT><A NAME="note5"></A><A HREF="#text5"><FONT SIZE=5>5</FONT></A>+<DD>For those familiar with the detail of XML, entity+references within the document are treated as plain text.++<DT><A NAME="note6"></A><A HREF="#text6"><FONT SIZE=5>6</FONT></A>+<DD>Actually, a list of+attribute/filter pairs. Each filter is applied to the current element+and the resultant content is flattened to a string value which is+assigned to the named attribute.++<DT><A NAME="note7"></A><A HREF="#text7"><FONT SIZE=5>7</FONT></A>+<DD>Actually a left-section+of the infix operator. Because filters are higher-order, their use is+eta-reduced and the rightmost argument disappears from view.++<DT><A NAME="note8"></A><A HREF="#text8"><FONT SIZE=5>8</FONT></A>+<DD>Irish composition is in fact just the flipped-argument+version of the Kleisi composition operator in the list monad.++<DT><A NAME="note9"></A><A HREF="#text9"><FONT SIZE=5>9</FONT></A>+<DD>Well, nearly!+Validity also encompasses some other minor checks, for+instance that IDREF attributes must be globally unique.++<DT><A NAME="note10"></A><A HREF="#text10"><FONT SIZE=5>10</FONT></A>+<DD>That is, parameter entity references.++<DT><A NAME="note11"></A><A HREF="#text11"><FONT SIZE=5>11</FONT></A>+<DD><TT>http://www.w3.org/TR/xmlschema-1</TT> for structures,++and <TT>http://www.w3.org/TR/xmlschema-2</TT> for datatypes.++<DT><A NAME="note12"></A><A HREF="#text12"><FONT SIZE=5>12</FONT></A>+<DD><TT>http://www.cs.tu-bs.de/softech/people/lindig/tony.html</TT>++<DT><A NAME="note13"></A><A HREF="#text13"><FONT SIZE=5>13</FONT></A>+<DD><TT>http://www.informatik.uni-trier.de/ neumann/Fxp/</TT>+</DL><!--END NOTES--><!--HTMLFOOT-->+<!--ENDHTML-->++<!--FOOTER-->+<HR>++<BLOCKQUOTE><EM>This document was translated from L<sup>A</sup>T<sub>E</sub>X by </EM><A HREF="http://para.inria.fr/~maranget/hevea/index.html"><EM>H</EM><EM><FONT SIZE=2><sup>E</sup></FONT></EM><EM>V</EM><EM><FONT SIZE=2><sup>E</sup></FONT></EM><EM>A</EM></A><EM>.+</EM></BLOCKQUOTE></BODY>+</HTML>+
+ docs/icfp99.ps.gz view
binary file changed (absent → 106885 bytes)
+ docs/index.html view
@@ -0,0 +1,280 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">+<html>+<head>+<title>+ HaXml: Haskell and XML+</title>+</head>++<body bgcolor='#ffffff'>++<center>+<h1>HaXml</h1>+<table><tr><td width=200 align=center>+<a href="#what">What is HaXml?</a><br>+<a href="#how">How do I use it?</a><br>+<a href="#download">Downloads</a><br>+</td><td width=200 align=center>+<a href="#news">Recent news</a><br>+<a href="#who">Contacts</a><br>+<a href="#related">Related Work</a><br>+</td></tr></table>+</center>+<hr>++<center><h3><a name="what">What is HaXml?</a></h3></center>+<p>+<b>HaXml</b> is a collection of utilities for parsing, filtering,+transforming, and generating+<a href="http://www.w3.org/TR/REC-xml">XML</a> documents using+<a href="http://www.haskell.org">Haskell</a>. Its basic facilities+include:+<ul>+<li> a parser for XML,+<li> a separate error-correcting parser for HTML,+<li> an XML validator,+<li> pretty-printers for XML and HTML.+</ul>++<p>+For processing XML documents, the following components are 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+ classes: it allows you to read and write ordinary Haskell data as XML+ documents. 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.+<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+ library.+</ul>++<hr>+<center><h3><a name="how">How do I use it?</a></h3></center>+<p>+<a href="HaXml/index.html">Detailed documentation of the HaXml APIs</a>+is generated automatically by Haddock directly from the source code.++<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>.++<p>+A paper describing and comparing the generic Combinators with+the typed representation (DtdToHaskell/Xml2Haskell) is available here:+(12 pages of double-column A4)+<ul>+<li> <a href="icfp99.dvi">icfp99.dvi</a> (LaTeX dvi format)+<li> <a href="icfp99.ps.gz">icfp99.ps.gz</a> (PostScript format - gzipped)+<li> <a href="icfp99.html">icfp99.html</a> (HTML format)+</ul>++<p>+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="Xtract.html">Xtract tool</a> (HTML format)+</ul>++<p>+<b>Known problems:</b>+<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+ 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!+<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>+<p>+<b>Current version:</b>+HaXml-1.13.2, release date 2006.09.08<br>+By HTTP:+<a href="http://www.haskell.org/HaXml/HaXml-1.13.2.tar.gz">.tar.gz</a>,+<a href="http://www.haskell.org/HaXml/HaXml-1.13.2.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>++<p>+<b>Older versions:</b><br>+By FTP: +<a href="ftp://ftp.cs.york.ac.uk/pub/haskell/HaXml/">+ftp://ftp.cs.york.ac.uk/pub/haskell/HaXml/</a>++<center><h3><a name="install">Installation</a></h3></center>+<p>+To install HaXml, you must have a Haskell compiler: <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++<pre>+ ./configure [--prefix=...] [--buildwith=...]+ make+ make install+</pre>+to configure, build, and install HaXml as a package for your+compiler(s). You need write permission on the library installation+directories of your compiler(s). Afterwards, to gain access to+the HaXml libraries, you only need to add the option <tt>-package+HaXml</tt> to your compiler commandline (no option required for Hugs).+Various stand-alone tools are also built - DtdToHaskell, Xtract,+Validate, MkOneOf - and copied to the final installation location+specified by the <tt>--prefix=...</tt> option to <tt>configure</tt>.++<p>+To build/install on a Windows system without the Cygwin shell and+utilities, you can avoid the configure/make steps by simply using the+minimal <em>Build.bat</em> script. Edit it first for the location+of your compiler etc.++<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>++<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>++<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>++<p>+Version 1.13 has 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.+<li> Updated to work with ghc-6.4's new package mechanism.+</ul>++<br>+<a href="changelog.html">Complete Changelog</a><br>++<hr>+<center><h3><a name="who">Contacts</a></h3></center>+<p>+We are interested in hearing your feedback on these XML facilities -+suggestions for improvements, comments, criticisms, bug reports. Please mail+<ul>+<li> <a href="mailto:Malcolm.Wallace@cs.york.ac.uk">+ Malcolm.Wallace@cs.york.ac.uk</a> (implementation & design)+</ul>++<p>+Development of these XML libraries was originally funded by Canon+Research Europe Ltd.. Subsequent maintenance and development has+been partially supported by the EPSRC, and the University of York.++<p><b>Licence:</b> The library is Free and Open Source Software,+i.e., the bits we wrote are copyright to us, but freely licensed+for your use, modification, and re-distribution, provided you don't+restrict anyone else's use of it. The HaXml library is distributed+under the GNU Lesser General Public Licence (LGPL) - see file+<a href="LICENCE-LGPL">LICENCE-LGPL</a> for more details. We allow one+special exception to the LGPL - see <a href="COPYRIGHT">COPYRIGHT</a>.+The HaXml tools are distributed under the GNU General Public Licence+(GPL) - see <a href="LICENCE-GPL">LICENCE-GPL</a>. (If you don't+like any of these licensing conditions, please contact us to discuss+your requirements.)++<hr>+<p>+<center><h3><a name="related">Related work</a></h3></center>+<ul>+<li>Joe English has written a more space-efficient parser for XML+ 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+ <a href="http://www.fh-wedel.de/~si/HXmlToolbox/">Haskell XML Toolbox</a>+ based on the ideas of HaXml and hxml.+<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">+ Bijan Parsia's article on xml.com</a>+<li>Christian Lindig has written an XML parser in O'Caml:+ <a href="http://www.cs.tu-bs.de/softech/people/lindig/software/tony.html">+ here</a>.+<li>Andreas Neumann of the University of Trier has written a+ validating XML parser in Standard ML:+ <a href="http://www.informatik.uni-trier.de/~neumann/Fxp">here</a>.+<li>Erik Meijer and Mark Shields have a design for a functional programming+ language that treats XML documents as basic data types:+ <a href="http://www.cse.ogi.edu/~mbs/pub/xmlambda">XMLambda</a>.+<li>Benjamin Pierce and Haruo Hosoya have a different but similar design in+ <a href="http://xduce.sourceforge.net/">XDuce</a>, which is+ also implemented.+<li>Taking XDuce's approach further, is the very cool+ <a href="http://www.cduce.org/">CDuce</a> by Véronique Benzaken,+ Guiseppe Castagna, and Alain Frisch. The CDuce language does+ fully statically-typed transformation of XML documents, thus+ guaranteeing correctness, and what is more, it is also faster+ than the untyped XSLT!+<li>The <a href="http://www.xcerpt.org/">Xcerpt project</a> uses HaXml+ to create another rule-based query and transformation language for XML,+ inspired by logic programming, and based on positional selection rather+ than navigational selection.+<li>Ulf Wiger describes an Erlang toolkit for XML:+ <a href="http://www.erlang.se/euc/00/">XMerL</a>+<li>The Java world has adopted the ideas from <em>DtdToHaskell</em> into+ 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+ 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>.+</ul>++<hr>++</body>+</html>
+ examples/AlbumDTD.hs view
@@ -0,0 +1,313 @@+module AlbumDTD where++import Text.XML.HaXml.Xml2Haskell+import Text.XML.HaXml.OneOfN+++{-Type decls-}++data Album = Album Title Artist (Maybe Recording) Coverart+ [Catalogno] Personnel [Track] Notes+ deriving (Eq,Show)+newtype Title = Title String deriving (Eq,Show)+newtype Artist = Artist String deriving (Eq,Show)+data Recording = Recording+ { recordingDate :: (Maybe String)+ , recordingPlace :: (Maybe String)+ } deriving (Eq,Show)+data Coverart = Coverart Coverart_Attrs (Maybe Location)+ deriving (Eq,Show)+data Coverart_Attrs = Coverart_Attrs+ { coverartStyle :: String+ } deriving (Eq,Show)+data Location = Location+ { locationThumbnail :: (Maybe String)+ , locationFullsize :: (Maybe String)+ } deriving (Eq,Show)+data Catalogno = Catalogno+ { catalognoLabel :: String+ , catalognoNumber :: String+ , catalognoFormat :: (Maybe Catalogno_Format)+ , catalognoReleasedate :: (Maybe String)+ , catalognoCountry :: (Maybe String)+ } deriving (Eq,Show)+data Catalogno_Format = Catalogno_Format_CD | Catalogno_Format_LP+ | Catalogno_Format_MiniDisc+ deriving (Eq,Show)+newtype Personnel = Personnel [Player] deriving (Eq,Show)+data Player = Player+ { playerName :: String+ , playerInstrument :: String+ } deriving (Eq,Show)+data Track = Track+ { trackTitle :: String+ , trackCredit :: (Maybe String)+ , trackTiming :: (Maybe String)+ } deriving (Eq,Show)+data Notes = Notes Notes_Attrs [Notes_]+ deriving (Eq,Show)+data Notes_Attrs = Notes_Attrs+ { notesAuthor :: (Maybe String)+ } deriving (Eq,Show)+data Notes_ = Notes_Str String+ | Notes_Albumref Albumref+ | Notes_Trackref Trackref+ deriving (Eq,Show)+data Albumref = Albumref Albumref_Attrs String+ deriving (Eq,Show)+data Albumref_Attrs = Albumref_Attrs+ { albumrefLink :: String+ } deriving (Eq,Show)+data Trackref = Trackref Trackref_Attrs String+ deriving (Eq,Show)+data Trackref_Attrs = Trackref_Attrs+ { trackrefLink :: (Maybe String)+ } deriving (Eq,Show)+++{-Instance decls-}++instance XmlContent Album where+ fromElem (CElem (Elem "album" [] c0):rest) =+ (\(a,ca)->+ (\(b,cb)->+ (\(c,cc)->+ (\(d,cd)->+ (\(e,ce)->+ (\(f,cf)->+ (\(g,cg)->+ (\(h,ch)->+ (Just (Album a b c d e f g h), rest))+ (definite fromElem "<notes>" "album" cg))+ (many fromElem cf))+ (definite fromElem "<personnel>" "album" ce))+ (many fromElem cd))+ (definite fromElem "<coverart>" "album" cc))+ (fromElem cb))+ (definite fromElem "<artist>" "album" ca))+ (definite fromElem "<title>" "album" c0)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem (Album a b c d e f g h) =+ [CElem (Elem "album" [] (toElem a ++ toElem b ++ maybe [] toElem c+ ++ toElem d ++ concatMap toElem e ++ toElem f ++ concatMap toElem g+ ++ toElem h))]+instance XmlContent Title where+ fromElem (CElem (Elem "title" [] c0):rest) =+ (\(a,ca)->+ (Just (Title a), rest))+ (definite fromText "text" "title" c0)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem (Title a) =+ [CElem (Elem "title" [] (toText a))]+instance XmlContent Artist where+ fromElem (CElem (Elem "artist" [] c0):rest) =+ (\(a,ca)->+ (Just (Artist a), rest))+ (definite fromText "text" "artist" c0)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem (Artist a) =+ [CElem (Elem "artist" [] (toText a))]+instance XmlContent Recording where+ fromElem (CElem (Elem "recording" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "recording" (toAttrs as) [])]+instance XmlAttributes Recording where+ fromAttrs as =+ Recording+ { recordingDate = possibleA fromAttrToStr "date" as+ , recordingPlace = possibleA fromAttrToStr "place" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "date" (recordingDate v)+ , maybeToAttr toAttrFrStr "place" (recordingPlace v)+ ]+instance XmlContent Coverart where+ fromElem (CElem (Elem "coverart" as c0):rest) =+ (\(a,ca)->+ (Just (Coverart (fromAttrs as) a), rest))+ (fromElem c0)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem (Coverart as a) =+ [CElem (Elem "coverart" (toAttrs as) (maybe [] toElem a))]+instance XmlAttributes Coverart_Attrs where+ fromAttrs as =+ Coverart_Attrs+ { coverartStyle = definiteA fromAttrToStr "coverart" "style" as+ }+ toAttrs v = catMaybes + [ toAttrFrStr "style" (coverartStyle v)+ ]+instance XmlContent Location where+ fromElem (CElem (Elem "location" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "location" (toAttrs as) [])]+instance XmlAttributes Location where+ fromAttrs as =+ Location+ { locationThumbnail = possibleA fromAttrToStr "thumbnail" as+ , locationFullsize = possibleA fromAttrToStr "fullsize" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "thumbnail" (locationThumbnail v)+ , maybeToAttr toAttrFrStr "fullsize" (locationFullsize v)+ ]+instance XmlContent Catalogno where+ fromElem (CElem (Elem "catalogno" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "catalogno" (toAttrs as) [])]+instance XmlAttributes Catalogno where+ fromAttrs as =+ Catalogno+ { catalognoLabel = definiteA fromAttrToStr "catalogno" "label" as+ , catalognoNumber = definiteA fromAttrToStr "catalogno" "number" as+ , catalognoFormat = possibleA fromAttrToTyp "format" as+ , catalognoReleasedate = possibleA fromAttrToStr "releasedate" as+ , catalognoCountry = possibleA fromAttrToStr "country" as+ }+ toAttrs v = catMaybes + [ toAttrFrStr "label" (catalognoLabel v)+ , toAttrFrStr "number" (catalognoNumber v)+ , maybeToAttr toAttrFrTyp "format" (catalognoFormat v)+ , maybeToAttr toAttrFrStr "releasedate" (catalognoReleasedate v)+ , maybeToAttr toAttrFrStr "country" (catalognoCountry v)+ ]+instance XmlAttrType Catalogno_Format where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "CD" = Just Catalogno_Format_CD+ translate "LP" = Just Catalogno_Format_LP+ translate "MiniDisc" = Just Catalogno_Format_MiniDisc+ translate _ = Nothing+ toAttrFrTyp n Catalogno_Format_CD = Just (n, str2attr "CD")+ toAttrFrTyp n Catalogno_Format_LP = Just (n, str2attr "LP")+ toAttrFrTyp n Catalogno_Format_MiniDisc = Just (n, str2attr "MiniDisc")+instance XmlContent Personnel where+ fromElem (CElem (Elem "personnel" [] c0):rest) =+ (\(a,ca)->+ (Just (Personnel a), rest))+ (many fromElem c0)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem (Personnel a) =+ [CElem (Elem "personnel" [] (concatMap toElem a))]+instance XmlContent Player where+ fromElem (CElem (Elem "player" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "player" (toAttrs as) [])]+instance XmlAttributes Player where+ fromAttrs as =+ Player+ { playerName = definiteA fromAttrToStr "player" "name" as+ , playerInstrument = definiteA fromAttrToStr "player" "instrument" as+ }+ toAttrs v = catMaybes + [ toAttrFrStr "name" (playerName v)+ , toAttrFrStr "instrument" (playerInstrument v)+ ]+instance XmlContent Track where+ fromElem (CElem (Elem "track" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "track" (toAttrs as) [])]+instance XmlAttributes Track where+ fromAttrs as =+ Track+ { trackTitle = definiteA fromAttrToStr "track" "title" as+ , trackCredit = possibleA fromAttrToStr "credit" as+ , trackTiming = possibleA fromAttrToStr "timing" as+ }+ toAttrs v = catMaybes + [ toAttrFrStr "title" (trackTitle v)+ , maybeToAttr toAttrFrStr "credit" (trackCredit v)+ , maybeToAttr toAttrFrStr "timing" (trackTiming v)+ ]+instance XmlContent Notes where+ fromElem (CElem (Elem "notes" as c0):rest) =+ (\(a,ca)->+ (Just (Notes (fromAttrs as) a), rest))+ (many fromElem c0)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem (Notes as a) =+ [CElem (Elem "notes" (toAttrs as) (concatMap toElem a))]+instance XmlAttributes Notes_Attrs where+ fromAttrs as =+ Notes_Attrs+ { notesAuthor = possibleA fromAttrToStr "author" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "author" (notesAuthor v)+ ]+instance XmlContent Notes_ where+ fromElem c0 =+ case (fromText c0) of+ (Just a,rest) -> (Just (Notes_Str a), rest)+ (Nothing,_) ->+ case (fromElem c0) of+ (Just a,rest) -> (Just (Notes_Albumref a), rest)+ (Nothing,_) ->+ case (fromElem c0) of+ (Just a,rest) -> (Just (Notes_Trackref a), rest)+ (Nothing,_) ->+ (Nothing, c0)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem (Notes_Str a) = toText a+ toElem (Notes_Albumref a) = toElem a+ toElem (Notes_Trackref a) = toElem a+instance XmlContent Albumref where+ fromElem (CElem (Elem "albumref" as c0):rest) =+ (\(a,ca)->+ (Just (Albumref (fromAttrs as) a), rest))+ (definite fromText "text" "albumref" c0)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem (Albumref as a) =+ [CElem (Elem "albumref" (toAttrs as) (toText a))]+instance XmlAttributes Albumref_Attrs where+ fromAttrs as =+ Albumref_Attrs+ { albumrefLink = definiteA fromAttrToStr "albumref" "link" as+ }+ toAttrs v = catMaybes + [ toAttrFrStr "link" (albumrefLink v)+ ]+instance XmlContent Trackref where+ fromElem (CElem (Elem "trackref" as c0):rest) =+ (\(a,ca)->+ (Just (Trackref (fromAttrs as) a), rest))+ (definite fromText "text" "trackref" c0)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem (Trackref as a) =+ [CElem (Elem "trackref" (toAttrs as) (toText a))]+instance XmlAttributes Trackref_Attrs where+ fromAttrs as =+ Trackref_Attrs+ { trackrefLink = possibleA fromAttrToStr "link" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "link" (trackrefLink v)+ ]+++{-Done-}
+ examples/App.hs view
@@ -0,0 +1,22 @@+module Main where++import System (getArgs)+import IO++import Text.XML.HaXml.Wrappers (fix2Args)+import Text.XML.HaXml.Xml2Haskell (fReadXml, fWriteXml)+import AlbumDTD++main =+ fix2Args >>= \(infile,outfile)->+ do putStrLn ("reading "++infile)+ value <- fReadXml infile+ putStrLn ("checking value's type and album title")+ putStrLn (let (Album title _ _ _ _ _ _ _) = value in+ if title==(Title "Time Out") then "ok" else "failed")+ putStrLn ("writing "++outfile)+ v <- (let (Album _ b c d e f g h) = value in+ return (Album (Title "unknown") b c d e f g h))+ fWriteXml outfile v+ putStrLn ("Done.")+
+ examples/DTDpp.hs view
@@ -0,0 +1,32 @@+module Main where++import System (getArgs)+import IO+import Maybe+import List (isSuffixOf)++import Text.XML.HaXml.Types (DocTypeDecl(..))+import Text.XML.HaXml.Parse (dtdParse)+import Text.XML.HaXml.Pretty (markupdecl)+import Text.XML.HaXml.Wrappers (fix2Args)+import Text.PrettyPrint.HughesPJ (render,vcat)++-- This is another trivial application that reads an XML DTD from+-- a file (or stdin) and writes it back to another file (or stdout).+-- It should deal with the external subset fully, collecting and+-- in-lining all the individual files associated with the DTD.+-- Note that PE references used in definitions are also expanded+-- fully in the output.++main =+ fix2Args >>= \(inf,outf)->+ ( if inf=="-" then getContents+ else readFile inf ) >>= \content->+ ( if outf=="-" then return stdout+ else openFile outf WriteMode ) >>= \o->+ ( hPutStrLn o . render . vcat . map markupdecl . fromDTD . dtdParse inf)+ content++fromDTD Nothing = error "no DTD found"+fromDTD (Just (DTD _ _ ds)) = ds+
+ examples/DTypes.hs view
@@ -0,0 +1,149 @@+{-% DrIFT (Automatic class derivations for Haskell) v1.0 %-}+module DTypes where++import Text.XML.HaXml.Haskell2Xml hiding (Name)++-- data types for a simple test program++data Person = Person Name Email [Rating] Version {-! derive :Haskell2Xml !-}++newtype Name = Name String {-! derive :Haskell2Xml !-}+newtype Email = Email String {-! derive :Haskell2Xml !-}+newtype Version = Version Int {-! derive :Haskell2Xml !-}++data Rating = Rating SubjectID Interest Skill {-! derive :Haskell2Xml !-}++newtype SubjectID = SubjectID Int {-! derive :Haskell2Xml !-}+newtype Interest = Interest Score {-! derive :Haskell2Xml !-}+newtype Skill = Skill Score {-! derive :Haskell2Xml !-}++data Score = ScoreNone | ScoreLow | ScoreMedium | ScoreHigh {-! derive :Haskell2Xml !-}++{-* Generated by DrIFT-v1.0 : Look, but Don't Touch. *-}+instance Haskell2Xml Person where+ toHType v =+ Defined "Person" []+ [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)+ toContents v@(Person aa ab ac ad) =+ [mkElemC (showConstr 0 (toHType v)) (concat [toContents aa,toContents ab+ ,toContents ac,+ toContents ad])]++instance Haskell2Xml 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)+ toContents v@(Name aa) =+ [mkElemC (showConstr 0 (toHType v)) (toContents aa)]++instance Haskell2Xml 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)+ toContents v@(Email aa) =+ [mkElemC (showConstr 0 (toHType v)) (toContents aa)]++instance Haskell2Xml 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)+ toContents v@(Version aa) =+ [mkElemC (showConstr 0 (toHType v)) (toContents aa)]++instance Haskell2Xml 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)+ toContents v@(Rating aa ab ac) =+ [mkElemC (showConstr 0 (toHType v)) (concat [toContents aa,toContents ab+ ,toContents ac])]++instance Haskell2Xml 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)+ toContents v@(SubjectID aa) =+ [mkElemC (showConstr 0 (toHType v)) (toContents aa)]++instance Haskell2Xml 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)+ toContents v@(Interest aa) =+ [mkElemC (showConstr 0 (toHType v)) (toContents aa)]++instance Haskell2Xml 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)+ toContents v@(Skill aa) =+ [mkElemC (showConstr 0 (toHType v)) (toContents aa)]++instance Haskell2Xml 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)+ toContents v@ScoreNone =+ [mkElemC (showConstr 0 (toHType v)) []]+ toContents v@ScoreLow =+ [mkElemC (showConstr 1 (toHType v)) []]+ toContents v@ScoreMedium =+ [mkElemC (showConstr 2 (toHType v)) []]+ toContents v@ScoreHigh =+ [mkElemC (showConstr 3 (toHType v)) []]++-- Imported from other files :-+
+ examples/DebugLex.hs view
@@ -0,0 +1,17 @@+module Main where++import System (getArgs)+import IO++import Text.XML.HaXml.Lex (xmlLex)+import Text.XML.HaXml.Wrappers (fix2Args)++-- Debug the HaXml library by showing what the lexer generates.+main =+ fix2Args >>= \(inf,outf)->+ ( if inf=="-" then getContents+ else readFile inf ) >>= \content->+ ( if outf=="-" then return stdout+ else openFile outf WriteMode ) >>= \o->+ mapM_ ( hPutStrLn o . show ) (xmlLex inf content)+
+ examples/Example.hs view
@@ -0,0 +1,14 @@+module Main where++import IO+import Text.XML.HaXml.Haskell2Xml (fWriteXml)+import DTypes++rjn = Person (Name "Rob Noble") (Email "rjn") [+ Rating (SubjectID 1) (Interest ScoreNone) (Skill ScoreLow),+ Rating (SubjectID 2) (Interest ScoreMedium) (Skill ScoreHigh)]+ (Version 1)++main :: IO ()+main =+ fWriteXml "subjdb.xml" rjn
+ examples/OpenOffice.org/Blocklist.dtd view
@@ -0,0 +1,62 @@+<!--+ $Id: Blocklist.dtd,v 1.1 2003/05/13 13:07:49 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): Martin Gallwey (gallwey@Sun.COM)++-->+<!ELEMENT block-list:block-list (block-list:block*) >+<!ATTLIST block-list:block-list+ block-list:list-name CDATA #REQUIRED>+<!ELEMENT block-list:block EMPTY>+<!ATTLIST block-list:block + block-list:abbreviated-name CDATA #REQUIRED+ block-list:package-name CDATA #REQUIRED+ block-list:name CDATA #REQUIRED>
+ examples/OpenOffice.org/chart.mod view
@@ -0,0 +1,290 @@+<!--+ $Id: chart.mod,v 1.1 2003/05/13 13:07:49 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->+++<!ENTITY % chart-class "(line|area|circle|ring|scatter|radar|bar|stock|add-in)">+<!ENTITY % chart-solid-type "(cuboid|cylinder|cone|pyramid)">++<!-- Chart element -->+<!ELEMENT chart:chart ( chart:title?, chart:subtitle?, chart:legend?,+ chart:plot-area,+ table:table? )>+<!ATTLIST chart:chart+ chart:class %chart-class; #REQUIRED+ chart:add-in-name %string; #IMPLIED+ chart:table-number-list %string; #IMPLIED+ draw:name %string; #IMPLIED+ %draw-position;+ %draw-size;+ %draw-style-name;+ chart:column-mapping %string; #IMPLIED+ chart:row-mapping %string; #IMPLIED+ chart:style-name %styleName; #IMPLIED>++<!ATTLIST chart:chart %presentation-class; >+<!ATTLIST chart:chart %zindex;>+<!ATTLIST chart:chart %draw-end-position; >+<!ATTLIST chart:chart draw:id %draw-shape-id; >+<!ATTLIST chart:chart draw:layer %layerName; #IMPLIED>++<!ATTLIST style:properties+ chart:scale-text %boolean; "true"+ chart:stock-updown-bars %boolean; "false"+ chart:stock-with-volume %boolean; "false"+ chart:three-dimensional %boolean; "false"+ chart:deep %boolean; "false"+ chart:lines %boolean; "false"+ chart:percentage %boolean; "false"+ chart:solid-type %chart-solid-type; "cuboid"+ chart:splines %nonNegativeInteger; "0"+ chart:stacked %boolean; "false"+ chart:symbol %integer; "-1"+ chart:vertical %boolean; "false"+ chart:lines-used %nonNegativeInteger; "0"+ chart:connect-bars %boolean; "false"+ chart:spline-order %nonNegativeInteger; "2"+ chart:spline-resolution %nonNegativeInteger; "20"+ chart:pie-offset %nonNegativeInteger; "0">++<!-- Main/Sub Title -->+<!-- the cell-address attribute is currently not supported for titles -->+<!ELEMENT chart:title (text:p)?>+<!ATTLIST chart:title+ table:cell-range %cell-address; #IMPLIED+ svg:x %coordinate; #IMPLIED+ svg:y %coordinate; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!ELEMENT chart:subtitle (text:p)?>+<!ATTLIST chart:subtitle+ table:cell-range %cell-address; #IMPLIED+ svg:x %coordinate; #IMPLIED+ svg:y %coordinate; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!-- you must specify either a legend-position or both, x and y coordinates -->+<!ELEMENT chart:legend EMPTY>+<!ATTLIST chart:legend+ chart:legend-position (top|left|bottom|right) "right"+ svg:x %coordinate; #IMPLIED+ svg:y %coordinate; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!-- Plot-Area specification -->++<!ELEMENT chart:plot-area (dr3d:light*,+ chart:axis*,+ chart:categories?,+ chart:series*,+ chart:stock-gain-marker?,+ chart:stock-loss-marker?,+ chart:stock-range-line?,+ chart:wall?,+ chart:floor?) >++<!ATTLIST chart:plot-area+ svg:x %coordinate; #IMPLIED+ svg:y %coordinate; #IMPLIED+ svg:width %length; #IMPLIED+ svg:height %length; #IMPLIED+ chart:style-name %styleName; #IMPLIED+ table:cell-range-address %cell-range-address; #IMPLIED+ chart:table-number-list %string; #IMPLIED+ chart:data-source-has-labels (none|row|column|both) "none" >++<!-- 3d scene attributes on plot-area -->+<!ATTLIST chart:plot-area+ dr3d:vrp %vector3D; #IMPLIED+ dr3d:vpn %vector3D; #IMPLIED+ dr3d:vup %vector3D; #IMPLIED+ dr3d:projection (parallel|perspective) #IMPLIED+ dr3d:transform CDATA #IMPLIED+ dr3d:distance %length; #IMPLIED+ dr3d:focal-length %length; #IMPLIED+ dr3d:shadow-slant %nonNegativeInteger; #IMPLIED+ dr3d:shade-mode (flat|phong|gouraud|draft) #IMPLIED+ dr3d:ambient-color %color; #IMPLIED+ dr3d:lighting-mode %boolean; #IMPLIED >++<!ATTLIST style:properties+ chart:series-source (columns|rows) "columns" >++<!ELEMENT chart:wall EMPTY>+<!ATTLIST chart:wall+ svg:width %length; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!ELEMENT chart:floor EMPTY>+<!ATTLIST chart:floor+ svg:width %length; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!-- Stock chart elements -->++<!ELEMENT chart:stock-gain-marker EMPTY>+<!ATTLIST chart:stock-gain-marker+ chart:style-name %styleName; #IMPLIED >++<!ELEMENT chart:stock-loss-marker EMPTY>+<!ATTLIST chart:stock-loss-marker+ chart:style-name %styleName; #IMPLIED >++<!ELEMENT chart:stock-range-line EMPTY>+<!ATTLIST chart:stock-range-line+ chart:style-name %styleName; #IMPLIED >++<!-- Axis -->++<!ELEMENT chart:axis (chart:title?, chart:grid*)>+<!ATTLIST chart:axis+ chart:class (category|value|series|domain) #REQUIRED+ chart:name %string; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!ATTLIST style:properties+ chart:tick-marks-major-inner %boolean; "false"+ chart:tick-marks-major-outer %boolean; "true"+ chart:tick-marks-minor-inner %boolean; "false"+ chart:tick-marks-minor-outer %boolean; "false"+ chart:logarithmic %boolean; "false"+ chart:maximum %float; #IMPLIED+ chart:minimum %float; #IMPLIED+ chart:origin %float; #IMPLIED+ chart:interval-major %float; #IMPLIED+ chart:interval-minor %float; #IMPLIED+ chart:gap-width %integer; #IMPLIED+ chart:overlap %integer; #IMPLIED+ text:line-break %boolean; "true"+ chart:display-label %boolean; "true"+ chart:label-arrangement (side-by-side|stagger-even|stagger-odd) "side-by-side"+ chart:text-overlap %boolean; "false"+ chart:visible %boolean; "true" + chart:link-data-style-to-source %boolean; "true" >++<!ELEMENT chart:grid EMPTY>+<!ATTLIST chart:grid+ chart:class (major|minor) "major"+ chart:style-name %styleName; #IMPLIED >+++<!ELEMENT chart:categories EMPTY>+<!ATTLIST chart:categories+ table:cell-range-address %cell-range-address; #IMPLIED >++<!--+ each series element must have an cell-range-address element that points+ to the underlying table data.+ Impl. Note: Internally all href elements are merged to one table range+ that represents the data for the whole chart+-->+<!ELEMENT chart:series ( chart:domain*,+ chart:mean-value?,+ chart:regression-curve?,+ chart:error-indicator?,+ chart:data-point* )>+<!ATTLIST chart:series+ chart:values-cell-range-address %cell-range-address; #IMPLIED+ chart:label-cell-address %cell-address; #IMPLIED+ chart:class %chart-class; #IMPLIED+ chart:attached-axis %string; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!ELEMENT chart:domain EMPTY>+<!ATTLIST chart:domain+ table:cell-range-address %cell-range-address; #IMPLIED >++<!ELEMENT chart:data-point EMPTY>+<!ATTLIST chart:data-point+ chart:repeated %nonNegativeInteger; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!-- statistical properties -->++<!ELEMENT chart:mean-value EMPTY>+<!ELEMENT chart:regression-curve EMPTY >+<!ELEMENT chart:error-indicator EMPTY >+<!ATTLIST chart:mean-value chart:style-name %styleName; #IMPLIED >+<!ATTLIST chart:regression-curve chart:style-name %styleName; #IMPLIED >+<!ATTLIST chart:error-indicator chart:style-name %styleName; #IMPLIED >++<!ATTLIST style:properties+ chart:mean-value %boolean; #IMPLIED+ chart:error-category (none|variance|standard-deviation|percentage|error-margin|constant) "none"+ chart:error-percentage %float; #IMPLIED+ chart:error-margin %float; #IMPLIED+ chart:error-lower-limit %float; #IMPLIED+ chart:error-upper-limit %float; #IMPLIED+ chart:error-upper-indicator %boolean; #IMPLIED+ chart:error-lower-indicator %boolean; #IMPLIED+ chart:regression-type (none|linear|logarithmic|exponential|power) "none" >++<!-- data label properties -->++<!ATTLIST style:properties+ chart:data-label-number (none|value|percentage) "none"+ chart:data-label-text %boolean; "false"+ chart:data-label-symbol %boolean; "false" >++<!-- general text properties -->++<!ATTLIST style:properties + text:rotation-angle %integer; "0" >++<!-- symbol properties -->++<!ATTLIST style:properties+ chart:symbol-width %nonNegativeLength; #IMPLIED+ chart:symbol-height %nonNegativeLength; #IMPLIED+ chart:symbol-image-name %string; #IMPLIED >
+ examples/OpenOffice.org/datastyl.mod view
@@ -0,0 +1,234 @@+<!--++ $Id: datastyl.mod,v 1.1 2003/05/13 13:07:49 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->++<!-- data styles -->+<!ENTITY % any-number "( number:number | number:scientific-number | number:fraction )">+<!ENTITY % number-style-content "( (number:text,(%any-number;,number:text?)?) | (%any-number;,number:text?) )">+<!ELEMENT number:number-style ( style:properties?, %number-style-content;, style:map* )>+<!ELEMENT number:number ( number:embedded-text* )>+<!ELEMENT number:scientific-number EMPTY>+<!ELEMENT number:fraction EMPTY>++<!ELEMENT number:embedded-text (#PCDATA)>+<!ATTLIST number:embedded-text number:position %integer; #REQUIRED>++<!ENTITY % currency-symbol-and-text "number:currency-symbol,number:text?">+<!ENTITY % number-and-text "number:number,number:text?">+<!ENTITY % currency-symbol-and-number "((%number-and-text;),(%currency-symbol-and-text;)?) | ((%currency-symbol-and-text;),(%number-and-text;)?)">+<!ENTITY % currency-style-content "number:text?, (%currency-symbol-and-number;)?">++<!ELEMENT number:currency-style ( style:properties?, (%currency-style-content;), style:map* )>+<!ELEMENT number:currency-symbol (#PCDATA)>+<!ATTLIST number:currency-symbol number:language CDATA #IMPLIED>+<!ATTLIST number:currency-symbol number:country CDATA #IMPLIED>++<!ENTITY % percentage-style-content "( (number:text,(%number-and-text;)?) | (%number-and-text;) )">+<!ELEMENT number:percentage-style ( style:properties?, %percentage-style-content;, style:map* )>++<!ENTITY % any-date "( number:day | number:month | number:year | number:era | number:day-of-week | number:week-of-year | number:quarter| number:hours | number:am-pm | number:minutes | number:seconds )">+<!ENTITY % date-style-content "( (number:text,(%any-date;,number:text?)+) | (%any-date;,number:text?)+ )">+<!ELEMENT number:date-style ( style:properties?, %date-style-content;, style:map* )>+<!ELEMENT number:day EMPTY>+<!ATTLIST number:day number:style (short|long) "short">+<!ATTLIST number:day number:calendar CDATA #IMPLIED>+<!ELEMENT number:month EMPTY>+<!ATTLIST number:month number:textual %boolean; "false">+<!ATTLIST number:month number:style (short|long) "short">+<!ATTLIST number:month number:calendar CDATA #IMPLIED>+<!ELEMENT number:year EMPTY>+<!ATTLIST number:year number:style (short|long) "short">+<!ATTLIST number:year number:calendar CDATA #IMPLIED>+<!ELEMENT number:era EMPTY>+<!ATTLIST number:era number:style (short|long) "short">+<!ATTLIST number:era number:calendar CDATA #IMPLIED>+<!ELEMENT number:day-of-week EMPTY>+<!ATTLIST number:day-of-week number:style (short|long) "short">+<!ATTLIST number:day-of-week number:calendar CDATA #IMPLIED>+<!ELEMENT number:week-of-year EMPTY>+<!ATTLIST number:week-of-year number:calendar CDATA #IMPLIED>+<!ELEMENT number:quarter EMPTY>+<!ATTLIST number:quarter number:style (short|long) "short">+<!ATTLIST number:quarter number:calendar CDATA #IMPLIED>++<!ENTITY % any-time "( number:hours | number:am-pm | number:minutes | number:seconds )">+<!ENTITY % time-style-content "( (number:text,(%any-time;,number:text?)+) | (%any-time;,number:text?)+)">+<!ELEMENT number:time-style ( style:properties?, %time-style-content;, style:map* )>+<!ELEMENT number:hours EMPTY>+<!ATTLIST number:hours number:style (short|long) "short">+<!ELEMENT number:minutes EMPTY>+<!ATTLIST number:minutes number:style (short|long) "short">+<!ELEMENT number:seconds EMPTY>+<!ATTLIST number:seconds number:style (short|long) "short">+<!ATTLIST number:seconds number:decimal-places %integer; "0">+<!ELEMENT number:am-pm EMPTY>++<!ENTITY % boolean-style-content "( (number:text,(number:boolean,number:text?)?) | (number:boolean,number:text?) )">+<!ELEMENT number:boolean-style ( style:properties?,%boolean-style-content;, style:map* )>+<!ELEMENT number:boolean EMPTY>++<!ENTITY % text-style-content "( (number:text,(number:text-content,number:text?)?) | (number:text-content,number:text?) )">+<!ELEMENT number:text-style ( style:properties?,%text-style-content;, style:map* )>+<!ELEMENT number:text (#PCDATA)>+<!ELEMENT number:text-content EMPTY>++<!ATTLIST number:number-style style:name %styleName; #REQUIRED>+<!ATTLIST number:currency-style style:name %styleName; #REQUIRED>+<!ATTLIST number:percentage-style style:name %styleName; #REQUIRED>+<!ATTLIST number:date-style style:name %styleName; #REQUIRED>+<!ATTLIST number:time-style style:name %styleName; #REQUIRED>+<!ATTLIST number:boolean-style style:name %styleName; #REQUIRED>+<!ATTLIST number:text-style style:name %styleName; #REQUIRED>++<!ATTLIST number:number-style style:family CDATA #REQUIRED>+<!ATTLIST number:currency-style style:family CDATA #REQUIRED>+<!ATTLIST number:percentage-style style:family CDATA #REQUIRED>+<!ATTLIST number:date-style style:family CDATA #REQUIRED>+<!ATTLIST number:time-style style:family CDATA #REQUIRED>+<!ATTLIST number:boolean-style style:family CDATA #REQUIRED>+<!ATTLIST number:text-style style:family CDATA #REQUIRED>++<!ATTLIST number:number-style number:language CDATA #IMPLIED>+<!ATTLIST number:currency-style number:language CDATA #IMPLIED>+<!ATTLIST number:percentage-style number:language CDATA #IMPLIED>+<!ATTLIST number:date-style number:language CDATA #IMPLIED>+<!ATTLIST number:time-style number:language CDATA #IMPLIED>+<!ATTLIST number:boolean-style number:language CDATA #IMPLIED>+<!ATTLIST number:text-style number:language CDATA #IMPLIED>++<!ATTLIST number:number-style number:country CDATA #IMPLIED>+<!ATTLIST number:currency-style number:country CDATA #IMPLIED>+<!ATTLIST number:percentage-style number:country CDATA #IMPLIED>+<!ATTLIST number:date-style number:country CDATA #IMPLIED>+<!ATTLIST number:time-style number:country CDATA #IMPLIED>+<!ATTLIST number:boolean-style number:country CDATA #IMPLIED>+<!ATTLIST number:text-style number:country CDATA #IMPLIED>++<!ATTLIST number:number-style number:title CDATA #IMPLIED>+<!ATTLIST number:currency-style number:title CDATA #IMPLIED>+<!ATTLIST number:percentage-style number:title CDATA #IMPLIED>+<!ATTLIST number:date-style number:title CDATA #IMPLIED>+<!ATTLIST number:time-style number:title CDATA #IMPLIED>+<!ATTLIST number:boolean-style number:title CDATA #IMPLIED>+<!ATTLIST number:text-style number:title CDATA #IMPLIED>++<!ATTLIST number:number-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:currency-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:percentage-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:date-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:time-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:boolean-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:text-style style:volatile %boolean; #IMPLIED>++<!ATTLIST number:number-style number:transliteration-format CDATA "1">+<!ATTLIST number:currency-style number:transliteration-format CDATA "1">+<!ATTLIST number:percentage-style number:transliteration-format CDATA "1">+<!ATTLIST number:date-style number:transliteration-format CDATA "1">+<!ATTLIST number:time-style number:transliteration-format CDATA "1">+<!ATTLIST number:boolean-style number:transliteration-format CDATA "1">+<!ATTLIST number:text-style number:transliteration-format CDATA "1">++<!ATTLIST number:number-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:currency-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:percentage-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:date-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:time-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:boolean-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:text-style number:transliteration-language CDATA #IMPLIED>++<!ATTLIST number:number-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:currency-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:percentage-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:date-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:time-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:boolean-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:text-style number:transliteration-country CDATA #IMPLIED>++<!ATTLIST number:number-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:currency-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:percentage-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:date-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:time-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:boolean-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:text-style number:transliteration-style (short|medium|long) "short">++<!ATTLIST number:currency-style number:automatic-order %boolean; "false">+<!ATTLIST number:date-style number:automatic-order %boolean; "false">++<!ATTLIST number:date-style number:format-source (fixed|language) "fixed">+<!ATTLIST number:time-style number:format-source (fixed|language) "fixed">++<!ATTLIST number:time-style number:truncate-on-overflow %boolean; "true">++<!ATTLIST number:number number:decimal-places %integer; #IMPLIED>+<!ATTLIST number:scientific-number number:decimal-places %integer; #IMPLIED>++<!ATTLIST number:number number:min-integer-digits %integer; #IMPLIED>+<!ATTLIST number:scientific-number number:min-integer-digits %integer; #IMPLIED>+<!ATTLIST number:fraction number:min-integer-digits %integer; #IMPLIED>++<!ATTLIST number:number number:grouping %boolean; "false">+<!ATTLIST number:scientific-number number:grouping %boolean; "false">+<!ATTLIST number:fraction number:grouping %boolean; "false">++<!ATTLIST number:number number:decimal-replacement CDATA #IMPLIED>++<!ATTLIST number:number number:display-factor %float; "1">++<!ATTLIST number:scientific-number number:min-exponent-digits %integer; #IMPLIED>++<!ATTLIST number:fraction number:min-numerator-digits %integer; #IMPLIED>++<!ATTLIST number:fraction number:min-denominator-digits %integer; #IMPLIED>
+ examples/OpenOffice.org/defs.mod view
@@ -0,0 +1,84 @@+<!--+ $Id: defs.mod,v 1.1 2003/05/13 13:07:51 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses+ + - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1+ + Sun Microsystems Inc., October, 2000+ + GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA+ + This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.+ + This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.+ + You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+ + + Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.+ + Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.+ + The Initial Developer of the Original Code is: Sun Microsystems, Inc.+ + Copyright: 2000 by Sun Microsystems, Inc.+ + All Rights Reserved.+ + Contributor(s): _______________________________________++-->++<!-- This module should contain entities intended for content definitions+ in several other modules. Putting all of them here should remove+ (some) order dependencies of the other module files+-->+++<!-- text marks for tracking changes; usually used inside of paragraphs -->+<!ENTITY % change-marks "text:change | text:change-start | text:change-end">++<!-- (optional) text declarations; used before the first paragraph -->+<!ENTITY % text-decls "text:variable-decls?, text:sequence-decls?,+ text:user-field-decls?, text:dde-connection-decls?, + text:alphabetical-index-auto-mark-file?" >++<!-- define the types of text which may occur inside of sections -->+<!ENTITY % sectionText "(text:h|text:p|text:ordered-list|+ text:unordered-list|table:table|text:section|+ text:table-of-content|text:illustration-index|+ text:table-index|text:object-index|text:user-index|+ text:alphabetical-index|text:bibliography|+ text:index-title|%change-marks;)*">++<!ENTITY % headerText "(%text-decls;, (text:h|text:p|text:ordered-list|+ text:unordered-list|table:table|text:section|+ text:table-of-content|text:illustration-index|+ text:table-index|text:object-index|text:user-index|+ text:alphabetical-index|text:bibliography|+ text:index-title|%change-marks;)* )">+
+ examples/OpenOffice.org/drawing.mod view
@@ -0,0 +1,886 @@+<!--+ $Id: drawing.mod,v 1.1 2003/05/13 13:07:51 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->++<!ENTITY % points "CDATA" >+<!ENTITY % pathData "CDATA" >+<!ENTITY % gradient-style "(linear|axial|radial|ellipsoid|square|rectangular)" >+<!ENTITY % draw-position "svg:x %coordinate; #IMPLIED svg:y %coordinate; #IMPLIED">+<!ENTITY % draw-end-position "table:end-cell-address %cell-address; #IMPLIED table:end-x %coordinate; #IMPLIED table:end-y %coordinate; #IMPLIED">+<!ENTITY % draw-size "svg:width %coordinate; #IMPLIED svg:height %coordinate; #IMPLIED">+<!ENTITY % draw-transform "draw:transform CDATA #IMPLIED">+<!ENTITY % draw-viewbox "svg:viewBox CDATA #REQUIRED">+<!ENTITY % draw-style-name "draw:style-name %styleName; #IMPLIED presentation:style-name %styleName; #IMPLIED draw:text-style-name %styleName; #IMPLIED">+<!ENTITY % draw-shape-id "CDATA #IMPLIED" >+<!ENTITY % draw-text "(text:p|text:unordered-list|text:ordered-list)*">+<!ENTITY % zindex "draw:z-index %nonNegativeInteger; #IMPLIED">+<!ENTITY % distance "CDATA">+<!ENTITY % rectanglePoint "(top-left|top|top-right|left|center|right|bottom-left|bottom|bottom-right)">+<!ENTITY % vector3D "CDATA">+<!ENTITY % text-anchor "text:anchor-type %anchorType; #IMPLIED text:anchor-page-number %positiveInteger; #IMPLIED">+<!ENTITY % layerName "CDATA">+<!ENTITY % table-background "table:table-background (true | false) #IMPLIED">++<!-- commont presentation shape attributes -->+<!ENTITY % presentation-style-name "presentation:style-name %styleName; #IMPLIED">+<!ENTITY % presentation-classes "(title|outline|subtitle|text|graphic|object|chart|table|orgchart|page|notes)" >+<!-- ENTITY % presentation-class "presentation:class %presentation-classes; #IMPLIED" -->+<!ENTITY % presentation-class "presentation:class %presentation-classes; #IMPLIED presentation:placeholder (true|false) #IMPLIED presentation:user-transformed (true|false) #IMPLIED">+<!ENTITY % presentationEffects "(none|fade|move|stripes|open|close|dissolve|wavyline|random|lines|laser|appear|hide|move-short|checkerboard|rotate|stretch)" >+<!ENTITY % presentationEffectDirections "(none|from-left|from-top|from-right|from-bottom|from-center|from-upper-left|from-upper-right|from-lower-left|from-lower-right|to-left|to-top|to-right|to-bottom|to-upper-left|to-upper-right|to-lower-right|to-lower-left|path|spiral-inward-left|spiral-inward-right|spiral-outward-left|spiral-outward-right|vertical|horizontal|to-center|clockwise|counter-clockwise)" >+<!ENTITY % presentationSpeeds "(slow|medium|fast)" >++<!-- Drawing shapes -->+<!ELEMENT draw:rect ( office:events?, %draw-text; )>+<!ATTLIST draw:rect %draw-position; >+<!ATTLIST draw:rect %draw-end-position; >+<!ATTLIST draw:rect %table-background; >+<!ATTLIST draw:rect %draw-size; >+<!ATTLIST draw:rect %draw-style-name; >+<!ATTLIST draw:rect %draw-transform; >+<!ATTLIST draw:rect draw:corner-radius %nonNegativeLength; #IMPLIED>+<!ATTLIST draw:rect %zindex;>+<!ATTLIST draw:rect draw:id %draw-shape-id;>+<!ATTLIST draw:rect %text-anchor;>+<!ATTLIST draw:rect draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:line ( office:events?, %draw-text; )>+<!ATTLIST draw:line svg:x1 %length; #IMPLIED>+<!ATTLIST draw:line svg:y1 %length; #IMPLIED>+<!ATTLIST draw:line svg:x2 %length; #REQUIRED>+<!ATTLIST draw:line svg:y2 %length; #REQUIRED>+<!ATTLIST draw:line svg:y %coordinate; #IMPLIED>+<!ATTLIST draw:line %draw-style-name; >+<!ATTLIST draw:line %draw-transform; >+<!ATTLIST draw:line %zindex;>+<!ATTLIST draw:line %draw-end-position; >+<!ATTLIST draw:line %table-background; >+<!ATTLIST draw:line draw:id %draw-shape-id;>+<!ATTLIST draw:line %text-anchor;>+<!ATTLIST draw:line draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:polyline ( office:events?, %draw-text; )>+<!ATTLIST draw:polyline %draw-position; >+<!ATTLIST draw:polyline %draw-size; >+<!ATTLIST draw:polyline %draw-viewbox; >+<!ATTLIST draw:polyline draw:points %points; #REQUIRED>+<!ATTLIST draw:polyline %draw-style-name; >+<!ATTLIST draw:polyline %draw-transform; >+<!ATTLIST draw:polyline %zindex;>+<!ATTLIST draw:polyline %draw-end-position; >+<!ATTLIST draw:polyline %table-background; >+<!ATTLIST draw:polyline draw:id %draw-shape-id;>+<!ATTLIST draw:polyline %text-anchor;>+<!ATTLIST draw:polyline draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:polygon ( office:events?, %draw-text; )>+<!ATTLIST draw:polygon %draw-position; >+<!ATTLIST draw:polygon %draw-end-position; >+<!ATTLIST draw:polygon %table-background; >+<!ATTLIST draw:polygon %draw-size; >+<!ATTLIST draw:polygon %draw-viewbox; >+<!ATTLIST draw:polygon draw:points %points; #REQUIRED >+<!ATTLIST draw:polygon %draw-style-name; >+<!ATTLIST draw:polygon %draw-transform; >+<!ATTLIST draw:polygon %zindex;>+<!ATTLIST draw:polygon draw:id %draw-shape-id;>+<!ATTLIST draw:polygon %text-anchor;>+<!ATTLIST draw:polygon draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:path ( office:events?, %draw-text; )>+<!ATTLIST draw:path %draw-position;>+<!ATTLIST draw:path %draw-end-position; >+<!ATTLIST draw:path %table-background; >+<!ATTLIST draw:path %draw-size; >+<!ATTLIST draw:path %draw-viewbox; >+<!ATTLIST draw:path svg:d %pathData; #REQUIRED >+<!ATTLIST draw:path %draw-style-name; >+<!ATTLIST draw:path %draw-transform; >+<!ATTLIST draw:path %zindex;>+<!ATTLIST draw:path draw:id %draw-shape-id;>+<!ATTLIST draw:path %text-anchor;>+<!ATTLIST draw:path draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:circle ( office:events?, %draw-text; )>+<!ATTLIST draw:circle %draw-position; >+<!ATTLIST draw:circle %draw-size; >+<!ATTLIST draw:circle %draw-style-name; >+<!ATTLIST draw:circle %draw-transform; >+<!ATTLIST draw:circle %zindex;>+<!ATTLIST draw:circle %draw-end-position; >+<!ATTLIST draw:circle %table-background; >+<!ATTLIST draw:circle draw:id %draw-shape-id;>+<!ATTLIST draw:circle draw:kind (full|section|cut|arc) "full">+<!ATTLIST draw:circle draw:start-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST draw:circle draw:end-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST draw:circle %text-anchor;>+<!ATTLIST draw:circle draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:ellipse ( office:events?, %draw-text; )>+<!ATTLIST draw:ellipse %draw-position; >+<!ATTLIST draw:ellipse %draw-size; >+<!ATTLIST draw:ellipse %draw-style-name; >+<!ATTLIST draw:ellipse %draw-transform; >+<!ATTLIST draw:ellipse %zindex;>+<!ATTLIST draw:ellipse %draw-end-position; >+<!ATTLIST draw:ellipse %table-background; >+<!ATTLIST draw:ellipse draw:id %draw-shape-id;>+<!ATTLIST draw:ellipse draw:kind (full|section|cut|arc) "full">+<!ATTLIST draw:ellipse draw:start-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST draw:ellipse draw:end-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST draw:ellipse %text-anchor;>+<!ATTLIST draw:ellipse draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:connector ( office:events?, %draw-text;)>+<!ATTLIST draw:connector draw:type (standard|lines|line|curve) "standard">+<!ATTLIST draw:connector draw:line-skew CDATA #IMPLIED>+<!ATTLIST draw:connector %draw-style-name;>+<!ATTLIST draw:connector svg:x1 %coordinate; #REQUIRED>+<!ATTLIST draw:connector svg:y1 %coordinate; #REQUIRED>+<!ATTLIST draw:connector svg:x2 %coordinate; #REQUIRED>+<!ATTLIST draw:connector svg:y2 %coordinate; #REQUIRED>+<!ATTLIST draw:connector draw:start-shape %draw-shape-id;>+<!ATTLIST draw:connector draw:start-glue-point %integer; #IMPLIED>+<!ATTLIST draw:connector draw:end-shape %draw-shape-id;>+<!ATTLIST draw:connector draw:end-glue-point %integer; #IMPLIED>+<!ATTLIST draw:connector %zindex;>+<!ATTLIST draw:connector %draw-end-position; >+<!ATTLIST draw:connector %table-background; >+<!ATTLIST draw:connector draw:id %draw-shape-id;>+<!ATTLIST draw:connector %text-anchor;>+<!ATTLIST draw:connector draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:control EMPTY>+<!ATTLIST draw:control %draw-style-name;>+<!ATTLIST draw:control %draw-position; >+<!ATTLIST draw:control %draw-size; >+<!ATTLIST draw:control %control-id; >+<!ATTLIST draw:control %zindex;>+<!ATTLIST draw:control %draw-end-position; >+<!ATTLIST draw:control %table-background; >+<!ATTLIST draw:control draw:id %draw-shape-id;>+<!ATTLIST draw:control %text-anchor;>+<!ATTLIST draw:control draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:g ( office:events?, (%shapes;)* ) >+<!ATTLIST draw:g svg:y %coordinate; #IMPLIED>+<!ATTLIST draw:g %draw-transform; >+<!ATTLIST draw:g draw:name %string; #IMPLIED>+<!ATTLIST draw:g %draw-style-name; >+<!ATTLIST draw:g %zindex;>+<!ATTLIST draw:g %draw-end-position; >+<!ATTLIST draw:g %table-background; >+<!ATTLIST draw:g draw:id %draw-shape-id;>+<!ATTLIST draw:g %text-anchor;>+<!ATTLIST draw:g draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:page-thumbnail EMPTY>+<!ATTLIST draw:page-thumbnail draw:page-number %positiveInteger; #IMPLIED>+<!ATTLIST draw:page-thumbnail %draw-position; >+<!ATTLIST draw:page-thumbnail %draw-size; >+<!ATTLIST draw:page-thumbnail %draw-style-name; >+<!ATTLIST draw:page-thumbnail %presentation-class; >+<!ATTLIST draw:page-thumbnail %zindex;>+<!ATTLIST draw:page-thumbnail %draw-end-position; >+<!ATTLIST draw:page-thumbnail %table-background; >+<!ATTLIST draw:page-thumbnail draw:id %draw-shape-id;>+<!ATTLIST draw:page-thumbnail %text-anchor;>+<!ATTLIST draw:page-thumbnail draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:caption ( office:events?, %draw-text;)>+<!ATTLIST draw:caption %draw-position; >+<!ATTLIST draw:caption %draw-end-position; >+<!ATTLIST draw:caption %table-background; >+<!ATTLIST draw:caption %draw-size; >+<!ATTLIST draw:caption %draw-style-name; >+<!ATTLIST draw:caption %draw-transform; >+<!ATTLIST draw:caption draw:caption-point-x %coordinate; #IMPLIED>+<!ATTLIST draw:caption draw:caption-point-y %coordinate; #IMPLIED>+<!ATTLIST draw:caption %zindex;>+<!ATTLIST draw:caption draw:id %draw-shape-id;>+<!ATTLIST draw:caption %text-anchor;>+<!ATTLIST draw:caption draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:caption draw:corner-radius %nonNegativeLength; #IMPLIED>++<!ELEMENT draw:measure ( office:events?, %draw-text;)>+<!ATTLIST draw:measure svg:x1 %coordinate; #REQUIRED>+<!ATTLIST draw:measure svg:y1 %coordinate; #REQUIRED>+<!ATTLIST draw:measure svg:x2 %coordinate; #REQUIRED>+<!ATTLIST draw:measure svg:y2 %coordinate; #REQUIRED>+<!ATTLIST draw:measure %draw-end-position; >+<!ATTLIST draw:measure %table-background; >+<!ATTLIST draw:measure %draw-style-name; >+<!ATTLIST draw:measure %draw-transform; >+<!ATTLIST draw:measure %zindex;>+<!ATTLIST draw:measure draw:id %draw-shape-id;>+<!ATTLIST draw:measure %text-anchor;>+<!ATTLIST draw:measure draw:layer %layerName; #IMPLIED>++<!-- graphic style elements -->+<!ELEMENT draw:gradient EMPTY >+<!ATTLIST draw:gradient draw:name %styleName; #REQUIRED>+<!ATTLIST draw:gradient draw:style %gradient-style; #REQUIRED>+<!ATTLIST draw:gradient draw:cx %coordinate; #IMPLIED>+<!ATTLIST draw:gradient draw:cy %coordinate; #IMPLIED>+<!ATTLIST draw:gradient draw:start-color %color; #IMPLIED>+<!ATTLIST draw:gradient draw:end-color %color; #IMPLIED>+<!ATTLIST draw:gradient draw:start-intensity %percentage; #IMPLIED>+<!ATTLIST draw:gradient draw:end-intensity %percentage; #IMPLIED>+<!ATTLIST draw:gradient draw:angle %integer; #IMPLIED>+<!ATTLIST draw:gradient draw:border %percentage; #IMPLIED>++<!ELEMENT draw:hatch EMPTY >+<!ATTLIST draw:hatch draw:name %styleName; #REQUIRED>+<!ATTLIST draw:hatch draw:style (single|double|triple) #REQUIRED >+<!ATTLIST draw:hatch draw:color %color; #IMPLIED>+<!ATTLIST draw:hatch draw:distance %length; #IMPLIED>+<!ATTLIST draw:hatch draw:rotation %integer; #IMPLIED>+++<!ELEMENT draw:fill-image EMPTY >+<!ATTLIST draw:fill-image draw:name %styleName; #REQUIRED>+<!ATTLIST draw:fill-image xlink:href %uriReference; #REQUIRED>+<!ATTLIST draw:fill-image xlink:type (simple) #IMPLIED>+<!ATTLIST draw:fill-image xlink:show (embed) #IMPLIED>+<!ATTLIST draw:fill-image xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:fill-image svg:width %length; #IMPLIED>+<!ATTLIST draw:fill-image svg:height %length; #IMPLIED>++<!ELEMENT draw:transparency EMPTY>+<!ATTLIST draw:transparency draw:name %styleName; #REQUIRED>+<!ATTLIST draw:transparency draw:style %gradient-style; #REQUIRED>+<!ATTLIST draw:transparency draw:cx %coordinate; #IMPLIED>+<!ATTLIST draw:transparency draw:cy %coordinate; #IMPLIED>+<!ATTLIST draw:transparency draw:start %percentage; #IMPLIED>+<!ATTLIST draw:transparency draw:end %percentage; #IMPLIED>+<!ATTLIST draw:transparency draw:angle %integer; #IMPLIED>+<!ATTLIST draw:transparency draw:border %percentage; #IMPLIED>++<!ELEMENT draw:marker EMPTY>+<!ATTLIST draw:marker draw:name %styleName; #REQUIRED>+<!ATTLIST draw:marker %draw-viewbox; >+<!ATTLIST draw:marker svg:d %pathData; #REQUIRED>++<!ELEMENT draw:stroke-dash EMPTY>+<!ATTLIST draw:stroke-dash draw:name %styleName; #REQUIRED>+<!ATTLIST draw:stroke-dash draw:style (rect|round) #IMPLIED>+<!ATTLIST draw:stroke-dash draw:dots1 %integer; #IMPLIED>+<!ATTLIST draw:stroke-dash draw:dots1-length %length; #IMPLIED>+<!ATTLIST draw:stroke-dash draw:dots2 %integer; #IMPLIED>+<!ATTLIST draw:stroke-dash draw:dots2-length %length; #IMPLIED>+<!ATTLIST draw:stroke-dash draw:distance %length; #IMPLIED>++<!-- stroke attributes -->+<!ATTLIST style:properties draw:stroke (none|dash|solid) #IMPLIED>+<!ATTLIST style:properties draw:stroke-dash CDATA #IMPLIED>+<!ATTLIST style:properties svg:stroke-width %length; #IMPLIED>+<!ATTLIST style:properties svg:stroke-color %color; #IMPLIED>+<!ATTLIST style:properties draw:marker-start %styleName; #IMPLIED>+<!ATTLIST style:properties draw:marker-end %styleName; #IMPLIED>+<!ATTLIST style:properties draw:marker-start-width %length; #IMPLIED>+<!ATTLIST style:properties draw:marker-end-width %length; #IMPLIED>+<!ATTLIST style:properties draw:marker-start-center %boolean; #IMPLIED>+<!ATTLIST style:properties draw:marker-end-center %boolean; #IMPLIED>+<!ATTLIST style:properties svg:stroke-opacity %floatOrPercentage; #IMPLIED>+<!ATTLIST style:properties svg:stroke-linejoin (miter|round|bevel|middle|none|inherit) #IMPLIED>++<!-- text attributes -->+<!ATTLIST style:properties draw:auto-grow-width %boolean; #IMPLIED>+<!ATTLIST style:properties draw:auto-grow-height %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fit-to-size %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fit-to-contour %boolean; #IMPLIED>+<!ATTLIST style:properties draw:textarea-horizontal-align ( left | center | right | justify ) #IMPLIED>+<!ATTLIST style:properties draw:textarea-vertical-align ( top | middle | bottom | justify ) #IMPLIED>+<!ATTLIST style:properties draw:writing-mode (lr-tb|tb-rl) "lr-tb">++<!-- fill attributes -->+<!ATTLIST style:properties draw:fill (none|solid|bitmap|gradient|hatch) #IMPLIED>+<!ATTLIST style:properties draw:fill-color %color; #IMPLIED>+<!ATTLIST style:properties draw:fill-gradient-name %styleName; #IMPLIED>+<!ATTLIST style:properties draw:gradient-step-count CDATA #IMPLIED>+<!ATTLIST style:properties draw:fill-hatch-name %styleName; #IMPLIED>+<!ATTLIST style:properties draw:fill-hatch-solid %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fill-image-name %styleName; #IMPLIED>+<!ATTLIST style:properties style:repeat (no-repeat|repeat|stretch) #IMPLIED>+<!ATTLIST style:properties draw:fill-image-width %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties draw:fill-image-height %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties draw:fill-image-ref-point-x %percentage; #IMPLIED>+<!ATTLIST style:properties draw:fill-image-ref-point-y %percentage; #IMPLIED>+<!ATTLIST style:properties draw:fill-image-ref-point %rectanglePoint; #IMPLIED>+<!ATTLIST style:properties draw:tile-repeat-offset CDATA #IMPLIED>+<!ATTLIST style:properties draw:transparency %percentage; #IMPLIED>+<!ATTLIST style:properties draw:transparency-name %styleName; #IMPLIED>++<!-- graphic attributes -->+<!ATTLIST style:properties draw:color-mode (greyscale|mono|watermark|standard) #IMPLIED>+<!ATTLIST style:properties draw:luminance %percentage; #IMPLIED>+<!ATTLIST style:properties draw:contrast %percentage; #IMPLIED>+<!ATTLIST style:properties draw:gamma %percentage; #IMPLIED>+<!ATTLIST style:properties draw:red %percentage; #IMPLIED>+<!ATTLIST style:properties draw:green %percentage; #IMPLIED>+<!ATTLIST style:properties draw:blue %percentage; #IMPLIED>+<!ATTLIST style:properties draw:color-inversion %boolean; #IMPLIED>+<!ATTLIST style:properties draw:mirror %boolean; #IMPLIED>++<!-- shadow attributes -->+<!ATTLIST style:properties draw:shadow (visible|hidden) #IMPLIED>+<!ATTLIST style:properties draw:shadow-offset-x %length; #IMPLIED>+<!ATTLIST style:properties draw:shadow-offset-y %length; #IMPLIED>+<!ATTLIST style:properties draw:shadow-color %color; #IMPLIED>+<!ATTLIST style:properties draw:shadow-transparency CDATA #IMPLIED>++<!-- connector attributes -->+<!ATTLIST style:properties draw:start-line-spacing-horizontal %distance; #IMPLIED>+<!ATTLIST style:properties draw:start-line-spacing-vertical %distance; #IMPLIED>+<!ATTLIST style:properties draw:end-line-spacing-horizontal %distance; #IMPLIED>+<!ATTLIST style:properties draw:end-line-spacing-vertical %distance; #IMPLIED>++<!-- measure attributes -->+<!ATTLIST style:properties draw:line-distance %distance; #IMPLIED>+<!ATTLIST style:properties draw:guide-overhang %distance; #IMPLIED>+<!ATTLIST style:properties draw:guide-distance %distance; #IMPLIED>+<!ATTLIST style:properties draw:start-guide %distance; #IMPLIED>+<!ATTLIST style:properties draw:end-guide %distance; #IMPLIED>+<!ATTLIST style:properties draw:measure-align (automatic|left-outside|inside|right-outside) #IMPLIED>+<!ATTLIST style:properties draw:measure-vertical-align (automatic|above|below|center) #IMPLIED>+<!ATTLIST style:properties draw:unit (automatic|mm|cm|m|km|pt|pc|inch|ft|mi) #IMPLIED>+<!ATTLIST style:properties draw:show-unit %boolean; #IMPLIED>+<!ATTLIST style:properties draw:placing (below|above) #IMPLIED>+<!ATTLIST style:properties draw:parallel %boolean; #IMPLIED>+<!ATTLIST style:properties draw:decimal-places %nonNegativeLength; #IMPLIED>++<!-- frame attributes -->+<!ATTLIST style:properties draw:frame-display-scrollbar %boolean; #IMPLIED>+<!ATTLIST style:properties draw:frame-display-border %boolean; #IMPLIED>+<!ATTLIST style:properties draw:frame-margin-horizontal %nonNegativePixelLength; #IMPLIED>+<!ATTLIST style:properties draw:frame-margin-vertical %nonNegativePixelLength; #IMPLIED>+<!ATTLIST style:properties draw:size-protect %boolean; #IMPLIED>+<!ATTLIST style:properties draw:move-protect %boolean; #IMPLIED>++<!-- ole object attributes -->+<!ATTLIST style:properties draw:visible-area-left %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties draw:visible-area-top %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties draw:visible-area-width %positiveLength; #IMPLIED>+<!ATTLIST style:properties draw:visible-area-height %positiveLength; #IMPLIED>++<!-- fontwork attributes -->+<!ATTLIST style:properties draw:fontwork-style (rotate|upright|slant-x|slant-y|none) #IMPLIED>+<!ATTLIST style:properties draw:fontwork-adjust (left|right|autosize|center) #IMPLIED>+<!ATTLIST style:properties draw:fontwork-distance %distance; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-start %distance; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-mirror %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-outline %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-shadow (normal|slant|none) #IMPLIED>+<!ATTLIST style:properties draw:fontwork-shadow-color %color; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-shadow-offset-x %distance; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-shadow-offset-y %distance; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-form (none|top-circle|bottom-circle|left-circle|right-circle|top-arc|bottom-arc|left-arc|right-arc|button1|button2|button3|button4) #IMPLIED>+<!ATTLIST style:properties draw:fontwork-hide-form %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-shadow-transparence %percentage; #IMPLIED>++<!-- caption attributes -->+<!ATTLIST style:properties draw:caption-type (straight-line|angled-line|angled-connector-line) #IMPLIED>+<!ATTLIST style:properties draw:caption-angle-type (fixed|free) #IMPLIED>+<!ATTLIST style:properties draw:caption-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties draw:caption-gap %distance; #IMPLIED>+<!ATTLIST style:properties draw:caption-escape-direction (horizontal|vertical|auto) #IMPLIED>+<!ATTLIST style:properties draw:caption-escape %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties draw:caption-line-length %distance; #IMPLIED>+<!ATTLIST style:properties draw:caption-fit-line-length %boolean; #IMPLIED>++<!-- Animations -->+<!ELEMENT presentation:sound EMPTY>+<!ATTLIST presentation:sound xlink:href %uriReference; #REQUIRED>+<!ATTLIST presentation:sound xlink:type (simple) #FIXED "simple">+<!ATTLIST presentation:sound xlink:show (new|replace) #IMPLIED>+<!ATTLIST presentation:sound xlink:actuate (onRequest) "onRequest">+<!ATTLIST presentation:sound presentation:play-full %boolean; #IMPLIED>++<!ELEMENT presentation:show-shape (presentation:sound)?>+<!ATTLIST presentation:show-shape draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:show-shape presentation:effect %presentationEffects; "none">+<!ATTLIST presentation:show-shape presentation:direction %presentationEffectDirections; "none">+<!ATTLIST presentation:show-shape presentation:speed %presentationSpeeds; "medium">+<!ATTLIST presentation:show-shape presentation:start-scale %percentage; "100%">+<!ATTLIST presentation:show-shape presentation:path-id CDATA #IMPLIED >++<!ELEMENT presentation:show-text (presentation:sound)?>+<!ATTLIST presentation:show-text draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:show-text presentation:effect %presentationEffects; "none">+<!ATTLIST presentation:show-text presentation:direction %presentationEffectDirections; "none">+<!ATTLIST presentation:show-text presentation:speed %presentationSpeeds; "medium">+<!ATTLIST presentation:show-text presentation:start-scale %percentage; "100%">+<!ATTLIST presentation:show-text presentation:path-id CDATA #IMPLIED >++<!ELEMENT presentation:hide-shape (presentation:sound)?>+<!ATTLIST presentation:hide-shape draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:hide-shape presentation:effect %presentationEffects; "none">+<!ATTLIST presentation:hide-shape presentation:direction %presentationEffectDirections; "none">+<!ATTLIST presentation:hide-shape presentation:speed %presentationSpeeds; "medium">+<!ATTLIST presentation:hide-shape presentation:start-scale %percentage; "100%">+<!ATTLIST presentation:hide-shape presentation:path-id CDATA #IMPLIED >++<!ELEMENT presentation:hide-text (presentation:sound)?>+<!ATTLIST presentation:hide-text draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:hide-text presentation:effect %presentationEffects; "none">+<!ATTLIST presentation:hide-text presentation:direction %presentationEffectDirections; "none">+<!ATTLIST presentation:hide-text presentation:speed %presentationSpeeds; "medium">+<!ATTLIST presentation:hide-text presentation:start-scale %percentage; "100%">+<!ATTLIST presentation:hide-text presentation:path-id CDATA #IMPLIED >++<!ELEMENT presentation:dim (presentation:sound)?>+<!ATTLIST presentation:dim draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:dim draw:color %color; #REQUIRED>++<!ELEMENT presentation:play EMPTY>+<!ATTLIST presentation:play draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:play presentation:speed %presentationSpeeds; "medium">++<!ELEMENT presentation:animations (presentation:show-shape|presentation:show-text|presentation:hide-shape|presentation:hide-text|presentation:dim|presentation:play)*>++<!ELEMENT presentation:show EMPTY>+<!ATTLIST presentation:show presentation:name %styleName; #REQUIRED>+<!ATTLIST presentation:show presentation:pages CDATA #REQUIRED>++<!ELEMENT presentation:settings (presentation:show)*>+<!ATTLIST presentation:settings presentation:start-page %styleName; #IMPLIED>+<!ATTLIST presentation:settings presentation:show %styleName; #IMPLIED>+<!ATTLIST presentation:settings presentation:full-screen %boolean; "true">+<!ATTLIST presentation:settings presentation:endless %boolean; "false">+<!ATTLIST presentation:settings presentation:pause %timeDuration; #IMPLIED>+<!ATTLIST presentation:settings presentation:show-logo %boolean; "false">+<!ATTLIST presentation:settings presentation:force-manual %boolean; "false">+<!ATTLIST presentation:settings presentation:mouse-visible %boolean; "true">+<!ATTLIST presentation:settings presentation:mouse-as-pen %boolean; "false">+<!ATTLIST presentation:settings presentation:start-with-navigator %boolean; "false">+<!ATTLIST presentation:settings presentation:animations (enabled|disabled) "enabled">+<!ATTLIST presentation:settings presentation:stay-on-top %boolean; "false">+<!ATTLIST presentation:settings presentation:transition-on-click (enabled|disabled) "enabled">++<!-- Drawing page -->+<!ELEMENT draw:page (office:forms?,(%shapes;)*,presentation:animations?,presentation:notes?)>+<!ATTLIST draw:page draw:name %string; #IMPLIED>+<!ATTLIST draw:page draw:style-name %styleName; #IMPLIED>+<!ATTLIST draw:page draw:master-page-name %styleName; #REQUIRED>+<!ATTLIST draw:page presentation:presentation-page-layout-name %styleName; #IMPLIED>+<!ATTLIST draw:page draw:id %nonNegativeInteger; #IMPLIED>+<!ATTLIST draw:page xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:page xlink:type (simple) #IMPLIED>+<!ATTLIST draw:page xlink:show (replace) #IMPLIED>+<!ATTLIST draw:page xlink:actuate (onRequest) #IMPLIED>++<!-- Presentation notes -->+<!ELEMENT presentation:notes (%shapes;)*>+<!ATTLIST presentation:notes style:page-master-name %styleName; #IMPLIED>++<!-- presentation page layouts -->+<!ELEMENT style:presentation-page-layout (presentation:placeholder)* >+<!ATTLIST style:presentation-page-layout style:name %styleName; #REQUIRED>+<!ELEMENT presentation:placeholder EMPTY >+<!ATTLIST presentation:placeholder presentation:object (title|outline|subtitle|text|graphic|object|chart|orgchart|page|notes|handout) #REQUIRED>+<!ATTLIST presentation:placeholder svg:x %coordinateOrPercentage; #REQUIRED>+<!ATTLIST presentation:placeholder svg:y %coordinateOrPercentage; #REQUIRED>+<!ATTLIST presentation:placeholder svg:width %lengthOrPercentage; #REQUIRED>+<!ATTLIST presentation:placeholder svg:height %lengthOrPercentage; #REQUIRED>++<!-- presentation page attributes -->+<!ATTLIST style:properties presentation:transition-type (manual|automatic|semi-automatic) #IMPLIED >+<!ATTLIST style:properties presentation:transition-style (none|fade-from-left|fade-from-top|fade-from-right|fade-from-bottom|fade-to-center|fade-from-center|move-from-left|move-from-top|move-from-right|move-from-bottom|roll-from-top|roll-from-left|roll-from-right|roll-from-bottom|vertical-stripes|horizontal-stripes|clockwise|counterclockwise|fade-from-upperleft|fade-from-upperright|fade-from-lowerleft|fade-from-lowerright|close-vertical|close-horizontal|open-vertical|open-horizontal|spiralin-left|spiralin-right|spiralout-left|spiralout-right|dissolve|wavyline-from-left|wavyline-from-top|wavyline-from-right|wavyline-from-bottom|random|stretch-from-left|stretch-from-top|stretch-from-right|stretch-from-bottom|vertical-lines|horizontal-lines) #IMPLIED >+<!ATTLIST style:properties presentation:transition-speed %presentationSpeeds; #IMPLIED >+<!ATTLIST style:properties presentation:duration %timeDuration; #IMPLIED>+<!ATTLIST style:properties presentation:visibility (visible|hidden) #IMPLIED>+<!ATTLIST style:properties draw:background-size (full|border) #IMPLIED>+<!ATTLIST style:properties presentation:background-objects-visible %boolean; #IMPLIED>+<!ATTLIST style:properties presentation:background-visible %boolean; #IMPLIED>+++<!-- text boxes -->+<!ELEMENT draw:text-box (office:events?,draw:image-map?,+ %sectionText;)>+<!ATTLIST draw:text-box %draw-style-name;>+<!ATTLIST draw:text-box %draw-transform; >+<!ATTLIST draw:text-box draw:name %string; #IMPLIED>+<!ATTLIST draw:text-box draw:chain-next-name %string; #IMPLIED>++<!ATTLIST draw:text-box %text-anchor;>+<!ATTLIST draw:text-box %draw-position;>+<!ATTLIST draw:text-box %draw-end-position; >+<!ATTLIST draw:text-box %table-background; >+<!ATTLIST draw:text-box svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:text-box svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:text-box style:rel-width %percentage; #IMPLIED>+<!ATTLIST draw:text-box style:rel-height %percentage; #IMPLIED>+<!ATTLIST draw:text-box fo:min-height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:text-box %zindex;>+<!ATTLIST draw:text-box %presentation-class; >+<!ATTLIST draw:text-box draw:id %draw-shape-id;>+<!ATTLIST draw:text-box draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:text-box draw:corner-radius %nonNegativeLength; #IMPLIED>++<!-- image -->+<!ELEMENT draw:image (office:binary-data?,office:events?,draw:image-map?,svg:desc?,(draw:contour-polygon|draw:contour-path)?)>+<!ATTLIST draw:image %draw-transform; >+<!ATTLIST draw:image %draw-style-name;>+<!ATTLIST draw:image draw:name %string; #IMPLIED>+<!ATTLIST draw:image xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:image xlink:type (simple) #IMPLIED>+<!ATTLIST draw:image xlink:show (embed) #IMPLIED>+<!ATTLIST draw:image xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:image draw:filter-name %string; #IMPLIED>+<!ATTLIST draw:image %text-anchor;>+<!ATTLIST draw:image %draw-position;>+<!ATTLIST draw:image %draw-end-position; >+<!ATTLIST draw:image %table-background; >+<!ATTLIST draw:image svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:image svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:image %presentation-class; >+<!ATTLIST draw:image %zindex;>+<!ATTLIST draw:image draw:id %draw-shape-id;>+<!ATTLIST draw:image draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:image style:rel-width %percentage; #IMPLIED>+<!ATTLIST draw:image style:rel-height %percentage; #IMPLIED>++<!-- objects -->+<!ELEMENT draw:thumbnail EMPTY>+<!ATTLIST draw:thumbnail xlink:href %uriReference; #REQUIRED>+<!ATTLIST draw:thumbnail xlink:type (simple) #IMPLIED>+<!ATTLIST draw:thumbnail xlink:show (embed) #IMPLIED>+<!ATTLIST draw:thumbnail xlink:actuate (onLoad) #IMPLIED>++<!ELEMENT math:math ANY> <!-- dummy (we have no MathML DTD currently)-->+<!ELEMENT draw:object (draw:thumbnail?,(office:document|math:math)?,office:events?, draw:image-map?, svg:desc?,(draw:contour-polygon|draw:contour-path)?)>+<!ATTLIST draw:object %draw-style-name;>+<!ATTLIST draw:object draw:name %string; #IMPLIED>+<!ATTLIST draw:object xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:object xlink:type (simple) #IMPLIED>+<!ATTLIST draw:object xlink:show (embed) #IMPLIED>+<!ATTLIST draw:object xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:object %text-anchor;>+<!ATTLIST draw:object %draw-position;>+<!ATTLIST draw:object %draw-end-position; >+<!ATTLIST draw:object %table-background; >+<!ATTLIST draw:object svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:object svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:object %presentation-class; >+<!ATTLIST draw:object %zindex;>+<!ATTLIST draw:object draw:id %draw-shape-id;>+<!ATTLIST draw:object draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:object draw:notify-on-update-of-ranges %string; #IMPLIED>+<!ATTLIST draw:object style:rel-width %percentage; #IMPLIED>+<!ATTLIST draw:object style:rel-height %percentage; #IMPLIED>++<!ELEMENT draw:object-ole (office:binary-data?|office:events?|draw:image-map?|svg:desc?|draw:contour-polygon?|draw:contour-path?|draw:thumbnail?)>+<!ATTLIST draw:object-ole draw:class-id CDATA #IMPLIED>+<!ATTLIST draw:object-ole %draw-style-name;>+<!ATTLIST draw:object-ole draw:name %string; #IMPLIED>+<!ATTLIST draw:object-ole xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:object-ole xlink:type (simple) #IMPLIED>+<!ATTLIST draw:object-ole xlink:show (embed) #IMPLIED>+<!ATTLIST draw:object-ole xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:object-ole %text-anchor;>+<!ATTLIST draw:object-ole %draw-position;>+<!ATTLIST draw:object-ole %draw-end-position; >+<!ATTLIST draw:object-ole %table-background; >+<!ATTLIST draw:object-ole svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:object-ole svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:object-ole %presentation-class; >+<!ATTLIST draw:object-ole %zindex;>+<!ATTLIST draw:object-ole draw:id %draw-shape-id;>+<!ATTLIST draw:object-ole draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:object-ole style:rel-width %percentage; #IMPLIED>+<!ATTLIST draw:object-ole style:rel-height %percentage; #IMPLIED>++<!ELEMENT svg:desc (#PCDATA)>++<!ELEMENT draw:contour-polygon EMPTY>+<!ATTLIST draw:contour-polygon svg:width %coordinate; #REQUIRED>+<!ATTLIST draw:contour-polygon svg:height %coordinate; #REQUIRED>+<!ATTLIST draw:contour-polygon %draw-viewbox;>+<!ATTLIST draw:contour-polygon draw:points %points; #REQUIRED>+<!ATTLIST draw:contour-polygon draw:recreate-on-edit %boolean; #IMPLIED>++<!ELEMENT draw:contour-path EMPTY>+<!ATTLIST draw:contour-path svg:width %coordinate; #REQUIRED>+<!ATTLIST draw:contour-path svg:height %coordinate; #REQUIRED>+<!ATTLIST draw:contour-path %draw-viewbox;>+<!ATTLIST draw:contour-path svg:d %pathData; #REQUIRED>+<!ATTLIST draw:contour-path draw:recreate-on-edit %boolean; #IMPLIED>++<!-- hyperlink -->+<!ELEMENT draw:a (draw:image|draw:text-box)>+<!ATTLIST draw:a xlink:href %uriReference; #REQUIRED>+<!ATTLIST draw:a xlink:type (simple) #FIXED "simple">+<!ATTLIST draw:a xlink:show (new|replace) #IMPLIED>+<!ATTLIST draw:a xlink:actuate (onRequest) "onRequest">+<!ATTLIST draw:a office:name %string; #IMPLIED>+<!ATTLIST draw:a office:target-frame-name %string; #IMPLIED>+<!ATTLIST draw:a office:server-map %boolean; "false">++<!-- 3d properties -->+<!ATTLIST style:properties dr3d:horizontal-segments %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties dr3d:vertical-segments %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties dr3d:edge-rounding %percentage; #IMPLIED>+<!ATTLIST style:properties dr3d:edge-rounding-mode (correct|attractive) #IMPLIED>+<!ATTLIST style:properties dr3d:back-scale %percentage; #IMPLIED>+<!ATTLIST style:properties dr3d:end-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties dr3d:depth %length; #IMPLIED>+<!ATTLIST style:properties dr3d:backface-culling (enabled|disabled) #IMPLIED>+<!ATTLIST style:properties dr3d:lighting-mode (standard|double-sided) #IMPLIED>+<!ATTLIST style:properties dr3d:normals-kind (object|flat|sphere) #IMPLIED>+<!ATTLIST style:properties dr3d:normals-direction (normal|inverse) #IMPLIED>+<!ATTLIST style:properties dr3d:texture-generation-mode-x (object|parallel|sphere) #IMPLIED>+<!ATTLIST style:properties dr3d:texture-generation-mode-y (object|parallel|sphere) #IMPLIED>+<!ATTLIST style:properties dr3d:texture-kind (luminance|intesity|color) #IMPLIED>+<!ATTLIST style:properties dr3d:texture-filter (enabled|disabled) #IMPLIED>+<!ATTLIST style:properties dr3d:texture-mode (replace|modulate|blend) #IMPLIED>+<!ATTLIST style:properties dr3d:ambient-color %color; #IMPLIED>+<!ATTLIST style:properties dr3d:emissive-color %color; #IMPLIED>+<!ATTLIST style:properties dr3d:specular-color %color; #IMPLIED>+<!ATTLIST style:properties dr3d:diffuse-color %color; #IMPLIED>+<!ATTLIST style:properties dr3d:shininess %percentage; #IMPLIED>+<!ATTLIST style:properties dr3d:shadow (visible|hidden) #IMPLIED>+<!ATTLIST style:properties dr3d:close-front %boolean; #IMPLIED>+<!ATTLIST style:properties dr3d:close-back %boolean; #IMPLIED>++<!ELEMENT dr3d:light EMPTY>+<!ATTLIST dr3d:light dr3d:diffuse-color %color; #IMPLIED>+<!ATTLIST dr3d:light dr3d:direction %vector3D; #REQUIRED>+<!ATTLIST dr3d:light dr3d:enabled %boolean; #IMPLIED>+<!ATTLIST dr3d:light dr3d:specular %boolean; #IMPLIED>++<!ENTITY % shapes3d "(dr3d:scene|dr3d:extrude|dr3d:sphere|dr3d:rotate|dr3d:cube)">++<!ELEMENT dr3d:cube EMPTY>+<!ATTLIST dr3d:cube dr3d:transform CDATA #IMPLIED>+<!ATTLIST dr3d:cube dr3d:min-edge %vector3D; #IMPLIED>+<!ATTLIST dr3d:cube dr3d:max-edge %vector3D; #IMPLIED>+<!ATTLIST dr3d:cube %zindex;>+<!ATTLIST dr3d:cube draw:id %draw-shape-id;>+<!ATTLIST dr3d:cube %draw-end-position; >+<!ATTLIST dr3d:cube %table-background; >+<!ATTLIST dr3d:cube %draw-style-name; >+<!ATTLIST dr3d:cube draw:layer %layerName; #IMPLIED>++<!ELEMENT dr3d:sphere EMPTY>+<!ATTLIST dr3d:sphere dr3d:transform CDATA #IMPLIED>+<!ATTLIST dr3d:sphere dr3d:center %vector3D; #IMPLIED>+<!ATTLIST dr3d:sphere dr3d:size %vector3D; #IMPLIED>+<!ATTLIST dr3d:sphere %zindex;>+<!ATTLIST dr3d:sphere draw:id %draw-shape-id;>+<!ATTLIST dr3d:sphere %draw-end-position; >+<!ATTLIST dr3d:sphere %table-background; >+<!ATTLIST dr3d:sphere %draw-style-name; >+<!ATTLIST dr3d:sphere draw:layer %layerName; #IMPLIED>++<!ELEMENT dr3d:extrude EMPTY>+<!ATTLIST dr3d:extrude dr3d:transform CDATA #IMPLIED>+<!ATTLIST dr3d:extrude %draw-viewbox;>+<!ATTLIST dr3d:extrude svg:d %pathData; #REQUIRED >+<!ATTLIST dr3d:extrude %zindex;>+<!ATTLIST dr3d:extrude draw:id %draw-shape-id;>+<!ATTLIST dr3d:extrude %draw-end-position; >+<!ATTLIST dr3d:extrude %table-background; >+<!ATTLIST dr3d:extrude %draw-style-name; >+<!ATTLIST dr3d:extrude draw:layer %layerName; #IMPLIED>++<!ELEMENT dr3d:rotate EMPTY>+<!ATTLIST dr3d:rotate dr3d:transform CDATA #IMPLIED>+<!ATTLIST dr3d:rotate %draw-viewbox;>+<!ATTLIST dr3d:rotate svg:d %pathData; #REQUIRED >+<!ATTLIST dr3d:rotate %zindex;>+<!ATTLIST dr3d:rotate draw:id %draw-shape-id;>+<!ATTLIST dr3d:rotate %draw-end-position; >+<!ATTLIST dr3d:rotate %table-background; >+<!ATTLIST dr3d:rotate %draw-style-name; >+<!ATTLIST dr3d:rotate draw:layer %layerName; #IMPLIED>++<!ELEMENT dr3d:scene (dr3d:light*,(%shapes3d;)*)>+<!ATTLIST dr3d:scene %draw-style-name; >+<!ATTLIST dr3d:scene svg:x %coordinate; #IMPLIED>+<!ATTLIST dr3d:scene svg:y %coordinate; #IMPLIED>+<!ATTLIST dr3d:scene svg:width %length; #IMPLIED>+<!ATTLIST dr3d:scene svg:height %length; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:vrp %vector3D; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:vpn %vector3D; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:vup %vector3D; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:projection (parallel|perspective) #IMPLIED>+<!ATTLIST dr3d:scene dr3d:transform CDATA #IMPLIED>+<!ATTLIST dr3d:scene dr3d:distance %length; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:focal-length %length; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:shadow-slant %nonNegativeInteger; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:shade-mode (flat|phong|gouraud|draft) #IMPLIED>+<!ATTLIST dr3d:scene dr3d:ambient-color %color; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:lighting-mode %boolean; #IMPLIED>+<!ATTLIST dr3d:scene %zindex;>+<!ATTLIST dr3d:scene draw:id %draw-shape-id;>+<!ATTLIST dr3d:scene %draw-end-position; >+<!ATTLIST dr3d:scene %table-background; >++<!-- layer -->++<!ELEMENT draw:layer-set (draw:layer*)>++<!ELEMENT draw:layer EMPTY>+<!ATTLIST draw:layer draw:name %layerName; #REQUIRED>++<!-- events -->+<!ELEMENT presentation:event (presentation:sound)?>+<!ATTLIST presentation:event %event-name;>+<!ATTLIST presentation:event presentation:action (none|previous-page|next-page|first-page|last-page|hide|stop|execute|show|verb|fade-out|sound) #REQUIRED>+<!ATTLIST presentation:event presentation:effect %presentationEffects; "none">+<!ATTLIST presentation:event presentation:direction %presentationEffectDirections; "none">+<!ATTLIST presentation:event presentation:speed %presentationSpeeds; "medium">+<!ATTLIST presentation:event presentation:start-scale %percentage; "100%">+<!ATTLIST presentation:event xlink:href %uriReference; #IMPLIED>+<!ATTLIST presentation:event xlink:type (simple) #IMPLIED>+<!ATTLIST presentation:event xlink:show (embed) #IMPLIED>+<!ATTLIST presentation:event xlink:actuate (onRequest) #IMPLIED>+<!ATTLIST presentation:event presentation:verb %nonNegativeInteger; #IMPLIED>++<!-- applets -->+<!ELEMENT draw:applet (draw:thumbnail?, draw:param*, svg:desc?)>+<!ATTLIST draw:applet xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:applet xlink:type (simple) #IMPLIED>+<!ATTLIST draw:applet xlink:show (embed) #IMPLIED>+<!ATTLIST draw:applet xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:applet draw:code CDATA #REQUIRED>+<!ATTLIST draw:applet draw:object CDATA #IMPLIED>+<!ATTLIST draw:applet draw:archive CDATA #IMPLIED>+<!ATTLIST draw:applet draw:may-script %boolean; "false">+<!ATTLIST draw:applet draw:name CDATA #IMPLIED>+<!ATTLIST draw:applet %draw-style-name;>+<!ATTLIST draw:applet svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:applet svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:applet %zindex;>+<!ATTLIST draw:applet draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:applet %draw-position;>+<!ATTLIST draw:applet %draw-end-position; >++<!-- plugins -->+<!ELEMENT draw:plugin (draw:thumbnail?, draw:param*, svg:desc?)>+<!ATTLIST draw:plugin xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:plugin xlink:type (simple) #IMPLIED>+<!ATTLIST draw:plugin xlink:show (embed) #IMPLIED>+<!ATTLIST draw:plugin xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:plugin draw:mime-type CDATA #IMPLIED>+<!ATTLIST draw:plugin draw:name CDATA #IMPLIED>+<!ATTLIST draw:plugin %draw-style-name;>+<!ATTLIST draw:plugin svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:plugin svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:plugin %zindex;>+<!ATTLIST draw:plugin draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:plugin %draw-position;>+<!ATTLIST draw:plugin %draw-end-position; >++<!-- Paramaters -->+<!ELEMENT draw:param EMPTY>+<!ATTLIST draw:param draw:name CDATA #IMPLIED>+<!ATTLIST draw:param draw:value CDATA #IMPLIED>++<!-- Floating Frames -->+<!ELEMENT draw:floating-frame (draw:thumbnail?, svg:desc?)>+<!ATTLIST draw:floating-frame xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:floating-frame xlink:type (simple) #IMPLIED>+<!ATTLIST draw:floating-frame xlink:show (embed) #IMPLIED>+<!ATTLIST draw:floating-frame xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:floating-frame draw:name CDATA #IMPLIED>+<!ATTLIST draw:floating-frame draw:frame-name CDATA #IMPLIED>+<!ATTLIST draw:floating-frame %draw-style-name;>+<!ATTLIST draw:floating-frame svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:floating-frame svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:floating-frame %zindex;>+<!ATTLIST draw:floating-frame draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:floating-frame %draw-position;>+<!ATTLIST draw:floating-frame %draw-end-position; >++<!-- Image Maps -->+<!ELEMENT draw:image-map+ (draw:area-rectangle|draw:area-circle|draw:area-polygon)*>++<!ELEMENT draw:area-rectangle (svg:desc?,office:events?)>+<!ATTLIST draw:area-rectangle xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:area-rectangle xlink:type (simple) #IMPLIED>+<!ATTLIST draw:area-rectangle office:target-frame-name CDATA #IMPLIED>+<!ATTLIST draw:area-rectangle xlink:show (new|replace) #IMPLIED>+<!ATTLIST draw:area-rectangle office:name CDATA #IMPLIED>+<!ATTLIST draw:area-rectangle draw:nohref (nohref) #IMPLIED>+<!ATTLIST draw:area-rectangle svg:x %coordinate; #REQUIRED>+<!ATTLIST draw:area-rectangle svg:y %coordinate; #REQUIRED>+<!ATTLIST draw:area-rectangle svg:width %coordinate; #REQUIRED>+<!ATTLIST draw:area-rectangle svg:height %coordinate; #REQUIRED>++<!ELEMENT draw:area-circle (svg:desc?,office:events?)>+<!ATTLIST draw:area-circle xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:area-circle xlink:type (simple) #IMPLIED>+<!ATTLIST draw:area-circle office:target-frame-name CDATA #IMPLIED>+<!ATTLIST draw:area-circle xlink:show (new|replace) #IMPLIED>+<!ATTLIST draw:area-circle office:name CDATA #IMPLIED>+<!ATTLIST draw:area-circle draw:nohref (nohref) #IMPLIED>+<!ATTLIST draw:area-circle svg:cx %coordinate; #REQUIRED>+<!ATTLIST draw:area-circle svg:cy %coordinate; #REQUIRED>+<!ATTLIST draw:area-circle svg:r %coordinate; #REQUIRED>++<!ELEMENT draw:area-polygon (svg:desc?,office:events?)>+<!ATTLIST draw:area-polygon xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:area-polygon xlink:type (simple) #IMPLIED>+<!ATTLIST draw:area-polygon office:target-frame-name CDATA #IMPLIED>+<!ATTLIST draw:area-polygon xlink:show (new|replace) #IMPLIED>+<!ATTLIST draw:area-polygon office:name CDATA #IMPLIED>+<!ATTLIST draw:area-polygon draw:nohref (nohref) #IMPLIED>+<!ATTLIST draw:area-polygon svg:x %coordinate; #REQUIRED>+<!ATTLIST draw:area-polygon svg:y %coordinate; #REQUIRED>+<!ATTLIST draw:area-polygon svg:width %coordinate; #REQUIRED>+<!ATTLIST draw:area-polygon svg:height %coordinate; #REQUIRED>+<!ATTLIST draw:area-polygon svg:points %points; #REQUIRED>+<!ATTLIST draw:area-polygon svg:viewBox CDATA #REQUIRED>
+ examples/OpenOffice.org/dtypes.mod view
@@ -0,0 +1,171 @@+<!--+ $Id: dtypes.mod,v 1.1 2003/05/13 13:07:51 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->++<!-- datatypes corresponding to XML Schema Part 2 W3C Working draft of -->+<!-- 07 April 2000 -->++<!-- string -->+<!ENTITY % string "CDATA">+<!ENTITY % cString "#PCDATA">++<!-- boolean (values are "true" and "false" -->+<!ENTITY % boolean "CDATA">++<!-- integer ( ..., -2, -1, 0, 1, 2, ...) -->+<!ENTITY % integer "CDATA">++<!-- non negative integer ( 0, 1, 2, ...) -->+<!ENTITY % nonNegativeInteger "CDATA">++<!-- positive integer ( 1, 2, ...) -->+<!ENTITY % positiveInteger "CDATA">+<!ENTITY % cPositiveInteger "#PCDATA">++<!ENTITY % positiveNumberOrDefault "CDATA">++<!-- time duration as specified by ISO8601, section 5.5.3.2 -->+<!ENTITY % timeDuration "CDATA">+<!ENTITY % cTimeDuration "#PCDATA">++<!-- time instance as specified by ISO8601, section 5.4 -->+<!ENTITY % timeInstance "CDATA">+<!ENTITY % cTimeInstance "#PCDATA">++<!-- date instance as specified by ISO8601, section 5.2.1.1, extended format-->+<!ENTITY % date "CDATA">+<!ENTITY % cDate "#PCDATA">++<!-- date duration, like timDuration but truncated to full dates -->+<!ENTITY % dateDuration "CDATA">+<!ENTITY % cDateDuration "#PCDATA">++<!-- URI reference -->+<!ENTITY % uriReference "CDATA">++<!-- language code as specified by RFC1766 -->+<!ENTITY % language "CDATA">+<!ENTITY % cLanguage "#PCDATA">++<!-- float -->+<!ENTITY % float "CDATA">++<!-- Some other common used data types -->++<!-- a single UNICODE character -->+<!ENTITY % character "CDATA">++<!-- a style name -->+<!ENTITY % styleName "CDATA">++<!-- a target frame mame -->+<!ENTITY % targetFrameName "CDATA">++<!-- a language without a country as specified by ISO639 -->+<!ENTITY % languageOnly "CDATA">++<!-- a country as specified by ISO3166 -->+<!ENTITY % country "CDATA">++<!-- a color value having the format #rrggbb -->+<!ENTITY % color "CDATA">+<!-- a color value having the format #rrggbb or "transparent" -->+<!ENTITY % transparentOrColor "CDATA">++<!-- a percentage -->+<!ENTITY % percentage "CDATA">++<!-- a length (i.e. 1cm or .6inch) -->+<!ENTITY % length "CDATA">+<!ENTITY % positiveLength "CDATA">+<!ENTITY % nonNegativeLength "CDATA">+<!ENTITY % lengthOrNoLimit "CDATA">++<!-- a length or a percentage -->+<!ENTITY % lengthOrPercentage "CDATA">+<!ENTITY % positiveLengthOrPercentage "CDATA">++<!-- a pixel length (i.e. 2px) -->+<!ENTITY % nonNegativePixelLength "CDATA">++<!-- a float or a percentage -->+<!ENTITY % floatOrPercentage "CDATA">++<!-- a text encoding -->+<!ENTITY % textEncoding "CDATA">++<!-- cell address and cell range address -->+<!ENTITY % cell-address "CDATA">+<!ENTITY % cell-range-address "CDATA">+<!ENTITY % cell-range-address-list "CDATA">++<!-- value types -->+<!ENTITY % valueType "(float|time|date|percentage|currency|boolean|string)">++<!-- an svg coordinate in different distance formats -->+<!ENTITY % coordinate "CDATA">++<!ENTITY % coordinateOrPercentage "CDATA">++<!ENTITY % shape "draw:rect|draw:line|draw:polyline|draw:polygon|draw:path|+ draw:circle|draw:ellipse|draw:g|draw:page-thumbnail|+ draw:text-box|draw:image|draw:object|draw:object-ole|+ draw:applet|draw:floating-frame|draw:plugin|+ draw:measure|draw:caption|draw:connector|chart:chart|+ dr3d:scene|draw:control" >+<!ENTITY % shapes "(%shape;)" >++<!ENTITY % anchorType "(page|frame|paragraph|char|as-char)">++<!ENTITY % control-id "form:id CDATA #REQUIRED">
+ examples/OpenOffice.org/form.mod view
@@ -0,0 +1,340 @@+<!--+ $Id: form.mod,v 1.1 2003/05/13 13:07:51 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->++<!ENTITY % controls "form:text|form:textarea|form:fixed-text|form:file|+ form:password|form:formatted-text|form:button|form:image|+ form:checkbox|form:radio|form:listbox|form:combobox|form:frame|+ form:hidden|form:image-frame|form:grid|form:generic-control">++<!ENTITY % name "form:name CDATA #IMPLIED">+<!ENTITY % service-name "form:service-name CDATA #IMPLIED">++<!ENTITY % navigation "(none|current|parent)">+<!ENTITY % cycles "(records|current|page)">+<!ENTITY % url "CDATA">+++<!ENTITY % types "(submit|reset|push|url)">+<!ENTITY % button-type "form:button-type %types; 'push'">+<!ENTITY % current-selected "form:current-selected %boolean; 'false'">+<!ENTITY % current-value "form:current-value CDATA #IMPLIED">+<!ENTITY % value "form:value CDATA #IMPLIED">+<!ENTITY % disabled "form:disabled %boolean; 'false'">+<!ENTITY % dropdown "form:dropdown %boolean; 'false'">+<!ENTITY % for "form:for CDATA #IMPLIED">+<!ENTITY % image-data "form:image-data %url; #IMPLIED">+<!ENTITY % label "form:label CDATA #IMPLIED">+<!ENTITY % max-length "form:max-length CDATA #IMPLIED">+<!ENTITY % printable "form:printable %boolean; 'true'">+<!ENTITY % readonly "form:readonly %boolean; 'false'">+<!ENTITY % size "form:size CDATA #IMPLIED">+<!ENTITY % selected "form:selected %boolean; 'false'">+<!ENTITY % size "form:size CDATA #IMPLIED">+<!ENTITY % tab-index "form:tab-index CDATA #IMPLIED">+<!ENTITY % target-frame "office:target-frame CDATA '_blank'">+<!ENTITY % target-location "xlink:href %url; #IMPLIED">+<!ENTITY % tab-stop "form:tab-stop %boolean; 'true'">+<!ENTITY % title "form:title CDATA #IMPLIED">+<!ENTITY % default-value "form:default-value CDATA #IMPLIED">+<!ENTITY % bound-column "form:bound-column CDATA #IMPLIED">+<!ENTITY % convert-empty "form:convert-empty-to-null %boolean; 'false'">+<!ENTITY % data-field "form:data-field CDATA #IMPLIED">+<!ENTITY % list-source "form:list-source CDATA #IMPLIED">+<!ENTITY % list-source-types "(table|query|sql|sql-pass-through|value-list|table-fields)">+<!ENTITY % list-source-type "form:list-source-type %list-source-types; #IMPLIED">+<!ENTITY % column-style-name "form:column-style-name %styleName; #IMPLIED">+++<!ELEMENT form:control (%controls;)+>+<!ATTLIST form:control %name;+ %service-name;+ %control-id;>++<!ELEMENT form:form (form:properties?, office:events?, (form:control|form:form)*)>+<!ATTLIST form:form %name; %service-name;>+<!ATTLIST form:form xlink:href %url; #IMPLIED>+<!ATTLIST form:form form:enctype CDATA "application/x-www-form-urlencoded">+<!ATTLIST form:form form:method CDATA "get">+<!ATTLIST form:form office:target-frame CDATA "_blank">+<!ATTLIST form:form form:allow-deletes %boolean; "true">+<!ATTLIST form:form form:allow-inserts %boolean; "true">+<!ATTLIST form:form form:allow-updates %boolean; "true">+<!ATTLIST form:form form:apply-filter %boolean; "false">+<!ATTLIST form:form form:command CDATA #IMPLIED>+<!ATTLIST form:form form:command-type (table|query|command) "command">+<!ATTLIST form:form form:datasource CDATA #IMPLIED>+<!ATTLIST form:form form:detail-fields CDATA #IMPLIED>+<!ATTLIST form:form form:escape-processing %boolean; "true">+<!ATTLIST form:form form:filter CDATA #IMPLIED>+<!ATTLIST form:form form:ignore-result %boolean; "false">+<!ATTLIST form:form form:master-fields CDATA #IMPLIED>+<!ATTLIST form:form form:navigation-mode %navigation; #IMPLIED>+<!ATTLIST form:form form:order CDATA #IMPLIED>+<!ATTLIST form:form form:tab-cycle %cycles; #IMPLIED>++<!ELEMENT office:forms (form:form*)>+<!ATTLIST office:forms form:automatic-focus %boolean; "false">+<!ATTLIST office:forms form:apply-design-mode %boolean; "true">++<!ELEMENT form:text (form:properties?, office:events?)>+<!ATTLIST form:text %current-value;+ %disabled;+ %max-length;+ %printable;+ %readonly;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %convert-empty;+ %data-field;>++<!ELEMENT form:textarea (form:properties?, office:events?)>+<!ATTLIST form:textarea %current-value;+ %disabled;+ %max-length;+ %printable;+ %readonly;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %convert-empty;+ %data-field;>++<!ELEMENT form:password (form:properties?, office:events?)>+<!ATTLIST form:password %disabled;+ %max-length;+ %printable;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %convert-empty;>++<!ATTLIST form:password form:echo-char CDATA "*">++<!ELEMENT form:file (form:properties?, office:events?)>+<!ATTLIST form:file %current-value;+ %disabled;+ %max-length;+ %printable;+ %readonly;+ %tab-index;+ %tab-stop;+ %title;+ %value;>++<!ELEMENT form:formatted-text (form:properties?, office:events?)>+<!ATTLIST form:formatted-text %current-value;+ %disabled;+ %max-length;+ %printable;+ %readonly;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %convert-empty;+ %data-field;>+<!ATTLIST form:formatted-text form:max-value CDATA #IMPLIED>+<!ATTLIST form:formatted-text form:min-value CDATA #IMPLIED>+<!ATTLIST form:formatted-text form:validation %boolean; "false">++<!ELEMENT form:fixed-text (form:properties?, office:events?)>+<!ATTLIST form:fixed-text %for;+ %disabled;+ %label;+ %printable;+ %title;>+<!ATTLIST form:fixed-text form:multi-line %boolean; "false">++<!ELEMENT form:combobox (form:properties?, office:events?, form:item*)>+<!ATTLIST form:combobox %current-value;+ %disabled;+ %dropdown;+ %max-length;+ %printable;+ %readonly;+ %size;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %convert-empty;+ %data-field;+ %list-source;+ %list-source-type;>+<!ATTLIST form:combobox form:auto-complete %boolean; #IMPLIED>++<!ELEMENT form:item (#PCDATA)>+<!ATTLIST form:item %label;>++<!ELEMENT form:listbox (form:properties?, office:events?, form:option*)>+<!ATTLIST form:listbox %disabled;+ %dropdown;+ %printable;+ %size;+ %tab-index;+ %tab-stop;+ %title;+ %bound-column;+ %data-field;+ %list-source;+ %list-source-type;>+<!ATTLIST form:listbox form:multiple %boolean; "false">++<!ELEMENT form:option (#PCDATA)>+<!ATTLIST form:option %current-selected;+ %selected;+ %label;+ %value;>++<!ELEMENT form:button (form:properties?, office:events?)>+<!ATTLIST form:button %button-type;+ %disabled;+ %label;+ %image-data;+ %printable;+ %tab-index;+ %tab-stop;+ %target-frame;+ %target-location;+ %title;+ %value;>+<!ATTLIST form:button form:default-button %boolean; "false">++<!ELEMENT form:image (form:properties?, office:events?)>+<!ATTLIST form:image %button-type;+ %disabled;+ %image-data;+ %printable;+ %tab-index;+ %tab-stop;+ %target-frame;+ %target-location;+ %title;+ %value;>++<!ELEMENT form:checkbox (form:properties?, office:events?)>+<!ATTLIST form:checkbox %disabled;+ %label;+ %printable;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %data-field;>+<!ENTITY % states "(unchecked|checked|unknown)">+<!ATTLIST form:checkbox form:current-state %states; #IMPLIED>+<!ATTLIST form:checkbox form:is-tristate %boolean; "false">+<!ATTLIST form:checkbox form:state %states; "unchecked">++<!ELEMENT form:radio (form:properties?, office:events?)>+<!ATTLIST form:radio %current-selected;+ %disabled;+ %label;+ %printable;+ %selected;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %data-field;>++<!ELEMENT form:frame (form:properties?, office:events?)>+<!ATTLIST form:frame %disabled;+ %for;+ %label;+ %printable;+ %title;>++<!ELEMENT form:image-frame (form:properties?, office:events?)>+<!ATTLIST form:image-frame %disabled;+ %image-data;+ %printable;+ %readonly;+ %title;+ %data-field;>++<!ELEMENT form:hidden (form:properties?, office:events?)>+<!ATTLIST form:hidden %name;+ %service-name;+ %value;>++<!ELEMENT form:grid (form:properties?, office:events?, form:column*)>+<!ATTLIST form:grid %disabled;+ %printable;+ %tab-index;+ %tab-stop;+ %title;>++<!ENTITY % column-type "form:text| form:textarea| form:formatted-text|form:checkbox| form:listbox| form:combobox">+<!ELEMENT form:column (%column-type;)+>+<!ATTLIST form:column %name;+ %service-name;+ %label;+ %column-style-name;>++<!ELEMENT form:generic-control (form:properties?, office:events?)>+++<!ELEMENT form:properties (form:property+)>+<!ELEMENT form:property (form:property-value*)>+<!ATTLIST form:property form:property-is-list %boolean; #IMPLIED>+<!ATTLIST form:property form:property-name CDATA #REQUIRED>+<!ATTLIST form:property form:property-type (boolean|short|int|long|double|string) #REQUIRED>+<!ELEMENT form:property-value (#PCDATA)>+<!ATTLIST form:property-value form:property-is-void %boolean; #IMPLIED>
+ examples/OpenOffice.org/meta.mod view
@@ -0,0 +1,118 @@+<!--+ $Id: meta.mod,v 1.1 2003/05/13 13:07:51 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->+++<!ELEMENT meta:generator (%cString;)>++<!ELEMENT dc:title (%cString;)>++<!ELEMENT dc:description (%cString;)>++<!ELEMENT dc:subject (%cString;)>++<!ELEMENT meta:keywords (meta:keyword)*>+<!ELEMENT meta:keyword (%cString;)>++<!ELEMENT meta:initial-creator (%cString;)>++<!ELEMENT dc:creator (%cString;)>++<!ELEMENT meta:printed-by (%cString;)>++<!ELEMENT meta:creation-date (%cTimeInstance;)>++<!ELEMENT dc:date (%cTimeInstance;)>++<!ELEMENT meta:print-date (%cTimeInstance;)>++<!ELEMENT meta:template EMPTY>+<!ATTLIST meta:template xlink:type (simple) #FIXED "simple">+<!ATTLIST meta:template xlink:actuate (onRequest) "onRequest">+<!ATTLIST meta:template xlink:href %uriReference; #REQUIRED>+<!ATTLIST meta:template xlink:title %string; #IMPLIED>+<!ATTLIST meta:template meta:date %timeInstance; #IMPLIED>++<!ELEMENT meta:auto-reload EMPTY>+<!ATTLIST meta:auto-reload xlink:type (simple) #IMPLIED>+<!ATTLIST meta:auto-reload xlink:show (replace) #IMPLIED>+<!ATTLIST meta:auto-reload xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST meta:auto-reload xlink:href %uriReference; #IMPLIED>+<!ATTLIST meta:auto-reload meta:delay %timeDuration; "P0S">++<!ELEMENT meta:hyperlink-behaviour EMPTY>+<!ATTLIST meta:hyperlink-behaviour office:target-frame-name %targetFrameName; #IMPLIED>+<!ATTLIST meta:hyperlink-behaviour xlink:show (new|replace) #IMPLIED>++<!ELEMENT dc:language (%cLanguage;)>++<!ELEMENT meta:editing-cycles (%cPositiveInteger;)>++<!ELEMENT meta:editing-duration (%cTimeDuration;)>++<!ELEMENT meta:user-defined (%cString;)>+<!ATTLIST meta:user-defined meta:name %string; #REQUIRED>++<!ELEMENT meta:document-statistic EMPTY>+<!ATTLIST meta:document-statistic meta:page-count %positiveInteger; #IMPLIED+ meta:table-count %nonNegativeInteger; #IMPLIED+ meta:draw-count %nonNegativeInteger; #IMPLIED+ meta:image-count %nonNegativeInteger; #IMPLIED+ meta:ole-object-count %nonNegativeInteger; #IMPLIED+ meta:paragraph-count %nonNegativeInteger; #IMPLIED+ meta:word-count %nonNegativeInteger; #IMPLIED+ meta:character-count %nonNegativeInteger; #IMPLIED+ meta:row-count %nonNegativeInteger; #IMPLIED+ meta:cell-count %nonNegativeInteger; #IMPLIED+ meta:object-count %positiveInteger; #IMPLIED>
+ examples/OpenOffice.org/nmspace.mod view
@@ -0,0 +1,80 @@+<!--+ $Id: nmspace.mod,v 1.1 2003/05/13 13:07:51 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->++<!ENTITY nFO "http://www.w3.org/1999/XSL/Format">+<!ENTITY nXLink "http://www.w3.org/1999/xlink">+<!ENTITY nSVG "http://www.w3.org/2000/svg">+<!ENTITY nMath "http://www.w3.org/1998/Math/MathML">++<!-- StarOffice namespace names and prefixes -->++<!ENTITY nOpenOffice "http://openoffice.org/2000">+<!ENTITY nOpenOffice2001 "http://openoffice.org/2001">++<!ENTITY nOffice "&nOpenOffice;/office">+<!ENTITY nStyle "&nOpenOffice;/style">+<!ENTITY nText "&nOpenOffice;/text">+<!ENTITY nTable "&nOpenOffice;/table">+<!ENTITY nMeta "&nOpenOffice;/meta">+<!ENTITY nScript "&nOpenOffice;/script">+<!ENTITY nDraw "&nOpenOffice;/drawing">+<!ENTITY nChart "&nOpenOffice;/chart">+<!ENTITY nNumber "&nOpenOffice;/datastyle">+<!ENTITY nDr3D "&nOpenOffice;/dr3d">+<!ENTITY nForm "&nOpenOffice;/form">+<!ENTITY nConfig "&nOpenOffice2001;/config">++<!-- dublin core namespace name and prefic -->+<!ENTITY nDC "http://purl.org/dc/elements/1.1/">
+ examples/OpenOffice.org/office.dtd view
@@ -0,0 +1,83 @@+<?xml version="1.0" encoding="UTF-8"?>+<!--+ $Id: office.dtd,v 1.1 2003/05/13 13:07:51 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->+<!ENTITY % dtypes-mod SYSTEM "dtypes.mod">+%dtypes-mod;+<!ENTITY % nmspace-mod SYSTEM "nmspace.mod">+%nmspace-mod;+<!ENTITY % defs-mod SYSTEM "defs.mod">+%defs-mod;+<!ENTITY % office-mod SYSTEM "office.mod">+%office-mod;+<!ENTITY % style-mod SYSTEM "style.mod">+%style-mod;+<!ENTITY % meta-mod SYSTEM "meta.mod">+%meta-mod;+<!ENTITY % script-mod SYSTEM "script.mod">+%script-mod;+<!ENTITY % drawing-mod SYSTEM "drawing.mod">+%drawing-mod;+<!ENTITY % text-mod SYSTEM "text.mod">+%text-mod;+<!ENTITY % table-mod SYSTEM "table.mod">+%table-mod;+<!ENTITY % chart-mod SYSTEM "chart.mod">+%chart-mod;+<!ENTITY % datastyl-mod SYSTEM "datastyl.mod">+%datastyl-mod;+<!ENTITY % form-mod SYSTEM "form.mod">+%form-mod;+<!ENTITY % settings-mod SYSTEM "settings.mod">+%settings-mod;
+ examples/OpenOffice.org/office.mod view
@@ -0,0 +1,270 @@+<!--+ $Id: office.mod,v 1.1 2003/05/13 13:07:51 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->++<!ELEMENT office:document ( office:meta?,+ office:settings?,+ office:script?,+ office:font-decls?,+ office:styles?,+ office:automatic-styles?,+ office:master-styles?,+ office:body ) >++<!ATTLIST office:document xmlns:office CDATA #FIXED "&nOffice;">+<!ATTLIST office:document xmlns:meta CDATA #FIXED "&nMeta;">+<!ATTLIST office:document xmlns:script CDATA #FIXED "&nScript;">+<!ATTLIST office:document xmlns:style CDATA #FIXED "&nStyle;">+<!ATTLIST office:document xmlns:text CDATA #FIXED "&nText;">+<!ATTLIST office:document xmlns:table CDATA #FIXED "&nTable;">+<!ATTLIST office:document xmlns:draw CDATA #FIXED "&nDraw;">+<!ATTLIST office:document xmlns:chart CDATA #FIXED "&nChart;">+<!ATTLIST office:document xmlns:number CDATA #FIXED "&nNumber;">+<!ATTLIST office:document xmlns:fo CDATA #FIXED "&nFO;">+<!ATTLIST office:document xmlns:xlink CDATA #FIXED "&nXLink;">+<!ATTLIST office:document xmlns:svg CDATA #FIXED "&nSVG;">+<!ATTLIST office:document xmlns:dc CDATA #FIXED "&nDC;">+<!ATTLIST office:document xmlns:dr3d CDATA #FIXED "&nDr3D;">+<!ATTLIST office:document xmlns:math CDATA #FIXED "&nMath;">+<!ATTLIST office:document xmlns:form CDATA #FIXED "&nForm;">+<!ATTLIST office:document xmlns:config CDATA #FIXED "&nConfig;">++<!ATTLIST office:document office:class+ (text|text-global|+ drawing|presentation|+ spreadsheet|chart) #REQUIRED>++<!ATTLIST office:document office:version %string; #IMPLIED>++<!-- document-styles -->+<!ELEMENT office:document-styles (+ office:font-decls?,+ office:styles?,+ office:automatic-styles?,+ office:master-styles? ) >++<!ATTLIST office:document-styles xmlns:office CDATA #FIXED "&nOffice;">+<!ATTLIST office:document-styles xmlns:meta CDATA #FIXED "&nMeta;">+<!ATTLIST office:document-styles xmlns:script CDATA #FIXED "&nScript;">+<!ATTLIST office:document-styles xmlns:style CDATA #FIXED "&nStyle;">+<!ATTLIST office:document-styles xmlns:text CDATA #FIXED "&nText;">+<!ATTLIST office:document-styles xmlns:table CDATA #FIXED "&nTable;">+<!ATTLIST office:document-styles xmlns:draw CDATA #FIXED "&nDraw;">+<!ATTLIST office:document-styles xmlns:chart CDATA #FIXED "&nChart;">+<!ATTLIST office:document-styles xmlns:number CDATA #FIXED "&nNumber;">+<!ATTLIST office:document-styles xmlns:fo CDATA #FIXED "&nFO;">+<!ATTLIST office:document-styles xmlns:xlink CDATA #FIXED "&nXLink;">+<!ATTLIST office:document-styles xmlns:svg CDATA #FIXED "&nSVG;">+<!ATTLIST office:document-styles xmlns:dc CDATA #FIXED "&nDC;">+<!ATTLIST office:document-styles xmlns:dr3d CDATA #FIXED "&nDr3D;">+<!ATTLIST office:document-styles xmlns:math CDATA #FIXED "&nMath;">+<!ATTLIST office:document-styles xmlns:form CDATA #FIXED "&nForm;">++<!ATTLIST office:document-styles office:version %string; #IMPLIED>++<!-- document-content -->++<!ELEMENT office:document-content (+ office:script?,+ office:font-decls?,+ office:automatic-styles?,+ office:body ) >++<!ATTLIST office:document-content xmlns:office CDATA #FIXED "&nOffice;">+<!ATTLIST office:document-content xmlns:meta CDATA #FIXED "&nMeta;">+<!ATTLIST office:document-content xmlns:script CDATA #FIXED "&nScript;">+<!ATTLIST office:document-content xmlns:style CDATA #FIXED "&nStyle;">+<!ATTLIST office:document-content xmlns:text CDATA #FIXED "&nText;">+<!ATTLIST office:document-content xmlns:table CDATA #FIXED "&nTable;">+<!ATTLIST office:document-content xmlns:draw CDATA #FIXED "&nDraw;">+<!ATTLIST office:document-content xmlns:chart CDATA #FIXED "&nChart;">+<!ATTLIST office:document-content xmlns:number CDATA #FIXED "&nNumber;">+<!ATTLIST office:document-content xmlns:fo CDATA #FIXED "&nFO;">+<!ATTLIST office:document-content xmlns:xlink CDATA #FIXED "&nXLink;">+<!ATTLIST office:document-content xmlns:svg CDATA #FIXED "&nSVG;">+<!ATTLIST office:document-content xmlns:dc CDATA #FIXED "&nDC;">+<!ATTLIST office:document-content xmlns:dr3d CDATA #FIXED "&nDr3D;">+<!ATTLIST office:document-content xmlns:math CDATA #FIXED "&nMath;">+<!ATTLIST office:document-content xmlns:form CDATA #FIXED "&nForm;">++<!ATTLIST office:document-content office:class+ (text|text-global|+ drawing|presentation|+ spreadsheet|chart) #REQUIRED>++<!ATTLIST office:document-content office:version %string; #IMPLIED>++<!-- document-content -->++<!ELEMENT office:document-meta ( office:meta? ) >++<!ATTLIST office:document-meta xmlns:office CDATA #FIXED "&nOffice;">+<!ATTLIST office:document-meta xmlns:meta CDATA #FIXED "&nMeta;">+<!ATTLIST office:document-meta xmlns:script CDATA #FIXED "&nScript;">+<!ATTLIST office:document-meta xmlns:style CDATA #FIXED "&nStyle;">+<!ATTLIST office:document-meta xmlns:text CDATA #FIXED "&nText;">+<!ATTLIST office:document-meta xmlns:table CDATA #FIXED "&nTable;">+<!ATTLIST office:document-meta xmlns:draw CDATA #FIXED "&nDraw;">+<!ATTLIST office:document-meta xmlns:chart CDATA #FIXED "&nChart;">+<!ATTLIST office:document-meta xmlns:number CDATA #FIXED "&nNumber;">+<!ATTLIST office:document-meta xmlns:fo CDATA #FIXED "&nFO;">+<!ATTLIST office:document-meta xmlns:xlink CDATA #FIXED "&nXLink;">+<!ATTLIST office:document-meta xmlns:svg CDATA #FIXED "&nSVG;">+<!ATTLIST office:document-meta xmlns:dc CDATA #FIXED "&nDC;">+<!ATTLIST office:document-meta xmlns:dr3d CDATA #FIXED "&nDr3D;">+<!ATTLIST office:document-meta xmlns:math CDATA #FIXED "&nMath;">+<!ATTLIST office:document-meta xmlns:form CDATA #FIXED "&nForm;">++<!ATTLIST office:document-meta office:version %string; #IMPLIED>++<!ELEMENT office:document-settings (office:settings) >+<!ATTLIST office:document-settings xmlns:office CDATA #FIXED "&nOffice;">+<!ATTLIST office:document-settings xmlns:xlink CDATA #FIXED "&nXLink;">+<!ATTLIST office:document-settings xmlns:config CDATA #FIXED "&nConfig;">++<!ATTLIST office:document-settings office:version %string; #IMPLIED>++<!ENTITY % meta "(meta:generator?,+ dc:title?,+ dc:description?,+ dc:subject?,+ meta:initial-creator?,+ meta:creation-date?,+ dc:creator?,+ dc:date?,+ meta:printed-by?,+ meta:print-date?,+ meta:keywords?,+ dc:language?,+ meta:editing-cycles?,+ meta:editing-duration?,+ meta:hyperlink-behaviour?,+ meta:auto-reload?,+ meta:template?,+ meta:user-defined*,+ meta:document-statistic?)">+<!ELEMENT office:meta %meta;>++<!ENTITY % script "(script:library-embedded |+ script:library-linked)*,office:events?">+<!ELEMENT office:script (%script;)>++<!ELEMENT office:font-decls (style:font-decl)*>++<!ENTITY % styles "(style:default-style|style:style|text:list-style|+ number:number-style|number:currency-style|number:percentage-style|+ number:date-style|number:time-style|number:boolean-style|+ number:text-style|+ draw:gradient|draw:hatch|draw:fill-image|draw:marker|draw:stroke-dash|+ style:presentation-page-layout|draw:transparency)">++<!-- Validity constraint: The elements+ text:outline-style,+ text:footnotes-configuration,+ text:endnotes-configuration,+ text:bibliography-configuration and+ text:linenumbering-configuration+ may appear only once!+ Unfortunatetly, this constraint cannot be easily specified in the DTD.+-->+<!ELEMENT office:styles (%styles;|text:outline-style|+ text:footnotes-configuration|text:endnotes-configuration|+ text:bibliography-configuration|text:linenumbering-configuration)*>++<!ELEMENT office:automatic-styles (%styles;|style:page-master)*>++<!ELEMENT office:master-styles (draw:layer-set?,style:handout-master?,style:master-page*) >+++<!ENTITY % body "(office:forms?,(text:tracked-changes|table:tracked-changes)?,%text-decls;,table:calculation-settings?,table:content-validations?,table:label-ranges?,+ (text:h|text:p|text:ordered-list|+ text:unordered-list|table:table|draw:page|+ draw:a|%shape;|text:section|text:table-of-content|+ text:illustration-index|text:table-index|text:object-index|+ text:user-index|text:alphabetical-index|text:bibliography|+ %change-marks;)*,+ table:named-expressions?,+ table:database-ranges?,table:data-pilot-tables?,+ table:consolidation?,+ table:dde-links?,+ presentation:settings?)">+<!ELEMENT office:body %body;>+<!ATTLIST office:body table:structure-protected %boolean; "false"+ table:protection-key CDATA #IMPLIED>++<!ELEMENT office:events (script:event|presentation:event)*>++<!-- DDE source: for text sections and tables -->+<!ELEMENT office:dde-source EMPTY>+<!ATTLIST office:dde-source office:dde-application CDATA #IMPLIED>+<!ATTLIST office:dde-source office:dde-topic CDATA #IMPLIED>+<!ATTLIST office:dde-source office:dde-item CDATA #IMPLIED>+<!ATTLIST office:dde-source office:automatic-update %boolean; "false">+<!ATTLIST office:dde-source office:name CDATA #IMPLIED>+<!ATTLIST office:dde-source table:conversion-mode (into-default-style-data-style|into-english-number|let-text) "into-default-style-data-style" >++<!-- annotations -->+<!-- limitation: in the current implementation, only plain text inside of+ paragraphs is supported -->+<!ELEMENT office:annotation (text:p)*>+<!ATTLIST office:annotation office:author %string; #IMPLIED>+<!ATTLIST office:annotation office:create-date %date; #IMPLIED>+<!ATTLIST office:annotation office:create-date-string %string; #IMPLIED>+<!ATTLIST office:annotation office:display %boolean; "false">++<!ELEMENT office:change-info (text:p)*>+<!ATTLIST office:change-info office:chg-author %string; #REQUIRED>+<!ATTLIST office:change-info office:chg-date-time %timeInstance; #REQUIRED>++<!ELEMENT office:binary-data (#PCDATA)>
+ examples/OpenOffice.org/office2.dtd view
@@ -0,0 +1,4010 @@+<?xml version="1.0" encoding="UTF-8"?>+<!--+ $Id: office2.dtd,v 1.1 2003/05/13 13:07:51 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->++<!-- string -->+<!ENTITY % string "CDATA">+<!ENTITY % cString "#PCDATA">++<!-- boolean (values are "true" and "false" -->+<!ENTITY % boolean "CDATA">++<!-- integer ( ..., -2, -1, 0, 1, 2, ...) -->+<!ENTITY % integer "CDATA">++<!-- non negative integer ( 0, 1, 2, ...) -->+<!ENTITY % nonNegativeInteger "CDATA">++<!-- positive integer ( 1, 2, ...) -->+<!ENTITY % positiveInteger "CDATA">+<!ENTITY % cPositiveInteger "#PCDATA">++<!ENTITY % positiveNumberOrDefault "CDATA">++<!-- time duration as specified by ISO8601, section 5.5.3.2 -->+<!ENTITY % timeDuration "CDATA">+<!ENTITY % cTimeDuration "#PCDATA">++<!-- time instance as specified by ISO8601, section 5.4 -->+<!ENTITY % timeInstance "CDATA">+<!ENTITY % cTimeInstance "#PCDATA">++<!-- date instance as specified by ISO8601, section 5.2.1.1, extended format-->+<!ENTITY % date "CDATA">+<!ENTITY % cDate "#PCDATA">++<!-- date duration, like timDuration but truncated to full dates -->+<!ENTITY % dateDuration "CDATA">+<!ENTITY % cDateDuration "#PCDATA">++<!-- URI reference -->+<!ENTITY % uriReference "CDATA">++<!-- language code as specified by RFC1766 -->+<!ENTITY % language "CDATA">+<!ENTITY % cLanguage "#PCDATA">++<!-- float -->+<!ENTITY % float "CDATA">++<!-- Some other common used data types -->++<!-- a single UNICODE character -->+<!ENTITY % character "CDATA">++<!-- a style name -->+<!ENTITY % styleName "CDATA">++<!-- a target frame mame -->+<!ENTITY % targetFrameName "CDATA">++<!-- a language without a country as specified by ISO639 -->+<!ENTITY % languageOnly "CDATA">++<!-- a country as specified by ISO3166 -->+<!ENTITY % country "CDATA">++<!-- a color value having the format #rrggbb -->+<!ENTITY % color "CDATA">+<!-- a color value having the format #rrggbb or "transparent" -->+<!ENTITY % transparentOrColor "CDATA">++<!-- a percentage -->+<!ENTITY % percentage "CDATA">++<!-- a length (i.e. 1cm or .6inch) -->+<!ENTITY % length "CDATA">+<!ENTITY % positiveLength "CDATA">+<!ENTITY % nonNegativeLength "CDATA">+<!ENTITY % lengthOrNoLimit "CDATA">++<!-- a length or a percentage -->+<!ENTITY % lengthOrPercentage "CDATA">+<!ENTITY % positiveLengthOrPercentage "CDATA">++<!-- a pixel length (i.e. 2px) -->+<!ENTITY % nonNegativePixelLength "CDATA">++<!-- a float or a percentage -->+<!ENTITY % floatOrPercentage "CDATA">++<!-- a text encoding -->+<!ENTITY % textEncoding "CDATA">++<!-- cell address and cell range address -->+<!ENTITY % cell-address "CDATA">+<!ENTITY % cell-range-address "CDATA">+<!ENTITY % cell-range-address-list "CDATA">++<!-- value types -->+<!ENTITY % valueType "(float|time|date|percentage|currency|boolean|string)">++<!-- an svg coordinate in different distance formats -->+<!ENTITY % coordinate "CDATA">++<!ENTITY % coordinateOrPercentage "CDATA">++<!ENTITY % shape "draw:rect|draw:line|draw:polyline|draw:polygon|draw:path|+ draw:circle|draw:ellipse|draw:g|draw:page-thumbnail|+ draw:text-box|draw:image|draw:object|draw:object-ole|+ draw:applet|draw:floating-frame|draw:plugin|+ draw:measure|draw:caption|draw:connector|chart:chart|+ dr3d:scene|draw:control" >+<!ENTITY % shapes "(%shape;)" >++<!ENTITY % anchorType "(page|frame|paragraph|char|as-char)">++<!ENTITY % control-id "form:id CDATA #REQUIRED">++<!ENTITY nFO "http://www.w3.org/1999/XSL/Format">+<!ENTITY nXLink "http://www.w3.org/1999/xlink">+<!ENTITY nSVG "http://www.w3.org/2000/svg">+<!ENTITY nMath "http://www.w3.org/1998/Math/MathML">++<!-- StarOffice namespace names and prefixes -->++<!ENTITY nOpenOffice "http://openoffice.org/2000">+<!ENTITY nOpenOffice2001 "http://openoffice.org/2001">++<!ENTITY nOffice "&nOpenOffice;/office">+<!ENTITY nStyle "&nOpenOffice;/style">+<!ENTITY nText "&nOpenOffice;/text">+<!ENTITY nTable "&nOpenOffice;/table">+<!ENTITY nMeta "&nOpenOffice;/meta">+<!ENTITY nScript "&nOpenOffice;/script">+<!ENTITY nDraw "&nOpenOffice;/drawing">+<!ENTITY nChart "&nOpenOffice;/chart">+<!ENTITY nNumber "&nOpenOffice;/datastyle">+<!ENTITY nDr3D "&nOpenOffice;/dr3d">+<!ENTITY nForm "&nOpenOffice;/form">+<!ENTITY nConfig "&nOpenOffice2001;/config">++<!-- dublin core namespace name and prefic -->+<!ENTITY nDC "http://purl.org/dc/elements/1.1/">++<!-- text marks for tracking changes; usually used inside of paragraphs -->+<!ENTITY % change-marks "text:change | text:change-start | text:change-end">++<!-- (optional) text declarations; used before the first paragraph -->+<!ENTITY % text-decls "text:variable-decls?, text:sequence-decls?,+ text:user-field-decls?, text:dde-connection-decls?, + text:alphabetical-index-auto-mark-file?" >++<!-- define the types of text which may occur inside of sections -->+<!ENTITY % sectionText "(text:h|text:p|text:ordered-list|+ text:unordered-list|table:table|text:section|+ text:table-of-content|text:illustration-index|+ text:table-index|text:object-index|text:user-index|+ text:alphabetical-index|text:bibliography|+ text:index-title|%change-marks;)*">++<!ENTITY % headerText "(%text-decls;, (text:h|text:p|text:ordered-list|+ text:unordered-list|table:table|text:section|+ text:table-of-content|text:illustration-index|+ text:table-index|text:object-index|text:user-index|+ text:alphabetical-index|text:bibliography|+ text:index-title|%change-marks;)* )">+++<!ELEMENT office:document ( office:meta?,+ office:settings?,+ office:script?,+ office:font-decls?,+ office:styles?,+ office:automatic-styles?,+ office:master-styles?,+ office:body ) >++<!ATTLIST office:document xmlns:office CDATA #FIXED "&nOffice;">+<!ATTLIST office:document xmlns:meta CDATA #FIXED "&nMeta;">+<!ATTLIST office:document xmlns:script CDATA #FIXED "&nScript;">+<!ATTLIST office:document xmlns:style CDATA #FIXED "&nStyle;">+<!ATTLIST office:document xmlns:text CDATA #FIXED "&nText;">+<!ATTLIST office:document xmlns:table CDATA #FIXED "&nTable;">+<!ATTLIST office:document xmlns:draw CDATA #FIXED "&nDraw;">+<!ATTLIST office:document xmlns:chart CDATA #FIXED "&nChart;">+<!ATTLIST office:document xmlns:number CDATA #FIXED "&nNumber;">+<!ATTLIST office:document xmlns:fo CDATA #FIXED "&nFO;">+<!ATTLIST office:document xmlns:xlink CDATA #FIXED "&nXLink;">+<!ATTLIST office:document xmlns:svg CDATA #FIXED "&nSVG;">+<!ATTLIST office:document xmlns:dc CDATA #FIXED "&nDC;">+<!ATTLIST office:document xmlns:dr3d CDATA #FIXED "&nDr3D;">+<!ATTLIST office:document xmlns:math CDATA #FIXED "&nMath;">+<!ATTLIST office:document xmlns:form CDATA #FIXED "&nForm;">++<!ATTLIST office:document office:class+ (text|text-global|+ drawing|presentation|+ spreadsheet|chart) #REQUIRED>++<!ATTLIST office:document office:version %string; #IMPLIED>++<!-- document-styles -->+<!ELEMENT office:document-styles (+ office:font-decls?,+ office:styles?,+ office:automatic-styles?,+ office:master-styles? ) >++<!ATTLIST office:document-styles xmlns:office CDATA #FIXED "&nOffice;">+<!ATTLIST office:document-styles xmlns:meta CDATA #FIXED "&nMeta;">+<!ATTLIST office:document-styles xmlns:script CDATA #FIXED "&nScript;">+<!ATTLIST office:document-styles xmlns:style CDATA #FIXED "&nStyle;">+<!ATTLIST office:document-styles xmlns:text CDATA #FIXED "&nText;">+<!ATTLIST office:document-styles xmlns:table CDATA #FIXED "&nTable;">+<!ATTLIST office:document-styles xmlns:draw CDATA #FIXED "&nDraw;">+<!ATTLIST office:document-styles xmlns:chart CDATA #FIXED "&nChart;">+<!ATTLIST office:document-styles xmlns:number CDATA #FIXED "&nNumber;">+<!ATTLIST office:document-styles xmlns:fo CDATA #FIXED "&nFO;">+<!ATTLIST office:document-styles xmlns:xlink CDATA #FIXED "&nXLink;">+<!ATTLIST office:document-styles xmlns:svg CDATA #FIXED "&nSVG;">+<!ATTLIST office:document-styles xmlns:dc CDATA #FIXED "&nDC;">+<!ATTLIST office:document-styles xmlns:dr3d CDATA #FIXED "&nDr3D;">+<!ATTLIST office:document-styles xmlns:math CDATA #FIXED "&nMath;">+<!ATTLIST office:document-styles xmlns:form CDATA #FIXED "&nForm;">++<!ATTLIST office:document-styles office:version %string; #IMPLIED>++<!-- document-content -->++<!ELEMENT office:document-content (+ office:script?,+ office:font-decls?,+ office:automatic-styles?,+ office:body ) >++<!ATTLIST office:document-content xmlns:office CDATA #FIXED "&nOffice;">+<!ATTLIST office:document-content xmlns:meta CDATA #FIXED "&nMeta;">+<!ATTLIST office:document-content xmlns:script CDATA #FIXED "&nScript;">+<!ATTLIST office:document-content xmlns:style CDATA #FIXED "&nStyle;">+<!ATTLIST office:document-content xmlns:text CDATA #FIXED "&nText;">+<!ATTLIST office:document-content xmlns:table CDATA #FIXED "&nTable;">+<!ATTLIST office:document-content xmlns:draw CDATA #FIXED "&nDraw;">+<!ATTLIST office:document-content xmlns:chart CDATA #FIXED "&nChart;">+<!ATTLIST office:document-content xmlns:number CDATA #FIXED "&nNumber;">+<!ATTLIST office:document-content xmlns:fo CDATA #FIXED "&nFO;">+<!ATTLIST office:document-content xmlns:xlink CDATA #FIXED "&nXLink;">+<!ATTLIST office:document-content xmlns:svg CDATA #FIXED "&nSVG;">+<!ATTLIST office:document-content xmlns:dc CDATA #FIXED "&nDC;">+<!ATTLIST office:document-content xmlns:dr3d CDATA #FIXED "&nDr3D;">+<!ATTLIST office:document-content xmlns:math CDATA #FIXED "&nMath;">+<!ATTLIST office:document-content xmlns:form CDATA #FIXED "&nForm;">++<!ATTLIST office:document-content office:class+ (text|text-global|+ drawing|presentation|+ spreadsheet|chart) #REQUIRED>++<!ATTLIST office:document-content office:version %string; #IMPLIED>++<!-- document-content -->++<!ELEMENT office:document-meta ( office:meta? ) >++<!ATTLIST office:document-meta xmlns:office CDATA #FIXED "&nOffice;">+<!ATTLIST office:document-meta xmlns:meta CDATA #FIXED "&nMeta;">+<!ATTLIST office:document-meta xmlns:script CDATA #FIXED "&nScript;">+<!ATTLIST office:document-meta xmlns:style CDATA #FIXED "&nStyle;">+<!ATTLIST office:document-meta xmlns:text CDATA #FIXED "&nText;">+<!ATTLIST office:document-meta xmlns:table CDATA #FIXED "&nTable;">+<!ATTLIST office:document-meta xmlns:draw CDATA #FIXED "&nDraw;">+<!ATTLIST office:document-meta xmlns:chart CDATA #FIXED "&nChart;">+<!ATTLIST office:document-meta xmlns:number CDATA #FIXED "&nNumber;">+<!ATTLIST office:document-meta xmlns:fo CDATA #FIXED "&nFO;">+<!ATTLIST office:document-meta xmlns:xlink CDATA #FIXED "&nXLink;">+<!ATTLIST office:document-meta xmlns:svg CDATA #FIXED "&nSVG;">+<!ATTLIST office:document-meta xmlns:dc CDATA #FIXED "&nDC;">+<!ATTLIST office:document-meta xmlns:dr3d CDATA #FIXED "&nDr3D;">+<!ATTLIST office:document-meta xmlns:math CDATA #FIXED "&nMath;">+<!ATTLIST office:document-meta xmlns:form CDATA #FIXED "&nForm;">++<!ATTLIST office:document-meta office:version %string; #IMPLIED>++<!ELEMENT office:document-settings (office:settings) >+<!ATTLIST office:document-settings xmlns:office CDATA #FIXED "&nOffice;">+<!ATTLIST office:document-settings xmlns:xlink CDATA #FIXED "&nXLink;">+<!ATTLIST office:document-settings xmlns:config CDATA #FIXED "&nConfig;">++<!ATTLIST office:document-settings office:version %string; #IMPLIED>++<!ENTITY % meta "(meta:generator?,+ dc:title?,+ dc:description?,+ dc:subject?,+ meta:initial-creator?,+ meta:creation-date?,+ dc:creator?,+ dc:date?,+ meta:printed-by?,+ meta:print-date?,+ meta:keywords?,+ dc:language?,+ meta:editing-cycles?,+ meta:editing-duration?,+ meta:hyperlink-behaviour?,+ meta:auto-reload?,+ meta:template?,+ meta:user-defined*,+ meta:document-statistic?)">+<!ELEMENT office:meta %meta;>++<!ENTITY % script "(script:library-embedded |+ script:library-linked)*,office:events?">+<!ELEMENT office:script (%script;)>++<!ELEMENT office:font-decls (style:font-decl)*>++<!ENTITY % styles "(style:default-style|style:style|text:list-style|+ number:number-style|number:currency-style|number:percentage-style|+ number:date-style|number:time-style|number:boolean-style|+ number:text-style|+ draw:gradient|draw:hatch|draw:fill-image|draw:marker|draw:stroke-dash|+ style:presentation-page-layout|draw:transparency)">++<!-- Validity constraint: The elements+ text:outline-style,+ text:footnotes-configuration,+ text:endnotes-configuration,+ text:bibliography-configuration and+ text:linenumbering-configuration+ may appear only once!+ Unfortunatetly, this constraint cannot be easily specified in the DTD.+-->+<!ELEMENT office:styles (%styles;|text:outline-style|+ text:footnotes-configuration|text:endnotes-configuration|+ text:bibliography-configuration|text:linenumbering-configuration)*>++<!ELEMENT office:automatic-styles (%styles;|style:page-master)*>++<!ELEMENT office:master-styles (draw:layer-set?,style:handout-master?,style:master-page*) >+++<!ENTITY % body "(office:forms?,(text:tracked-changes|table:tracked-changes)?,%text-decls;,table:calculation-settings?,table:content-validations?,table:label-ranges?,+ (text:h|text:p|text:ordered-list|+ text:unordered-list|table:table|draw:page|+ draw:a|%shape;|text:section|text:table-of-content|+ text:illustration-index|text:table-index|text:object-index|+ text:user-index|text:alphabetical-index|text:bibliography|+ %change-marks;)*,+ table:named-expressions?,+ table:database-ranges?,table:data-pilot-tables?,+ table:consolidation?,+ table:dde-links?,+ presentation:settings?)">+<!ELEMENT office:body %body;>+<!ATTLIST office:body table:structure-protected %boolean; "false"+ table:protection-key CDATA #IMPLIED>++<!ELEMENT office:events (script:event|presentation:event)*>++<!-- DDE source: for text sections and tables -->+<!ELEMENT office:dde-source EMPTY>+<!ATTLIST office:dde-source office:dde-application CDATA #IMPLIED>+<!ATTLIST office:dde-source office:dde-topic CDATA #IMPLIED>+<!ATTLIST office:dde-source office:dde-item CDATA #IMPLIED>+<!ATTLIST office:dde-source office:automatic-update %boolean; "false">+<!ATTLIST office:dde-source office:name CDATA #IMPLIED>+<!ATTLIST office:dde-source table:conversion-mode (into-default-style-data-style|into-english-number|let-text) "into-default-style-data-style" >++<!-- annotations -->+<!-- limitation: in the current implementation, only plain text inside of+ paragraphs is supported -->+<!ELEMENT office:annotation (text:p)*>+<!ATTLIST office:annotation office:author %string; #IMPLIED>+<!ATTLIST office:annotation office:create-date %date; #IMPLIED>+<!ATTLIST office:annotation office:create-date-string %string; #IMPLIED>+<!ATTLIST office:annotation office:display %boolean; "false">++<!ELEMENT office:change-info (text:p)*>+<!ATTLIST office:change-info office:chg-author %string; #REQUIRED>+<!ATTLIST office:change-info office:chg-date-time %timeInstance; #REQUIRED>++<!ELEMENT office:binary-data (#PCDATA)>++<!ELEMENT style:font-decl EMPTY>+<!ATTLIST style:font-decl style:name %string; #REQUIRED>+<!ATTLIST style:font-decl fo:font-family %string; #REQUIRED>+<!ATTLIST style:font-decl style:font-style-name %string; #IMPLIED>+<!ENTITY % fontFamilyGeneric "(roman|swiss|modern|decorative|script|system)">+<!ATTLIST style:font-decl style:font-family-generic %fontFamilyGeneric;+ #IMPLIED>+<!ENTITY % fontPitch "(fixed|variable)">+<!ATTLIST style:font-decl style:font-pitch %fontPitch; #IMPLIED>+<!ATTLIST style:font-decl style:font-charset %textEncoding; #IMPLIED>++<!ELEMENT style:style ( style:properties?,office:events?,style:map*)>++<!ATTLIST style:style style:name %styleName; #REQUIRED>++<!ENTITY % styleFamily "(paragraph|text|section|+ table|table-column|table-row|table-cell|table-page|chart|graphics|default|drawing-page|presentation|control|ruby)">+<!ATTLIST style:style style:family %styleFamily; #REQUIRED>++<!ATTLIST style:style style:parent-style-name %styleName; #IMPLIED>+<!ATTLIST style:style style:master-page-name %styleName; #IMPLIED>+<!ATTLIST style:style style:next-style-name %styleName; #IMPLIED>+<!ATTLIST style:style style:list-style-name %styleName; #IMPLIED>+<!ATTLIST style:style style:data-style-name %styleName; #IMPLIED>++<!ATTLIST style:style style:auto-update %boolean; "false">++<!ATTLIST style:style style:class %string; #IMPLIED>++<!ELEMENT style:default-style (style:properties?)>+<!ATTLIST style:default-style style:family %styleFamily; #REQUIRED>++<!ELEMENT style:map EMPTY>++<!ATTLIST style:map style:condition %string; #REQUIRED>+<!ATTLIST style:map style:apply-style-name %styleName; #REQUIRED>+<!ATTLIST style:map style:base-cell-address %cell-address; #IMPLIED>++<!ELEMENT style:properties ANY>++<!-- number format properties -->+<!ATTLIST style:properties style:num-prefix %string; #IMPLIED>+<!ATTLIST style:properties style:num-suffix %string; #IMPLIED>+<!ATTLIST style:properties style:num-format %string; #IMPLIED>+<!ATTLIST style:properties style:num-letter-sync %boolean; #IMPLIED>++<!-- frame properties -->+<!ATTLIST style:properties fo:width %positiveLength; #IMPLIED>+<!ATTLIST style:properties fo:height %positiveLength; #IMPLIED>+<!ATTLIST style:properties style:vertical-pos (top|middle|bottom|from-top|below) #IMPLIED>+<!ATTLIST style:properties style:vertical-rel (page|page-content|+ frame|frame-content|+ paragraph|paragraph-content|char|+ line|baseline|text) #IMPLIED>+<!ATTLIST style:properties style:horizontal-pos (left|center|right|from-left|inside|outside|from-inside) #IMPLIED>+<!ATTLIST style:properties style:horizontal-rel (page|page-content|+ page-start-margin|page-end-margin|+ frame|frame-content|+ frame-start-margin|frame-end-margin|+ paragraph|paragraph-content|+ paragraph-start-margin|paragraph-end-margin|+ char) #IMPLIED>+<!ATTLIST style:properties svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:min-height %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:min-width %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:max-height %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:max-width %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties text:anchor-type %anchorType; #IMPLIED>+<!ATTLIST style:properties text:anchor-page-number %positiveInteger; #IMPLIED>+<!ATTLIST style:properties svg:x %coordinate; #IMPLIED>+<!ATTLIST style:properties svg:y %coordinate; #IMPLIED>+<!ATTLIST style:properties style:print-content %boolean; #IMPLIED>+<!ATTLIST style:properties style:protect %boolean; #IMPLIED>+<!ATTLIST style:properties style:wrap (none|left|right|parallel|dynamic|run-through) #IMPLIED>+<!ENTITY % noLimitOrPositiveInteger "CDATA">+<!ATTLIST style:properties style:number-wrapped-paragraphs %noLimitOrPositiveInteger; #IMPLIED>+<!ATTLIST style:properties style:wrap-contour %boolean; #IMPLIED>+<!ATTLIST style:properties style:wrap-contour-mode (full|outside) #IMPLIED>+<!ATTLIST style:properties style:run-through (foreground|background) #IMPLIED>+<!ATTLIST style:properties style:editable %boolean; #IMPLIED>+<!ATTLIST style:properties style:mirror CDATA #IMPLIED>+<!ATTLIST style:properties fo:clip CDATA #IMPLIED>+<!ATTLIST style:properties text:animation (none|scroll|alternate|slide) #IMPLIED>+<!ATTLIST style:properties text:animation-direction (left|right|up|down) #IMPLIED>+<!ATTLIST style:properties text:animation-start-inside %boolean; #IMPLIED>+<!ATTLIST style:properties text:animation-stop-inside %boolean; #IMPLIED>+<!ATTLIST style:properties text:animation-repeat %integer; #IMPLIED>+<!ATTLIST style:properties text:animation-delay %timeDuration; #IMPLIED>+<!ATTLIST style:properties text:animation-steps %length; #IMPLIED>++<!-- text properties -->+<!ATTLIST style:properties fo:font-variant (normal|small-caps) #IMPLIED>+<!ATTLIST style:properties fo:text-transform (none|lowercase|+ uppercase|capitalize) #IMPLIED>+<!ATTLIST style:properties fo:color %color; #IMPLIED>+<!ATTLIST style:properties style:use-window-font-color %boolean; #IMPLIED>+<!ATTLIST style:properties style:text-outline %boolean; #IMPLIED>+<!ATTLIST style:properties style:text-crossing-out+ (none|single-line|double-line|thick-line|slash|X)+ #IMPLIED>+<!ATTLIST style:properties style:text-position CDATA #IMPLIED>+<!ATTLIST style:properties style:text-align (left|right|start|center|end|justify|justified) #IMPLIED>++<!ATTLIST style:properties style:font-name %string; #IMPLIED>+<!ATTLIST style:properties fo:font-family %string; #IMPLIED>+<!ATTLIST style:properties style:font-family-generic %fontFamilyGeneric;+ #IMPLIED>+<!ATTLIST style:properties style:font-style-name %string; #IMPLIED>+<!ATTLIST style:properties style:font-pitch %fontPitch; #IMPLIED>+<!ATTLIST style:properties style:font-charset %textEncoding; #IMPLIED>+<!ATTLIST style:properties style:font-name-asian %string; #IMPLIED>+<!ATTLIST style:properties style:font-family-asian %string; #IMPLIED>+<!ATTLIST style:properties style:font-family-generic-asian %fontFamilyGeneric;+ #IMPLIED>+<!ATTLIST style:properties style:font-style-name-asian %string; #IMPLIED>+<!ATTLIST style:properties style:font-pitch-asian %fontPitch; #IMPLIED>+<!ATTLIST style:properties style:font-charset-asian %textEncoding; #IMPLIED>+<!ATTLIST style:properties style:font-name-complex %string; #IMPLIED>+<!ATTLIST style:properties style:font-family-complex %string; #IMPLIED>+<!ATTLIST style:properties style:font-family-generic-complex %fontFamilyGeneric;+ #IMPLIED>+<!ATTLIST style:properties style:font-style-name-complex %string; #IMPLIED>+<!ATTLIST style:properties style:font-pitch-complex %fontPitch; #IMPLIED>+<!ATTLIST style:properties style:font-charset-complex %textEncoding; #IMPLIED>++<!ATTLIST style:properties fo:font-size %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties style:font-size-rel %length; #IMPLIED>+<!ATTLIST style:properties style:font-size-asian %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties style:font-size-rel-asian %length; #IMPLIED>+<!ATTLIST style:properties style:font-size-complex %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties style:font-size-rel-complex %length; #IMPLIED>+<!ENTITY % normalOrLength "CDATA">+<!ATTLIST style:properties fo:letter-spacing %normalOrLength; #IMPLIED>+<!ATTLIST style:properties fo:language %languageOnly; #IMPLIED>+<!ATTLIST style:properties style:language-asian %languageOnly; #IMPLIED>+<!ATTLIST style:properties style:language-complex %languageOnly; #IMPLIED>+<!ATTLIST style:properties fo:country %country; #IMPLIED>+<!ATTLIST style:properties style:country-asian %country; #IMPLIED>+<!ATTLIST style:properties style:country-complex %country; #IMPLIED>+<!ENTITY % fontStyle "(normal|italic|oblique)">+<!ATTLIST style:properties fo:font-style %fontStyle; #IMPLIED>+<!ATTLIST style:properties style:font-style-asian %fontStyle; #IMPLIED>+<!ATTLIST style:properties style:font-style-complex %fontStyle; #IMPLIED>+<!ENTITY % fontRelief "(none|embossed|engraved)">+<!ATTLIST style:properties style:font-relief %fontRelief; #IMPLIED>+<!ATTLIST style:properties fo:text-shadow CDATA #IMPLIED>+<!ATTLIST style:properties style:text-underline+ (none|single|double|dotted|dash|long-dash|dot-dash|+ dot-dot-dash|wave|bold|bold-dotted|bold-dash|+ bold-long-dash|bold-dot-dash|bold-dot-dot-dash|+ bold-wave|double-wave|small-wave) #IMPLIED>+<!ATTLIST style:properties style:text-autospace (none | ideograph-alpha) #IMPLIED>+<!ATTLIST style:properties style:punctuation-wrap (simple | hanging) #IMPLIED>+<!ATTLIST style:properties style:line-break (normal | strict) #IMPLIED>+<!ENTITY % fontColorOrColor "CDATA">+<!ATTLIST style:properties style:text-underline-color %fontColorOrColor;+ #IMPLIED>+<!ATTLIST style:properties fo:font-weight CDATA #IMPLIED>+<!ATTLIST style:properties style:font-weight-asian CDATA #IMPLIED>+<!ATTLIST style:properties style:font-weight-complex CDATA #IMPLIED>+<!ATTLIST style:properties fo:score-spaces %boolean; #IMPLIED>+<!ATTLIST style:properties style:letter-kerning %boolean; #IMPLIED>+<!ATTLIST style:properties style:text-blinking %boolean; #IMPLIED>+<!ATTLIST style:properties style:text-background-color %transparentOrColor;+ #IMPLIED>++<!ATTLIST style:properties style:text-combine (none|letters|lines) #IMPLIED>+<!ATTLIST style:properties style:text-combine-start-char %character; #IMPLIED>+<!ATTLIST style:properties style:text-combine-end-char %character; #IMPLIED>+<!ATTLIST style:properties style:text-emphasize CDATA #IMPLIED>+<!ATTLIST style:properties style:text-scale %percentage; #IMPLIED>+<!ATTLIST style:properties style:text-rotation-angle %integer; #IMPLIED>+<!ATTLIST style:properties style:text-rotation-scale (fixed|line-height) #IMPLIED>++<!-- paragraph properties -->+<!ENTITY % nonNegativeLengthOrPercentageOrNormal "CDATA">+<!ATTLIST style:properties fo:line-height+ %nonNegativeLengthOrPercentageOrNormal; #IMPLIED>+<!ATTLIST style:properties style:line-height-at-least %nonNegativeLength;+ #IMPLIED>+<!ATTLIST style:properties style:line-spacing %length; #IMPLIED>+<!ATTLIST style:properties fo:text-align (start|end|center|justify) #IMPLIED>+<!ATTLIST style:properties fo:text-align-last (start|center|justify) #IMPLIED>+<!ATTLIST style:properties style:text-align-source (fix|value-type) #IMPLIED>+<!ATTLIST style:properties style:justify-single-word %boolean; #IMPLIED>+<!ATTLIST style:properties style:break-inside (auto|avoid) #IMPLIED>+<!ATTLIST style:properties fo:widows %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties fo:orphans %nonNegativeInteger; #IMPLIED>++<!ATTLIST style:properties fo:hyphenate %boolean; #IMPLIED>+<!ATTLIST style:properties fo:hyphenate-keep (none|page) #IMPLIED>+<!ATTLIST style:properties fo:hyphenation-remain-char-count %positiveInteger;+ #IMPLIED>+<!ATTLIST style:properties fo:hyphenation-push-char-count %positiveInteger;+ #IMPLIED>+<!ATTLIST style:properties fo:hyphenation-ladder-count+ %noLimitOrPositiveInteger; #IMPLIED>+<!ATTLIST style:properties style:page-number %positiveInteger; #IMPLIED>++<!ELEMENT style:tab-stops (style:tab-stop)*>+<!ELEMENT style:tab-stop EMPTY>+<!ATTLIST style:tab-stop style:position %nonNegativeLength; #REQUIRED>+<!ATTLIST style:tab-stop style:type (left|center|right|char|default) "left">+<!ATTLIST style:tab-stop style:char %character; #IMPLIED>+<!ATTLIST style:tab-stop style:leader-char %character; " ">++<!ELEMENT style:drop-cap EMPTY>+<!ENTITY % wordOrPositiveInteger "CDATA">+<!ATTLIST style:drop-cap style:length %wordOrPositiveInteger; "1">+<!ATTLIST style:drop-cap style:lines %positiveInteger; "1">+<!ATTLIST style:drop-cap style:distance %length; "0cm">+<!ATTLIST style:drop-cap style:style-name %styleName; #IMPLIED>++<!ATTLIST style:properties style:register-true %boolean; #IMPLIED>+<!ATTLIST style:properties style:register-truth-ref-style-name %styleName; #IMPLIED>+<!ATTLIST style:properties fo:margin-left %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:margin-right %positiveLengthOrPercentage;+ #IMPLIED>+<!ATTLIST style:properties fo:text-indent %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties style:auto-text-indent %boolean; #IMPLIED>+<!ATTLIST style:properties fo:margin-top %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:margin-bottom %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:break-before (auto|column|page) #IMPLIED>+<!ATTLIST style:properties fo:break-after (auto|column|page) #IMPLIED>+<!ATTLIST style:properties fo:background-color %transparentOrColor; #IMPLIED>+<!ATTLIST style:properties style:background-transparency %percentage; #IMPLIED>+<!ATTLIST style:properties style:dynamic-spacing %boolean; #IMPLIED>++<!ELEMENT style:background-image (office:binary-data?)>+<!ATTLIST style:background-image xlink:type (simple) #IMPLIED>+<!ATTLIST style:background-image xlink:href %uriReference; #IMPLIED>+<!ATTLIST style:background-image xlink:show (embed) #IMPLIED>+<!ATTLIST style:background-image xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST style:background-image style:repeat (no-repeat|repeat|stretch)+ "repeat">+<!ATTLIST style:background-image style:position CDATA "center">+<!ATTLIST style:background-image style:filter-name %string; #IMPLIED>+<!ATTLIST style:background-image draw:transparency %percentage; #IMPLIED>++<!ELEMENT style:symbol-image (office:binary-data?)>+<!ATTLIST style:symbol-image xlink:type (simple) #IMPLIED>+<!ATTLIST style:symbol-image xlink:href %uriReference; #IMPLIED>+<!ATTLIST style:symbol-image xlink:show (embed) #IMPLIED>+<!ATTLIST style:symbol-image xlink:actuate (onLoad) #IMPLIED>++<!ATTLIST style:properties fo:border CDATA #IMPLIED>+<!ATTLIST style:properties fo:border-top CDATA #IMPLIED>+<!ATTLIST style:properties fo:border-bottom CDATA #IMPLIED>+<!ATTLIST style:properties fo:border-left CDATA #IMPLIED>+<!ATTLIST style:properties fo:border-right CDATA #IMPLIED>+<!ATTLIST style:properties style:border-line-width CDATA #IMPLIED>+<!ATTLIST style:properties style:border-line-width-top CDATA #IMPLIED>+<!ATTLIST style:properties style:border-line-width-bottom CDATA #IMPLIED>+<!ATTLIST style:properties style:border-line-width-left CDATA #IMPLIED>+<!ATTLIST style:properties style:border-line-width-right CDATA #IMPLIED>+<!ATTLIST style:properties fo:padding %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties fo:padding-top %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties fo:padding-bottom %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties fo:padding-left %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties fo:padding-right %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties style:shadow CDATA #IMPLIED>+<!ATTLIST style:properties fo:keep-with-next %boolean; #IMPLIED>++<!ATTLIST style:properties text:number-lines %boolean; "false">+<!ATTLIST style:properties text:line-number %nonNegativeInteger; #IMPLIED>++<!ATTLIST style:properties style:decimal-places %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties style:tab-stop-distance %nonNegativeLength; #IMPLIED>++<!-- section properties -->+<!ATTLIST style:properties text:dont-balance-text-columns %boolean; #IMPLIED>++<!-- ruby properties -->+<!ATTLIST style:properties style:ruby-align (left|center|right|distribute-letter|distribute-space) #IMPLIED>+<!ATTLIST style:properties style:ruby-position (above|below) #IMPLIED>+++<!-- table properties -->+<!ATTLIST style:properties style:width %positiveLength; #IMPLIED>+<!ATTLIST style:properties style:rel-width %percentage; #IMPLIED>+<!ATTLIST style:properties style:may-break-between-rows %boolean; #IMPLIED>+<!ATTLIST style:properties table:page-style-name %styleName; #IMPLIED>+<!ATTLIST style:properties table:display %boolean; #IMPLIED>++<!-- table column properties -->+<!ATTLIST style:properties style:column-width %positiveLength; #IMPLIED>+<!ENTITY % relWidth "CDATA">+<!ATTLIST style:properties style:rel-column-width %relWidth; #IMPLIED>+<!ATTLIST style:properties style:use-optimal-column-width %boolean; #IMPLIED>++<!-- table row properties -->+<!ATTLIST style:properties style:row-height %positiveLength; #IMPLIED>+<!ATTLIST style:properties style:min-row-height %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties style:use-optimal-row-height %boolean; #IMPLIED>++<!-- table cell properties -->+<!ATTLIST style:properties+ table:align (left | center | right | margins) #IMPLIED+ table:border-model (collapsing | separating) #IMPLIED+ fo:vertical-align (top | middle | bottom | automatic) #IMPLIED+ fo:direction (ltr | ttb) #IMPLIED+ style:glyph-orientation-vertical (auto | 0) #IMPLIED+ style:rotation-angle %nonNegativeInteger; #IMPLIED+ style:rotation-align (none | bottom | top | center) #IMPLIED+ style:cell-protect CDATA #IMPLIED+ fo:wrap-option (no-wrap | wrap) #IMPLIED+>+<!ELEMENT style:columns (style:column-sep?,style:column*)>+<!ATTLIST style:columns fo:column-count %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:columns fo:column-gap %positiveLength; #IMPLIED>++<!ELEMENT style:column EMPTY>+<!ATTLIST style:column style:rel-width CDATA #IMPLIED>+<!ATTLIST style:column fo:margin-left %positiveLength; #IMPLIED>+<!ATTLIST style:column fo:margin-right %positiveLength; #IMPLIED>++<!ELEMENT style:column-sep EMPTY>+<!ATTLIST style:column-sep style:style (none|solid|dotted|dashed|dot-dashed)+ "solid">+<!ATTLIST style:column-sep style:width %length; #REQUIRED>+<!ATTLIST style:column-sep style:height %percentage; "100%">+<!ATTLIST style:column-sep style:vertical-align (top|middle|bottom) "top">+<!ATTLIST style:column-sep style:color %color; "#000000">++<!-- page master properties -->+<!ELEMENT style:page-master (style:properties?, style:header-style?, style:footer-style?)>+<!ATTLIST style:page-master style:name %styleName; #REQUIRED>+<!ATTLIST style:page-master style:page-usage (all|left|right|mirrored) "all">++<!ELEMENT style:header-style (style:properties?)>+<!ELEMENT style:footer-style (style:properties?)>++<!ATTLIST style:properties fo:page-width %length; #IMPLIED>+<!ATTLIST style:properties fo:page-height %length; #IMPLIED>+<!ATTLIST style:properties style:paper-tray-name %string; #IMPLIED>+<!ATTLIST style:properties style:print-orientation (portrait|landscape) #IMPLIED>+<!ATTLIST style:properties style:print CDATA #IMPLIED>+<!ATTLIST style:properties style:print-page-order (ttb|ltr) #IMPLIED>+<!ATTLIST style:properties style:first-page-number %positiveInteger; #IMPLIED>+<!ATTLIST style:properties style:scale-to %percentage; #IMPLIED>+<!ATTLIST style:properties style:scale-to-pages %positiveInteger; #IMPLIED>+<!ATTLIST style:properties style:table-centering (horizontal | vertical | both | none) #IMPLIED>++<!ATTLIST style:properties style:footnote-max-height %lengthOrNoLimit; #IMPLIED>+<!ATTLIST style:properties style:vertical-align (top|bottom|middle|basline|auto) #IMPLIED>+<!ATTLIST style:properties style:writing-mode (lr-tb|rl-tb|tb-rl|tb-lr|lr|rl|tb|page) "lr-tb">+<!ATTLIST style:properties style:layout-grid-mode (none|line|both) #IMPLIED>+<!ATTLIST style:properties style:layout-grid-base-height %length; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-ruby-height %length; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-lines %positiveInteger; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-color %color; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-ruby-below %boolean; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-print %boolean; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-display %boolean; #IMPLIED>+<!ATTLIST style:properties style:snap-to-layout-grid %boolean; #IMPLIED>++<!ELEMENT style:footnote-sep EMPTY>+<!ATTLIST style:footnote-sep style:width %length; #IMPLIED>+<!ATTLIST style:footnote-sep style:rel-width %percentage; #IMPLIED>+<!ATTLIST style:footnote-sep style:color %color; #IMPLIED>+<!ATTLIST style:footnote-sep style:adjustment (left|center|right) "left">+<!ATTLIST style:footnote-sep style:distance-before-sep %length; #IMPLIED>+<!ATTLIST style:footnote-sep style:distance-after-sep %length; #IMPLIED>++<!-- master page -->+<!ELEMENT style:master-page ( (style:header, style:header-left?)?, (style:footer, style:footer-left?)?,+ office:forms?,style:style*, (%shapes;)*, presentation:notes? )>+<!ATTLIST style:master-page style:name %styleName; #REQUIRED>+<!ATTLIST style:master-page style:page-master-name %styleName; #REQUIRED>+<!ATTLIST style:master-page style:next-style-name %styleName; #IMPLIED>+<!ATTLIST style:master-page draw:style-name %styleName; #IMPLIED>++<!-- handout master -->+<!ELEMENT style:handout-master (%shapes;)*>+<!ATTLIST style:handout-master presentation:presentation-page-layout-name %styleName; #IMPLIED>+<!ATTLIST style:handout-master style:page-master-name %styleName; #IMPLIED>+++<!ENTITY % hd-ft-content "( %headerText; | (style:region-left?, style:region-center?, style:region-right?) )">+<!ELEMENT style:header %hd-ft-content;>+<!ATTLIST style:header style:display %boolean; "true">+<!ELEMENT style:footer %hd-ft-content;>+<!ATTLIST style:footer style:display %boolean; "true">+<!ELEMENT style:header-left %hd-ft-content;>+<!ATTLIST style:header-left style:display %boolean; "true">+<!ELEMENT style:footer-left %hd-ft-content;>+<!ATTLIST style:footer-left style:display %boolean; "true">++<!ENTITY % region-content "(text:p*)">+<!ELEMENT style:region-left %region-content;>+<!ELEMENT style:region-center %region-content;>+<!ELEMENT style:region-right %region-content;>++<!ELEMENT meta:generator (%cString;)>++<!ELEMENT dc:title (%cString;)>++<!ELEMENT dc:description (%cString;)>++<!ELEMENT dc:subject (%cString;)>++<!ELEMENT meta:keywords (meta:keyword)*>+<!ELEMENT meta:keyword (%cString;)>++<!ELEMENT meta:initial-creator (%cString;)>++<!ELEMENT dc:creator (%cString;)>++<!ELEMENT meta:printed-by (%cString;)>++<!ELEMENT meta:creation-date (%cTimeInstance;)>++<!ELEMENT dc:date (%cTimeInstance;)>++<!ELEMENT meta:print-date (%cTimeInstance;)>++<!ELEMENT meta:template EMPTY>+<!ATTLIST meta:template xlink:type (simple) #FIXED "simple">+<!ATTLIST meta:template xlink:actuate (onRequest) "onRequest">+<!ATTLIST meta:template xlink:href %uriReference; #REQUIRED>+<!ATTLIST meta:template xlink:title %string; #IMPLIED>+<!ATTLIST meta:template meta:date %timeInstance; #IMPLIED>++<!ELEMENT meta:auto-reload EMPTY>+<!ATTLIST meta:auto-reload xlink:type (simple) #IMPLIED>+<!ATTLIST meta:auto-reload xlink:show (replace) #IMPLIED>+<!ATTLIST meta:auto-reload xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST meta:auto-reload xlink:href %uriReference; #IMPLIED>+<!ATTLIST meta:auto-reload meta:delay %timeDuration; "P0S">++<!ELEMENT meta:hyperlink-behaviour EMPTY>+<!ATTLIST meta:hyperlink-behaviour office:target-frame-name %targetFrameName; #IMPLIED>+<!ATTLIST meta:hyperlink-behaviour xlink:show (new|replace) #IMPLIED>++<!ELEMENT dc:language (%cLanguage;)>++<!ELEMENT meta:editing-cycles (%cPositiveInteger;)>++<!ELEMENT meta:editing-duration (%cTimeDuration;)>++<!ELEMENT meta:user-defined (%cString;)>+<!ATTLIST meta:user-defined meta:name %string; #REQUIRED>++<!ELEMENT meta:document-statistic EMPTY>+<!ATTLIST meta:document-statistic meta:page-count %positiveInteger; #IMPLIED+ meta:table-count %nonNegativeInteger; #IMPLIED+ meta:draw-count %nonNegativeInteger; #IMPLIED+ meta:image-count %nonNegativeInteger; #IMPLIED+ meta:ole-object-count %nonNegativeInteger; #IMPLIED+ meta:paragraph-count %nonNegativeInteger; #IMPLIED+ meta:word-count %nonNegativeInteger; #IMPLIED+ meta:character-count %nonNegativeInteger; #IMPLIED+ meta:row-count %nonNegativeInteger; #IMPLIED+ meta:cell-count %nonNegativeInteger; #IMPLIED+ meta:object-count %positiveInteger; #IMPLIED>++<!ELEMENT script:library-embedded (script:module*)>+<!ATTLIST script:library-embedded script:name %string; #REQUIRED>+<!ATTLIST script:library-embedded script:password %string; #IMPLIED>++<!ELEMENT script:library-linked EMPTY>+<!ATTLIST script:library-linked script:name %string; #REQUIRED>+<!ATTLIST script:library-linked xlink:href %string; #REQUIRED>+<!ATTLIST script:library-linked xlink:type (simple) #FIXED "simple">++<!ELEMENT script:module (#PCDATA)>+<!ATTLIST script:module script:name %string; #REQUIRED>+<!ATTLIST script:module script:language %string; #IMPLIED>+++<!ENTITY % script-language "script:language %string; #REQUIRED">+<!ENTITY % event-name "script:event-name %string; #REQUIRED">+<!ENTITY % location "script:location (document|application) #REQUIRED">+<!ENTITY % macro-name "script:macro-name %string; #REQUIRED">++<!ELEMENT script:event (#PCDATA)>+<!ATTLIST script:event %script-language;+ %event-name;+ %location;+ %macro-name;>++<!ENTITY % points "CDATA" >+<!ENTITY % pathData "CDATA" >+<!ENTITY % gradient-style "(linear|axial|radial|ellipsoid|square|rectangular)" >+<!ENTITY % draw-position "svg:x %coordinate; #IMPLIED svg:y %coordinate; #IMPLIED">+<!ENTITY % draw-end-position "table:end-cell-address %cell-address; #IMPLIED table:end-x %coordinate; #IMPLIED table:end-y %coordinate; #IMPLIED">+<!ENTITY % draw-size "svg:width %coordinate; #IMPLIED svg:height %coordinate; #IMPLIED">+<!ENTITY % draw-transform "draw:transform CDATA #IMPLIED">+<!ENTITY % draw-viewbox "svg:viewBox CDATA #REQUIRED">+<!ENTITY % draw-style-name "draw:style-name %styleName; #IMPLIED presentation:style-name %styleName; #IMPLIED draw:text-style-name %styleName; #IMPLIED">+<!ENTITY % draw-shape-id "CDATA #IMPLIED" >+<!ENTITY % draw-text "(text:p|text:unordered-list|text:ordered-list)*">+<!ENTITY % zindex "draw:z-index %nonNegativeInteger; #IMPLIED">+<!ENTITY % distance "CDATA">+<!ENTITY % rectanglePoint "(top-left|top|top-right|left|center|right|bottom-left|bottom|bottom-right)">+<!ENTITY % vector3D "CDATA">+<!ENTITY % text-anchor "text:anchor-type %anchorType; #IMPLIED text:anchor-page-number %positiveInteger; #IMPLIED">+<!ENTITY % layerName "CDATA">+<!ENTITY % table-background "table:table-background (true | false) #IMPLIED">++<!-- commont presentation shape attributes -->+<!ENTITY % presentation-style-name "presentation:style-name %styleName; #IMPLIED">+<!ENTITY % presentation-classes "(title|outline|subtitle|text|graphic|object|chart|table|orgchart|page|notes)" >+<!-- ENTITY % presentation-class "presentation:class %presentation-classes; #IMPLIED" -->+<!ENTITY % presentation-class "presentation:class %presentation-classes; #IMPLIED presentation:placeholder (true|false) #IMPLIED presentation:user-transformed (true|false) #IMPLIED">+<!ENTITY % presentationEffects "(none|fade|move|stripes|open|close|dissolve|wavyline|random|lines|laser|appear|hide|move-short|checkerboard|rotate|stretch)" >+<!ENTITY % presentationEffectDirections "(none|from-left|from-top|from-right|from-bottom|from-center|from-upper-left|from-upper-right|from-lower-left|from-lower-right|to-left|to-top|to-right|to-bottom|to-upper-left|to-upper-right|to-lower-right|to-lower-left|path|spiral-inward-left|spiral-inward-right|spiral-outward-left|spiral-outward-right|vertical|horizontal|to-center|clockwise|counter-clockwise)" >+<!ENTITY % presentationSpeeds "(slow|medium|fast)" >++<!-- Drawing shapes -->+<!ELEMENT draw:rect ( office:events?, %draw-text; )>+<!ATTLIST draw:rect %draw-position; >+<!ATTLIST draw:rect %draw-end-position; >+<!ATTLIST draw:rect %table-background; >+<!ATTLIST draw:rect %draw-size; >+<!ATTLIST draw:rect %draw-style-name; >+<!ATTLIST draw:rect %draw-transform; >+<!ATTLIST draw:rect draw:corner-radius %nonNegativeLength; #IMPLIED>+<!ATTLIST draw:rect %zindex;>+<!ATTLIST draw:rect draw:id %draw-shape-id;>+<!ATTLIST draw:rect %text-anchor;>+<!ATTLIST draw:rect draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:line ( office:events?, %draw-text; )>+<!ATTLIST draw:line svg:x1 %length; #IMPLIED>+<!ATTLIST draw:line svg:y1 %length; #IMPLIED>+<!ATTLIST draw:line svg:x2 %length; #REQUIRED>+<!ATTLIST draw:line svg:y2 %length; #REQUIRED>+<!ATTLIST draw:line svg:y %coordinate; #IMPLIED>+<!ATTLIST draw:line %draw-style-name; >+<!ATTLIST draw:line %draw-transform; >+<!ATTLIST draw:line %zindex;>+<!ATTLIST draw:line %draw-end-position; >+<!ATTLIST draw:line %table-background; >+<!ATTLIST draw:line draw:id %draw-shape-id;>+<!ATTLIST draw:line %text-anchor;>+<!ATTLIST draw:line draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:polyline ( office:events?, %draw-text; )>+<!ATTLIST draw:polyline %draw-position; >+<!ATTLIST draw:polyline %draw-size; >+<!ATTLIST draw:polyline %draw-viewbox; >+<!ATTLIST draw:polyline draw:points %points; #REQUIRED>+<!ATTLIST draw:polyline %draw-style-name; >+<!ATTLIST draw:polyline %draw-transform; >+<!ATTLIST draw:polyline %zindex;>+<!ATTLIST draw:polyline %draw-end-position; >+<!ATTLIST draw:polyline %table-background; >+<!ATTLIST draw:polyline draw:id %draw-shape-id;>+<!ATTLIST draw:polyline %text-anchor;>+<!ATTLIST draw:polyline draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:polygon ( office:events?, %draw-text; )>+<!ATTLIST draw:polygon %draw-position; >+<!ATTLIST draw:polygon %draw-end-position; >+<!ATTLIST draw:polygon %table-background; >+<!ATTLIST draw:polygon %draw-size; >+<!ATTLIST draw:polygon %draw-viewbox; >+<!ATTLIST draw:polygon draw:points %points; #REQUIRED >+<!ATTLIST draw:polygon %draw-style-name; >+<!ATTLIST draw:polygon %draw-transform; >+<!ATTLIST draw:polygon %zindex;>+<!ATTLIST draw:polygon draw:id %draw-shape-id;>+<!ATTLIST draw:polygon %text-anchor;>+<!ATTLIST draw:polygon draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:path ( office:events?, %draw-text; )>+<!ATTLIST draw:path %draw-position;>+<!ATTLIST draw:path %draw-end-position; >+<!ATTLIST draw:path %table-background; >+<!ATTLIST draw:path %draw-size; >+<!ATTLIST draw:path %draw-viewbox; >+<!ATTLIST draw:path svg:d %pathData; #REQUIRED >+<!ATTLIST draw:path %draw-style-name; >+<!ATTLIST draw:path %draw-transform; >+<!ATTLIST draw:path %zindex;>+<!ATTLIST draw:path draw:id %draw-shape-id;>+<!ATTLIST draw:path %text-anchor;>+<!ATTLIST draw:path draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:circle ( office:events?, %draw-text; )>+<!ATTLIST draw:circle %draw-position; >+<!ATTLIST draw:circle %draw-size; >+<!ATTLIST draw:circle %draw-style-name; >+<!ATTLIST draw:circle %draw-transform; >+<!ATTLIST draw:circle %zindex;>+<!ATTLIST draw:circle %draw-end-position; >+<!ATTLIST draw:circle %table-background; >+<!ATTLIST draw:circle draw:id %draw-shape-id;>+<!ATTLIST draw:circle draw:kind (full|section|cut|arc) "full">+<!ATTLIST draw:circle draw:start-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST draw:circle draw:end-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST draw:circle %text-anchor;>+<!ATTLIST draw:circle draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:ellipse ( office:events?, %draw-text; )>+<!ATTLIST draw:ellipse %draw-position; >+<!ATTLIST draw:ellipse %draw-size; >+<!ATTLIST draw:ellipse %draw-style-name; >+<!ATTLIST draw:ellipse %draw-transform; >+<!ATTLIST draw:ellipse %zindex;>+<!ATTLIST draw:ellipse %draw-end-position; >+<!ATTLIST draw:ellipse %table-background; >+<!ATTLIST draw:ellipse draw:id %draw-shape-id;>+<!ATTLIST draw:ellipse draw:kind (full|section|cut|arc) "full">+<!ATTLIST draw:ellipse draw:start-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST draw:ellipse draw:end-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST draw:ellipse %text-anchor;>+<!ATTLIST draw:ellipse draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:connector ( office:events?, %draw-text;)>+<!ATTLIST draw:connector draw:type (standard|lines|line|curve) "standard">+<!ATTLIST draw:connector draw:line-skew CDATA #IMPLIED>+<!ATTLIST draw:connector %draw-style-name;>+<!ATTLIST draw:connector svg:x1 %coordinate; #REQUIRED>+<!ATTLIST draw:connector svg:y1 %coordinate; #REQUIRED>+<!ATTLIST draw:connector svg:x2 %coordinate; #REQUIRED>+<!ATTLIST draw:connector svg:y2 %coordinate; #REQUIRED>+<!ATTLIST draw:connector draw:start-shape %draw-shape-id;>+<!ATTLIST draw:connector draw:start-glue-point %integer; #IMPLIED>+<!ATTLIST draw:connector draw:end-shape %draw-shape-id;>+<!ATTLIST draw:connector draw:end-glue-point %integer; #IMPLIED>+<!ATTLIST draw:connector %zindex;>+<!ATTLIST draw:connector %draw-end-position; >+<!ATTLIST draw:connector %table-background; >+<!ATTLIST draw:connector draw:id %draw-shape-id;>+<!ATTLIST draw:connector %text-anchor;>+<!ATTLIST draw:connector draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:control EMPTY>+<!ATTLIST draw:control %draw-style-name;>+<!ATTLIST draw:control %draw-position; >+<!ATTLIST draw:control %draw-size; >+<!ATTLIST draw:control %control-id; >+<!ATTLIST draw:control %zindex;>+<!ATTLIST draw:control %draw-end-position; >+<!ATTLIST draw:control %table-background; >+<!ATTLIST draw:control draw:id %draw-shape-id;>+<!ATTLIST draw:control %text-anchor;>+<!ATTLIST draw:control draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:g ( office:events?, (%shapes;)* ) >+<!ATTLIST draw:g svg:y %coordinate; #IMPLIED>+<!ATTLIST draw:g %draw-transform; >+<!ATTLIST draw:g draw:name %string; #IMPLIED>+<!ATTLIST draw:g %draw-style-name; >+<!ATTLIST draw:g %zindex;>+<!ATTLIST draw:g %draw-end-position; >+<!ATTLIST draw:g %table-background; >+<!ATTLIST draw:g draw:id %draw-shape-id;>+<!ATTLIST draw:g %text-anchor;>+<!ATTLIST draw:g draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:page-thumbnail EMPTY>+<!ATTLIST draw:page-thumbnail draw:page-number %positiveInteger; #IMPLIED>+<!ATTLIST draw:page-thumbnail %draw-position; >+<!ATTLIST draw:page-thumbnail %draw-size; >+<!ATTLIST draw:page-thumbnail %draw-style-name; >+<!ATTLIST draw:page-thumbnail %presentation-class; >+<!ATTLIST draw:page-thumbnail %zindex;>+<!ATTLIST draw:page-thumbnail %draw-end-position; >+<!ATTLIST draw:page-thumbnail %table-background; >+<!ATTLIST draw:page-thumbnail draw:id %draw-shape-id;>+<!ATTLIST draw:page-thumbnail %text-anchor;>+<!ATTLIST draw:page-thumbnail draw:layer %layerName; #IMPLIED>++<!ELEMENT draw:caption ( office:events?, %draw-text;)>+<!ATTLIST draw:caption %draw-position; >+<!ATTLIST draw:caption %draw-end-position; >+<!ATTLIST draw:caption %table-background; >+<!ATTLIST draw:caption %draw-size; >+<!ATTLIST draw:caption %draw-style-name; >+<!ATTLIST draw:caption %draw-transform; >+<!ATTLIST draw:caption draw:caption-point-x %coordinate; #IMPLIED>+<!ATTLIST draw:caption draw:caption-point-y %coordinate; #IMPLIED>+<!ATTLIST draw:caption %zindex;>+<!ATTLIST draw:caption draw:id %draw-shape-id;>+<!ATTLIST draw:caption %text-anchor;>+<!ATTLIST draw:caption draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:caption draw:corner-radius %nonNegativeLength; #IMPLIED>++<!ELEMENT draw:measure ( office:events?, %draw-text;)>+<!ATTLIST draw:measure svg:x1 %coordinate; #REQUIRED>+<!ATTLIST draw:measure svg:y1 %coordinate; #REQUIRED>+<!ATTLIST draw:measure svg:x2 %coordinate; #REQUIRED>+<!ATTLIST draw:measure svg:y2 %coordinate; #REQUIRED>+<!ATTLIST draw:measure %draw-end-position; >+<!ATTLIST draw:measure %table-background; >+<!ATTLIST draw:measure %draw-style-name; >+<!ATTLIST draw:measure %draw-transform; >+<!ATTLIST draw:measure %zindex;>+<!ATTLIST draw:measure draw:id %draw-shape-id;>+<!ATTLIST draw:measure %text-anchor;>+<!ATTLIST draw:measure draw:layer %layerName; #IMPLIED>++<!-- graphic style elements -->+<!ELEMENT draw:gradient EMPTY >+<!ATTLIST draw:gradient draw:name %styleName; #REQUIRED>+<!ATTLIST draw:gradient draw:style %gradient-style; #REQUIRED>+<!ATTLIST draw:gradient draw:cx %coordinate; #IMPLIED>+<!ATTLIST draw:gradient draw:cy %coordinate; #IMPLIED>+<!ATTLIST draw:gradient draw:start-color %color; #IMPLIED>+<!ATTLIST draw:gradient draw:end-color %color; #IMPLIED>+<!ATTLIST draw:gradient draw:start-intensity %percentage; #IMPLIED>+<!ATTLIST draw:gradient draw:end-intensity %percentage; #IMPLIED>+<!ATTLIST draw:gradient draw:angle %integer; #IMPLIED>+<!ATTLIST draw:gradient draw:border %percentage; #IMPLIED>++<!ELEMENT draw:hatch EMPTY >+<!ATTLIST draw:hatch draw:name %styleName; #REQUIRED>+<!ATTLIST draw:hatch draw:style (single|double|triple) #REQUIRED >+<!ATTLIST draw:hatch draw:color %color; #IMPLIED>+<!ATTLIST draw:hatch draw:distance %length; #IMPLIED>+<!ATTLIST draw:hatch draw:rotation %integer; #IMPLIED>+++<!ELEMENT draw:fill-image EMPTY >+<!ATTLIST draw:fill-image draw:name %styleName; #REQUIRED>+<!ATTLIST draw:fill-image xlink:href %uriReference; #REQUIRED>+<!ATTLIST draw:fill-image xlink:type (simple) #IMPLIED>+<!ATTLIST draw:fill-image xlink:show (embed) #IMPLIED>+<!ATTLIST draw:fill-image xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:fill-image svg:width %length; #IMPLIED>+<!ATTLIST draw:fill-image svg:height %length; #IMPLIED>++<!ELEMENT draw:transparency EMPTY>+<!ATTLIST draw:transparency draw:name %styleName; #REQUIRED>+<!ATTLIST draw:transparency draw:style %gradient-style; #REQUIRED>+<!ATTLIST draw:transparency draw:cx %coordinate; #IMPLIED>+<!ATTLIST draw:transparency draw:cy %coordinate; #IMPLIED>+<!ATTLIST draw:transparency draw:start %percentage; #IMPLIED>+<!ATTLIST draw:transparency draw:end %percentage; #IMPLIED>+<!ATTLIST draw:transparency draw:angle %integer; #IMPLIED>+<!ATTLIST draw:transparency draw:border %percentage; #IMPLIED>++<!ELEMENT draw:marker EMPTY>+<!ATTLIST draw:marker draw:name %styleName; #REQUIRED>+<!ATTLIST draw:marker %draw-viewbox; >+<!ATTLIST draw:marker svg:d %pathData; #REQUIRED>++<!ELEMENT draw:stroke-dash EMPTY>+<!ATTLIST draw:stroke-dash draw:name %styleName; #REQUIRED>+<!ATTLIST draw:stroke-dash draw:style (rect|round) #IMPLIED>+<!ATTLIST draw:stroke-dash draw:dots1 %integer; #IMPLIED>+<!ATTLIST draw:stroke-dash draw:dots1-length %length; #IMPLIED>+<!ATTLIST draw:stroke-dash draw:dots2 %integer; #IMPLIED>+<!ATTLIST draw:stroke-dash draw:dots2-length %length; #IMPLIED>+<!ATTLIST draw:stroke-dash draw:distance %length; #IMPLIED>++<!-- stroke attributes -->+<!ATTLIST style:properties draw:stroke (none|dash|solid) #IMPLIED>+<!ATTLIST style:properties draw:stroke-dash CDATA #IMPLIED>+<!ATTLIST style:properties svg:stroke-width %length; #IMPLIED>+<!ATTLIST style:properties svg:stroke-color %color; #IMPLIED>+<!ATTLIST style:properties draw:marker-start %styleName; #IMPLIED>+<!ATTLIST style:properties draw:marker-end %styleName; #IMPLIED>+<!ATTLIST style:properties draw:marker-start-width %length; #IMPLIED>+<!ATTLIST style:properties draw:marker-end-width %length; #IMPLIED>+<!ATTLIST style:properties draw:marker-start-center %boolean; #IMPLIED>+<!ATTLIST style:properties draw:marker-end-center %boolean; #IMPLIED>+<!ATTLIST style:properties svg:stroke-opacity %floatOrPercentage; #IMPLIED>+<!ATTLIST style:properties svg:stroke-linejoin (miter|round|bevel|middle|none|inherit) #IMPLIED>++<!-- text attributes -->+<!ATTLIST style:properties draw:auto-grow-width %boolean; #IMPLIED>+<!ATTLIST style:properties draw:auto-grow-height %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fit-to-size %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fit-to-contour %boolean; #IMPLIED>+<!ATTLIST style:properties draw:textarea-horizontal-align ( left | center | right | justify ) #IMPLIED>+<!ATTLIST style:properties draw:textarea-vertical-align ( top | middle | bottom | justify ) #IMPLIED>+<!ATTLIST style:properties draw:writing-mode (lr-tb|tb-rl) "lr-tb">++<!-- fill attributes -->+<!ATTLIST style:properties draw:fill (none|solid|bitmap|gradient|hatch) #IMPLIED>+<!ATTLIST style:properties draw:fill-color %color; #IMPLIED>+<!ATTLIST style:properties draw:fill-gradient-name %styleName; #IMPLIED>+<!ATTLIST style:properties draw:gradient-step-count CDATA #IMPLIED>+<!ATTLIST style:properties draw:fill-hatch-name %styleName; #IMPLIED>+<!ATTLIST style:properties draw:fill-hatch-solid %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fill-image-name %styleName; #IMPLIED>+<!ATTLIST style:properties style:repeat (no-repeat|repeat|stretch) #IMPLIED>+<!ATTLIST style:properties draw:fill-image-width %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties draw:fill-image-height %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties draw:fill-image-ref-point-x %percentage; #IMPLIED>+<!ATTLIST style:properties draw:fill-image-ref-point-y %percentage; #IMPLIED>+<!ATTLIST style:properties draw:fill-image-ref-point %rectanglePoint; #IMPLIED>+<!ATTLIST style:properties draw:tile-repeat-offset CDATA #IMPLIED>+<!ATTLIST style:properties draw:transparency %percentage; #IMPLIED>+<!ATTLIST style:properties draw:transparency-name %styleName; #IMPLIED>++<!-- graphic attributes -->+<!ATTLIST style:properties draw:color-mode (greyscale|mono|watermark|standard) #IMPLIED>+<!ATTLIST style:properties draw:luminance %percentage; #IMPLIED>+<!ATTLIST style:properties draw:contrast %percentage; #IMPLIED>+<!ATTLIST style:properties draw:gamma %percentage; #IMPLIED>+<!ATTLIST style:properties draw:red %percentage; #IMPLIED>+<!ATTLIST style:properties draw:green %percentage; #IMPLIED>+<!ATTLIST style:properties draw:blue %percentage; #IMPLIED>+<!ATTLIST style:properties draw:color-inversion %boolean; #IMPLIED>+<!ATTLIST style:properties draw:mirror %boolean; #IMPLIED>++<!-- shadow attributes -->+<!ATTLIST style:properties draw:shadow (visible|hidden) #IMPLIED>+<!ATTLIST style:properties draw:shadow-offset-x %length; #IMPLIED>+<!ATTLIST style:properties draw:shadow-offset-y %length; #IMPLIED>+<!ATTLIST style:properties draw:shadow-color %color; #IMPLIED>+<!ATTLIST style:properties draw:shadow-transparency CDATA #IMPLIED>++<!-- connector attributes -->+<!ATTLIST style:properties draw:start-line-spacing-horizontal %distance; #IMPLIED>+<!ATTLIST style:properties draw:start-line-spacing-vertical %distance; #IMPLIED>+<!ATTLIST style:properties draw:end-line-spacing-horizontal %distance; #IMPLIED>+<!ATTLIST style:properties draw:end-line-spacing-vertical %distance; #IMPLIED>++<!-- measure attributes -->+<!ATTLIST style:properties draw:line-distance %distance; #IMPLIED>+<!ATTLIST style:properties draw:guide-overhang %distance; #IMPLIED>+<!ATTLIST style:properties draw:guide-distance %distance; #IMPLIED>+<!ATTLIST style:properties draw:start-guide %distance; #IMPLIED>+<!ATTLIST style:properties draw:end-guide %distance; #IMPLIED>+<!ATTLIST style:properties draw:measure-align (automatic|left-outside|inside|right-outside) #IMPLIED>+<!ATTLIST style:properties draw:measure-vertical-align (automatic|above|below|center) #IMPLIED>+<!ATTLIST style:properties draw:unit (automatic|mm|cm|m|km|pt|pc|inch|ft|mi) #IMPLIED>+<!ATTLIST style:properties draw:show-unit %boolean; #IMPLIED>+<!ATTLIST style:properties draw:placing (below|above) #IMPLIED>+<!ATTLIST style:properties draw:parallel %boolean; #IMPLIED>+<!ATTLIST style:properties draw:decimal-places %nonNegativeLength; #IMPLIED>++<!-- frame attributes -->+<!ATTLIST style:properties draw:frame-display-scrollbar %boolean; #IMPLIED>+<!ATTLIST style:properties draw:frame-display-border %boolean; #IMPLIED>+<!ATTLIST style:properties draw:frame-margin-horizontal %nonNegativePixelLength; #IMPLIED>+<!ATTLIST style:properties draw:frame-margin-vertical %nonNegativePixelLength; #IMPLIED>+<!ATTLIST style:properties draw:size-protect %boolean; #IMPLIED>+<!ATTLIST style:properties draw:move-protect %boolean; #IMPLIED>++<!-- ole object attributes -->+<!ATTLIST style:properties draw:visible-area-left %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties draw:visible-area-top %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties draw:visible-area-width %positiveLength; #IMPLIED>+<!ATTLIST style:properties draw:visible-area-height %positiveLength; #IMPLIED>++<!-- fontwork attributes -->+<!ATTLIST style:properties draw:fontwork-style (rotate|upright|slant-x|slant-y|none) #IMPLIED>+<!ATTLIST style:properties draw:fontwork-adjust (left|right|autosize|center) #IMPLIED>+<!ATTLIST style:properties draw:fontwork-distance %distance; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-start %distance; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-mirror %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-outline %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-shadow (normal|slant|none) #IMPLIED>+<!ATTLIST style:properties draw:fontwork-shadow-color %color; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-shadow-offset-x %distance; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-shadow-offset-y %distance; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-form (none|top-circle|bottom-circle|left-circle|right-circle|top-arc|bottom-arc|left-arc|right-arc|button1|button2|button3|button4) #IMPLIED>+<!ATTLIST style:properties draw:fontwork-hide-form %boolean; #IMPLIED>+<!ATTLIST style:properties draw:fontwork-shadow-transparence %percentage; #IMPLIED>++<!-- caption attributes -->+<!ATTLIST style:properties draw:caption-type (straight-line|angled-line|angled-connector-line) #IMPLIED>+<!ATTLIST style:properties draw:caption-angle-type (fixed|free) #IMPLIED>+<!ATTLIST style:properties draw:caption-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties draw:caption-gap %distance; #IMPLIED>+<!ATTLIST style:properties draw:caption-escape-direction (horizontal|vertical|auto) #IMPLIED>+<!ATTLIST style:properties draw:caption-escape %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties draw:caption-line-length %distance; #IMPLIED>+<!ATTLIST style:properties draw:caption-fit-line-length %boolean; #IMPLIED>++<!-- Animations -->+<!ELEMENT presentation:sound EMPTY>+<!ATTLIST presentation:sound xlink:href %uriReference; #REQUIRED>+<!ATTLIST presentation:sound xlink:type (simple) #FIXED "simple">+<!ATTLIST presentation:sound xlink:show (new|replace) #IMPLIED>+<!ATTLIST presentation:sound xlink:actuate (onRequest) "onRequest">+<!ATTLIST presentation:sound presentation:play-full %boolean; #IMPLIED>++<!ELEMENT presentation:show-shape (presentation:sound)?>+<!ATTLIST presentation:show-shape draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:show-shape presentation:effect %presentationEffects; "none">+<!ATTLIST presentation:show-shape presentation:direction %presentationEffectDirections; "none">+<!ATTLIST presentation:show-shape presentation:speed %presentationSpeeds; "medium">+<!ATTLIST presentation:show-shape presentation:start-scale %percentage; "100%">+<!ATTLIST presentation:show-shape presentation:path-id CDATA #IMPLIED >++<!ELEMENT presentation:show-text (presentation:sound)?>+<!ATTLIST presentation:show-text draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:show-text presentation:effect %presentationEffects; "none">+<!ATTLIST presentation:show-text presentation:direction %presentationEffectDirections; "none">+<!ATTLIST presentation:show-text presentation:speed %presentationSpeeds; "medium">+<!ATTLIST presentation:show-text presentation:start-scale %percentage; "100%">+<!ATTLIST presentation:show-text presentation:path-id CDATA #IMPLIED >++<!ELEMENT presentation:hide-shape (presentation:sound)?>+<!ATTLIST presentation:hide-shape draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:hide-shape presentation:effect %presentationEffects; "none">+<!ATTLIST presentation:hide-shape presentation:direction %presentationEffectDirections; "none">+<!ATTLIST presentation:hide-shape presentation:speed %presentationSpeeds; "medium">+<!ATTLIST presentation:hide-shape presentation:start-scale %percentage; "100%">+<!ATTLIST presentation:hide-shape presentation:path-id CDATA #IMPLIED >++<!ELEMENT presentation:hide-text (presentation:sound)?>+<!ATTLIST presentation:hide-text draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:hide-text presentation:effect %presentationEffects; "none">+<!ATTLIST presentation:hide-text presentation:direction %presentationEffectDirections; "none">+<!ATTLIST presentation:hide-text presentation:speed %presentationSpeeds; "medium">+<!ATTLIST presentation:hide-text presentation:start-scale %percentage; "100%">+<!ATTLIST presentation:hide-text presentation:path-id CDATA #IMPLIED >++<!ELEMENT presentation:dim (presentation:sound)?>+<!ATTLIST presentation:dim draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:dim draw:color %color; #REQUIRED>++<!ELEMENT presentation:play EMPTY>+<!ATTLIST presentation:play draw:shape-id CDATA #REQUIRED>+<!ATTLIST presentation:play presentation:speed %presentationSpeeds; "medium">++<!ELEMENT presentation:animations (presentation:show-shape|presentation:show-text|presentation:hide-shape|presentation:hide-text|presentation:dim|presentation:play)*>++<!ELEMENT presentation:show EMPTY>+<!ATTLIST presentation:show presentation:name %styleName; #REQUIRED>+<!ATTLIST presentation:show presentation:pages CDATA #REQUIRED>++<!ELEMENT presentation:settings (presentation:show)*>+<!ATTLIST presentation:settings presentation:start-page %styleName; #IMPLIED>+<!ATTLIST presentation:settings presentation:show %styleName; #IMPLIED>+<!ATTLIST presentation:settings presentation:full-screen %boolean; "true">+<!ATTLIST presentation:settings presentation:endless %boolean; "false">+<!ATTLIST presentation:settings presentation:pause %timeDuration; #IMPLIED>+<!ATTLIST presentation:settings presentation:show-logo %boolean; "false">+<!ATTLIST presentation:settings presentation:force-manual %boolean; "false">+<!ATTLIST presentation:settings presentation:mouse-visible %boolean; "true">+<!ATTLIST presentation:settings presentation:mouse-as-pen %boolean; "false">+<!ATTLIST presentation:settings presentation:start-with-navigator %boolean; "false">+<!ATTLIST presentation:settings presentation:animations (enabled|disabled) "enabled">+<!ATTLIST presentation:settings presentation:stay-on-top %boolean; "false">+<!ATTLIST presentation:settings presentation:transition-on-click (enabled|disabled) "enabled">++<!-- Drawing page -->+<!ELEMENT draw:page (office:forms?,(%shapes;)*,presentation:animations?,presentation:notes?)>+<!ATTLIST draw:page draw:name %string; #IMPLIED>+<!ATTLIST draw:page draw:style-name %styleName; #IMPLIED>+<!ATTLIST draw:page draw:master-page-name %styleName; #REQUIRED>+<!ATTLIST draw:page presentation:presentation-page-layout-name %styleName; #IMPLIED>+<!ATTLIST draw:page draw:id %nonNegativeInteger; #IMPLIED>+<!ATTLIST draw:page xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:page xlink:type (simple) #IMPLIED>+<!ATTLIST draw:page xlink:show (replace) #IMPLIED>+<!ATTLIST draw:page xlink:actuate (onRequest) #IMPLIED>++<!-- Presentation notes -->+<!ELEMENT presentation:notes (%shapes;)*>+<!ATTLIST presentation:notes style:page-master-name %styleName; #IMPLIED>++<!-- presentation page layouts -->+<!ELEMENT style:presentation-page-layout (presentation:placeholder)* >+<!ATTLIST style:presentation-page-layout style:name %styleName; #REQUIRED>+<!ELEMENT presentation:placeholder EMPTY >+<!ATTLIST presentation:placeholder presentation:object (title|outline|subtitle|text|graphic|object|chart|orgchart|page|notes|handout) #REQUIRED>+<!ATTLIST presentation:placeholder svg:x %coordinateOrPercentage; #REQUIRED>+<!ATTLIST presentation:placeholder svg:y %coordinateOrPercentage; #REQUIRED>+<!ATTLIST presentation:placeholder svg:width %lengthOrPercentage; #REQUIRED>+<!ATTLIST presentation:placeholder svg:height %lengthOrPercentage; #REQUIRED>++<!-- presentation page attributes -->+<!ATTLIST style:properties presentation:transition-type (manual|automatic|semi-automatic) #IMPLIED >+<!ATTLIST style:properties presentation:transition-style (none|fade-from-left|fade-from-top|fade-from-right|fade-from-bottom|fade-to-center|fade-from-center|move-from-left|move-from-top|move-from-right|move-from-bottom|roll-from-top|roll-from-left|roll-from-right|roll-from-bottom|vertical-stripes|horizontal-stripes|clockwise|counterclockwise|fade-from-upperleft|fade-from-upperright|fade-from-lowerleft|fade-from-lowerright|close-vertical|close-horizontal|open-vertical|open-horizontal|spiralin-left|spiralin-right|spiralout-left|spiralout-right|dissolve|wavyline-from-left|wavyline-from-top|wavyline-from-right|wavyline-from-bottom|random|stretch-from-left|stretch-from-top|stretch-from-right|stretch-from-bottom|vertical-lines|horizontal-lines) #IMPLIED >+<!ATTLIST style:properties presentation:transition-speed %presentationSpeeds; #IMPLIED >+<!ATTLIST style:properties presentation:duration %timeDuration; #IMPLIED>+<!ATTLIST style:properties presentation:visibility (visible|hidden) #IMPLIED>+<!ATTLIST style:properties draw:background-size (full|border) #IMPLIED>+<!ATTLIST style:properties presentation:background-objects-visible %boolean; #IMPLIED>+<!ATTLIST style:properties presentation:background-visible %boolean; #IMPLIED>+++<!-- text boxes -->+<!ELEMENT draw:text-box (office:events?,draw:image-map?,+ %sectionText;)>+<!ATTLIST draw:text-box %draw-style-name;>+<!ATTLIST draw:text-box %draw-transform; >+<!ATTLIST draw:text-box draw:name %string; #IMPLIED>+<!ATTLIST draw:text-box draw:chain-next-name %string; #IMPLIED>++<!ATTLIST draw:text-box %text-anchor;>+<!ATTLIST draw:text-box %draw-position;>+<!ATTLIST draw:text-box %draw-end-position; >+<!ATTLIST draw:text-box %table-background; >+<!ATTLIST draw:text-box svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:text-box svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:text-box style:rel-width %percentage; #IMPLIED>+<!ATTLIST draw:text-box style:rel-height %percentage; #IMPLIED>+<!ATTLIST draw:text-box fo:min-height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:text-box %zindex;>+<!ATTLIST draw:text-box %presentation-class; >+<!ATTLIST draw:text-box draw:id %draw-shape-id;>+<!ATTLIST draw:text-box draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:text-box draw:corner-radius %nonNegativeLength; #IMPLIED>++<!-- image -->+<!ELEMENT draw:image (office:binary-data?,office:events?,draw:image-map?,svg:desc?,(draw:contour-polygon|draw:contour-path)?)>+<!ATTLIST draw:image %draw-transform; >+<!ATTLIST draw:image %draw-style-name;>+<!ATTLIST draw:image draw:name %string; #IMPLIED>+<!ATTLIST draw:image xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:image xlink:type (simple) #IMPLIED>+<!ATTLIST draw:image xlink:show (embed) #IMPLIED>+<!ATTLIST draw:image xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:image draw:filter-name %string; #IMPLIED>+<!ATTLIST draw:image %text-anchor;>+<!ATTLIST draw:image %draw-position;>+<!ATTLIST draw:image %draw-end-position; >+<!ATTLIST draw:image %table-background; >+<!ATTLIST draw:image svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:image svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:image %presentation-class; >+<!ATTLIST draw:image %zindex;>+<!ATTLIST draw:image draw:id %draw-shape-id;>+<!ATTLIST draw:image draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:image style:rel-width %percentage; #IMPLIED>+<!ATTLIST draw:image style:rel-height %percentage; #IMPLIED>++<!-- objects -->+<!ELEMENT draw:thumbnail EMPTY>+<!ATTLIST draw:thumbnail xlink:href %uriReference; #REQUIRED>+<!ATTLIST draw:thumbnail xlink:type (simple) #IMPLIED>+<!ATTLIST draw:thumbnail xlink:show (embed) #IMPLIED>+<!ATTLIST draw:thumbnail xlink:actuate (onLoad) #IMPLIED>++<!ELEMENT math:math ANY> <!-- dummy (we have no MathML DTD currently)-->+<!ELEMENT draw:object (draw:thumbnail?,(office:document|math:math)?,office:events?, draw:image-map?, svg:desc?,(draw:contour-polygon|draw:contour-path)?)>+<!ATTLIST draw:object %draw-style-name;>+<!ATTLIST draw:object draw:name %string; #IMPLIED>+<!ATTLIST draw:object xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:object xlink:type (simple) #IMPLIED>+<!ATTLIST draw:object xlink:show (embed) #IMPLIED>+<!ATTLIST draw:object xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:object %text-anchor;>+<!ATTLIST draw:object %draw-position;>+<!ATTLIST draw:object %draw-end-position; >+<!ATTLIST draw:object %table-background; >+<!ATTLIST draw:object svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:object svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:object %presentation-class; >+<!ATTLIST draw:object %zindex;>+<!ATTLIST draw:object draw:id %draw-shape-id;>+<!ATTLIST draw:object draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:object draw:notify-on-update-of-ranges %string; #IMPLIED>+<!ATTLIST draw:object style:rel-width %percentage; #IMPLIED>+<!ATTLIST draw:object style:rel-height %percentage; #IMPLIED>++<!ELEMENT draw:object-ole (office:binary-data?|office:events?|draw:image-map?|svg:desc?|draw:contour-polygon?|draw:contour-path?|draw:thumbnail?)>+<!ATTLIST draw:object-ole draw:class-id CDATA #IMPLIED>+<!ATTLIST draw:object-ole %draw-style-name;>+<!ATTLIST draw:object-ole draw:name %string; #IMPLIED>+<!ATTLIST draw:object-ole xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:object-ole xlink:type (simple) #IMPLIED>+<!ATTLIST draw:object-ole xlink:show (embed) #IMPLIED>+<!ATTLIST draw:object-ole xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:object-ole %text-anchor;>+<!ATTLIST draw:object-ole %draw-position;>+<!ATTLIST draw:object-ole %draw-end-position; >+<!ATTLIST draw:object-ole %table-background; >+<!ATTLIST draw:object-ole svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:object-ole svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:object-ole %presentation-class; >+<!ATTLIST draw:object-ole %zindex;>+<!ATTLIST draw:object-ole draw:id %draw-shape-id;>+<!ATTLIST draw:object-ole draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:object-ole style:rel-width %percentage; #IMPLIED>+<!ATTLIST draw:object-ole style:rel-height %percentage; #IMPLIED>++<!ELEMENT svg:desc (#PCDATA)>++<!ELEMENT draw:contour-polygon EMPTY>+<!ATTLIST draw:contour-polygon svg:width %coordinate; #REQUIRED>+<!ATTLIST draw:contour-polygon svg:height %coordinate; #REQUIRED>+<!ATTLIST draw:contour-polygon %draw-viewbox;>+<!ATTLIST draw:contour-polygon draw:points %points; #REQUIRED>+<!ATTLIST draw:contour-polygon draw:recreate-on-edit %boolean; #IMPLIED>++<!ELEMENT draw:contour-path EMPTY>+<!ATTLIST draw:contour-path svg:width %coordinate; #REQUIRED>+<!ATTLIST draw:contour-path svg:height %coordinate; #REQUIRED>+<!ATTLIST draw:contour-path %draw-viewbox;>+<!ATTLIST draw:contour-path svg:d %pathData; #REQUIRED>+<!ATTLIST draw:contour-path draw:recreate-on-edit %boolean; #IMPLIED>++<!-- hyperlink -->+<!ELEMENT draw:a (draw:image|draw:text-box)>+<!ATTLIST draw:a xlink:href %uriReference; #REQUIRED>+<!ATTLIST draw:a xlink:type (simple) #FIXED "simple">+<!ATTLIST draw:a xlink:show (new|replace) #IMPLIED>+<!ATTLIST draw:a xlink:actuate (onRequest) "onRequest">+<!ATTLIST draw:a office:name %string; #IMPLIED>+<!ATTLIST draw:a office:target-frame-name %string; #IMPLIED>+<!ATTLIST draw:a office:server-map %boolean; "false">++<!-- 3d properties -->+<!ATTLIST style:properties dr3d:horizontal-segments %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties dr3d:vertical-segments %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties dr3d:edge-rounding %percentage; #IMPLIED>+<!ATTLIST style:properties dr3d:edge-rounding-mode (correct|attractive) #IMPLIED>+<!ATTLIST style:properties dr3d:back-scale %percentage; #IMPLIED>+<!ATTLIST style:properties dr3d:end-angle %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties dr3d:depth %length; #IMPLIED>+<!ATTLIST style:properties dr3d:backface-culling (enabled|disabled) #IMPLIED>+<!ATTLIST style:properties dr3d:lighting-mode (standard|double-sided) #IMPLIED>+<!ATTLIST style:properties dr3d:normals-kind (object|flat|sphere) #IMPLIED>+<!ATTLIST style:properties dr3d:normals-direction (normal|inverse) #IMPLIED>+<!ATTLIST style:properties dr3d:texture-generation-mode-x (object|parallel|sphere) #IMPLIED>+<!ATTLIST style:properties dr3d:texture-generation-mode-y (object|parallel|sphere) #IMPLIED>+<!ATTLIST style:properties dr3d:texture-kind (luminance|intesity|color) #IMPLIED>+<!ATTLIST style:properties dr3d:texture-filter (enabled|disabled) #IMPLIED>+<!ATTLIST style:properties dr3d:texture-mode (replace|modulate|blend) #IMPLIED>+<!ATTLIST style:properties dr3d:ambient-color %color; #IMPLIED>+<!ATTLIST style:properties dr3d:emissive-color %color; #IMPLIED>+<!ATTLIST style:properties dr3d:specular-color %color; #IMPLIED>+<!ATTLIST style:properties dr3d:diffuse-color %color; #IMPLIED>+<!ATTLIST style:properties dr3d:shininess %percentage; #IMPLIED>+<!ATTLIST style:properties dr3d:shadow (visible|hidden) #IMPLIED>++<!ELEMENT dr3d:light EMPTY>+<!ATTLIST dr3d:light dr3d:diffuse-color %color; #IMPLIED>+<!ATTLIST dr3d:light dr3d:direction %vector3D; #REQUIRED>+<!ATTLIST dr3d:light dr3d:enabled %boolean; #IMPLIED>+<!ATTLIST dr3d:light dr3d:specular %boolean; #IMPLIED>++<!ENTITY % shapes3d "(dr3d:scene|dr3d:extrude|dr3d:sphere|dr3d:rotate|dr3d:cube)">++<!ELEMENT dr3d:cube EMPTY>+<!ATTLIST dr3d:cube dr3d:transform CDATA #IMPLIED>+<!ATTLIST dr3d:cube dr3d:min-edge %vector3D; #IMPLIED>+<!ATTLIST dr3d:cube dr3d:max-edge %vector3D; #IMPLIED>+<!ATTLIST dr3d:cube %zindex;>+<!ATTLIST dr3d:cube draw:id %draw-shape-id;>+<!ATTLIST dr3d:cube %draw-end-position; >+<!ATTLIST dr3d:cube %table-background; >+<!ATTLIST dr3d:cube %draw-style-name; >+<!ATTLIST dr3d:cube draw:layer %layerName; #IMPLIED>++<!ELEMENT dr3d:sphere EMPTY>+<!ATTLIST dr3d:sphere dr3d:transform CDATA #IMPLIED>+<!ATTLIST dr3d:sphere dr3d:center %vector3D; #IMPLIED>+<!ATTLIST dr3d:sphere dr3d:size %vector3D; #IMPLIED>+<!ATTLIST dr3d:sphere %zindex;>+<!ATTLIST dr3d:sphere draw:id %draw-shape-id;>+<!ATTLIST dr3d:sphere %draw-end-position; >+<!ATTLIST dr3d:sphere %table-background; >+<!ATTLIST dr3d:sphere %draw-style-name; >+<!ATTLIST dr3d:sphere draw:layer %layerName; #IMPLIED>++<!ELEMENT dr3d:extrude EMPTY>+<!ATTLIST dr3d:extrude dr3d:transform CDATA #IMPLIED>+<!ATTLIST dr3d:extrude %draw-viewbox;>+<!ATTLIST dr3d:extrude svg:d %pathData; #REQUIRED >+<!ATTLIST dr3d:extrude %zindex;>+<!ATTLIST dr3d:extrude draw:id %draw-shape-id;>+<!ATTLIST dr3d:extrude %draw-end-position; >+<!ATTLIST dr3d:extrude %table-background; >+<!ATTLIST dr3d:extrude %draw-style-name; >+<!ATTLIST dr3d:extrude draw:layer %layerName; #IMPLIED>++<!ELEMENT dr3d:rotate EMPTY>+<!ATTLIST dr3d:rotate dr3d:transform CDATA #IMPLIED>+<!ATTLIST dr3d:rotate %draw-viewbox;>+<!ATTLIST dr3d:rotate svg:d %pathData; #REQUIRED >+<!ATTLIST dr3d:rotate %zindex;>+<!ATTLIST dr3d:rotate draw:id %draw-shape-id;>+<!ATTLIST dr3d:rotate %draw-end-position; >+<!ATTLIST dr3d:rotate %table-background; >+<!ATTLIST dr3d:rotate %draw-style-name; >+<!ATTLIST dr3d:rotate draw:layer %layerName; #IMPLIED>++<!ELEMENT dr3d:scene (dr3d:light*,(%shapes3d;)*)>+<!ATTLIST dr3d:scene %draw-style-name; >+<!ATTLIST dr3d:scene svg:x %coordinate; #IMPLIED>+<!ATTLIST dr3d:scene svg:y %coordinate; #IMPLIED>+<!ATTLIST dr3d:scene svg:width %length; #IMPLIED>+<!ATTLIST dr3d:scene svg:height %length; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:vrp %vector3D; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:vpn %vector3D; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:vup %vector3D; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:projection (parallel|perspective) #IMPLIED>+<!ATTLIST dr3d:scene dr3d:transform CDATA #IMPLIED>+<!ATTLIST dr3d:scene dr3d:distance %length; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:focal-length %length; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:shadow-slant %nonNegativeInteger; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:shade-mode (flat|phong|gouraud|draft) #IMPLIED>+<!ATTLIST dr3d:scene dr3d:ambient-color %color; #IMPLIED>+<!ATTLIST dr3d:scene dr3d:lighting-mode %boolean; #IMPLIED>+<!ATTLIST dr3d:scene %zindex;>+<!ATTLIST dr3d:scene draw:id %draw-shape-id;>+<!ATTLIST dr3d:scene %draw-end-position; >+<!ATTLIST dr3d:scene %table-background; >++<!-- layer -->++<!ELEMENT draw:layer-set (draw:layer*)>++<!ELEMENT draw:layer EMPTY>+<!ATTLIST draw:layer draw:name %layerName; #REQUIRED>++<!-- events -->+<!ELEMENT presentation:event (presentation:sound)?>+<!ATTLIST presentation:event %event-name;>+<!ATTLIST presentation:event presentation:action (none|previous-page|next-page|first-page|last-page|hide|stop|execute|show|verb|fade-out|sound) #REQUIRED>+<!ATTLIST presentation:event presentation:effect %presentationEffects; "none">+<!ATTLIST presentation:event presentation:direction %presentationEffectDirections; "none">+<!ATTLIST presentation:event presentation:speed %presentationSpeeds; "medium">+<!ATTLIST presentation:event presentation:start-scale %percentage; "100%">+<!ATTLIST presentation:event xlink:href %uriReference; #IMPLIED>+<!ATTLIST presentation:event xlink:type (simple) #IMPLIED>+<!ATTLIST presentation:event xlink:show (embed) #IMPLIED>+<!ATTLIST presentation:event xlink:actuate (onRequest) #IMPLIED>+<!ATTLIST presentation:event presentation:verb %nonNegativeInteger; #IMPLIED>++<!-- applets -->+<!ELEMENT draw:applet (draw:thumbnail?, draw:param*, svg:desc?)>+<!ATTLIST draw:applet xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:applet xlink:type (simple) #IMPLIED>+<!ATTLIST draw:applet xlink:show (embed) #IMPLIED>+<!ATTLIST draw:applet xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:applet draw:code CDATA #REQUIRED>+<!ATTLIST draw:applet draw:object CDATA #IMPLIED>+<!ATTLIST draw:applet draw:archive CDATA #IMPLIED>+<!ATTLIST draw:applet draw:may-script %boolean; "false">+<!ATTLIST draw:applet draw:name CDATA #IMPLIED>+<!ATTLIST draw:applet %draw-style-name;>+<!ATTLIST draw:applet svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:applet svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:applet %zindex;>+<!ATTLIST draw:applet draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:applet %draw-position;>+<!ATTLIST draw:applet %draw-end-position; >++<!-- plugins -->+<!ELEMENT draw:plugin (draw:thumbnail?, draw:param*, svg:desc?)>+<!ATTLIST draw:plugin xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:plugin xlink:type (simple) #IMPLIED>+<!ATTLIST draw:plugin xlink:show (embed) #IMPLIED>+<!ATTLIST draw:plugin xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:plugin draw:mime-type CDATA #IMPLIED>+<!ATTLIST draw:plugin draw:name CDATA #IMPLIED>+<!ATTLIST draw:plugin %draw-style-name;>+<!ATTLIST draw:plugin svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:plugin svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:plugin %zindex;>+<!ATTLIST draw:plugin draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:plugin %draw-position;>+<!ATTLIST draw:plugin %draw-end-position; >++<!-- Paramaters -->+<!ELEMENT draw:param EMPTY>+<!ATTLIST draw:param draw:name CDATA #IMPLIED>+<!ATTLIST draw:param draw:value CDATA #IMPLIED>++<!-- Floating Frames -->+<!ELEMENT draw:floating-frame (draw:thumbnail?, svg:desc?)>+<!ATTLIST draw:floating-frame xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:floating-frame xlink:type (simple) #IMPLIED>+<!ATTLIST draw:floating-frame xlink:show (embed) #IMPLIED>+<!ATTLIST draw:floating-frame xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST draw:floating-frame draw:name CDATA #IMPLIED>+<!ATTLIST draw:floating-frame draw:frame-name CDATA #IMPLIED>+<!ATTLIST draw:floating-frame %draw-style-name;>+<!ATTLIST draw:floating-frame svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:floating-frame svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST draw:floating-frame %zindex;>+<!ATTLIST draw:floating-frame draw:layer %layerName; #IMPLIED>+<!ATTLIST draw:floating-frame %draw-position;>+<!ATTLIST draw:floating-frame %draw-end-position; >++<!-- Image Maps -->+<!ELEMENT draw:image-map+ (draw:area-rectangle|draw:area-circle|draw:area-polygon)*>++<!ELEMENT draw:area-rectangle (svg:desc?,office:events?)>+<!ATTLIST draw:area-rectangle xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:area-rectangle xlink:type (simple) #IMPLIED>+<!ATTLIST draw:area-rectangle office:target-frame-name CDATA #IMPLIED>+<!ATTLIST draw:area-rectangle xlink:show (new|replace) #IMPLIED>+<!ATTLIST draw:area-rectangle office:name CDATA #IMPLIED>+<!ATTLIST draw:area-rectangle draw:nohref (nohref) #IMPLIED>+<!ATTLIST draw:area-rectangle svg:x %coordinate; #REQUIRED>+<!ATTLIST draw:area-rectangle svg:y %coordinate; #REQUIRED>+<!ATTLIST draw:area-rectangle svg:width %coordinate; #REQUIRED>+<!ATTLIST draw:area-rectangle svg:height %coordinate; #REQUIRED>++<!ELEMENT draw:area-circle (svg:desc?,office:events?)>+<!ATTLIST draw:area-circle xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:area-circle xlink:type (simple) #IMPLIED>+<!ATTLIST draw:area-circle office:target-frame-name CDATA #IMPLIED>+<!ATTLIST draw:area-circle xlink:show (new|replace) #IMPLIED>+<!ATTLIST draw:area-circle office:name CDATA #IMPLIED>+<!ATTLIST draw:area-circle draw:nohref (nohref) #IMPLIED>+<!ATTLIST draw:area-circle svg:cx %coordinate; #REQUIRED>+<!ATTLIST draw:area-circle svg:cy %coordinate; #REQUIRED>+<!ATTLIST draw:area-circle svg:r %coordinate; #REQUIRED>++<!ELEMENT draw:area-polygon (svg:desc?,office:events?)>+<!ATTLIST draw:area-polygon xlink:href %uriReference; #IMPLIED>+<!ATTLIST draw:area-polygon xlink:type (simple) #IMPLIED>+<!ATTLIST draw:area-polygon office:target-frame-name CDATA #IMPLIED>+<!ATTLIST draw:area-polygon xlink:show (new|replace) #IMPLIED>+<!ATTLIST draw:area-polygon office:name CDATA #IMPLIED>+<!ATTLIST draw:area-polygon draw:nohref (nohref) #IMPLIED>+<!ATTLIST draw:area-polygon svg:x %coordinate; #REQUIRED>+<!ATTLIST draw:area-polygon svg:y %coordinate; #REQUIRED>+<!ATTLIST draw:area-polygon svg:width %coordinate; #REQUIRED>+<!ATTLIST draw:area-polygon svg:height %coordinate; #REQUIRED>+<!ATTLIST draw:area-polygon svg:points %points; #REQUIRED>+<!ATTLIST draw:area-polygon svg:viewBox CDATA #REQUIRED>++<!ENTITY % fields "text:date |+ text:time |+ text:page-number |+ text:page-continuation |+ text:sender-firstname |+ text:sender-lastname |+ text:sender-initials | + text:sender-title |+ text:sender-position |+ text:sender-email | + text:sender-phone-private |+ text:sender-fax | + text:sender-company |+ text:sender-phone-work |+ text:sender-street |+ text:sender-city |+ text:sender-postal-code |+ text:sender-country |+ text:sender-state-or-province |+ text:author-name |+ text:author-initials |+ text:placeholder |+ text:variable-set | + text:variable-get | + text:variable-input | + text:user-field-get | + text:user-field-input | + text:sequence | + text:expression | + text:text-input |+ text:database-display |+ text:database-next |+ text:database-row-select |+ text:database-row-number |+ text:database-name |+ text:initial-creator |+ text:creation-date |+ text:creation-time |+ text:description |+ text:user-defined |+ text:print-time |+ text:print-date |+ text:printed-by |+ text:title |+ text:subject |+ text:keywords |+ text:editing-cycles |+ text:editing-duration |+ text:modification-time |+ text:modification-date |+ text:creator |+ text:conditional-text |+ text:hidden-text |+ text:hidden-paragraph |+ text:chapter |+ text:file-name |+ text:template-name |+ text:page-variable-set |+ text:page-variable-get |+ text:execute-macro |+ text:dde-connection |+ text:reference-ref |+ text:sequence-ref |+ text:bookmark-ref |+ text:footnote-ref |+ text:endnote-ref |+ text:sheet-name |+ text:bibliography-mark |+ text:page-count |+ text:paragraph-count |+ text:word-count |+ text:character-count |+ text:table-count |+ text:image-count |+ text:object-count |+ office:annotation |+ text:script |+ text:measure" >++<!ENTITY % inline-text-elements "+ text:span|text:tab-stop|text:s|text:line-break|+ text:footnote|text:endnote|text:a|+ text:bookmark|text:bookmark-start|text:bookmark-end|+ text:reference-mark|text:reference-mark-start|+ text:reference-mark-end|%fields;|%shape;|+ text:toc-mark-start | text:toc-mark-end | + text:toc-mark | text:user-index-mark-start |+ text:user-index-mark-end | text:user-index-mark |+ text:alphabetical-index-mark-start |+ text:alphabetical-index-mark-end |+ text:alphabetical-index-mark |+ %change-marks; | draw:a | text:ruby">++<!ENTITY % inline-text "( #PCDATA | %inline-text-elements; )*">++<!ELEMENT text:p %inline-text;>+<!ELEMENT text:h %inline-text;>++<!ATTLIST text:p text:style-name %styleName; #IMPLIED>+<!ATTLIST text:p text:cond-style-name %styleName; #IMPLIED>++<!ATTLIST text:h text:style-name %styleName; #IMPLIED>+<!ATTLIST text:h text:cond-style-name %styleName; #IMPLIED>+<!ATTLIST text:h text:level %positiveInteger; "1">++<!ELEMENT text:span %inline-text;>+<!ATTLIST text:span text:style-name %styleName; #REQUIRED>++<!ELEMENT text:a (#PCDATA | office:events | %inline-text-elements;)*>+<!ATTLIST text:a xlink:href %uriReference; #REQUIRED>+<!ATTLIST text:a xlink:type (simple) #FIXED "simple">+<!ATTLIST text:a xlink:actuate (onRequest) "onRequest">+<!ATTLIST text:a xlink:show (new|replace) "replace">+<!ATTLIST text:a office:name %string; #IMPLIED>+<!ATTLIST text:a office:target-frame-name %string; #IMPLIED>+<!ATTLIST text:a text:style-name %styleName; #IMPLIED>+<!ATTLIST text:a text:visited-style-name %styleName; #IMPLIED>+++<!ELEMENT text:s EMPTY>+<!ATTLIST text:s text:c %positiveInteger; "1">++<!ELEMENT text:tab-stop EMPTY>++<!ELEMENT text:line-break EMPTY>+++<!ENTITY % list-items "((text:list-header,text:list-item*)|text:list-item+)">+<!ELEMENT text:ordered-list %list-items;>+<!ELEMENT text:unordered-list %list-items;>+++<!ATTLIST text:ordered-list text:style-name %styleName; #IMPLIED>+<!ATTLIST text:unordered-list text:style-name %styleName; #IMPLIED>++<!ATTLIST text:ordered-list text:continue-numbering %boolean; "false">++<!ELEMENT text:list-header (text:p|text:h)+>+<!ELEMENT text:list-item (text:p|text:h|text:ordered-list|text:unordered-list)+>++<!ATTLIST text:list-item text:restart-numbering %boolean; "false">+<!ATTLIST text:list-item text:start-value %positiveInteger; #IMPLIED>++<!ELEMENT text:list-style (text:list-level-style-number|+ text:list-level-style-bullet|+ text:list-level-style-image)+>++<!ATTLIST text:list-style style:name %styleName; #IMPLIED>++<!ATTLIST text:list-style text:consecutive-numbering %boolean; "false">+++<!ELEMENT text:list-level-style-number (style:properties?)>++<!ATTLIST text:list-level-style-number text:level %positiveInteger;+ #REQUIRED>+<!ATTLIST text:list-level-style-number text:style-name %styleName; #IMPLIED>++<!ATTLIST text:list-level-style-number style:num-format %string; #REQUIRED>+<!ATTLIST text:list-level-style-number style:num-prefix %string; #IMPLIED>+<!ATTLIST text:list-level-style-number style:num-suffix %string; #IMPLIED>+<!ATTLIST text:list-level-style-number style:num-letter-sync %boolean;+ "false">+<!ATTLIST text:list-level-style-number text:display-levels %positiveInteger;+ "1">+<!ATTLIST text:list-level-style-number text:start-value %positiveInteger;+ "1">+<!ELEMENT text:list-level-style-bullet (style:properties?)>++<!ATTLIST text:list-level-style-bullet text:level %positiveInteger; #REQUIRED>+<!ATTLIST text:list-level-style-bullet text:style-name %styleName; #IMPLIED>+<!ATTLIST text:list-level-style-bullet text:bullet-char %character; #REQUIRED>+<!ATTLIST text:list-level-style-bullet style:num-prefix %string; #IMPLIED>+<!ATTLIST text:list-level-style-bullet style:num-suffix %string; #IMPLIED>++<!ELEMENT text:list-level-style-image (style:properties?,office:binary-data?)>++<!ATTLIST text:list-level-style-image text:level %positiveInteger; #REQUIRED>+<!ATTLIST text:list-level-style-image xlink:type (simple) #IMPLIED>+<!ATTLIST text:list-level-style-image xlink:href %uriReference; #IMPLIED>+<!ATTLIST text:list-level-style-image xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST text:list-level-style-image xlink:show (embed) #IMPLIED>+++<!-- list properties -->+<!ATTLIST style:properties text:space-before %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties text:min-label-width %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties text:min-label-distance %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties text:enable-numbering %boolean; #IMPLIED>+<!ATTLIST style:properties style:list-style-name %styleName; #IMPLIED>++<!ELEMENT text:outline-style (text:outline-level-style)+>++<!ELEMENT text:outline-level-style (style:properties?)>++<!ATTLIST text:outline-level-style text:level %positiveInteger;+ #REQUIRED>+<!ATTLIST text:outline-level-style text:style-name %styleName; #IMPLIED>++<!ATTLIST text:outline-level-style style:num-format %string; #REQUIRED>+<!ATTLIST text:outline-level-style style:num-prefix %string; #IMPLIED>+<!ATTLIST text:outline-level-style style:num-suffix %string; #IMPLIED>+<!ATTLIST text:outline-level-style style:num-letter-sync %boolean;+ "false">+<!ATTLIST text:outline-level-style text:display-levels %positiveInteger;+ "1">+<!ATTLIST text:outline-level-style text:start-value %positiveInteger;+ "1">++<!ENTITY % field-declarations "text:variable-decls?, + text:user-field-decls?, + text:sequence-decls?">++<!ENTITY % variableName "CDATA">++<!ENTITY % formula "CDATA">++<!ENTITY % valueAttr "text:value-type %valueType; #IMPLIED+ text:currency CDATA #IMPLIED" >++<!ENTITY % valueAndTypeAttr "%valueAttr;+ text:value %float; #IMPLIED+ text:date-value %date; #IMPLIED+ text:time-value %timeInstance; #IMPLIED+ text:boolean-value %boolean; #IMPLIED+ text:string-value %string; #IMPLIED" >++<!ENTITY % numFormat 'style:num-format CDATA #IMPLIED + style:num-letter-sync %boolean; "false"'>+++<!ELEMENT text:date (#PCDATA)>+<!ATTLIST text:date text:date-value %timeInstance; #IMPLIED>+<!ATTLIST text:date text:date-adjust %dateDuration; #IMPLIED>+<!ATTLIST text:date text:fixed %boolean; "false">+<!ATTLIST text:date style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:time (#PCDATA)>+<!ATTLIST text:time text:time-value %timeInstance; #IMPLIED>+<!ATTLIST text:time text:time-adjust %timeDuration; #IMPLIED>+<!ATTLIST text:time text:fixed %boolean; "false">+<!ATTLIST text:time style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:page-number (#PCDATA)>+<!ATTLIST text:page-number text:page-adjust %positiveInteger; #IMPLIED>+<!ATTLIST text:page-number text:select-page (previous|current|next) "current">+<!ATTLIST text:page-number %numFormat;>++<!ELEMENT text:page-continuation (#PCDATA)>+<!ATTLIST text:page-continuation text:select-page (previous|next) #REQUIRED>+<!ATTLIST text:page-continuation text:string-value %string; #IMPLIED>++<!ELEMENT text:sender-firstname (#PCDATA)>+<!ATTLIST text:sender-firstname text:fixed %boolean; "true">++<!ELEMENT text:sender-lastname (#PCDATA)>+<!ATTLIST text:sender-lastname text:fixed %boolean; "true">++<!ELEMENT text:sender-initials (#PCDATA)>+<!ATTLIST text:sender-initials text:fixed %boolean; "true">++<!ELEMENT text:sender-title (#PCDATA)>+<!ATTLIST text:sender-title text:fixed %boolean; "true">++<!ELEMENT text:sender-position (#PCDATA)>+<!ATTLIST text:sender-position text:fixed %boolean; "true">++<!ELEMENT text:sender-email (#PCDATA)>+<!ATTLIST text:sender-email text:fixed %boolean; "true">++<!ELEMENT text:sender-phone-private (#PCDATA)>+<!ATTLIST text:sender-phone-private text:fixed %boolean; "true">++<!ELEMENT text:sender-fax (#PCDATA)>+<!ATTLIST text:sender-fax text:fixed %boolean; "true">++<!ELEMENT text:sender-company (#PCDATA)>+<!ATTLIST text:sender-company text:fixed %boolean; "true">++<!ELEMENT text:sender-phone-work (#PCDATA)>+<!ATTLIST text:sender-phone-work text:fixed %boolean; "true">++<!ELEMENT text:sender-street (#PCDATA)>+<!ATTLIST text:sender-street text:fixed %boolean; "true">++<!ELEMENT text:sender-city (#PCDATA)>+<!ATTLIST text:sender-city text:fixed %boolean; "true">++<!ELEMENT text:sender-postal-code (#PCDATA)>+<!ATTLIST text:sender-postal-code text:fixed %boolean; "true">++<!ELEMENT text:sender-country (#PCDATA)>+<!ATTLIST text:sender-country text:fixed %boolean; "true">++<!ELEMENT text:sender-state-or-province (#PCDATA)>+<!ATTLIST text:sender-state-or-province text:fixed %boolean; "true">++<!ELEMENT text:author-name (#PCDATA)>+<!ATTLIST text:author-name text:fixed %boolean; "true">++<!ELEMENT text:author-initials (#PCDATA)>+<!ATTLIST text:author-initials text:fixed %boolean; "true">++<!ELEMENT text:placeholder (#PCDATA)>+<!ATTLIST text:placeholder text:placeholder-type (text|table|text-box|image|object) #REQUIRED>+<!ATTLIST text:placeholder text:description %string; #IMPLIED>++<!ELEMENT text:variable-decls (text:variable-decl)*>++<!ELEMENT text:variable-decl EMPTY>+<!ATTLIST text:variable-decl text:name %variableName; #REQUIRED>+<!ATTLIST text:variable-decl %valueAndTypeAttr;>++<!ELEMENT text:variable-set (#PCDATA)>+<!ATTLIST text:variable-set text:name %variableName; #REQUIRED>+<!ATTLIST text:variable-set text:formula %formula; #IMPLIED>+<!ATTLIST text:variable-set %valueAndTypeAttr;>+<!ATTLIST text:variable-set text:display (value|none) "value">+<!ATTLIST text:variable-set style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:variable-get (#PCDATA)>+<!ATTLIST text:variable-get text:name %variableName; #REQUIRED>+<!ATTLIST text:variable-get text:display (value|formula) "value">+<!ATTLIST text:variable-get style:data-style-name %styleName; #IMPLIED>+<!ATTLIST text:variable-get %valueAttr;>++<!ELEMENT text:variable-input (#PCDATA)>+<!ATTLIST text:variable-input text:name %variableName; #REQUIRED>+<!ATTLIST text:variable-input text:description %string; #IMPLIED>+<!ATTLIST text:variable-input %valueAndTypeAttr;>+<!ATTLIST text:variable-input text:display (value|none) "value">+<!ATTLIST text:variable-input style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:user-field-decls (text:user-field-decl)*>++<!ELEMENT text:user-field-decl EMPTY>+<!ATTLIST text:user-field-decl text:name %variableName; #REQUIRED>+<!ATTLIST text:user-field-decl text:formula %formula; #IMPLIED>+<!ATTLIST text:user-field-decl %valueAndTypeAttr;>++<!ELEMENT text:user-field-get (#PCDATA)>+<!ATTLIST text:user-field-get text:name %variableName; #REQUIRED>+<!ATTLIST text:user-field-get text:display (value|formula|none) "value">+<!ATTLIST text:user-field-get style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:user-field-input (#PCDATA)>+<!ATTLIST text:user-field-input text:name %variableName; #REQUIRED>+<!ATTLIST text:user-field-input text:description %string; #IMPLIED>+<!ATTLIST text:user-field-input style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:sequence-decls (text:sequence-decl)*>++<!ELEMENT text:sequence-decl EMPTY>+<!ATTLIST text:sequence-decl text:name %variableName; #REQUIRED>+<!ATTLIST text:sequence-decl text:display-outline-level %positiveInteger; "0">+<!ATTLIST text:sequence-decl text:separation-character %character; ".">++<!ELEMENT text:sequence (#PCDATA)>+<!ATTLIST text:sequence text:name %variableName; #REQUIRED>+<!ATTLIST text:sequence text:formula %formula; #IMPLIED>+<!ATTLIST text:sequence %numFormat;>+<!ATTLIST text:sequence text:ref-name ID #IMPLIED>++<!ELEMENT text:expression (#PCDATA)>+<!ATTLIST text:expression text:formula %formula; #IMPLIED>+<!ATTLIST text:expression text:display (value|formula ) "value">+<!ATTLIST text:expression %valueAndTypeAttr;>+<!ATTLIST text:expression style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:text-input (#PCDATA)>+<!ATTLIST text:text-input text:description %string; #IMPLIED>++<!ENTITY % database-table "text:database-name CDATA #REQUIRED + text:table-name CDATA #REQUIRED+ text:table-type (table|query|command) #IMPLIED">++<!ELEMENT text:database-display (#PCDATA)>+<!ATTLIST text:database-display %database-table;>+<!ATTLIST text:database-display text:column-name %string; #REQUIRED>+<!ATTLIST text:database-display style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:database-next (#PCDATA)>+<!ATTLIST text:database-next %database-table;>+<!ATTLIST text:database-next text:condition %formula; #IMPLIED>++<!ELEMENT text:database-row-select (#PCDATA)>+<!ATTLIST text:database-row-select %database-table;>+<!ATTLIST text:database-row-select text:condition %formula; #IMPLIED>+<!ATTLIST text:database-row-select text:row-number %integer; #REQUIRED>++<!ELEMENT text:database-row-number (#PCDATA)>+<!ATTLIST text:database-row-number %database-table;>+<!ATTLIST text:database-row-number %numFormat;>+<!ATTLIST text:database-row-number text:value %integer; #IMPLIED>++<!ELEMENT text:database-name (#PCDATA)>+<!ATTLIST text:database-name %database-table;>++<!ELEMENT text:initial-creator (#PCDATA)>+<!ATTLIST text:initial-creator text:fixed %boolean; "false">++<!ELEMENT text:creation-date (#PCDATA)>+<!ATTLIST text:creation-date text:fixed %boolean; "false">+<!ATTLIST text:creation-date text:date-value %date; #IMPLIED>+<!ATTLIST text:creation-date style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:creation-time (#PCDATA)>+<!ATTLIST text:creation-time text:fixed %boolean; "false">+<!ATTLIST text:creation-time text:time-value %timeInstance; #IMPLIED>+<!ATTLIST text:creation-time style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:description (#PCDATA)>+<!ATTLIST text:description text:fixed %boolean; "false">++<!ELEMENT text:user-defined (#PCDATA)>+<!ATTLIST text:user-defined text:fixed %boolean; "false">+<!ATTLIST text:user-defined text:name %string; #REQUIRED>++<!ELEMENT text:print-time (#PCDATA)>+<!ATTLIST text:print-time text:fixed %boolean; "false">+<!ATTLIST text:print-time text:time-value %timeInstance; #IMPLIED>+<!ATTLIST text:print-time style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:print-date (#PCDATA)>+<!ATTLIST text:print-date text:fixed %boolean; "false">+<!ATTLIST text:print-date text:date-value %date; #IMPLIED>+<!ATTLIST text:print-date style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:printed-by (#PCDATA)>+<!ATTLIST text:printed-by text:fixed %boolean; "false">++<!ELEMENT text:title (#PCDATA)>+<!ATTLIST text:title text:fixed %boolean; "false">++<!ELEMENT text:subject (#PCDATA)>+<!ATTLIST text:subject text:fixed %boolean; "false">++<!ELEMENT text:keywords (#PCDATA)>+<!ATTLIST text:keywords text:fixed %boolean; "false">++<!ELEMENT text:editing-cycles (#PCDATA)>+<!ATTLIST text:editing-cycles text:fixed %boolean; "false">++<!ELEMENT text:editing-duration (#PCDATA)>+<!ATTLIST text:editing-duration text:fixed %boolean; "false">+<!ATTLIST text:editing-duration text:duration %timeDuration; #IMPLIED>+<!ATTLIST text:editing-duration style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:modification-time (#PCDATA)>+<!ATTLIST text:modification-time text:fixed %boolean; "false">+<!ATTLIST text:modification-time text:time-value %timeInstance; #IMPLIED>+<!ATTLIST text:modification-time style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:modification-date (#PCDATA)>+<!ATTLIST text:modification-date text:fixed %boolean; "false">+<!ATTLIST text:modification-date text:date-value %date; #IMPLIED>+<!ATTLIST text:modification-date style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:creator (#PCDATA)>+<!ATTLIST text:creator text:fixed %boolean; "false">++<!ELEMENT text:conditional-text (#PCDATA)>+<!ATTLIST text:conditional-text text:condition %formula; #REQUIRED>+<!ATTLIST text:conditional-text text:string-value-if-false %string; #REQUIRED>+<!ATTLIST text:conditional-text text:string-value-if-true %string; #REQUIRED>+<!ATTLIST text:conditional-text text:current-value %boolean; "false">++<!ELEMENT text:hidden-text (#PCDATA)>+<!ATTLIST text:hidden-text text:condition %formula; #REQUIRED>+<!ATTLIST text:hidden-text text:string-value %string; #REQUIRED>+<!ATTLIST text:hidden-text text:is-hidden %boolean; "false">++<!ELEMENT text:hidden-paragraph EMPTY>+<!ATTLIST text:hidden-paragraph text:condition %formula; #REQUIRED>+<!ATTLIST text:hidden-paragraph text:is-hidden %boolean; "false">++<!ELEMENT text:chapter (#PCDATA)>+<!ATTLIST text:chapter text:display (name|number|number-and-name|+ plain-number-and-name|plain-number) + "number-and-name">+<!ATTLIST text:chapter text:outline-level %integer; "1">++<!ELEMENT text:file-name (#PCDATA)>+<!ATTLIST text:file-name text:display (full|path|name|name-and-extension) + "full">+<!ATTLIST text:file-name text:fixed %boolean; "false">++<!ELEMENT text:template-name (#PCDATA)>+<!ATTLIST text:template-name text:display (full|path|name|name-and-extension|+ area|title) "full">++<!ELEMENT text:page-variable-set EMPTY>+<!ATTLIST text:page-variable-set text:active %boolean; "true">+<!ATTLIST text:page-variable-set text:page-adjust %integer; "0">++<!ELEMENT text:page-variable-get (#PCDATA)>+<!ATTLIST text:page-variable-get %numFormat;>++<!ELEMENT text:execute-macro (#PCDATA|office:events)* >+<!ATTLIST text:execute-macro text:description %string; #IMPLIED>+++<!ELEMENT text:dde-connection-decls (text:dde-connection-decl)*>++<!ELEMENT text:dde-connection-decl EMPTY>+<!ATTLIST text:dde-connection-decl text:name %string; #REQUIRED>+<!ATTLIST text:dde-connection-decl office:dde-application %string; #REQUIRED>+<!ATTLIST text:dde-connection-decl office:dde-topic %string; #REQUIRED>+<!ATTLIST text:dde-connection-decl office:dde-item %string; #REQUIRED>+<!ATTLIST text:dde-connection-decl office:automatic-update %boolean; "false">++<!ELEMENT text:dde-connection (#PCDATA)>+<!ATTLIST text:dde-connection text:connection-name %string; #REQUIRED>++<!ELEMENT text:reference-ref (#PCDATA)>+<!ATTLIST text:reference-ref text:ref-name %string; #REQUIRED>+<!ATTLIST text:reference-ref text:reference-format (page|chapter|text|direction) #IMPLIED>++<!ELEMENT text:sequence-ref (#PCDATA)>+<!ATTLIST text:sequence-ref text:ref-name %string; #REQUIRED>+<!ATTLIST text:sequence-ref text:reference-format (page|chapter|text|direction|category-and-value|caption|value) #IMPLIED>++<!ELEMENT text:bookmark-ref (#PCDATA)>+<!ATTLIST text:bookmark-ref text:ref-name %string; #REQUIRED>+<!ATTLIST text:bookmark-ref text:reference-format (page|chapter|text|direction) #IMPLIED>++<!ELEMENT text:footnote-ref (#PCDATA)>+<!ATTLIST text:footnote-ref text:ref-name %string; #REQUIRED>+<!ATTLIST text:footnote-ref text:reference-format (page|chapter|text|direction) #IMPLIED>++<!ELEMENT text:endnote-ref (#PCDATA)>+<!ATTLIST text:endnote-ref text:ref-name %string; #REQUIRED>+<!ATTLIST text:endnote-ref text:reference-format (page|chapter|text|direction) #IMPLIED>++<!ELEMENT text:sheet-name (#PCDATA)>++<!ELEMENT text:page-count (#PCDATA)>+<!ATTLIST text:page-count style:num-format %string; #IMPLIED>+<!ATTLIST text:page-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:paragraph-count (#PCDATA)>+<!ATTLIST text:paragraph-count style:num-format %string; #IMPLIED>+<!ATTLIST text:paragraph-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:word-count (#PCDATA)>+<!ATTLIST text:word-count style:num-format %string; #IMPLIED>+<!ATTLIST text:word-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:character-count (#PCDATA)>+<!ATTLIST text:character-count style:num-format %string; #IMPLIED>+<!ATTLIST text:character-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:table-count (#PCDATA)>+<!ATTLIST text:table-count style:num-format %string; #IMPLIED>+<!ATTLIST text:table-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:image-count (#PCDATA)>+<!ATTLIST text:image-count style:num-format %string; #IMPLIED>+<!ATTLIST text:image-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:object-count (#PCDATA)>+<!ATTLIST text:object-count style:num-format %string; #IMPLIED>+<!ATTLIST text:object-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:bibliography-mark (#PCDATA)>+<!ATTLIST text:bibliography-mark text:bibliography-type + ( article | book | booklet | conference | custom1 | custom2 | custom3 | + custom4 | custom5 | email | inbook | incollection | inproceedings | + journal | manual | mastersthesis | misc | phdthesis | proceedings | + techreport | unpublished | www ) #REQUIRED >+<!ATTLIST text:bibliography-mark text:identifier CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:address CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:annote CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:author CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:booktitle CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:chapter CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:edition CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:editor CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:howpublished CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:institution CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:journal CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:month CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:note CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:number CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:organizations CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:pages CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:publisher CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:school CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:series CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:title CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:report-type CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:volume CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:year CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:url CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:custom1 CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:custom2 CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:custom3 CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:custom4 CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:custom5 CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:isbn CDATA #IMPLIED>+++<!ELEMENT text:bookmark EMPTY>+<!ATTLIST text:bookmark text:name CDATA #REQUIRED>++<!ELEMENT text:bookmark-start EMPTY>+<!ATTLIST text:bookmark-start text:name CDATA #REQUIRED>++<!ELEMENT text:bookmark-end EMPTY>+<!ATTLIST text:bookmark-end text:name CDATA #REQUIRED>++<!ELEMENT text:reference-mark EMPTY>+<!ATTLIST text:reference-mark text:name CDATA #REQUIRED>++<!ELEMENT text:reference-mark-start EMPTY>+<!ATTLIST text:reference-mark-start text:name CDATA #REQUIRED>++<!ELEMENT text:reference-mark-end EMPTY>+<!ATTLIST text:reference-mark-end text:name CDATA #REQUIRED>++<!ELEMENT text:footnotes-configuration (text:footnote-continuation-notice-forward?,text:footnote-continuation-notice-backward?)>+<!ATTLIST text:footnotes-configuration style:num-prefix %string; #IMPLIED>+<!ATTLIST text:footnotes-configuration style:num-suffix %string; #IMPLIED>+<!ATTLIST text:footnotes-configuration style:num-format %string; #IMPLIED>+<!ATTLIST text:footnotes-configuration style:num-letter-sync %string; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:citation-body-style-name %styleName; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:citation-style-name %styleName; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:default-style-name %styleName; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:master-page-name %styleName; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:start-value %integer; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:footnotes-position (document|page) "page">+<!ATTLIST text:footnotes-configuration text:start-numbering-at (document|chapter|page) "document">++<!ELEMENT text:footnote-continuation-notice-forward (#PCDATA)> +<!ELEMENT text:footnote-continuation-notice-backward (#PCDATA)>++<!ELEMENT text:endnotes-configuration EMPTY>+<!ATTLIST text:endnotes-configuration style:num-prefix %string; #IMPLIED>+<!ATTLIST text:endnotes-configuration style:num-suffix %string; #IMPLIED>+<!ATTLIST text:endnotes-configuration style:num-format %string; #IMPLIED>+<!ATTLIST text:endnotes-configuration style:num-letter-sync %string; #IMPLIED>+<!ATTLIST text:endnotes-configuration text:start-value %integer; #IMPLIED>+<!ATTLIST text:endnotes-configuration text:citation-style-name %styleName; #IMPLIED>+<!ATTLIST text:endnotes-configuration text:citation-body-style-name %styleName; #IMPLIED>+<!ATTLIST text:endnotes-configuration text:default-style-name %styleName; #IMPLIED>+<!ATTLIST text:endnotes-configuration text:master-page-name %styleName; #IMPLIED>++<!-- Validity constraint: text:footnote and text:endnote elements may not + contain other text:footnote or text:endnote elements, even though the DTD+ allows this (via the %text; in the foot-/endnote-body).+ Unfortunatetly, this constraint cannot be easily specified in the DTD.+-->+<!ELEMENT text:footnote (text:footnote-citation, text:footnote-body)>+<!ATTLIST text:footnote text:id ID #IMPLIED>++<!ELEMENT text:footnote-citation (#PCDATA)>+<!ATTLIST text:footnote-citation text:label %string; #IMPLIED>++<!ELEMENT text:footnote-body (text:h|text:p|+ text:ordered-list|text:unordered-list)*>++<!ELEMENT text:endnote (text:endnote-citation, text:endnote-body)>+<!ATTLIST text:endnote text:id ID #IMPLIED>++<!ELEMENT text:endnote-citation (#PCDATA)>+<!ATTLIST text:endnote-citation text:label %string; #IMPLIED>++<!ELEMENT text:endnote-body (text:h|text:p|+ text:ordered-list|text:unordered-list)*>++<!ENTITY % sectionAttr "text:name CDATA #REQUIRED+ text:style-name %styleName; #IMPLIED+ text:protected %boolean; 'false' ">+++<!ELEMENT text:section ((text:section-source|office:dde-source)?,+ %sectionText;) >++<!ATTLIST text:section %sectionAttr;>+<!ATTLIST text:section text:display (true|none|condition) "true">+<!ATTLIST text:section text:condition %formula; #IMPLIED>+<!ATTLIST text:section text:protection-key CDATA #IMPLIED>+<!ATTLIST text:section text:is-hidden %boolean; #IMPLIED>++<!ELEMENT text:section-source EMPTY>+<!ATTLIST text:section-source xlink:href %string; #IMPLIED>+<!ATTLIST text:section-source xlink:type (simple) #FIXED "simple">+<!ATTLIST text:section-source xlink:show (embed) #FIXED "embed">+<!ATTLIST text:section-source text:section-name %string; #IMPLIED>+<!ATTLIST text:section-source text:filter-name %string; #IMPLIED>++<!ELEMENT text:table-of-content (text:table-of-content-source, + text:index-body) >+<!ATTLIST text:table-of-content %sectionAttr;>++<!ELEMENT text:table-of-content-source (text:index-title-template? , + text:table-of-content-entry-template*,+ text:index-source-styles* ) >+<!ATTLIST text:table-of-content-source text:outline-level %integer; #IMPLIED>+<!ATTLIST text:table-of-content-source text:use-index-marks %boolean; "true">+<!ATTLIST text:table-of-content-source text:use-index-source-styles + %boolean; "false">+<!ATTLIST text:table-of-content-source text:index-scope (document|chapter) + "document">+<!ATTLIST text:table-of-content-source text:relative-tab-stop-position + %boolean; "true">+<!ATTLIST text:table-of-content-source fo:language %string; #IMPLIED>+<!ATTLIST text:table-of-content-source fo:country %string; #IMPLIED>+<!ATTLIST text:table-of-content-source text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:table-of-content-entry-template (text:index-entry-chapter-number |+ text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop |+ text:index-entry-link-start |+ text:index-entry-link-end)* >+<!ATTLIST text:table-of-content-entry-template text:outline-level + %integer; #REQUIRED>+<!ATTLIST text:table-of-content-entry-template text:style-name + %styleName; #REQUIRED>++<!ELEMENT text:illustration-index + (text:illustration-index-source, text:index-body)>+<!ATTLIST text:illustration-index %sectionAttr;>++<!ELEMENT text:illustration-index-source (text:index-title-template?,+ text:illustration-index-entry-template?) >+<!ATTLIST text:illustration-index-source text:index-scope + (document|chapter) "document">+<!ATTLIST text:illustration-index-source text:relative-tab-stop-position + %boolean; "true">+<!ATTLIST text:illustration-index-source text:use-caption %boolean; "true">+<!ATTLIST text:illustration-index-source text:caption-sequence-name + %string; #IMPLIED>+<!ATTLIST text:illustration-index-source text:caption-sequence-format + (text|category-and-value|caption) "text">+<!ATTLIST text:illustration-index-source fo:language %string; #IMPLIED>+<!ATTLIST text:illustration-index-source fo:country %string; #IMPLIED>+<!ATTLIST text:illustration-index-source text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:illustration-index-entry-template + ( text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop )* >+<!ATTLIST text:illustration-index-entry-template text:style-name + %styleName; #REQUIRED>++<!ELEMENT text:table-index (text:table-index-source, text:index-body)>+<!ATTLIST text:table-index %sectionAttr;>++<!ELEMENT text:table-index-source (text:index-title-template?, + text:table-index-entry-template?) >+<!ATTLIST text:table-index-source text:index-scope + (document|chapter) "document">+<!ATTLIST text:table-index-source text:relative-tab-stop-position + %boolean; "true">+<!ATTLIST text:table-index-source text:use-caption %boolean; "true">+<!ATTLIST text:table-index-source text:caption-sequence-name + %string; #IMPLIED>+<!ATTLIST text:table-index-source text:caption-sequence-format + (text|category-and-value|caption) "text">+<!ATTLIST text:table-index-source fo:language %string; #IMPLIED>+<!ATTLIST text:table-index-source fo:country %string; #IMPLIED>+<!ATTLIST text:table-index-source text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:table-index-entry-template ( text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop )* >+<!ATTLIST text:table-index-entry-template text:style-name + %styleName; #REQUIRED>++<!ELEMENT text:object-index ( text:object-index-source, text:index-body ) >+<!ATTLIST text:object-index %sectionAttr;>++<!ELEMENT text:object-index-source ( text:index-title-template?,+ text:object-index-entry-template? ) >+<!ATTLIST text:object-index-source text:index-scope + (document|chapter) "document">+<!ATTLIST text:object-index-source text:relative-tab-stop-position + %boolean; "true">+<!ATTLIST text:object-index-source text:use-spreadsheet-objects + %boolean; "false">+<!ATTLIST text:object-index-source text:use-draw-objects %boolean; "false">+<!ATTLIST text:object-index-source text:use-chart-objects %boolean; "false">+<!ATTLIST text:object-index-source text:use-other-objects %boolean; "false">+<!ATTLIST text:object-index-source text:use-math-objects %boolean; "false">+<!ATTLIST text:object-index-source fo:language %string; #IMPLIED>+<!ATTLIST text:object-index-source fo:country %string; #IMPLIED>+<!ATTLIST text:object-index-source text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:object-index-entry-template ( text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop )* >+<!ATTLIST text:object-index-entry-template text:style-name + %styleName; #REQUIRED >++<!ELEMENT text:user-index (text:user-index-source, text:index-body) >+<!ATTLIST text:user-index %sectionAttr;>++<!ELEMENT text:user-index-source ( text:index-title-template?,+ text:user-index-entry-template*,+ text:index-source-styles* ) >+<!ATTLIST text:user-index-source text:index-scope + (document|chapter) "document">+<!ATTLIST text:user-index-source text:relative-tab-stop-position+ %boolean; "true">+<!ATTLIST text:user-index-source text:use-index-marks %boolean; "false">+<!ATTLIST text:user-index-source text:use-graphics %boolean; "false">+<!ATTLIST text:user-index-source text:use-tables %boolean; "false">+<!ATTLIST text:user-index-source text:use-floating-frames %boolean; "false">+<!ATTLIST text:user-index-source text:use-objects %boolean; "false">+<!ATTLIST text:user-index-source text:use-index-source-styles + %boolean; "false">+<!ATTLIST text:user-index-source text:copy-outline-levels %boolean; "false">+<!ATTLIST text:user-index-source fo:language %string; #IMPLIED>+<!ATTLIST text:user-index-source fo:country %string; #IMPLIED>+<!ATTLIST text:user-index-source text:sort-algorithm %string; #IMPLIED>+<!ATTLIST text:user-index-source text:index-name %string; #IMPLIED>++<!ELEMENT text:user-index-entry-template ( text:index-entry-chapter |+ text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop )* >+<!ATTLIST text:user-index-entry-template text:outline-level %integer; #REQUIRED>+<!ATTLIST text:user-index-entry-template text:style-name %styleName; #REQUIRED>++<!ELEMENT text:alphabetical-index (text:alphabetical-index-source, + text:index-body)>+<!ATTLIST text:alphabetical-index %sectionAttr;>++<!ELEMENT text:alphabetical-index-source ( text:index-title-template?, + text:alphabetical-index-entry-template* ) >+<!ATTLIST text:alphabetical-index-source text:index-scope + (document|chapter) "document">+<!ATTLIST text:alphabetical-index-source text:relative-tab-stop-position+ %boolean; "true">+<!ATTLIST text:alphabetical-index-source text:ignore-case %boolean; "false">+<!ATTLIST text:alphabetical-index-source text:main-entry-style-name + %styleName; #IMPLIED>+<!ATTLIST text:alphabetical-index-source text:alphabetical-separators + %boolean; "false">+<!ATTLIST text:alphabetical-index-source text:combine-entries+ %boolean; "true">+<!ATTLIST text:alphabetical-index-source text:combine-entries-with-dash+ %boolean; "false">+<!ATTLIST text:alphabetical-index-source text:combine-entries-with-pp+ %boolean; "true">+<!ATTLIST text:alphabetical-index-source text:use-keys-as-entries + %boolean; "false">+<!ATTLIST text:alphabetical-index-source text:capitalize-entries+ %boolean; "false">+<!ATTLIST text:alphabetical-index-source text:comma-separated+ %boolean; "false">+<!ATTLIST text:alphabetical-index-source fo:language %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-source fo:country %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-source text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:alphabetical-index-entry-template ( text:index-entry-chapter |+ text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop )* >+<!ATTLIST text:alphabetical-index-entry-template text:outline-level + (1|2|3|separator) #REQUIRED>+<!ATTLIST text:alphabetical-index-entry-template text:style-name + %styleName; #REQUIRED>++<!ELEMENT text:alphabetical-index-auto-mark-file EMPTY>+<!ATTLIST text:alphabetical-index-auto-mark-file xlink:href CDATA #IMPLIED>+<!ATTLIST text:alphabetical-index-auto-mark-file xlink:type (simple) #FIXED "simple">++<!ELEMENT text:bibliography (text:bibliography-source, text:index-body) >+<!ATTLIST text:bibliography %sectionAttr;>++<!ELEMENT text:bibliography-source ( text:index-title-template?,+ text:bibliography-entry-template* ) >++<!ELEMENT text:bibliography-entry-template ( text:index-entry-span |+ text:index-entry-tab-stop |+ text:index-entry-bibliography )* >+<!ATTLIST text:bibliography-entry-template text:bibliography-type + ( article | book | booklet | conference | custom1 | custom2 | + custom3 | custom4 | custom5 | email | inbook | incollection |+ inproceedings | journal | manual | mastersthesis | misc | + phdthesis | proceedings | techreport | unpublished | www ) + #REQUIRED >+<!ATTLIST text:bibliography-entry-template text:style-name + %styleName; #REQUIRED>++<!ELEMENT text:index-body %sectionText; >++<!-- +Validity constraint: text:index-title elements may appear only in+indices, and there may be only one text:index-title element. +-->+<!ELEMENT text:index-title %sectionText; >+<!ATTLIST text:index-title text:style-name %styleName; #IMPLIED>+<!ATTLIST text:index-title text:name %string; #IMPLIED>++<!ELEMENT text:index-title-template (#PCDATA)>+<!ATTLIST text:index-title-template text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-chapter-number EMPTY>+<!ATTLIST text:index-entry-chapter-number text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-chapter EMPTY>+<!ATTLIST text:index-entry-chapter text:style-name %styleName; #IMPLIED>+<!ATTLIST text:index-entry-chapter text:display (name|number|number-and-name) + "number-and-name" >++<!ELEMENT text:index-entry-text EMPTY>+<!ATTLIST text:index-entry-text text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-page-number EMPTY>+<!ATTLIST text:index-entry-page-number text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-span (#PCDATA)>+<!ATTLIST text:index-entry-span text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-bibliography EMPTY>+<!ATTLIST text:index-entry-bibliography text:style-name %styleName; #IMPLIED>+<!ATTLIST text:index-entry-bibliography text:bibliography-data-field+ ( address | annote | author | bibliography-type |+ booktitle | chapter | custom1 | custom2 | + custom3 | custom4 | custom5 | edition | editor |+ howpublished | identifier | institution | isbn |+ journal | month | note | number | organizations |+ pages | publisher | report-type | school | + series | title | url | volume | year ) #REQUIRED>+++<!ELEMENT text:index-entry-tab-stop EMPTY>+<!ATTLIST text:index-entry-tab-stop text:style-name %styleName; #IMPLIED>+<!ATTLIST text:index-entry-tab-stop style:leader-char %character; " ">+<!ATTLIST text:index-entry-tab-stop style:type (left|right) "left">+<!ATTLIST text:index-entry-tab-stop style:position %length; #IMPLIED>++<!ELEMENT text:index-entry-link-start EMPTY>+<!ATTLIST text:index-entry-link-start text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-link-end EMPTY>+<!ATTLIST text:index-entry-link-end text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-source-styles (text:index-source-style)*>+<!ATTLIST text:index-source-styles text:outline-level %integer; #REQUIRED>++<!ELEMENT text:index-source-style EMPTY>+<!ATTLIST text:index-source-style text:style-name %styleName; #REQUIRED>++<!ELEMENT text:toc-mark-start EMPTY>+<!ATTLIST text:toc-mark-start text:id %string; #REQUIRED>+<!ATTLIST text:toc-mark-start text:outline-level %integer; #IMPLIED>++<!ELEMENT text:toc-mark-end EMPTY>+<!ATTLIST text:toc-mark-end text:id %string; #REQUIRED>++<!ELEMENT text:toc-mark EMPTY>+<!ATTLIST text:toc-mark text:string-value %string; #REQUIRED>+<!ATTLIST text:toc-mark text:outline-level %integer; #IMPLIED>++<!ELEMENT text:user-index-mark-start EMPTY>+<!ATTLIST text:user-index-mark-start text:id %string; #REQUIRED>+<!ATTLIST text:user-index-mark-start text:outline-level %integer; #IMPLIED>+<!ATTLIST text:user-index-mark-start text:index-name %string; #IMPLIED>++<!ELEMENT text:user-index-mark-end EMPTY>+<!ATTLIST text:user-index-mark-end text:id %string; #REQUIRED>++<!ELEMENT text:user-index-mark EMPTY>+<!ATTLIST text:user-index-mark text:string-value %string; #REQUIRED>+<!ATTLIST text:user-index-mark text:outline-level %integer; #IMPLIED>+<!ATTLIST text:user-index-mark text:index-name %string; #IMPLIED>++<!ELEMENT text:alphabetical-index-mark-start EMPTY>+<!ATTLIST text:alphabetical-index-mark-start text:id %string; #REQUIRED>+<!ATTLIST text:alphabetical-index-mark-start text:key1 %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-mark-start text:key2 %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-mark-start text:main-etry %boolean; "false">++<!ELEMENT text:alphabetical-index-mark-end EMPTY>+<!ATTLIST text:alphabetical-index-mark-end text:id %string; #REQUIRED>++<!ELEMENT text:alphabetical-index-mark EMPTY>+<!ATTLIST text:alphabetical-index-mark text:string-value %string; #REQUIRED>+<!ATTLIST text:alphabetical-index-mark text:key1 %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-mark text:key2 %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-mark text:main-etry %boolean; "false">++<!ELEMENT text:bibliography-configuration (text:sort-key)*>+<!ATTLIST text:bibliography-configuration text:prefix %string; #IMPLIED>+<!ATTLIST text:bibliography-configuration text:suffix %string; #IMPLIED>+<!ATTLIST text:bibliography-configuration text:sort-by-position %boolean; "true">+<!ATTLIST text:bibliography-configuration text:numbered-entries %boolean; "false">+<!ATTLIST text:bibliography-configuration fo:language %string; #IMPLIED>+<!ATTLIST text:bibliography-configuration fo:country %string; #IMPLIED>+<!ATTLIST text:bibliography-configuration text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:sort-key EMPTY>+<!ATTLIST text:sort-key text:key ( address | annote | author | + bibliography-type | booktitle | chapter | custom1 | custom2 | + custom3 | custom4 | custom5 | edition | editor | howpublished | + identifier | institution | isbn | journal | month | note | number | + organizations | pages | publisher | report-type | school | series | + title | url | volume | year ) #REQUIRED>+<!ATTLIST text:sort-key text:sort-ascending %boolean; "true">++<!ELEMENT text:linenumbering-configuration (text:linenumbering-separator?)>+<!ATTLIST text:linenumbering-configuration text:style-name %styleName; #IMPLIED>+<!ATTLIST text:linenumbering-configuration text:number-lines %boolean; "true">+<!ATTLIST text:linenumbering-configuration text:count-empty-lines %boolean; "true">+<!ATTLIST text:linenumbering-configuration text:count-in-floating-frames %boolean; "false">+<!ATTLIST text:linenumbering-configuration text:restart-numbering %boolean; "false">+<!ATTLIST text:linenumbering-configuration text:offset %nonNegativeLength; #IMPLIED>+<!ATTLIST text:linenumbering-configuration style:num-format (1|a|A|i|I) "1">+<!ATTLIST text:linenumbering-configuration style:num-letter-sync %boolean; "false">+<!ATTLIST text:linenumbering-configuration text:number-position (left|rigth|inner|outer) "left">+<!ATTLIST text:linenumbering-configuration text:increment %nonNegativeInteger; #IMPLIED>++<!ELEMENT text:linenumbering-separator (#PCDATA)>+<!ATTLIST text:linenumbering-separator text:increment %nonNegativeInteger; #IMPLIED>++<!ELEMENT text:script (#PCDATA)>+<!ATTLIST text:script script:language CDATA #REQUIRED>+<!ATTLIST text:script xlink:href CDATA #IMPLIED>+<!ATTLIST text:script xlink:type (simple) #FIXED "simple">++<!ELEMENT text:measure (#PCDATA)>+<!ATTLIST text:measure text:kind (value|unit|gap) #REQUIRED>++<!ELEMENT text:ruby (text:ruby-base, text:ruby-text)>+<!ATTLIST text:ruby text:style-name %styleName; #IMPLIED>++<!ELEMENT text:ruby-base %inline-text;>++<!ELEMENT text:ruby-text (#PCDATA)>+<!ATTLIST text:ruby-text text:style-name %styleName; #IMPLIED>++<!-- elements for change tracking -->++<!ELEMENT text:change EMPTY>+<!ATTLIST text:change text:change-id CDATA #REQUIRED>++<!ELEMENT text:change-start EMPTY>+<!ATTLIST text:change-start text:change-id CDATA #REQUIRED>++<!ELEMENT text:change-end EMPTY>+<!ATTLIST text:change-end text:change-id CDATA #REQUIRED>++<!ELEMENT text:tracked-changes (text:changed-region)*>+<!ATTLIST text:tracked-changes text:track-changes %boolean; "true">+<!ATTLIST text:tracked-changes text:protection-key CDATA #IMPLIED>++<!ELEMENT text:changed-region (text:insertion | + (text:deletion, text:insertion?) | + text:format-change) >+<!ATTLIST text:changed-region text:id ID #REQUIRED>+<!ATTLIST text:changed-region text:merge-last-paragraph %boolean; "true">++<!ELEMENT text:insertion (office:change-info, %sectionText;)>+<!ELEMENT text:deletion (office:change-info, %sectionText;)>+<!ELEMENT text:format-change (office:change-info)>++++<!ELEMENT table:calculation-settings (table:null-date?, table:iteration?)>+<!ATTLIST table:calculation-settings+ table:case-sensitive %boolean; "true"+ table:precision-as-shown %boolean; "false"+ table:search-criteria-must-apply-to-whole-cell %boolean; "true"+ table:automatic-find-labels %boolean; "true"+ table:use-regular-expressions %boolean; "true"+ table:null-year %positiveInteger; "1930"+>+<!ELEMENT table:null-date EMPTY>+<!ATTLIST table:null-date+ table:value-type %valueType; #FIXED "date"+ table:date-value %date; "1899-12-30"+>+<!ELEMENT table:iteration EMPTY>+<!ATTLIST table:iteration+ table:status (enable | disable) "disable"+ table:steps %positiveInteger; "100"+ table:maximum-difference %float; "0.001"+>++<!ELEMENT table:tracked-changes (table:cell-content-change | table:insertion | table:deletion | table:movement | table:rejection)*>+<!ATTLIST table:tracked-changes table:track-changes %boolean; "true"+ table:protected %boolean; "false"+ table:protection-key CDATA #IMPLIED+>++<!ELEMENT table:dependences (table:dependence)+>+<!ELEMENT table:dependence EMPTY>+<!ATTLIST table:dependence+ table:id CDATA #REQUIRED+>+<!ELEMENT table:deletions (table:cell-content-deletion | table:change-deletion)+>+<!ELEMENT table:cell-content-deletion (table:cell-address?, table:change-track-table-cell?)>+<!ATTLIST table:cell-content-deletion+ table:id CDATA #IMPLIED+>+<!ELEMENT table:change-deletion EMPTY>+<!ATTLIST table:change-deletion+ table:id CDATA #IMPLIED+>+<!ELEMENT table:insertion (office:change-info, table:dependences?, table:deletions?)>+<!ATTLIST table:insertion+ table:id CDATA #REQUIRED+ table:acceptance-state (accepted | rejected | pending) "pending"+ table:rejecting-change-id %positiveInteger; #IMPLIED+ table:type (row | column | table) #REQUIRED+ table:position %integer; #REQUIRED+ table:count %positiveInteger; "1"+ table:table %integer; #IMPLIED+>+<!ELEMENT table:deletion (office:change-info, table:dependences?, table:deletions?, table:cut-offs?)>+<!ATTLIST table:deletion+ table:id CDATA #REQUIRED+ table:acceptance-state (accepted | rejected | pending) "pending"+ table:rejecting-change-id %positiveInteger; #IMPLIED+ table:type (row | column | table) #REQUIRED+ table:position %integer; #REQUIRED+ table:count %positiveInteger; "1"+ table:table %integer; #IMPLIED+ table:multi-deletion-spanned %integer; #IMPLIED+>+<!ELEMENT table:cut-offs (table:movement-cut-off+ | (table:insertion-cut-off, table:movement-cut-off*))>+<!ELEMENT table:insertion-cut-off EMPTY>+<!ATTLIST table:insertion-cut-off+ table:id CDATA #REQUIRED+ table:position %integer; #REQUIRED+>+<!ELEMENT table:movement-cut-off EMPTY>+<!ATTLIST table:movement-cut-off+ table:id CDATA #REQUIRED+ table:start-position %integer; #IMPLIED+ table:end-position %integer; #IMPLIED+ table:position %integer; #IMPLIED+>+<!ELEMENT table:movement (table:source-range-address, table:target-range-address, office:change-info, table:dependences?, table:deletions?)>+<!ATTLIST table:movement+ table:id CDATA #REQUIRED+ table:acceptance-state (accepted | rejected | pending) "pending"+ table:rejecting-change-id %positiveInteger; #IMPLIED+>+<!ELEMENT table:target-range-address EMPTY>+<!ATTLIST table:target-range-address+ table:column %integer; #IMPLIED+ table:row %integer; #IMPLIED+ table:table %integer; #IMPLIED+ table:start-column %integer; #IMPLIED+ table:start-row %integer; #IMPLIED+ table:start-table %integer; #IMPLIED+ table:end-column %integer; #IMPLIED+ table:end-row %integer; #IMPLIED+ table:end-table %integer; #IMPLIED+>+<!ELEMENT table:source-range-address EMPTY>+<!ATTLIST table:source-range-address+ table:column %integer; #IMPLIED+ table:row %integer; #IMPLIED+ table:table %integer; #IMPLIED+ table:start-column %integer; #IMPLIED+ table:start-row %integer; #IMPLIED+ table:start-table %integer; #IMPLIED+ table:end-column %integer; #IMPLIED+ table:end-row %integer; #IMPLIED+ table:end-table %integer; #IMPLIED+>+<!ELEMENT table:change-track-table-cell (text:p*)>+<!ATTLIST table:change-track-table-cell+ table:cell-address %cell-address; #IMPLIED+ table:matrix-covered (true | false) "false"+ table:formula %string; #IMPLIED+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED+ table:value-type %valueType; "string"+ table:value %float; #IMPLIED+ table:date-value %date; #IMPLIED+ table:time-value %timeInstance; #IMPLIED+ table:string-value %string; #IMPLIED+>+<!ELEMENT table:cell-content-change (table:cell-address, office:change-info, table:dependences?, table:deletions?, table:previous)>+<!ATTLIST table:cell-content-change+ table:id CDATA #REQUIRED+ table:acceptance-state (accepted | rejected | pending) "pending"+ table:rejecting-change-id %positiveInteger; #IMPLIED+>+<!ELEMENT table:cell-address EMPTY>+<!ATTLIST table:cell-address+ table:column %integer; #IMPLIED+ table:row %integer; #IMPLIED+ table:table %integer; #IMPLIED+>+<!ELEMENT table:previous (table:change-track-table-cell)>+<!ATTLIST table:previous+ table:id CDATA #IMPLIED+>+<!ELEMENT table:rejection (office:change-info, table:dependences?, table:deletions?)>+<!ATTLIST table:rejection+ table:id CDATA #REQUIRED+ table:acceptance-state (accepted | rejected | pending) "pending"+ table:rejecting-change-id %positiveInteger; #IMPLIED+>++<!ENTITY % table-columns "table:table-columns | ( table:table-column | table:table-column-group )+">+<!ENTITY % table-header-columns "table:table-header-columns">+<!ENTITY % table-rows "table:table-rows | ( table:table-row | table:table-row-group )+">+<!ENTITY % table-header-rows "table:table-header-rows">+<!ENTITY % table-column-groups "((%table-columns;),(%table-header-columns;,(%table-columns;)?)?) | (%table-header-columns;,(%table-columns;)?)">+<!ENTITY % table-row-groups "((%table-rows;),(%table-header-rows;,(%table-rows;)?)?) | (%table-header-rows;,(%table-rows;)?)">+<!ELEMENT table:table (table:table-source?, table:scenario?, office:forms?, table:shapes?, (%table-column-groups;), (%table-row-groups;))>+<!ATTLIST table:table+ table:name %string; #IMPLIED+ table:style-name %styleName; #IMPLIED+ table:protected %boolean; "false"+ table:protection-key CDATA #IMPLIED+ table:print-ranges %cell-range-address-list; #IMPLIED+>+<!ELEMENT table:table-source EMPTY>+<!ATTLIST table:table-source+ table:mode (copy-all | copy-results-only) "copy-all"+ xlink:type (simple) #FIXED "simple"+ xlink:actuate (onRequest) "onRequest"+ xlink:href %uriReference; #REQUIRED+ table:filter-name CDATA #IMPLIED+ table:table-name CDATA #IMPLIED+ table:filter-options CDATA #IMPLIED+ table:refresh-delay %timeDuration; #IMPLIED+>+<!ELEMENT table:scenario EMPTY>+<!ATTLIST table:scenario+ table:display-border %boolean; "true"+ table:border-color %color; #IMPLIED+ table:copy-back %boolean; "true"+ table:copy-styles %boolean; "true"+ table:copy-formulas %boolean; "true"+ table:is-active %boolean; #REQUIRED+ table:scenario-ranges %cell-range-address-list; #REQUIRED+ table:comment CDATA #IMPLIED+>+<!ELEMENT table:shapes %shapes;>+<!ELEMENT table:table-column-group (table:table-header-columns | table:table-column | table:table-column-group)+>+<!ATTLIST table:table-column-group+ table:display %boolean; "true"+>+<!ELEMENT table:table-header-columns (table:table-column | table:table-column-group)+>+<!ELEMENT table:table-columns (table:table-column | table:table-column-group)+>+<!ELEMENT table:table-column EMPTY>+<!ATTLIST table:table-column+ table:number-columns-repeated %positiveInteger; "1"+ table:style-name %styleName; #IMPLIED+ table:visibility (visible | collapse | filter) "visible"+ table:default-cell-style-name %styleName; #IMPLIED+>+<!ELEMENT table:table-row-group (table:table-header-rows | table:table-row | table:table-row-group)+>+<!ATTLIST table:table-row-group+ table:display %boolean; "true"+>+<!ELEMENT table:table-header-rows (table:table-row | table:table-row-group)+>+<!ELEMENT table:table-rows (table:table-row | table:table-row-group)+>+<!ENTITY % table-cells "(table:table-cell|table:covered-table-cell)+">+<!ELEMENT table:table-row %table-cells;>+<!ATTLIST table:table-row+ table:number-rows-repeated %positiveInteger; "1"+ table:style-name %styleName; #IMPLIED+ table:visibility (visible | collapse | filter) "visible"+ table:default-cell-style-name %styleName; #IMPLIED+>++<!ENTITY % text-wo-table "(text:h|text:p|text:ordered-list|text:unordered-list|%shapes;)*">+<!ENTITY % cell-content "(table:cell-range-source?,office:annotation?,table:detective?,(table:sub-table|%text-wo-table;))">+<!ELEMENT table:table-cell %cell-content;>+<!ELEMENT table:covered-table-cell %cell-content;>+<!ATTLIST table:table-cell+ table:number-columns-repeated %positiveInteger; "1"+ table:number-rows-spanned %positiveInteger; "1"+ table:number-columns-spanned %positiveInteger; "1"+ table:style-name %styleName; #IMPLIED+ table:validation-name CDATA #IMPLIED+ table:formula %string; #IMPLIED+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED+ table:value-type %valueType; "string"+ table:value %float; #IMPLIED+ table:date-value %date; #IMPLIED+ table:time-value %timeInstance; #IMPLIED+ table:boolean-value %boolean; #IMPLIED+ table:string-value %string; #IMPLIED+ table:currency %string; #IMPLIED+>+<!ATTLIST table:covered-table-cell+ table:number-columns-repeated %positiveInteger; "1"+ table:style-name %styleName; #IMPLIED+ table:validation-name CDATA #IMPLIED+ table:formula %string; #IMPLIED+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED+ table:value-type %valueType; "string"+ table:value %float; #IMPLIED+ table:date-value %date; #IMPLIED+ table:time-value %timeInstance; #IMPLIED+ table:boolean-value %boolean; #IMPLIED+ table:string-value %string; #IMPLIED+ table:currency %string; #IMPLIED+>+<!-- cell protection in writer: cell attribute; calc uses format -->+<!ATTLIST table:table-cell table:protected %boolean; "false">++<!ELEMENT table:cell-range-source EMPTY>+<!ATTLIST table:cell-range-source+ table:name %string; #REQUIRED+ xlink:type (simple) #FIXED "simple"+ xlink:actuate (onRequest) #FIXED "onRequest"+ xlink:href %uriReference; #REQUIRED+ table:filter-name %string; #REQUIRED+ table:filter-options %string; #IMPLIED+ table:last-column-spanned %positiveInteger; #REQUIRED+ table:last-row-spanned %positiveInteger; #REQUIRED+ table:refresh-delay %timeDuration; #IMPLIED+>++<!ELEMENT table:detective (table:highlighted-range*, table:operation*)>+<!ELEMENT table:highlighted-range EMPTY>+<!ATTLIST table:highlighted-range+ table:cell-range-address %cell-range-address; #IMPLIED+ table:direction (from-another-table | to-another-table | from-same-table | to-same-table) #IMPLIED+ table:contains-error %boolean; #IMPLIED+ table:marked-invalid %boolean; #IMPLIED+>+<!ELEMENT table:operation EMPTY>+<!ATTLIST table:operation+ table:name (trace-dependents | remove-dependents | trace-precedents | remove-precedents | trace-errors) #REQUIRED+ table:index %nonNegativeInteger; #REQUIRED+>++<!ELEMENT table:content-validations (table:content-validation)+>+<!ELEMENT table:content-validation (table:help-message?, (table:error-message | (table:error-macro, office:events?))?)>+<!ATTLIST table:content-validation+ table:name CDATA #REQUIRED+ table:condition CDATA #IMPLIED+ table:base-cell-address %cell-address; #IMPLIED+ table:allow-empty-cell %boolean; #IMPLIED+>+<!ELEMENT table:help-message (text:p*)>+<!ATTLIST table:help-message+ table:title CDATA #IMPLIED+ table:display %boolean; #IMPLIED+>+<!ELEMENT table:error-message (text:p*)>+<!ATTLIST table:error-message+ table:title CDATA #IMPLIED+ table:message-type (stop | warning | information) #IMPLIED+ table:display %boolean; #IMPLIED+>+<!ELEMENT table:error-macro EMPTY>+<!ATTLIST table:error-macro+ table:name CDATA #IMPLIED+ table:execute %boolean; #IMPLIED+>++<!ELEMENT table:sub-table ((%table-column-groups;) , (%table-row-groups;))>++<!ELEMENT table:label-ranges (table:label-range)*>+<!ELEMENT table:label-range EMPTY>+<!ATTLIST table:label-range+ table:label-cell-range-address %cell-range-address; #REQUIRED+ table:data-cell-range-address %cell-range-address; #REQUIRED+ table:orientation (column | row) #REQUIRED+>++<!ELEMENT table:named-expressions (table:named-range | table:named-expression)*>+<!ELEMENT table:named-range EMPTY>+<!ATTLIST table:named-range+ table:name CDATA #REQUIRED+ table:cell-range-address %cell-range-address; #REQUIRED+ table:base-cell-address %cell-address; #IMPLIED+ table:range-usable-as CDATA "none"+>+<!ELEMENT table:named-expression EMPTY>+<!ATTLIST table:named-expression+ table:name CDATA #REQUIRED+ table:expression CDATA #REQUIRED+ table:base-cell-address %cell-address; #IMPLIED+>++<!ELEMENT table:filter (table:filter-condition | table:filter-and | table:filter-or)>+<!ATTLIST table:filter+ table:target-range-address %cell-range-address; #IMPLIED+ table:condition-source-range-address %cell-range-address; #IMPLIED+ table:condition-source (self | cell-range) "self"+ table:display-duplicates %boolean; "true"+>+<!ELEMENT table:filter-and (table:filter-or | table:filter-condition)+>+<!ELEMENT table:filter-or (table:filter-and | table:filter-condition)+>+<!ELEMENT table:filter-condition EMPTY>+<!ATTLIST table:filter-condition+ table:field-number %nonNegativeInteger; #REQUIRED+ table:case-sensitive %boolean; "false"+ table:data-type (text | number) "text"+ table:value CDATA #REQUIRED+ table:operator CDATA #REQUIRED+>++<!ELEMENT table:database-ranges (table:database-range)*>+<!ELEMENT table:database-range ((table:database-source-sql | table:database-source-table | table:database-source-query)?, table:filter?, table:sort?, table:subtotal-rules?)>+<!ATTLIST table:database-range+ table:name CDATA #IMPLIED+ table:is-selection %boolean; "false"+ table:on-update-keep-styles %boolean; "false"+ table:on-update-keep-size %boolean; "true"+ table:has-persistant-data %boolean; "true"+ table:orientation (row | column) "row"+ table:contains-header %boolean; "true"+ table:display-filter-buttons %boolean; "false"+ table:target-range-address %cell-range-address; #REQUIRED+ table:refresh-delay %timeDuration; #IMPLIED+>+<!ELEMENT table:database-source-sql EMPTY>+<!ATTLIST table:database-source-sql+ table:database-name CDATA #REQUIRED+ table:sql-statement CDATA #REQUIRED+ table:parse-sql-statements %boolean; "false"+>+<!ELEMENT table:database-source-table EMPTY>+<!ATTLIST table:database-source-table+ table:database-name CDATA #REQUIRED+ table:table-name CDATA #REQUIRED+>+<!ELEMENT table:database-source-query EMPTY>+<!ATTLIST table:database-source-query+ table:database-name CDATA #REQUIRED+ table:query-name CDATA #REQUIRED+>++<!ELEMENT table:sort (table:sort-by)+>+<!ATTLIST table:sort+ table:bind-styles-to-content %boolean; "true"+ table:target-range-address %cell-range-address; #IMPLIED+ table:case-sensitive %boolean; "false"+ table:language CDATA #IMPLIED+ table:country CDATA #IMPLIED+ table:algorithm CDATA #IMPLIED+>+<!ELEMENT table:sort-by EMPTY>+<!ATTLIST table:sort-by+ table:field-number %nonNegativeInteger; #REQUIRED+ table:data-type CDATA "automatic"+ table:order (ascending | descending) "ascending"+>++<!ELEMENT table:subtotal-rules (table:sort-groups? | table:subtotal-rule*)?>+<!ATTLIST table:subtotal-rules+ table:bind-styles-to-content %boolean; "true"+ table:case-sensitive %boolean; "false"+ table:page-breaks-on-group-change %boolean; "false"+>+<!ELEMENT table:sort-groups EMPTY>+<!ATTLIST table:sort-groups+ table:data-type CDATA "automatic"+ table:order (ascending | descending) "ascending"+>+<!ELEMENT table:subtotal-rule (table:subtotal-field)*>+<!ATTLIST table:subtotal-rule+ table:group-by-field-number %nonNegativeInteger; #REQUIRED+>+<!ELEMENT table:subtotal-field EMPTY>+<!ATTLIST table:subtotal-field+ table:field-number %nonNegativeInteger; #REQUIRED+ table:function CDATA #REQUIRED+>++<!ELEMENT table:data-pilot-tables (table:data-pilot-table)*>+<!ELEMENT table:data-pilot-table ((table:database-source-sql | table:database-source-table | table:database-source-query | table:source-service | table:source-cell-range)?, table:data-pilot-field+)>+<!ATTLIST table:data-pilot-table+ table:name CDATA #REQUIRED+ table:application-data CDATA #IMPLIED+ table:grand-total (none | row | column | both) "both"+ table:ignore-empty-rows %boolean; "false"+ table:identify-categories %boolean; "false"+ table:target-range-address %cell-range-address; #REQUIRED+ table:buttons %cell-range-address-list; #REQUIRED+>+<!ELEMENT table:source-service EMPTY>+<!ATTLIST table:source-service+ table:name CDATA #REQUIRED+ table:source-name CDATA #REQUIRED+ table:object-name CDATA #REQUIRED+ table:username CDATA #IMPLIED+ table:password CDATA #IMPLIED+>+<!ELEMENT table:source-cell-range (table:filter)?>+<!ATTLIST table:source-cell-range+ table:cell-range-address %cell-range-address; #REQUIRED+>+<!ELEMENT table:data-pilot-field (table:data-pilot-level)?>+<!ATTLIST table:data-pilot-field+ table:source-field-name CDATA #REQUIRED+ table:is-data-layout-field %boolean; "false"+ table:function CDATA #REQUIRED+ table:orientation (row | column | data | page | hidden) #REQUIRED+ table:used-hierarchy %positiveInteger; "1"+>+<!ELEMENT table:data-pilot-level (table:data-pilot-subtotals?, table:data-pilot-members?)>+<!ATTLIST table:data-pilot-level+ table:display-empty %boolean; #IMPLIED+>+<!ELEMENT table:data-pilot-subtotals (table:data-pilot-subtotal)*>+<!ELEMENT table:data-pilot-subtotal EMPTY>+<!ATTLIST table:data-pilot-subtotal+ table:function CDATA #REQUIRED+>+<!ELEMENT table:data-pilot-members (table:data-pilot-member)*>+<!ELEMENT table:data-pilot-member EMPTY>+<!ATTLIST table:data-pilot-member+ table:name CDATA #REQUIRED+ table:display %boolean; #IMPLIED+ table:display-details %boolean; #IMPLIED+>++<!ELEMENT table:consolidation EMPTY>+<!ATTLIST table:consolidation+ table:function CDATA #REQUIRED+ table:source-cell-range-addresses %cell-range-address-list; #REQUIRED+ table:target-cell-address %cell-address; #REQUIRED+ table:use-label (none | column | row | both) "none"+ table:link-to-source-data %boolean; "false"+>++<!ELEMENT table:dde-links (table:dde-link)+>+<!ELEMENT table:dde-link (office:dde-source, table:table)>+++<!ENTITY % chart-class "(line|area|circle|ring|scatter|radar|bar|stock|add-in)">+<!ENTITY % chart-solid-type "(cuboid|cylinder|cone|pyramid)">++<!-- Chart element -->+<!ELEMENT chart:chart ( chart:title?, chart:subtitle?, chart:legend?,+ chart:plot-area,+ table:table? )>+<!ATTLIST chart:chart+ chart:class %chart-class; #REQUIRED+ chart:add-in-name %string; #IMPLIED+ chart:table-number-list %string; #IMPLIED+ draw:name %string; #IMPLIED+ %draw-position;+ %draw-size;+ %draw-style-name;+ chart:column-mapping %string; #IMPLIED+ chart:row-mapping %string; #IMPLIED+ chart:style-name %styleName; #IMPLIED>++<!ATTLIST chart:chart %presentation-class; >+<!ATTLIST chart:chart %zindex;>+<!ATTLIST chart:chart %draw-end-position; >+<!ATTLIST chart:chart draw:id %draw-shape-id; >+<!ATTLIST chart:chart draw:layer %layerName; #IMPLIED>++<!ATTLIST style:properties+ chart:scale-text %boolean; "true"+ chart:stock-updown-bars %boolean; "false"+ chart:stock-with-volume %boolean; "false"+ chart:three-dimensional %boolean; "false"+ chart:deep %boolean; "false"+ chart:lines %boolean; "false"+ chart:percentage %boolean; "false"+ chart:solid-type %chart-solid-type; "cuboid"+ chart:splines %nonNegativeInteger; "0"+ chart:stacked %boolean; "false"+ chart:symbol %integer; "-1"+ chart:vertical %boolean; "false"+ chart:lines-used %nonNegativeInteger; "0"+ chart:connect-bars %boolean; "false"+ chart:spline-order %nonNegativeInteger; "2"+ chart:spline-resolution %nonNegativeInteger; "20"+ chart:pie-offset %nonNegativeInteger; "0">++<!-- Main/Sub Title -->+<!-- the cell-address attribute is currently not supported for titles -->+<!ELEMENT chart:title (text:p)?>+<!ATTLIST chart:title+ table:cell-range %cell-address; #IMPLIED+ svg:x %coordinate; #IMPLIED+ svg:y %coordinate; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!ELEMENT chart:subtitle (text:p)?>+<!ATTLIST chart:subtitle+ table:cell-range %cell-address; #IMPLIED+ svg:x %coordinate; #IMPLIED+ svg:y %coordinate; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!-- you must specify either a legend-position or both, x and y coordinates -->+<!ELEMENT chart:legend EMPTY>+<!ATTLIST chart:legend+ chart:legend-position (top|left|bottom|right) "right"+ svg:x %coordinate; #IMPLIED+ svg:y %coordinate; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!-- Plot-Area specification -->++<!ELEMENT chart:plot-area (dr3d:light*,+ chart:axis*,+ chart:categories?,+ chart:series*,+ chart:stock-gain-marker?,+ chart:stock-loss-marker?,+ chart:stock-range-line?,+ chart:wall?,+ chart:floor?) >++<!ATTLIST chart:plot-area+ svg:x %coordinate; #IMPLIED+ svg:y %coordinate; #IMPLIED+ svg:width %length; #IMPLIED+ svg:height %length; #IMPLIED+ chart:style-name %styleName; #IMPLIED+ table:cell-range-address %cell-range-address; #IMPLIED+ chart:table-number-list %string; #IMPLIED+ chart:data-source-has-labels (none|row|column|both) "none" >++<!-- 3d scene attributes on plot-area -->+<!ATTLIST chart:plot-area+ dr3d:vrp %vector3D; #IMPLIED+ dr3d:vpn %vector3D; #IMPLIED+ dr3d:vup %vector3D; #IMPLIED+ dr3d:projection (parallel|perspective) #IMPLIED+ dr3d:transform CDATA #IMPLIED+ dr3d:distance %length; #IMPLIED+ dr3d:focal-length %length; #IMPLIED+ dr3d:shadow-slant %nonNegativeInteger; #IMPLIED+ dr3d:shade-mode (flat|phong|gouraud|draft) #IMPLIED+ dr3d:ambient-color %color; #IMPLIED+ dr3d:lighting-mode %boolean; #IMPLIED >++<!ATTLIST style:properties+ chart:series-source (columns|rows) "columns" >++<!ELEMENT chart:wall EMPTY>+<!ATTLIST chart:wall+ svg:width %length; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!ELEMENT chart:floor EMPTY>+<!ATTLIST chart:floor+ svg:width %length; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!-- Stock chart elements -->++<!ELEMENT chart:stock-gain-marker EMPTY>+<!ATTLIST chart:stock-gain-marker+ chart:style-name %styleName; #IMPLIED >++<!ELEMENT chart:stock-loss-marker EMPTY>+<!ATTLIST chart:stock-loss-marker+ chart:style-name %styleName; #IMPLIED >++<!ELEMENT chart:stock-range-line EMPTY>+<!ATTLIST chart:stock-range-line+ chart:style-name %styleName; #IMPLIED >++<!-- Axis -->++<!ELEMENT chart:axis (chart:title?, chart:grid*)>+<!ATTLIST chart:axis+ chart:class (category|value|series|domain) #REQUIRED+ chart:name %string; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!ATTLIST style:properties+ chart:tick-marks-major-inner %boolean; "false"+ chart:tick-marks-major-outer %boolean; "true"+ chart:tick-marks-minor-inner %boolean; "false"+ chart:tick-marks-minor-outer %boolean; "false"+ chart:logarithmic %boolean; "false"+ chart:maximum %float; #IMPLIED+ chart:minimum %float; #IMPLIED+ chart:origin %float; #IMPLIED+ chart:interval-major %float; #IMPLIED+ chart:interval-minor %float; #IMPLIED+ chart:gap-width %integer; #IMPLIED+ chart:overlap %integer; #IMPLIED+ text:line-break %boolean; "true"+ chart:display-label %boolean; "true"+ chart:label-arrangement (side-by-side|stagger-even|stagger-odd) "side-by-side"+ chart:text-overlap %boolean; "false"+ chart:visible %boolean; "true" + chart:link-data-style-to-source %boolean; "true" >++<!ELEMENT chart:grid EMPTY>+<!ATTLIST chart:grid+ chart:class (major|minor) "major"+ chart:style-name %styleName; #IMPLIED >+++<!ELEMENT chart:categories EMPTY>+<!ATTLIST chart:categories+ table:cell-range-address %cell-range-address; #IMPLIED >++<!--+ each series element must have an cell-range-address element that points+ to the underlying table data.+ Impl. Note: Internally all href elements are merged to one table range+ that represents the data for the whole chart+-->+<!ELEMENT chart:series ( chart:domain*,+ chart:mean-value?,+ chart:regression-curve?,+ chart:error-indicator?,+ chart:data-point* )>+<!ATTLIST chart:series+ chart:values-cell-range-address %cell-range-address; #IMPLIED+ chart:label-cell-address %cell-address; #IMPLIED+ chart:class %chart-class; #IMPLIED+ chart:attached-axis %string; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!ELEMENT chart:domain EMPTY>+<!ATTLIST chart:domain+ table:cell-range-address %cell-range-address; #IMPLIED >++<!ELEMENT chart:data-point EMPTY>+<!ATTLIST chart:data-point+ chart:repeated %nonNegativeInteger; #IMPLIED+ chart:style-name %styleName; #IMPLIED >++<!-- statistical properties -->++<!ELEMENT chart:mean-value EMPTY>+<!ELEMENT chart:regression-curve EMPTY >+<!ELEMENT chart:error-indicator EMPTY >+<!ATTLIST chart:mean-value chart:style-name %styleName; #IMPLIED >+<!ATTLIST chart:regression-curve chart:style-name %styleName; #IMPLIED >+<!ATTLIST chart:error-indicator chart:style-name %styleName; #IMPLIED >++<!ATTLIST style:properties+ chart:mean-value %boolean; #IMPLIED+ chart:error-category (none|variance|standard-deviation|percentage|error-margin|constant) "none"+ chart:error-percentage %float; #IMPLIED+ chart:error-margin %float; #IMPLIED+ chart:error-lower-limit %float; #IMPLIED+ chart:error-upper-limit %float; #IMPLIED+ chart:error-upper-indicator %boolean; #IMPLIED+ chart:error-lower-indicator %boolean; #IMPLIED+ chart:regression-type (none|linear|logarithmic|exponential|power) "none" >++<!-- data label properties -->++<!ATTLIST style:properties+ chart:data-label-number (none|value|percentage) "none"+ chart:data-label-text %boolean; "false"+ chart:data-label-symbol %boolean; "false" >++<!-- general text properties -->++<!ATTLIST style:properties + text:rotation-angle %integer; "0" >++<!-- symbol properties -->++<!ATTLIST style:properties+ chart:symbol-width %nonNegativeLength; #IMPLIED+ chart:symbol-height %nonNegativeLength; #IMPLIED+ chart:symbol-image-name %string; #IMPLIED >++<!-- data styles -->+<!ENTITY % any-number "( number:number | number:scientific-number | number:fraction )">+<!ENTITY % number-style-content "( (number:text,(%any-number;,number:text?)?) | (%any-number;,number:text?) )">+<!ELEMENT number:number-style ( style:properties?, %number-style-content;, style:map* )>+<!ELEMENT number:number ( number:embedded-text* )>+<!ELEMENT number:scientific-number EMPTY>+<!ELEMENT number:fraction EMPTY>++<!ELEMENT number:embedded-text (#PCDATA)>+<!ATTLIST number:embedded-text number:position %integer; #REQUIRED>++<!ENTITY % currency-symbol-and-text "number:currency-symbol,number:text?">+<!ENTITY % number-and-text "number:number,number:text?">+<!ENTITY % currency-symbol-and-number "((%number-and-text;),(%currency-symbol-and-text;)?) | ((%currency-symbol-and-text;),(%number-and-text;)?)">+<!ENTITY % currency-style-content "number:text?, (%currency-symbol-and-number;)?">++<!ELEMENT number:currency-style ( style:properties?, (%currency-style-content;), style:map* )>+<!ELEMENT number:currency-symbol (#PCDATA)>+<!ATTLIST number:currency-symbol number:language CDATA #IMPLIED>+<!ATTLIST number:currency-symbol number:country CDATA #IMPLIED>++<!ENTITY % percentage-style-content "( (number:text,(%number-and-text;)?) | (%number-and-text;) )">+<!ELEMENT number:percentage-style ( style:properties?, %percentage-style-content;, style:map* )>++<!ENTITY % any-date "( number:day | number:month | number:year | number:era | number:day-of-week | number:week-of-year | number:quarter| number:hours | number:am-pm | number:minutes | number:seconds )">+<!ENTITY % date-style-content "( (number:text,(%any-date;,number:text?)+) | (%any-date;,number:text?)+ )">+<!ELEMENT number:date-style ( style:properties?, %date-style-content;, style:map* )>+<!ELEMENT number:day EMPTY>+<!ATTLIST number:day number:style (short|long) "short">+<!ATTLIST number:day number:calendar CDATA #IMPLIED>+<!ELEMENT number:month EMPTY>+<!ATTLIST number:month number:textual %boolean; "false">+<!ATTLIST number:month number:style (short|long) "short">+<!ATTLIST number:month number:calendar CDATA #IMPLIED>+<!ELEMENT number:year EMPTY>+<!ATTLIST number:year number:style (short|long) "short">+<!ATTLIST number:year number:calendar CDATA #IMPLIED>+<!ELEMENT number:era EMPTY>+<!ATTLIST number:era number:style (short|long) "short">+<!ATTLIST number:era number:calendar CDATA #IMPLIED>+<!ELEMENT number:day-of-week EMPTY>+<!ATTLIST number:day-of-week number:style (short|long) "short">+<!ATTLIST number:day-of-week number:calendar CDATA #IMPLIED>+<!ELEMENT number:week-of-year EMPTY>+<!ATTLIST number:week-of-year number:calendar CDATA #IMPLIED>+<!ELEMENT number:quarter EMPTY>+<!ATTLIST number:quarter number:style (short|long) "short">+<!ATTLIST number:quarter number:calendar CDATA #IMPLIED>++<!ENTITY % any-time "( number:hours | number:am-pm | number:minutes | number:seconds )">+<!ENTITY % time-style-content "( (number:text,(%any-time;,number:text?)+) | (%any-time;,number:text?)+)">+<!ELEMENT number:time-style ( style:properties?, %time-style-content;, style:map* )>+<!ELEMENT number:hours EMPTY>+<!ATTLIST number:hours number:style (short|long) "short">+<!ELEMENT number:minutes EMPTY>+<!ATTLIST number:minutes number:style (short|long) "short">+<!ELEMENT number:seconds EMPTY>+<!ATTLIST number:seconds number:style (short|long) "short">+<!ATTLIST number:seconds number:decimal-places %integer; "0">+<!ELEMENT number:am-pm EMPTY>++<!ENTITY % boolean-style-content "( (number:text,(number:boolean,number:text?)?) | (number:boolean,number:text?) )">+<!ELEMENT number:boolean-style ( style:properties?,%boolean-style-content;, style:map* )>+<!ELEMENT number:boolean EMPTY>++<!ENTITY % text-style-content "( (number:text,(number:text-content,number:text?)?) | (number:text-content,number:text?) )">+<!ELEMENT number:text-style ( style:properties?,%text-style-content;, style:map* )>+<!ELEMENT number:text (#PCDATA)>+<!ELEMENT number:text-content EMPTY>++<!ATTLIST number:number-style style:name %styleName; #REQUIRED>+<!ATTLIST number:currency-style style:name %styleName; #REQUIRED>+<!ATTLIST number:percentage-style style:name %styleName; #REQUIRED>+<!ATTLIST number:date-style style:name %styleName; #REQUIRED>+<!ATTLIST number:time-style style:name %styleName; #REQUIRED>+<!ATTLIST number:boolean-style style:name %styleName; #REQUIRED>+<!ATTLIST number:text-style style:name %styleName; #REQUIRED>++<!ATTLIST number:number-style style:family CDATA #REQUIRED>+<!ATTLIST number:currency-style style:family CDATA #REQUIRED>+<!ATTLIST number:percentage-style style:family CDATA #REQUIRED>+<!ATTLIST number:date-style style:family CDATA #REQUIRED>+<!ATTLIST number:time-style style:family CDATA #REQUIRED>+<!ATTLIST number:boolean-style style:family CDATA #REQUIRED>+<!ATTLIST number:text-style style:family CDATA #REQUIRED>++<!ATTLIST number:number-style number:language CDATA #IMPLIED>+<!ATTLIST number:currency-style number:language CDATA #IMPLIED>+<!ATTLIST number:percentage-style number:language CDATA #IMPLIED>+<!ATTLIST number:date-style number:language CDATA #IMPLIED>+<!ATTLIST number:time-style number:language CDATA #IMPLIED>+<!ATTLIST number:boolean-style number:language CDATA #IMPLIED>+<!ATTLIST number:text-style number:language CDATA #IMPLIED>++<!ATTLIST number:number-style number:country CDATA #IMPLIED>+<!ATTLIST number:currency-style number:country CDATA #IMPLIED>+<!ATTLIST number:percentage-style number:country CDATA #IMPLIED>+<!ATTLIST number:date-style number:country CDATA #IMPLIED>+<!ATTLIST number:time-style number:country CDATA #IMPLIED>+<!ATTLIST number:boolean-style number:country CDATA #IMPLIED>+<!ATTLIST number:text-style number:country CDATA #IMPLIED>++<!ATTLIST number:number-style number:title CDATA #IMPLIED>+<!ATTLIST number:currency-style number:title CDATA #IMPLIED>+<!ATTLIST number:percentage-style number:title CDATA #IMPLIED>+<!ATTLIST number:date-style number:title CDATA #IMPLIED>+<!ATTLIST number:time-style number:title CDATA #IMPLIED>+<!ATTLIST number:boolean-style number:title CDATA #IMPLIED>+<!ATTLIST number:text-style number:title CDATA #IMPLIED>++<!ATTLIST number:number-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:currency-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:percentage-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:date-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:time-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:boolean-style style:volatile %boolean; #IMPLIED>+<!ATTLIST number:text-style style:volatile %boolean; #IMPLIED>++<!ATTLIST number:number-style number:transliteration-format CDATA "1">+<!ATTLIST number:currency-style number:transliteration-format CDATA "1">+<!ATTLIST number:percentage-style number:transliteration-format CDATA "1">+<!ATTLIST number:date-style number:transliteration-format CDATA "1">+<!ATTLIST number:time-style number:transliteration-format CDATA "1">+<!ATTLIST number:boolean-style number:transliteration-format CDATA "1">+<!ATTLIST number:text-style number:transliteration-format CDATA "1">++<!ATTLIST number:number-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:currency-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:percentage-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:date-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:time-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:boolean-style number:transliteration-language CDATA #IMPLIED>+<!ATTLIST number:text-style number:transliteration-language CDATA #IMPLIED>++<!ATTLIST number:number-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:currency-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:percentage-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:date-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:time-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:boolean-style number:transliteration-country CDATA #IMPLIED>+<!ATTLIST number:text-style number:transliteration-country CDATA #IMPLIED>++<!ATTLIST number:number-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:currency-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:percentage-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:date-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:time-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:boolean-style number:transliteration-style (short|medium|long) "short">+<!ATTLIST number:text-style number:transliteration-style (short|medium|long) "short">++<!ATTLIST number:currency-style number:automatic-order %boolean; "false">+<!ATTLIST number:date-style number:automatic-order %boolean; "false">++<!ATTLIST number:date-style number:format-source (fixed|language) "fixed">+<!ATTLIST number:time-style number:format-source (fixed|language) "fixed">++<!ATTLIST number:time-style number:truncate-on-overflow %boolean; "true">++<!ATTLIST number:number number:decimal-places %integer; #IMPLIED>+<!ATTLIST number:scientific-number number:decimal-places %integer; #IMPLIED>++<!ATTLIST number:number number:min-integer-digits %integer; #IMPLIED>+<!ATTLIST number:scientific-number number:min-integer-digits %integer; #IMPLIED>+<!ATTLIST number:fraction number:min-integer-digits %integer; #IMPLIED>++<!ATTLIST number:number number:grouping %boolean; "false">+<!ATTLIST number:scientific-number number:grouping %boolean; "false">+<!ATTLIST number:fraction number:grouping %boolean; "false">++<!ATTLIST number:number number:decimal-replacement CDATA #IMPLIED>++<!ATTLIST number:number number:display-factor %float; "1">++<!ATTLIST number:scientific-number number:min-exponent-digits %integer; #IMPLIED>++<!ATTLIST number:fraction number:min-numerator-digits %integer; #IMPLIED>++<!ATTLIST number:fraction number:min-denominator-digits %integer; #IMPLIED>+++<!ENTITY % controls "form:text|form:textarea|form:fixed-text|form:file|+ form:password|form:formatted-text|form:button|form:image|+ form:checkbox|form:radio|form:listbox|form:combobox|form:frame|+ form:hidden|form:image-frame|form:grid|form:generic-control">++<!ENTITY % name "form:name CDATA #IMPLIED">+<!ENTITY % service-name "form:service-name CDATA #IMPLIED">++<!ENTITY % navigation "(none|current|parent)">+<!ENTITY % cycles "(records|current|page)">+<!ENTITY % url "CDATA">+++<!ENTITY % types "(submit|reset|push|url)">+<!ENTITY % button-type "form:button-type %types; 'push'">+<!ENTITY % current-selected "form:current-selected %boolean; 'false'">+<!ENTITY % current-value "form:current-value CDATA #IMPLIED">+<!ENTITY % value "form:value CDATA #IMPLIED">+<!ENTITY % disabled "form:disabled %boolean; 'false'">+<!ENTITY % dropdown "form:dropdown %boolean; 'false'">+<!ENTITY % for "form:for CDATA #IMPLIED">+<!ENTITY % image-data "form:image-data %url; #IMPLIED">+<!ENTITY % label "form:label CDATA #IMPLIED">+<!ENTITY % max-length "form:max-length CDATA #IMPLIED">+<!ENTITY % printable "form:printable %boolean; 'true'">+<!ENTITY % readonly "form:readonly %boolean; 'false'">+<!ENTITY % size "form:size CDATA #IMPLIED">+<!ENTITY % selected "form:selected %boolean; 'false'">+<!ENTITY % size "form:size CDATA #IMPLIED">+<!ENTITY % tab-index "form:tab-index CDATA #IMPLIED">+<!ENTITY % target-frame "office:target-frame CDATA '_blank'">+<!ENTITY % target-location "xlink:href %url; #IMPLIED">+<!ENTITY % tab-stop "form:tab-stop %boolean; 'true'">+<!ENTITY % title "form:title CDATA #IMPLIED">+<!ENTITY % default-value "form:default-value CDATA #IMPLIED">+<!ENTITY % bound-column "form:bound-column CDATA #IMPLIED">+<!ENTITY % convert-empty "form:convert-empty-to-null %boolean; 'false'">+<!ENTITY % data-field "form:data-field CDATA #IMPLIED">+<!ENTITY % list-source "form:list-source CDATA #IMPLIED">+<!ENTITY % list-source-types "(table|query|sql|sql-pass-through|value-list|table-fields)">+<!ENTITY % list-source-type "form:list-source-type %list-source-types; #IMPLIED">+<!ENTITY % column-style-name "form:column-style-name %styleName; #IMPLIED">+++<!ELEMENT form:control (%controls;)+>+<!ATTLIST form:control %name;+ %service-name;+ %control-id;>++<!ELEMENT form:form (form:properties?, office:events?, (form:control|form:form)*)>+<!ATTLIST form:form %name; %service-name;>+<!ATTLIST form:form xlink:href %url; #IMPLIED>+<!ATTLIST form:form form:enctype CDATA "application/x-www-form-urlencoded">+<!ATTLIST form:form form:method CDATA "get">+<!ATTLIST form:form office:target-frame CDATA "_blank">+<!ATTLIST form:form form:allow-deletes %boolean; "true">+<!ATTLIST form:form form:allow-inserts %boolean; "true">+<!ATTLIST form:form form:allow-updates %boolean; "true">+<!ATTLIST form:form form:apply-filter %boolean; "false">+<!ATTLIST form:form form:command CDATA #IMPLIED>+<!ATTLIST form:form form:command-type (table|query|command) "command">+<!ATTLIST form:form form:datasource CDATA #IMPLIED>+<!ATTLIST form:form form:detail-fields CDATA #IMPLIED>+<!ATTLIST form:form form:escape-processing %boolean; "true">+<!ATTLIST form:form form:filter CDATA #IMPLIED>+<!ATTLIST form:form form:ignore-result %boolean; "false">+<!ATTLIST form:form form:master-fields CDATA #IMPLIED>+<!ATTLIST form:form form:navigation-mode %navigation; #IMPLIED>+<!ATTLIST form:form form:order CDATA #IMPLIED>+<!ATTLIST form:form form:tab-cycle %cycles; #IMPLIED>++<!ELEMENT office:forms (form:form*)>+<!ATTLIST office:forms form:automatic-focus %boolean; "false">+<!ATTLIST office:forms form:apply-design-mode %boolean; "true">++<!ELEMENT form:text (form:properties?, office:events?)>+<!ATTLIST form:text %current-value;+ %disabled;+ %max-length;+ %printable;+ %readonly;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %convert-empty;+ %data-field;>++<!ELEMENT form:textarea (form:properties?, office:events?)>+<!ATTLIST form:textarea %current-value;+ %disabled;+ %max-length;+ %printable;+ %readonly;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %convert-empty;+ %data-field;>++<!ELEMENT form:password (form:properties?, office:events?)>+<!ATTLIST form:password %disabled;+ %max-length;+ %printable;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %convert-empty;>++<!ATTLIST form:password form:echo-char CDATA "*">++<!ELEMENT form:file (form:properties?, office:events?)>+<!ATTLIST form:file %current-value;+ %disabled;+ %max-length;+ %printable;+ %readonly;+ %tab-index;+ %tab-stop;+ %title;+ %value;>++<!ELEMENT form:formatted-text (form:properties?, office:events?)>+<!ATTLIST form:formatted-text %current-value;+ %disabled;+ %max-length;+ %printable;+ %readonly;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %convert-empty;+ %data-field;>+<!ATTLIST form:formatted-text form:max-value CDATA #IMPLIED>+<!ATTLIST form:formatted-text form:min-value CDATA #IMPLIED>+<!ATTLIST form:formatted-text form:validation %boolean; "false">++<!ELEMENT form:fixed-text (form:properties?, office:events?)>+<!ATTLIST form:fixed-text %for;+ %disabled;+ %label;+ %printable;+ %title;>+<!ATTLIST form:fixed-text form:multi-line %boolean; "false">++<!ELEMENT form:combobox (form:properties?, office:events?, form:item*)>+<!ATTLIST form:combobox %current-value;+ %disabled;+ %dropdown;+ %max-length;+ %printable;+ %readonly;+ %size;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %convert-empty;+ %data-field;+ %list-source;+ %list-source-type;>+<!ATTLIST form:combobox form:auto-complete %boolean; #IMPLIED>++<!ELEMENT form:item (#PCDATA)>+<!ATTLIST form:item %label;>++<!ELEMENT form:listbox (form:properties?, office:events?, form:option*)>+<!ATTLIST form:listbox %disabled;+ %dropdown;+ %printable;+ %size;+ %tab-index;+ %tab-stop;+ %title;+ %bound-column;+ %data-field;+ %list-source;+ %list-source-type;>+<!ATTLIST form:listbox form:multiple %boolean; "false">++<!ELEMENT form:option (#PCDATA)>+<!ATTLIST form:option %current-selected;+ %selected;+ %label;+ %value;>++<!ELEMENT form:button (form:properties?, office:events?)>+<!ATTLIST form:button %button-type;+ %disabled;+ %label;+ %image-data;+ %printable;+ %tab-index;+ %tab-stop;+ %target-frame;+ %target-location;+ %title;+ %value;>+<!ATTLIST form:button form:default-button %boolean; "false">++<!ELEMENT form:image (form:properties?, office:events?)>+<!ATTLIST form:image %button-type;+ %disabled;+ %image-data;+ %printable;+ %tab-index;+ %tab-stop;+ %target-frame;+ %target-location;+ %title;+ %value;>++<!ELEMENT form:checkbox (form:properties?, office:events?)>+<!ATTLIST form:checkbox %disabled;+ %label;+ %printable;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %data-field;>+<!ENTITY % states "(unchecked|checked|unknown)">+<!ATTLIST form:checkbox form:current-state %states; #IMPLIED>+<!ATTLIST form:checkbox form:is-tristate %boolean; "false">+<!ATTLIST form:checkbox form:state %states; "unchecked">++<!ELEMENT form:radio (form:properties?, office:events?)>+<!ATTLIST form:radio %current-selected;+ %disabled;+ %label;+ %printable;+ %selected;+ %tab-index;+ %tab-stop;+ %title;+ %value;+ %data-field;>++<!ELEMENT form:frame (form:properties?, office:events?)>+<!ATTLIST form:frame %disabled;+ %for;+ %label;+ %printable;+ %title;>++<!ELEMENT form:image-frame (form:properties?, office:events?)>+<!ATTLIST form:image-frame %disabled;+ %image-data;+ %printable;+ %readonly;+ %title;+ %data-field;>++<!ELEMENT form:hidden (form:properties?, office:events?)>+<!ATTLIST form:hidden %name;+ %service-name;+ %value;>++<!ELEMENT form:grid (form:properties?, office:events?, form:column*)>+<!ATTLIST form:grid %disabled;+ %printable;+ %tab-index;+ %tab-stop;+ %title;>++<!ENTITY % column-type "form:text| form:textarea| form:formatted-text|form:checkbox| form:listbox| form:combobox">+<!ELEMENT form:column (%column-type;)+>+<!ATTLIST form:column %name;+ %service-name;+ %label;+ %column-style-name;>++<!ELEMENT form:generic-control (form:properties?, office:events?)>+++<!ELEMENT form:properties (form:property+)>+<!ELEMENT form:property (form:property-value*)>+<!ATTLIST form:property form:property-is-list %boolean; #IMPLIED>+<!ATTLIST form:property form:property-name CDATA #REQUIRED>+<!ATTLIST form:property form:property-type (boolean|short|int|long|double|string) #REQUIRED>+<!ELEMENT form:property-value (#PCDATA)>+<!ATTLIST form:property-value form:property-is-void %boolean; #IMPLIED>+++<!ELEMENT office:settings (config:config-item-set+)>++<!ENTITY % items "(config:config-item |+ config:config-item-set |+ config:config-item-map-named |+ config:config-item-map-indexed)+">++<!ELEMENT config:config-item-set %items;>+<!ATTLIST config:config-item-set config:name CDATA #REQUIRED>++<!ELEMENT config:config-item (#PCDATA)>+<!ATTLIST config:config-item config:name CDATA #REQUIRED+ config:type (boolean | short | int | long | double | string | datetime | base64Binary) #REQUIRED>++<!ELEMENT config:config-item-map-named (config:config-item-map-entry)+>+<!ATTLIST config:config-item-map-named config:name CDATA #REQUIRED>++<!ELEMENT config:config-item-map-indexed (config:config-item-map-entry)+>+<!ATTLIST config:config-item-map-indexed config:name CDATA #REQUIRED>++<!ELEMENT config:config-item-map-entry %items;>+<!ATTLIST config:config-item-map-entry config:name CDATA #IMPLIED>+
+ examples/OpenOffice.org/script.mod view
@@ -0,0 +1,79 @@+<!--+ $Id: script.mod,v 1.1 2003/05/13 13:07:54 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->++<!ELEMENT script:library-embedded (script:module*)>+<!ATTLIST script:library-embedded script:name %string; #REQUIRED>+<!ATTLIST script:library-embedded script:password %string; #IMPLIED>++<!ELEMENT script:library-linked EMPTY>+<!ATTLIST script:library-linked script:name %string; #REQUIRED>+<!ATTLIST script:library-linked xlink:href %string; #REQUIRED>+<!ATTLIST script:library-linked xlink:type (simple) #FIXED "simple">++<!ELEMENT script:module (#PCDATA)>+<!ATTLIST script:module script:name %string; #REQUIRED>+<!ATTLIST script:module script:language %string; #IMPLIED>+++<!ENTITY % script-language "script:language %string; #REQUIRED">+<!ENTITY % event-name "script:event-name %string; #REQUIRED">+<!ENTITY % location "script:location (document|application) #REQUIRED">+<!ENTITY % macro-name "script:macro-name %string; #REQUIRED">++<!ELEMENT script:event (#PCDATA)>+<!ATTLIST script:event %script-language;+ %event-name;+ %location;+ %macro-name;>
+ examples/OpenOffice.org/settings.mod view
@@ -0,0 +1,77 @@+<!--+ $Id: settings.mod,v 1.1 2003/05/13 13:07:54 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->++<!ELEMENT office:settings (config:config-item-set+)>++<!ENTITY % items "(config:config-item |+ config:config-item-set |+ config:config-item-map-named |+ config:config-item-map-indexed)+">++<!ELEMENT config:config-item-set %items;>+<!ATTLIST config:config-item-set config:name CDATA #REQUIRED>++<!ELEMENT config:config-item (#PCDATA)>+<!ATTLIST config:config-item config:name CDATA #REQUIRED+ config:type (boolean | short | int | long | double | string | datetime | base64Binary) #REQUIRED>++<!ELEMENT config:config-item-map-named (config:config-item-map-entry)+>+<!ATTLIST config:config-item-map-named config:name CDATA #REQUIRED>++<!ELEMENT config:config-item-map-indexed (config:config-item-map-entry)+>+<!ATTLIST config:config-item-map-indexed config:name CDATA #REQUIRED>++<!ELEMENT config:config-item-map-entry %items;>+<!ATTLIST config:config-item-map-entry config:name CDATA #IMPLIED>
+ examples/OpenOffice.org/style.mod view
@@ -0,0 +1,448 @@+<!--+ $Id: style.mod,v 1.1 2003/05/13 13:07:54 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->++<!ELEMENT style:font-decl EMPTY>+<!ATTLIST style:font-decl style:name %string; #REQUIRED>+<!ATTLIST style:font-decl fo:font-family %string; #REQUIRED>+<!ATTLIST style:font-decl style:font-style-name %string; #IMPLIED>+<!ENTITY % fontFamilyGeneric "(roman|swiss|modern|decorative|script|system)">+<!ATTLIST style:font-decl style:font-family-generic %fontFamilyGeneric;+ #IMPLIED>+<!ENTITY % fontPitch "(fixed|variable)">+<!ATTLIST style:font-decl style:font-pitch %fontPitch; #IMPLIED>+<!ATTLIST style:font-decl style:font-charset %textEncoding; #IMPLIED>++<!ELEMENT style:style ( style:properties?,office:events?,style:map*)>++<!ATTLIST style:style style:name %styleName; #REQUIRED>++<!ENTITY % styleFamily "(paragraph|text|section|+ table|table-column|table-row|table-cell|table-page|chart|graphics|default|drawing-page|presentation|control|ruby)">+<!ATTLIST style:style style:family %styleFamily; #REQUIRED>++<!ATTLIST style:style style:parent-style-name %styleName; #IMPLIED>+<!ATTLIST style:style style:master-page-name %styleName; #IMPLIED>+<!ATTLIST style:style style:next-style-name %styleName; #IMPLIED>+<!ATTLIST style:style style:list-style-name %styleName; #IMPLIED>+<!ATTLIST style:style style:data-style-name %styleName; #IMPLIED>++<!ATTLIST style:style style:auto-update %boolean; "false">++<!ATTLIST style:style style:class %string; #IMPLIED>++<!ELEMENT style:default-style (style:properties?)>+<!ATTLIST style:default-style style:family %styleFamily; #REQUIRED>++<!ELEMENT style:map EMPTY>++<!ATTLIST style:map style:condition %string; #REQUIRED>+<!ATTLIST style:map style:apply-style-name %styleName; #REQUIRED>+<!ATTLIST style:map style:base-cell-address %cell-address; #IMPLIED>++<!ELEMENT style:properties ANY>++<!-- number format properties -->+<!ATTLIST style:properties style:num-prefix %string; #IMPLIED>+<!ATTLIST style:properties style:num-suffix %string; #IMPLIED>+<!ATTLIST style:properties style:num-format %string; #IMPLIED>+<!ATTLIST style:properties style:num-letter-sync %boolean; #IMPLIED>++<!-- frame properties -->+<!ATTLIST style:properties fo:width %positiveLength; #IMPLIED>+<!ATTLIST style:properties fo:height %positiveLength; #IMPLIED>+<!ATTLIST style:properties style:vertical-pos (top|middle|bottom|from-top|below) #IMPLIED>+<!ATTLIST style:properties style:vertical-rel (page|page-content|+ frame|frame-content|+ paragraph|paragraph-content|char|+ line|baseline|text) #IMPLIED>+<!ATTLIST style:properties style:horizontal-pos (left|center|right|from-left|inside|outside|from-inside) #IMPLIED>+<!ATTLIST style:properties style:horizontal-rel (page|page-content|+ page-start-margin|page-end-margin|+ frame|frame-content|+ frame-start-margin|frame-end-margin|+ paragraph|paragraph-content|+ paragraph-start-margin|paragraph-end-margin|+ char) #IMPLIED>+<!ATTLIST style:properties svg:width %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties svg:height %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:min-height %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:min-width %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:max-height %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:max-width %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties text:anchor-type %anchorType; #IMPLIED>+<!ATTLIST style:properties text:anchor-page-number %positiveInteger; #IMPLIED>+<!ATTLIST style:properties svg:x %coordinate; #IMPLIED>+<!ATTLIST style:properties svg:y %coordinate; #IMPLIED>+<!ATTLIST style:properties style:print-content %boolean; #IMPLIED>+<!ATTLIST style:properties style:protect %boolean; #IMPLIED>+<!ATTLIST style:properties style:wrap (none|left|right|parallel|dynamic|run-through) #IMPLIED>+<!ENTITY % noLimitOrPositiveInteger "CDATA">+<!ATTLIST style:properties style:number-wrapped-paragraphs %noLimitOrPositiveInteger; #IMPLIED>+<!ATTLIST style:properties style:wrap-contour %boolean; #IMPLIED>+<!ATTLIST style:properties style:wrap-contour-mode (full|outside) #IMPLIED>+<!ATTLIST style:properties style:run-through (foreground|background) #IMPLIED>+<!ATTLIST style:properties style:editable %boolean; #IMPLIED>+<!ATTLIST style:properties style:mirror CDATA #IMPLIED>+<!ATTLIST style:properties fo:clip CDATA #IMPLIED>+<!ATTLIST style:properties text:animation (none|scroll|alternate|slide) #IMPLIED>+<!ATTLIST style:properties text:animation-direction (left|right|up|down) #IMPLIED>+<!ATTLIST style:properties text:animation-start-inside %boolean; #IMPLIED>+<!ATTLIST style:properties text:animation-stop-inside %boolean; #IMPLIED>+<!ATTLIST style:properties text:animation-repeat %integer; #IMPLIED>+<!ATTLIST style:properties text:animation-delay %timeDuration; #IMPLIED>+<!ATTLIST style:properties text:animation-steps %length; #IMPLIED>++<!-- text properties -->+<!ATTLIST style:properties fo:font-variant (normal|small-caps) #IMPLIED>+<!ATTLIST style:properties fo:text-transform (none|lowercase|+ uppercase|capitalize) #IMPLIED>+<!ATTLIST style:properties fo:color %color; #IMPLIED>+<!ATTLIST style:properties style:use-window-font-color %boolean; #IMPLIED>+<!ATTLIST style:properties style:text-outline %boolean; #IMPLIED>+<!ATTLIST style:properties style:text-crossing-out+ (none|single-line|double-line|thick-line|slash|X)+ #IMPLIED>+<!ATTLIST style:properties style:text-position CDATA #IMPLIED>+<!ATTLIST style:properties style:text-align (left|right|start|center|end|justify|justified) #IMPLIED>++<!ATTLIST style:properties style:font-name %string; #IMPLIED>+<!ATTLIST style:properties fo:font-family %string; #IMPLIED>+<!ATTLIST style:properties style:font-family-generic %fontFamilyGeneric;+ #IMPLIED>+<!ATTLIST style:properties style:font-style-name %string; #IMPLIED>+<!ATTLIST style:properties style:font-pitch %fontPitch; #IMPLIED>+<!ATTLIST style:properties style:font-charset %textEncoding; #IMPLIED>+<!ATTLIST style:properties style:font-name-asian %string; #IMPLIED>+<!ATTLIST style:properties style:font-family-asian %string; #IMPLIED>+<!ATTLIST style:properties style:font-family-generic-asian %fontFamilyGeneric;+ #IMPLIED>+<!ATTLIST style:properties style:font-style-name-asian %string; #IMPLIED>+<!ATTLIST style:properties style:font-pitch-asian %fontPitch; #IMPLIED>+<!ATTLIST style:properties style:font-charset-asian %textEncoding; #IMPLIED>+<!ATTLIST style:properties style:font-name-complex %string; #IMPLIED>+<!ATTLIST style:properties style:font-family-complex %string; #IMPLIED>+<!ATTLIST style:properties style:font-family-generic-complex %fontFamilyGeneric;+ #IMPLIED>+<!ATTLIST style:properties style:font-style-name-complex %string; #IMPLIED>+<!ATTLIST style:properties style:font-pitch-complex %fontPitch; #IMPLIED>+<!ATTLIST style:properties style:font-charset-complex %textEncoding; #IMPLIED>++<!ATTLIST style:properties fo:font-size %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties style:font-size-rel %length; #IMPLIED>+<!ATTLIST style:properties style:font-size-asian %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties style:font-size-rel-asian %length; #IMPLIED>+<!ATTLIST style:properties style:font-size-complex %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties style:font-size-rel-complex %length; #IMPLIED>+<!ENTITY % normalOrLength "CDATA">+<!ATTLIST style:properties fo:letter-spacing %normalOrLength; #IMPLIED>+<!ATTLIST style:properties fo:language %languageOnly; #IMPLIED>+<!ATTLIST style:properties style:language-asian %languageOnly; #IMPLIED>+<!ATTLIST style:properties style:language-complex %languageOnly; #IMPLIED>+<!ATTLIST style:properties fo:country %country; #IMPLIED>+<!ATTLIST style:properties style:country-asian %country; #IMPLIED>+<!ATTLIST style:properties style:country-complex %country; #IMPLIED>+<!ENTITY % fontStyle "(normal|italic|oblique)">+<!ATTLIST style:properties fo:font-style %fontStyle; #IMPLIED>+<!ATTLIST style:properties style:font-style-asian %fontStyle; #IMPLIED>+<!ATTLIST style:properties style:font-style-complex %fontStyle; #IMPLIED>+<!ENTITY % fontRelief "(none|embossed|engraved)">+<!ATTLIST style:properties style:font-relief %fontRelief; #IMPLIED>+<!ATTLIST style:properties fo:text-shadow CDATA #IMPLIED>+<!ATTLIST style:properties style:text-underline+ (none|single|double|dotted|dash|long-dash|dot-dash|+ dot-dot-dash|wave|bold|bold-dotted|bold-dash|+ bold-long-dash|bold-dot-dash|bold-dot-dot-dash|+ bold-wave|double-wave|small-wave) #IMPLIED>+<!ATTLIST style:properties style:text-autospace (none | ideograph-alpha) #IMPLIED>+<!ATTLIST style:properties style:punctuation-wrap (simple | hanging) #IMPLIED>+<!ATTLIST style:properties style:line-break (normal | strict) #IMPLIED>+<!ENTITY % fontColorOrColor "CDATA">+<!ATTLIST style:properties style:text-underline-color %fontColorOrColor;+ #IMPLIED>+<!ATTLIST style:properties fo:font-weight CDATA #IMPLIED>+<!ATTLIST style:properties style:font-weight-asian CDATA #IMPLIED>+<!ATTLIST style:properties style:font-weight-complex CDATA #IMPLIED>+<!ATTLIST style:properties fo:score-spaces %boolean; #IMPLIED>+<!ATTLIST style:properties style:letter-kerning %boolean; #IMPLIED>+<!ATTLIST style:properties style:text-blinking %boolean; #IMPLIED>+<!ATTLIST style:properties style:text-background-color %transparentOrColor;+ #IMPLIED>++<!ATTLIST style:properties style:text-combine (none|letters|lines) #IMPLIED>+<!ATTLIST style:properties style:text-combine-start-char %character; #IMPLIED>+<!ATTLIST style:properties style:text-combine-end-char %character; #IMPLIED>+<!ATTLIST style:properties style:text-emphasize CDATA #IMPLIED>+<!ATTLIST style:properties style:text-scale %percentage; #IMPLIED>+<!ATTLIST style:properties style:text-rotation-angle %integer; #IMPLIED>+<!ATTLIST style:properties style:text-rotation-scale (fixed|line-height) #IMPLIED>++<!-- paragraph properties -->+<!ENTITY % nonNegativeLengthOrPercentageOrNormal "CDATA">+<!ATTLIST style:properties fo:line-height+ %nonNegativeLengthOrPercentageOrNormal; #IMPLIED>+<!ATTLIST style:properties style:line-height-at-least %nonNegativeLength;+ #IMPLIED>+<!ATTLIST style:properties style:line-spacing %length; #IMPLIED>+<!ATTLIST style:properties fo:text-align (start|end|center|justify) #IMPLIED>+<!ATTLIST style:properties fo:text-align-last (start|center|justify) #IMPLIED>+<!ATTLIST style:properties style:text-align-source (fix|value-type) #IMPLIED>+<!ATTLIST style:properties style:justify-single-word %boolean; #IMPLIED>+<!ATTLIST style:properties style:break-inside (auto|avoid) #IMPLIED>+<!ATTLIST style:properties fo:widows %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties fo:orphans %nonNegativeInteger; #IMPLIED>++<!ATTLIST style:properties fo:hyphenate %boolean; #IMPLIED>+<!ATTLIST style:properties fo:hyphenate-keep (none|page) #IMPLIED>+<!ATTLIST style:properties fo:hyphenation-remain-char-count %positiveInteger;+ #IMPLIED>+<!ATTLIST style:properties fo:hyphenation-push-char-count %positiveInteger;+ #IMPLIED>+<!ATTLIST style:properties fo:hyphenation-ladder-count+ %noLimitOrPositiveInteger; #IMPLIED>+<!ATTLIST style:properties style:page-number %positiveInteger; #IMPLIED>++<!ELEMENT style:tab-stops (style:tab-stop)*>+<!ELEMENT style:tab-stop EMPTY>+<!ATTLIST style:tab-stop style:position %nonNegativeLength; #REQUIRED>+<!ATTLIST style:tab-stop style:type (left|center|right|char|default) "left">+<!ATTLIST style:tab-stop style:char %character; #IMPLIED>+<!ATTLIST style:tab-stop style:leader-char %character; " ">++<!ELEMENT style:drop-cap EMPTY>+<!ENTITY % wordOrPositiveInteger "CDATA">+<!ATTLIST style:drop-cap style:length %wordOrPositiveInteger; "1">+<!ATTLIST style:drop-cap style:lines %positiveInteger; "1">+<!ATTLIST style:drop-cap style:distance %length; "0cm">+<!ATTLIST style:drop-cap style:style-name %styleName; #IMPLIED>++<!ATTLIST style:properties style:register-true %boolean; #IMPLIED>+<!ATTLIST style:properties style:register-truth-ref-style-name %styleName; #IMPLIED>+<!ATTLIST style:properties fo:margin-left %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:margin-right %positiveLengthOrPercentage;+ #IMPLIED>+<!ATTLIST style:properties fo:text-indent %lengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties style:auto-text-indent %boolean; #IMPLIED>+<!ATTLIST style:properties fo:margin-top %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:margin-bottom %positiveLengthOrPercentage; #IMPLIED>+<!ATTLIST style:properties fo:break-before (auto|column|page) #IMPLIED>+<!ATTLIST style:properties fo:break-after (auto|column|page) #IMPLIED>+<!ATTLIST style:properties fo:background-color %transparentOrColor; #IMPLIED>+<!ATTLIST style:properties style:background-transparency %percentage; #IMPLIED>+<!ATTLIST style:properties style:dynamic-spacing %boolean; #IMPLIED>++<!ELEMENT style:background-image (office:binary-data?)>+<!ATTLIST style:background-image xlink:type (simple) #IMPLIED>+<!ATTLIST style:background-image xlink:href %uriReference; #IMPLIED>+<!ATTLIST style:background-image xlink:show (embed) #IMPLIED>+<!ATTLIST style:background-image xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST style:background-image style:repeat (no-repeat|repeat|stretch)+ "repeat">+<!ATTLIST style:background-image style:position CDATA "center">+<!ATTLIST style:background-image style:filter-name %string; #IMPLIED>+<!ATTLIST style:background-image draw:transparency %percentage; #IMPLIED>++<!ELEMENT style:symbol-image (office:binary-data?)>+<!ATTLIST style:symbol-image xlink:type (simple) #IMPLIED>+<!ATTLIST style:symbol-image xlink:href %uriReference; #IMPLIED>+<!ATTLIST style:symbol-image xlink:show (embed) #IMPLIED>+<!ATTLIST style:symbol-image xlink:actuate (onLoad) #IMPLIED>++<!ATTLIST style:properties fo:border CDATA #IMPLIED>+<!ATTLIST style:properties fo:border-top CDATA #IMPLIED>+<!ATTLIST style:properties fo:border-bottom CDATA #IMPLIED>+<!ATTLIST style:properties fo:border-left CDATA #IMPLIED>+<!ATTLIST style:properties fo:border-right CDATA #IMPLIED>+<!ATTLIST style:properties style:border-line-width CDATA #IMPLIED>+<!ATTLIST style:properties style:border-line-width-top CDATA #IMPLIED>+<!ATTLIST style:properties style:border-line-width-bottom CDATA #IMPLIED>+<!ATTLIST style:properties style:border-line-width-left CDATA #IMPLIED>+<!ATTLIST style:properties style:border-line-width-right CDATA #IMPLIED>+<!ATTLIST style:properties fo:padding %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties fo:padding-top %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties fo:padding-bottom %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties fo:padding-left %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties fo:padding-right %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties style:shadow CDATA #IMPLIED>+<!ATTLIST style:properties fo:keep-with-next %boolean; #IMPLIED>++<!ATTLIST style:properties text:number-lines %boolean; "false">+<!ATTLIST style:properties text:line-number %nonNegativeInteger; #IMPLIED>++<!ATTLIST style:properties style:decimal-places %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:properties style:tab-stop-distance %nonNegativeLength; #IMPLIED>++<!-- section properties -->+<!ATTLIST style:properties text:dont-balance-text-columns %boolean; #IMPLIED>++<!-- ruby properties -->+<!ATTLIST style:properties style:ruby-align (left|center|right|distribute-letter|distribute-space) #IMPLIED>+<!ATTLIST style:properties style:ruby-position (above|below) #IMPLIED>+++<!-- table properties -->+<!ATTLIST style:properties style:width %positiveLength; #IMPLIED>+<!ATTLIST style:properties style:rel-width %percentage; #IMPLIED>+<!ATTLIST style:properties style:may-break-between-rows %boolean; #IMPLIED>+<!ATTLIST style:properties table:page-style-name %styleName; #IMPLIED>+<!ATTLIST style:properties table:display %boolean; #IMPLIED>++<!-- table column properties -->+<!ATTLIST style:properties style:column-width %positiveLength; #IMPLIED>+<!ENTITY % relWidth "CDATA">+<!ATTLIST style:properties style:rel-column-width %relWidth; #IMPLIED>+<!ATTLIST style:properties style:use-optimal-column-width %boolean; #IMPLIED>++<!-- table row properties -->+<!ATTLIST style:properties style:row-height %positiveLength; #IMPLIED>+<!ATTLIST style:properties style:min-row-height %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties style:use-optimal-row-height %boolean; #IMPLIED>++<!-- table cell properties -->+<!ATTLIST style:properties+ table:align (left | center | right | margins) #IMPLIED+ table:border-model (collapsing | separating) #IMPLIED+ fo:vertical-align (top | middle | bottom | automatic) #IMPLIED+ fo:direction (ltr | ttb) #IMPLIED+ style:glyph-orientation-vertical (auto | 0) #IMPLIED+ style:rotation-angle %nonNegativeInteger; #IMPLIED+ style:rotation-align (none | bottom | top | center) #IMPLIED+ style:cell-protect CDATA #IMPLIED+ fo:wrap-option (no-wrap | wrap) #IMPLIED+>+<!ELEMENT style:columns (style:column-sep?,style:column*)>+<!ATTLIST style:columns fo:column-count %nonNegativeInteger; #IMPLIED>+<!ATTLIST style:columns fo:column-gap %positiveLength; #IMPLIED>++<!ELEMENT style:column EMPTY>+<!ATTLIST style:column style:rel-width CDATA #IMPLIED>+<!ATTLIST style:column fo:margin-left %positiveLength; #IMPLIED>+<!ATTLIST style:column fo:margin-right %positiveLength; #IMPLIED>++<!ELEMENT style:column-sep EMPTY>+<!ATTLIST style:column-sep style:style (none|solid|dotted|dashed|dot-dashed)+ "solid">+<!ATTLIST style:column-sep style:width %length; #REQUIRED>+<!ATTLIST style:column-sep style:height %percentage; "100%">+<!ATTLIST style:column-sep style:vertical-align (top|middle|bottom) "top">+<!ATTLIST style:column-sep style:color %color; "#000000">++<!-- page master properties -->+<!ELEMENT style:page-master (style:properties?, style:header-style?, style:footer-style?)>+<!ATTLIST style:page-master style:name %styleName; #REQUIRED>+<!ATTLIST style:page-master style:page-usage (all|left|right|mirrored) "all">++<!ELEMENT style:header-style (style:properties?)>+<!ELEMENT style:footer-style (style:properties?)>++<!ATTLIST style:properties fo:page-width %length; #IMPLIED>+<!ATTLIST style:properties fo:page-height %length; #IMPLIED>+<!ATTLIST style:properties style:paper-tray-name %string; #IMPLIED>+<!ATTLIST style:properties style:print-orientation (portrait|landscape) #IMPLIED>+<!ATTLIST style:properties style:print CDATA #IMPLIED>+<!ATTLIST style:properties style:print-page-order (ttb|ltr) #IMPLIED>+<!ATTLIST style:properties style:first-page-number %positiveInteger; #IMPLIED>+<!ATTLIST style:properties style:scale-to %percentage; #IMPLIED>+<!ATTLIST style:properties style:scale-to-pages %positiveInteger; #IMPLIED>+<!ATTLIST style:properties style:table-centering (horizontal | vertical | both | none) #IMPLIED>++<!ATTLIST style:properties style:footnote-max-height %lengthOrNoLimit; #IMPLIED>+<!ATTLIST style:properties style:vertical-align (top|bottom|middle|basline|auto) #IMPLIED>+<!ATTLIST style:properties style:writing-mode (lr-tb|rl-tb|tb-rl|tb-lr|lr|rl|tb|page) "lr-tb">+<!ATTLIST style:properties style:layout-grid-mode (none|line|both) #IMPLIED>+<!ATTLIST style:properties style:layout-grid-base-height %length; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-ruby-height %length; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-lines %positiveInteger; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-color %color; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-ruby-below %boolean; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-print %boolean; #IMPLIED>+<!ATTLIST style:properties style:layout-grid-display %boolean; #IMPLIED>+<!ATTLIST style:properties style:snap-to-layout-grid %boolean; #IMPLIED>++<!ELEMENT style:footnote-sep EMPTY>+<!ATTLIST style:footnote-sep style:width %length; #IMPLIED>+<!ATTLIST style:footnote-sep style:rel-width %percentage; #IMPLIED>+<!ATTLIST style:footnote-sep style:color %color; #IMPLIED>+<!ATTLIST style:footnote-sep style:adjustment (left|center|right) "left">+<!ATTLIST style:footnote-sep style:distance-before-sep %length; #IMPLIED>+<!ATTLIST style:footnote-sep style:distance-after-sep %length; #IMPLIED>++<!-- master page -->+<!ELEMENT style:master-page ( (style:header, style:header-left?)?, (style:footer, style:footer-left?)?,+ office:forms?,style:style*, (%shapes;)*, presentation:notes? )>+<!ATTLIST style:master-page style:name %styleName; #REQUIRED>+<!ATTLIST style:master-page style:page-master-name %styleName; #REQUIRED>+<!ATTLIST style:master-page style:next-style-name %styleName; #IMPLIED>+<!ATTLIST style:master-page draw:style-name %styleName; #IMPLIED>++<!-- handout master -->+<!ELEMENT style:handout-master (%shapes;)*>+<!ATTLIST style:handout-master presentation:presentation-page-layout-name %styleName; #IMPLIED>+<!ATTLIST style:handout-master style:page-master-name %styleName; #IMPLIED>+++<!ENTITY % hd-ft-content "( %headerText; | (style:region-left?, style:region-center?, style:region-right?) )">+<!ELEMENT style:header %hd-ft-content;>+<!ATTLIST style:header style:display %boolean; "true">+<!ELEMENT style:footer %hd-ft-content;>+<!ATTLIST style:footer style:display %boolean; "true">+<!ELEMENT style:header-left %hd-ft-content;>+<!ATTLIST style:header-left style:display %boolean; "true">+<!ELEMENT style:footer-left %hd-ft-content;>+<!ATTLIST style:footer-left style:display %boolean; "true">++<!ENTITY % region-content "(text:p*)">+<!ELEMENT style:region-left %region-content;>+<!ELEMENT style:region-center %region-content;>+<!ELEMENT style:region-right %region-content;>
+ examples/OpenOffice.org/table.mod view
@@ -0,0 +1,522 @@+<!--+ $Id: table.mod,v 1.1 2003/05/13 13:07:54 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses++ - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1++ Sun Microsystems Inc., October, 2000++ GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA++ This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.++ You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+++ Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.++ Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.++ The Initial Developer of the Original Code is: Sun Microsystems, Inc.++ Copyright: 2000 by Sun Microsystems, Inc.++ All Rights Reserved.++ Contributor(s): _______________________________________++-->++<!ELEMENT table:calculation-settings (table:null-date?, table:iteration?)>+<!ATTLIST table:calculation-settings+ table:case-sensitive %boolean; "true"+ table:precision-as-shown %boolean; "false"+ table:search-criteria-must-apply-to-whole-cell %boolean; "true"+ table:automatic-find-labels %boolean; "true"+ table:use-regular-expressions %boolean; "true"+ table:null-year %positiveInteger; "1930"+>+<!ELEMENT table:null-date EMPTY>+<!ATTLIST table:null-date+ table:value-type %valueType; #FIXED "date"+ table:date-value %date; "1899-12-30"+>+<!ELEMENT table:iteration EMPTY>+<!ATTLIST table:iteration+ table:status (enable | disable) "disable"+ table:steps %positiveInteger; "100"+ table:maximum-difference %float; "0.001"+>++<!ELEMENT table:tracked-changes (table:cell-content-change | table:insertion | table:deletion | table:movement | table:rejection)*>+<!ATTLIST table:tracked-changes table:track-changes %boolean; "true"+ table:protected %boolean; "false"+ table:protection-key CDATA #IMPLIED+>++<!ELEMENT table:dependences (table:dependence)+>+<!ELEMENT table:dependence EMPTY>+<!ATTLIST table:dependence+ table:id CDATA #REQUIRED+>+<!ELEMENT table:deletions (table:cell-content-deletion | table:change-deletion)+>+<!ELEMENT table:cell-content-deletion (table:cell-address?, table:change-track-table-cell?)>+<!ATTLIST table:cell-content-deletion+ table:id CDATA #IMPLIED+>+<!ELEMENT table:change-deletion EMPTY>+<!ATTLIST table:change-deletion+ table:id CDATA #IMPLIED+>+<!ELEMENT table:insertion (office:change-info, table:dependences?, table:deletions?)>+<!ATTLIST table:insertion+ table:id CDATA #REQUIRED+ table:acceptance-state (accepted | rejected | pending) "pending"+ table:rejecting-change-id %positiveInteger; #IMPLIED+ table:type (row | column | table) #REQUIRED+ table:position %integer; #REQUIRED+ table:count %positiveInteger; "1"+ table:table %integer; #IMPLIED+>+<!ELEMENT table:deletion (office:change-info, table:dependences?, table:deletions?, table:cut-offs?)>+<!ATTLIST table:deletion+ table:id CDATA #REQUIRED+ table:acceptance-state (accepted | rejected | pending) "pending"+ table:rejecting-change-id %positiveInteger; #IMPLIED+ table:type (row | column | table) #REQUIRED+ table:position %integer; #REQUIRED+ table:count %positiveInteger; "1"+ table:table %integer; #IMPLIED+ table:multi-deletion-spanned %integer; #IMPLIED+>+<!ELEMENT table:cut-offs (table:movement-cut-off+ | (table:insertion-cut-off, table:movement-cut-off*))>+<!ELEMENT table:insertion-cut-off EMPTY>+<!ATTLIST table:insertion-cut-off+ table:id CDATA #REQUIRED+ table:position %integer; #REQUIRED+>+<!ELEMENT table:movement-cut-off EMPTY>+<!ATTLIST table:movement-cut-off+ table:id CDATA #REQUIRED+ table:start-position %integer; #IMPLIED+ table:end-position %integer; #IMPLIED+ table:position %integer; #IMPLIED+>+<!ELEMENT table:movement (table:source-range-address, table:target-range-address, office:change-info, table:dependences?, table:deletions?)>+<!ATTLIST table:movement+ table:id CDATA #REQUIRED+ table:acceptance-state (accepted | rejected | pending) "pending"+ table:rejecting-change-id %positiveInteger; #IMPLIED+>+<!ELEMENT table:target-range-address EMPTY>+<!ATTLIST table:target-range-address+ table:column %integer; #IMPLIED+ table:row %integer; #IMPLIED+ table:table %integer; #IMPLIED+ table:start-column %integer; #IMPLIED+ table:start-row %integer; #IMPLIED+ table:start-table %integer; #IMPLIED+ table:end-column %integer; #IMPLIED+ table:end-row %integer; #IMPLIED+ table:end-table %integer; #IMPLIED+>+<!ELEMENT table:source-range-address EMPTY>+<!ATTLIST table:source-range-address+ table:column %integer; #IMPLIED+ table:row %integer; #IMPLIED+ table:table %integer; #IMPLIED+ table:start-column %integer; #IMPLIED+ table:start-row %integer; #IMPLIED+ table:start-table %integer; #IMPLIED+ table:end-column %integer; #IMPLIED+ table:end-row %integer; #IMPLIED+ table:end-table %integer; #IMPLIED+>+<!ELEMENT table:change-track-table-cell (text:p*)>+<!ATTLIST table:change-track-table-cell+ table:cell-address %cell-address; #IMPLIED+ table:matrix-covered (true | false) "false"+ table:formula %string; #IMPLIED+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED+ table:value-type %valueType; "string"+ table:value %float; #IMPLIED+ table:date-value %date; #IMPLIED+ table:time-value %timeInstance; #IMPLIED+ table:string-value %string; #IMPLIED+>+<!ELEMENT table:cell-content-change (table:cell-address, office:change-info, table:dependences?, table:deletions?, table:previous)>+<!ATTLIST table:cell-content-change+ table:id CDATA #REQUIRED+ table:acceptance-state (accepted | rejected | pending) "pending"+ table:rejecting-change-id %positiveInteger; #IMPLIED+>+<!ELEMENT table:cell-address EMPTY>+<!ATTLIST table:cell-address+ table:column %integer; #IMPLIED+ table:row %integer; #IMPLIED+ table:table %integer; #IMPLIED+>+<!ELEMENT table:previous (table:change-track-table-cell)>+<!ATTLIST table:previous+ table:id CDATA #IMPLIED+>+<!ELEMENT table:rejection (office:change-info, table:dependences?, table:deletions?)>+<!ATTLIST table:rejection+ table:id CDATA #REQUIRED+ table:acceptance-state (accepted | rejected | pending) "pending"+ table:rejecting-change-id %positiveInteger; #IMPLIED+>++<!ENTITY % table-columns "table:table-columns | ( table:table-column | table:table-column-group )+">+<!ENTITY % table-header-columns "table:table-header-columns">+<!ENTITY % table-rows "table:table-rows | ( table:table-row | table:table-row-group )+">+<!ENTITY % table-header-rows "table:table-header-rows">+<!ENTITY % table-column-groups "((%table-columns;),(%table-header-columns;,(%table-columns;)?)?) | (%table-header-columns;,(%table-columns;)?)">+<!ENTITY % table-row-groups "((%table-rows;),(%table-header-rows;,(%table-rows;)?)?) | (%table-header-rows;,(%table-rows;)?)">+<!ELEMENT table:table (table:table-source?, table:scenario?, office:forms?, table:shapes?, (%table-column-groups;), (%table-row-groups;))>+<!ATTLIST table:table+ table:name %string; #IMPLIED+ table:style-name %styleName; #IMPLIED+ table:protected %boolean; "false"+ table:protection-key CDATA #IMPLIED+ table:print-ranges %cell-range-address-list; #IMPLIED+>+<!ELEMENT table:table-source EMPTY>+<!ATTLIST table:table-source+ table:mode (copy-all | copy-results-only) "copy-all"+ xlink:type (simple) #FIXED "simple"+ xlink:actuate (onRequest) "onRequest"+ xlink:href %uriReference; #REQUIRED+ table:filter-name CDATA #IMPLIED+ table:table-name CDATA #IMPLIED+ table:filter-options CDATA #IMPLIED+ table:refresh-delay %timeDuration; #IMPLIED+>+<!ELEMENT table:scenario EMPTY>+<!ATTLIST table:scenario+ table:display-border %boolean; "true"+ table:border-color %color; #IMPLIED+ table:copy-back %boolean; "true"+ table:copy-styles %boolean; "true"+ table:copy-formulas %boolean; "true"+ table:is-active %boolean; #REQUIRED+ table:scenario-ranges %cell-range-address-list; #REQUIRED+ table:comment CDATA #IMPLIED+>+<!ELEMENT table:shapes %shapes;>+<!ELEMENT table:table-column-group (table:table-header-columns | table:table-column | table:table-column-group)+>+<!ATTLIST table:table-column-group+ table:display %boolean; "true"+>+<!ELEMENT table:table-header-columns (table:table-column | table:table-column-group)+>+<!ELEMENT table:table-columns (table:table-column | table:table-column-group)+>+<!ELEMENT table:table-column EMPTY>+<!ATTLIST table:table-column+ table:number-columns-repeated %positiveInteger; "1"+ table:style-name %styleName; #IMPLIED+ table:visibility (visible | collapse | filter) "visible"+ table:default-cell-style-name %styleName; #IMPLIED+>+<!ELEMENT table:table-row-group (table:table-header-rows | table:table-row | table:table-row-group)+>+<!ATTLIST table:table-row-group+ table:display %boolean; "true"+>+<!ELEMENT table:table-header-rows (table:table-row | table:table-row-group)+>+<!ELEMENT table:table-rows (table:table-row | table:table-row-group)+>+<!ENTITY % table-cells "(table:table-cell|table:covered-table-cell)+">+<!ELEMENT table:table-row %table-cells;>+<!ATTLIST table:table-row+ table:number-rows-repeated %positiveInteger; "1"+ table:style-name %styleName; #IMPLIED+ table:visibility (visible | collapse | filter) "visible"+ table:default-cell-style-name %styleName; #IMPLIED+>++<!ENTITY % text-wo-table "(text:h|text:p|text:ordered-list|text:unordered-list|%shapes;)*">+<!ENTITY % cell-content "(table:cell-range-source?,office:annotation?,table:detective?,(table:sub-table|%text-wo-table;))">+<!ELEMENT table:table-cell %cell-content;>+<!ELEMENT table:covered-table-cell %cell-content;>+<!ATTLIST table:table-cell+ table:number-columns-repeated %positiveInteger; "1"+ table:number-rows-spanned %positiveInteger; "1"+ table:number-columns-spanned %positiveInteger; "1"+ table:style-name %styleName; #IMPLIED+ table:validation-name CDATA #IMPLIED+ table:formula %string; #IMPLIED+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED+ table:value-type %valueType; "string"+ table:value %float; #IMPLIED+ table:date-value %date; #IMPLIED+ table:time-value %timeInstance; #IMPLIED+ table:boolean-value %boolean; #IMPLIED+ table:string-value %string; #IMPLIED+ table:currency %string; #IMPLIED+>+<!ATTLIST table:covered-table-cell+ table:number-columns-repeated %positiveInteger; "1"+ table:style-name %styleName; #IMPLIED+ table:validation-name CDATA #IMPLIED+ table:formula %string; #IMPLIED+ table:number-matrix-rows-spanned %positiveInteger; #IMPLIED+ table:number-matrix-columns-spanned %positiveInteger; #IMPLIED+ table:value-type %valueType; "string"+ table:value %float; #IMPLIED+ table:date-value %date; #IMPLIED+ table:time-value %timeInstance; #IMPLIED+ table:boolean-value %boolean; #IMPLIED+ table:string-value %string; #IMPLIED+ table:currency %string; #IMPLIED+>+<!-- cell protection in writer: cell attribute; calc uses format -->+<!ATTLIST table:table-cell table:protected %boolean; "false">++<!ELEMENT table:cell-range-source EMPTY>+<!ATTLIST table:cell-range-source+ table:name %string; #REQUIRED+ xlink:type (simple) #FIXED "simple"+ xlink:actuate (onRequest) #FIXED "onRequest"+ xlink:href %uriReference; #REQUIRED+ table:filter-name %string; #REQUIRED+ table:filter-options %string; #IMPLIED+ table:last-column-spanned %positiveInteger; #REQUIRED+ table:last-row-spanned %positiveInteger; #REQUIRED+ table:refresh-delay %timeDuration; #IMPLIED+>++<!ELEMENT table:detective (table:highlighted-range*, table:operation*)>+<!ELEMENT table:highlighted-range EMPTY>+<!ATTLIST table:highlighted-range+ table:cell-range-address %cell-range-address; #IMPLIED+ table:direction (from-another-table | to-another-table | from-same-table | to-same-table) #IMPLIED+ table:contains-error %boolean; #IMPLIED+ table:marked-invalid %boolean; #IMPLIED+>+<!ELEMENT table:operation EMPTY>+<!ATTLIST table:operation+ table:name (trace-dependents | remove-dependents | trace-precedents | remove-precedents | trace-errors) #REQUIRED+ table:index %nonNegativeInteger; #REQUIRED+>++<!ELEMENT table:content-validations (table:content-validation)+>+<!ELEMENT table:content-validation (table:help-message?, (table:error-message | (table:error-macro, office:events?))?)>+<!ATTLIST table:content-validation+ table:name CDATA #REQUIRED+ table:condition CDATA #IMPLIED+ table:base-cell-address %cell-address; #IMPLIED+ table:allow-empty-cell %boolean; #IMPLIED+>+<!ELEMENT table:help-message (text:p*)>+<!ATTLIST table:help-message+ table:title CDATA #IMPLIED+ table:display %boolean; #IMPLIED+>+<!ELEMENT table:error-message (text:p*)>+<!ATTLIST table:error-message+ table:title CDATA #IMPLIED+ table:message-type (stop | warning | information) #IMPLIED+ table:display %boolean; #IMPLIED+>+<!ELEMENT table:error-macro EMPTY>+<!ATTLIST table:error-macro+ table:name CDATA #IMPLIED+ table:execute %boolean; #IMPLIED+>++<!ELEMENT table:sub-table ((%table-column-groups;) , (%table-row-groups;))>++<!ELEMENT table:label-ranges (table:label-range)*>+<!ELEMENT table:label-range EMPTY>+<!ATTLIST table:label-range+ table:label-cell-range-address %cell-range-address; #REQUIRED+ table:data-cell-range-address %cell-range-address; #REQUIRED+ table:orientation (column | row) #REQUIRED+>++<!ELEMENT table:named-expressions (table:named-range | table:named-expression)*>+<!ELEMENT table:named-range EMPTY>+<!ATTLIST table:named-range+ table:name CDATA #REQUIRED+ table:cell-range-address %cell-range-address; #REQUIRED+ table:base-cell-address %cell-address; #IMPLIED+ table:range-usable-as CDATA "none"+>+<!ELEMENT table:named-expression EMPTY>+<!ATTLIST table:named-expression+ table:name CDATA #REQUIRED+ table:expression CDATA #REQUIRED+ table:base-cell-address %cell-address; #IMPLIED+>++<!ELEMENT table:filter (table:filter-condition | table:filter-and | table:filter-or)>+<!ATTLIST table:filter+ table:target-range-address %cell-range-address; #IMPLIED+ table:condition-source-range-address %cell-range-address; #IMPLIED+ table:condition-source (self | cell-range) "self"+ table:display-duplicates %boolean; "true"+>+<!ELEMENT table:filter-and (table:filter-or | table:filter-condition)+>+<!ELEMENT table:filter-or (table:filter-and | table:filter-condition)+>+<!ELEMENT table:filter-condition EMPTY>+<!ATTLIST table:filter-condition+ table:field-number %nonNegativeInteger; #REQUIRED+ table:case-sensitive %boolean; "false"+ table:data-type (text | number) "text"+ table:value CDATA #REQUIRED+ table:operator CDATA #REQUIRED+>++<!ELEMENT table:database-ranges (table:database-range)*>+<!ELEMENT table:database-range ((table:database-source-sql | table:database-source-table | table:database-source-query)?, table:filter?, table:sort?, table:subtotal-rules?)>+<!ATTLIST table:database-range+ table:name CDATA #IMPLIED+ table:is-selection %boolean; "false"+ table:on-update-keep-styles %boolean; "false"+ table:on-update-keep-size %boolean; "true"+ table:has-persistant-data %boolean; "true"+ table:orientation (row | column) "row"+ table:contains-header %boolean; "true"+ table:display-filter-buttons %boolean; "false"+ table:target-range-address %cell-range-address; #REQUIRED+ table:refresh-delay %timeDuration; #IMPLIED+>+<!ELEMENT table:database-source-sql EMPTY>+<!ATTLIST table:database-source-sql+ table:database-name CDATA #REQUIRED+ table:sql-statement CDATA #REQUIRED+ table:parse-sql-statements %boolean; "false"+>+<!ELEMENT table:database-source-table EMPTY>+<!ATTLIST table:database-source-table+ table:database-name CDATA #REQUIRED+ table:table-name CDATA #REQUIRED+>+<!ELEMENT table:database-source-query EMPTY>+<!ATTLIST table:database-source-query+ table:database-name CDATA #REQUIRED+ table:query-name CDATA #REQUIRED+>++<!ELEMENT table:sort (table:sort-by)+>+<!ATTLIST table:sort+ table:bind-styles-to-content %boolean; "true"+ table:target-range-address %cell-range-address; #IMPLIED+ table:case-sensitive %boolean; "false"+ table:language CDATA #IMPLIED+ table:country CDATA #IMPLIED+ table:algorithm CDATA #IMPLIED+>+<!ELEMENT table:sort-by EMPTY>+<!ATTLIST table:sort-by+ table:field-number %nonNegativeInteger; #REQUIRED+ table:data-type CDATA "automatic"+ table:order (ascending | descending) "ascending"+>++<!ELEMENT table:subtotal-rules (table:sort-groups? | table:subtotal-rule*)?>+<!ATTLIST table:subtotal-rules+ table:bind-styles-to-content %boolean; "true"+ table:case-sensitive %boolean; "false"+ table:page-breaks-on-group-change %boolean; "false"+>+<!ELEMENT table:sort-groups EMPTY>+<!ATTLIST table:sort-groups+ table:data-type CDATA "automatic"+ table:order (ascending | descending) "ascending"+>+<!ELEMENT table:subtotal-rule (table:subtotal-field)*>+<!ATTLIST table:subtotal-rule+ table:group-by-field-number %nonNegativeInteger; #REQUIRED+>+<!ELEMENT table:subtotal-field EMPTY>+<!ATTLIST table:subtotal-field+ table:field-number %nonNegativeInteger; #REQUIRED+ table:function CDATA #REQUIRED+>++<!ELEMENT table:data-pilot-tables (table:data-pilot-table)*>+<!ELEMENT table:data-pilot-table ((table:database-source-sql | table:database-source-table | table:database-source-query | table:source-service | table:source-cell-range)?, table:data-pilot-field+)>+<!ATTLIST table:data-pilot-table+ table:name CDATA #REQUIRED+ table:application-data CDATA #IMPLIED+ table:grand-total (none | row | column | both) "both"+ table:ignore-empty-rows %boolean; "false"+ table:identify-categories %boolean; "false"+ table:target-range-address %cell-range-address; #REQUIRED+ table:buttons %cell-range-address-list; #REQUIRED+>+<!ELEMENT table:source-service EMPTY>+<!ATTLIST table:source-service+ table:name CDATA #REQUIRED+ table:source-name CDATA #REQUIRED+ table:object-name CDATA #REQUIRED+ table:username CDATA #IMPLIED+ table:password CDATA #IMPLIED+>+<!ELEMENT table:source-cell-range (table:filter)?>+<!ATTLIST table:source-cell-range+ table:cell-range-address %cell-range-address; #REQUIRED+>+<!ELEMENT table:data-pilot-field (table:data-pilot-level)?>+<!ATTLIST table:data-pilot-field+ table:source-field-name CDATA #REQUIRED+ table:is-data-layout-field %boolean; "false"+ table:function CDATA #REQUIRED+ table:orientation (row | column | data | page | hidden) #REQUIRED+ table:used-hierarchy %positiveInteger; "1"+>+<!ELEMENT table:data-pilot-level (table:data-pilot-subtotals?, table:data-pilot-members?)>+<!ATTLIST table:data-pilot-level+ table:display-empty %boolean; #IMPLIED+>+<!ELEMENT table:data-pilot-subtotals (table:data-pilot-subtotal)*>+<!ELEMENT table:data-pilot-subtotal EMPTY>+<!ATTLIST table:data-pilot-subtotal+ table:function CDATA #REQUIRED+>+<!ELEMENT table:data-pilot-members (table:data-pilot-member)*>+<!ELEMENT table:data-pilot-member EMPTY>+<!ATTLIST table:data-pilot-member+ table:name CDATA #REQUIRED+ table:display %boolean; #IMPLIED+ table:display-details %boolean; #IMPLIED+>++<!ELEMENT table:consolidation EMPTY>+<!ATTLIST table:consolidation+ table:function CDATA #REQUIRED+ table:source-cell-range-addresses %cell-range-address-list; #REQUIRED+ table:target-cell-address %cell-address; #REQUIRED+ table:use-label (none | column | row | both) "none"+ table:link-to-source-data %boolean; "false"+>++<!ELEMENT table:dde-links (table:dde-link)+>+<!ELEMENT table:dde-link (office:dde-source, table:table)>
+ examples/OpenOffice.org/text.mod view
@@ -0,0 +1,1126 @@+<!--+ $Id: text.mod,v 1.1 2003/05/13 13:07:54 malcolm Exp $++ The Contents of this file are made available subject to the terms of+ either of the following licenses+ + - GNU Lesser General Public License Version 2.1+ - Sun Industry Standards Source License Version 1.1+ + Sun Microsystems Inc., October, 2000+ + GNU Lesser General Public License Version 2.1+ =============================================+ Copyright 2000 by Sun Microsystems, Inc.+ 901 San Antonio Road, Palo Alto, CA 94303, USA+ + This library is free software; you can redistribute it and/or+ modify it under the terms of the GNU Lesser General Public+ License version 2.1, as published by the Free Software Foundation.+ + This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ Lesser General Public License for more details.+ + You should have received a copy of the GNU Lesser General Public+ License along with this library; if not, write to the Free Software+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,+ MA 02111-1307 USA+ + + Sun Industry Standards Source License Version 1.1+ =================================================+ The contents of this file are subject to the Sun Industry Standards+ Source License Version 1.1 (the "License"); You may not use this file+ except in compliance with the License. You may obtain a copy of the+ License at http://www.openoffice.org/license.html.+ + Software provided under this License is provided on an "AS IS" basis,+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,+ WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.+ See the License for the specific provisions governing your rights and+ obligations concerning the Software.+ + The Initial Developer of the Original Code is: Sun Microsystems, Inc.+ + Copyright: 2000 by Sun Microsystems, Inc.+ + All Rights Reserved.+ + Contributor(s): _______________________________________++-->++<!ENTITY % fields "text:date |+ text:time |+ text:page-number |+ text:page-continuation |+ text:sender-firstname |+ text:sender-lastname |+ text:sender-initials | + text:sender-title |+ text:sender-position |+ text:sender-email | + text:sender-phone-private |+ text:sender-fax | + text:sender-company |+ text:sender-phone-work |+ text:sender-street |+ text:sender-city |+ text:sender-postal-code |+ text:sender-country |+ text:sender-state-or-province |+ text:author-name |+ text:author-initials |+ text:placeholder |+ text:variable-set | + text:variable-get | + text:variable-input | + text:user-field-get | + text:user-field-input | + text:sequence | + text:expression | + text:text-input |+ text:database-display |+ text:database-next |+ text:database-select |+ text:database-row-number |+ text:database-name |+ text:initial-creator |+ text:creation-date |+ text:creation-time |+ text:description |+ text:user-defined |+ text:print-time |+ text:print-date |+ text:printed-by |+ text:title |+ text:subject |+ text:keywords |+ text:editing-cycles |+ text:editing-duration |+ text:modification-time |+ text:modification-date |+ text:creator |+ text:conditional-text |+ text:hidden-text |+ text:hidden-paragraph |+ text:chapter |+ text:file-name |+ text:template-name |+ text:page-variable-set |+ text:page-variable-get |+ text:execute-macro |+ text:dde-connection |+ text:reference-ref |+ text:sequence-ref |+ text:bookmark-ref |+ text:footnote-ref |+ text:endnote-ref |+ text:sheet-name |+ text:bibliography-mark |+ text:page-count |+ text:paragraph-count |+ text:word-count |+ text:character-count |+ text:table-count |+ text:image-count |+ text:object-count |+ office:annotation |+ text:script |+ text:measure" >++<!ENTITY % inline-text-elements "+ text:span|text:tab-stop|text:s|text:line-break|+ text:footnote|text:endnote|text:a|+ text:bookmark|text:bookmark-start|text:bookmark-end|+ text:reference-mark|text:reference-mark-start|+ text:reference-mark-end|%fields;|%shape;|+ text:toc-mark-start | text:toc-mark-end | + text:toc-mark | text:user-index-mark-start |+ text:user-index-mark-end | text:user-index-mark |+ text:alphabetical-index-mark-start |+ text:alphabetical-index-mark-end |+ text:alphabetical-index-mark |+ %change-marks; | draw:a | text:ruby">++<!ENTITY % inline-text "( #PCDATA | %inline-text-elements; )*">++<!ELEMENT text:p %inline-text;>+<!ELEMENT text:h %inline-text;>++<!ATTLIST text:p text:style-name %styleName; #IMPLIED>+<!ATTLIST text:p text:cond-style-name %styleName; #IMPLIED>++<!ATTLIST text:h text:style-name %styleName; #IMPLIED>+<!ATTLIST text:h text:cond-style-name %styleName; #IMPLIED>+<!ATTLIST text:h text:level %positiveInteger; "1">++<!ELEMENT text:span %inline-text;>+<!ATTLIST text:span text:style-name %styleName; #REQUIRED>++<!ELEMENT text:a (#PCDATA | office:events | %inline-text-elements;)*>+<!ATTLIST text:a xlink:href %uriReference; #REQUIRED>+<!ATTLIST text:a xlink:type (simple) #FIXED "simple">+<!ATTLIST text:a xlink:actuate (onRequest) "onRequest">+<!ATTLIST text:a xlink:show (new|replace) "replace">+<!ATTLIST text:a office:name %string; #IMPLIED>+<!ATTLIST text:a office:target-frame-name %string; #IMPLIED>+<!ATTLIST text:a text:style-name %styleName; #IMPLIED>+<!ATTLIST text:a text:visited-style-name %styleName; #IMPLIED>+++<!ELEMENT text:s EMPTY>+<!ATTLIST text:s text:c %positiveInteger; "1">++<!ELEMENT text:tab-stop EMPTY>++<!ELEMENT text:line-break EMPTY>+++<!ENTITY % list-items "((text:list-header,text:list-item*)|text:list-item+)">+<!ELEMENT text:ordered-list %list-items;>+<!ELEMENT text:unordered-list %list-items;>+++<!ATTLIST text:ordered-list text:style-name %styleName; #IMPLIED>+<!ATTLIST text:unordered-list text:style-name %styleName; #IMPLIED>++<!ATTLIST text:ordered-list text:continue-numbering %boolean; "false">++<!ELEMENT text:list-header (text:p|text:h)+>+<!ELEMENT text:list-item (text:p|text:h|text:ordered-list|text:unordered-list)+>++<!ATTLIST text:list-item text:restart-numbering %boolean; "false">+<!ATTLIST text:list-item text:start-value %positiveInteger; #IMPLIED>++<!ELEMENT text:list-style (text:list-level-style-number|+ text:list-level-style-bullet|+ text:list-level-style-image)+>++<!ATTLIST text:list-style style:name %styleName; #IMPLIED>++<!ATTLIST text:list-style text:consecutive-numbering %boolean; "false">+++<!ELEMENT text:list-level-style-number (style:properties?)>++<!ATTLIST text:list-level-style-number text:level %positiveInteger;+ #REQUIRED>+<!ATTLIST text:list-level-style-number text:style-name %styleName; #IMPLIED>++<!ATTLIST text:list-level-style-number style:num-format %string; #REQUIRED>+<!ATTLIST text:list-level-style-number style:num-prefix %string; #IMPLIED>+<!ATTLIST text:list-level-style-number style:num-suffix %string; #IMPLIED>+<!ATTLIST text:list-level-style-number style:num-letter-sync %boolean;+ "false">+<!ATTLIST text:list-level-style-number text:display-levels %positiveInteger;+ "1">+<!ATTLIST text:list-level-style-number text:start-value %positiveInteger;+ "1">+<!ELEMENT text:list-level-style-bullet (style:properties?)>++<!ATTLIST text:list-level-style-bullet text:level %positiveInteger; #REQUIRED>+<!ATTLIST text:list-level-style-bullet text:style-name %styleName; #IMPLIED>+<!ATTLIST text:list-level-style-bullet text:bullet-char %character; #REQUIRED>+<!ATTLIST text:list-level-style-bullet style:num-prefix %string; #IMPLIED>+<!ATTLIST text:list-level-style-bullet style:num-suffix %string; #IMPLIED>++<!ELEMENT text:list-level-style-image (style:properties?,office:binary-data?)>++<!ATTLIST text:list-level-style-image text:level %positiveInteger; #REQUIRED>+<!ATTLIST text:list-level-style-image xlink:type (simple) #IMPLIED>+<!ATTLIST text:list-level-style-image xlink:href %uriReference; #IMPLIED>+<!ATTLIST text:list-level-style-image xlink:actuate (onLoad) #IMPLIED>+<!ATTLIST text:list-level-style-image xlink:show (embed) #IMPLIED>+++<!-- list properties -->+<!ATTLIST style:properties text:space-before %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties text:min-label-width %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties text:min-label-distance %nonNegativeLength; #IMPLIED>+<!ATTLIST style:properties text:enable-numbering %boolean; #IMPLIED>+<!ATTLIST style:properties style:list-style-name %styleName; #IMPLIED>++<!ELEMENT text:outline-style (text:outline-level-style)+>++<!ELEMENT text:outline-level-style (style:properties?)>++<!ATTLIST text:outline-level-style text:level %positiveInteger;+ #REQUIRED>+<!ATTLIST text:outline-level-style text:style-name %styleName; #IMPLIED>++<!ATTLIST text:outline-level-style style:num-format %string; #REQUIRED>+<!ATTLIST text:outline-level-style style:num-prefix %string; #IMPLIED>+<!ATTLIST text:outline-level-style style:num-suffix %string; #IMPLIED>+<!ATTLIST text:outline-level-style style:num-letter-sync %boolean;+ "false">+<!ATTLIST text:outline-level-style text:display-levels %positiveInteger;+ "1">+<!ATTLIST text:outline-level-style text:start-value %positiveInteger;+ "1">++<!ENTITY % field-declarations "text:variable-decls?, + text:user-field-decls?, + text:sequence-decls?">++<!ENTITY % variableName "CDATA">++<!ENTITY % formula "CDATA">++<!ENTITY % valueAttr "text:value-type %valueType; #IMPLIED+ text:currency CDATA #IMPLIED" >++<!ENTITY % valueAndTypeAttr "%valueAttr;+ text:value %float; #IMPLIED+ text:date-value %date; #IMPLIED+ text:time-value %timeInstance; #IMPLIED+ text:boolean-value %boolean; #IMPLIED+ text:string-value %string; #IMPLIED" >++<!ENTITY % numFormat 'style:num-format CDATA #IMPLIED + style:num-letter-sync %boolean; "false"'>+++<!ELEMENT text:date (#PCDATA)>+<!ATTLIST text:date text:date-value %timeInstance; #IMPLIED>+<!ATTLIST text:date text:date-adjust %dateDuration; #IMPLIED>+<!ATTLIST text:date text:fixed %boolean; "false">+<!ATTLIST text:date style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:time (#PCDATA)>+<!ATTLIST text:time text:time-value %timeInstance; #IMPLIED>+<!ATTLIST text:time text:time-adjust %timeDuration; #IMPLIED>+<!ATTLIST text:time text:fixed %boolean; "false">+<!ATTLIST text:time style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:page-number (#PCDATA)>+<!ATTLIST text:page-number text:page-adjust %positiveInteger; #IMPLIED>+<!ATTLIST text:page-number text:select-page (previous|current|next) "current">+<!ATTLIST text:page-number %numFormat;>++<!ELEMENT text:page-continuation (#PCDATA)>+<!ATTLIST text:page-continuation text:select-page (previous|next) #REQUIRED>+<!ATTLIST text:page-continuation text:string-value %string; #IMPLIED>++<!ELEMENT text:sender-firstname (#PCDATA)>+<!ATTLIST text:sender-firstname text:fixed %boolean; "true">++<!ELEMENT text:sender-lastname (#PCDATA)>+<!ATTLIST text:sender-lastname text:fixed %boolean; "true">++<!ELEMENT text:sender-initials (#PCDATA)>+<!ATTLIST text:sender-initials text:fixed %boolean; "true">++<!ELEMENT text:sender-title (#PCDATA)>+<!ATTLIST text:sender-title text:fixed %boolean; "true">++<!ELEMENT text:sender-position (#PCDATA)>+<!ATTLIST text:sender-position text:fixed %boolean; "true">++<!ELEMENT text:sender-email (#PCDATA)>+<!ATTLIST text:sender-email text:fixed %boolean; "true">++<!ELEMENT text:sender-phone-private (#PCDATA)>+<!ATTLIST text:sender-phone-private text:fixed %boolean; "true">++<!ELEMENT text:sender-fax (#PCDATA)>+<!ATTLIST text:sender-fax text:fixed %boolean; "true">++<!ELEMENT text:sender-company (#PCDATA)>+<!ATTLIST text:sender-company text:fixed %boolean; "true">++<!ELEMENT text:sender-phone-work (#PCDATA)>+<!ATTLIST text:sender-phone-work text:fixed %boolean; "true">++<!ELEMENT text:sender-street (#PCDATA)>+<!ATTLIST text:sender-street text:fixed %boolean; "true">++<!ELEMENT text:sender-city (#PCDATA)>+<!ATTLIST text:sender-city text:fixed %boolean; "true">++<!ELEMENT text:sender-postal-code (#PCDATA)>+<!ATTLIST text:sender-postal-code text:fixed %boolean; "true">++<!ELEMENT text:sender-country (#PCDATA)>+<!ATTLIST text:sender-country text:fixed %boolean; "true">++<!ELEMENT text:sender-state-or-province (#PCDATA)>+<!ATTLIST text:sender-state-or-province text:fixed %boolean; "true">++<!ELEMENT text:author-name (#PCDATA)>+<!ATTLIST text:author-name text:fixed %boolean; "true">++<!ELEMENT text:author-initials (#PCDATA)>+<!ATTLIST text:author-initials text:fixed %boolean; "true">++<!ELEMENT text:placeholder (#PCDATA)>+<!ATTLIST text:placeholder text:placeholder-type (text|table|text-box|image|object) #REQUIRED>+<!ATTLIST text:placeholder text:description %string; #IMPLIED>++<!ELEMENT text:variable-decls (text:variable-decl)*>++<!ELEMENT text:variable-decl EMPTY>+<!ATTLIST text:variable-decl text:name %variableName; #REQUIRED>+<!ATTLIST text:variable-decl %valueAndTypeAttr;>++<!ELEMENT text:variable-set (#PCDATA)>+<!ATTLIST text:variable-set text:name %variableName; #REQUIRED>+<!ATTLIST text:variable-set text:formula %formula; #IMPLIED>+<!ATTLIST text:variable-set %valueAndTypeAttr;>+<!ATTLIST text:variable-set text:display (value|none) "value">+<!ATTLIST text:variable-set style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:variable-get (#PCDATA)>+<!ATTLIST text:variable-get text:name %variableName; #REQUIRED>+<!ATTLIST text:variable-get text:display (value|formula) "value">+<!ATTLIST text:variable-get style:data-style-name %styleName; #IMPLIED>+<!ATTLIST text:variable-get %valueAttr;>++<!ELEMENT text:variable-input (#PCDATA)>+<!ATTLIST text:variable-input text:name %variableName; #REQUIRED>+<!ATTLIST text:variable-input text:description %string; #IMPLIED>+<!ATTLIST text:variable-input %valueAndTypeAttr;>+<!ATTLIST text:variable-input text:display (value|none) "value">+<!ATTLIST text:variable-input style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:user-field-decls (text:user-field-decl)*>++<!ELEMENT text:user-field-decl EMPTY>+<!ATTLIST text:user-field-decl text:name %variableName; #REQUIRED>+<!ATTLIST text:user-field-decl text:formula %formula; #IMPLIED>+<!ATTLIST text:user-field-decl %valueAndTypeAttr;>++<!ELEMENT text:user-field-get (#PCDATA)>+<!ATTLIST text:user-field-get text:name %variableName; #REQUIRED>+<!ATTLIST text:user-field-get text:display (value|formula|none) "value">+<!ATTLIST text:user-field-get style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:user-field-input (#PCDATA)>+<!ATTLIST text:user-field-input text:name %variableName; #REQUIRED>+<!ATTLIST text:user-field-input text:description %string; #IMPLIED>+<!ATTLIST text:user-field-input style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:sequence-decls (text:sequence-decl)*>++<!ELEMENT text:sequence-decl EMPTY>+<!ATTLIST text:sequence-decl text:name %variableName; #REQUIRED>+<!ATTLIST text:sequence-decl text:display-outline-level %positiveInteger; "0">+<!ATTLIST text:sequence-decl text:separation-character %character; ".">++<!ELEMENT text:sequence (#PCDATA)>+<!ATTLIST text:sequence text:name %variableName; #REQUIRED>+<!ATTLIST text:sequence text:formula %formula; #IMPLIED>+<!ATTLIST text:sequence %numFormat;>+<!ATTLIST text:sequence text:ref-name ID #IMPLIED>++<!ELEMENT text:expression (#PCDATA)>+<!ATTLIST text:expression text:formula %formula; #IMPLIED>+<!ATTLIST text:expression text:display (value|formula ) "value">+<!ATTLIST text:expression %valueAndTypeAttr;>+<!ATTLIST text:expression style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:text-input (#PCDATA)>+<!ATTLIST text:text-input text:description %string; #IMPLIED>++<!ENTITY % database-table "text:database-name CDATA #REQUIRED + text:table-name CDATA #REQUIRED+ text:table-type (table|query|command) #IMPLIED">++<!ELEMENT text:database-display (#PCDATA)>+<!ATTLIST text:database-display %database-table;>+<!ATTLIST text:database-display text:column-name %string; #REQUIRED>+<!ATTLIST text:database-display style:data-style-name %styleName; #IMPLIED>+<!ATTLIST text:database-display text:display (none|value) #IMPLIED>++<!ELEMENT text:database-next (#PCDATA)>+<!ATTLIST text:database-next %database-table;>+<!ATTLIST text:database-next text:condition %formula; #IMPLIED>++<!ELEMENT text:database-select (#PCDATA)>+<!ATTLIST text:database-select %database-table;>+<!ATTLIST text:database-select text:condition %formula; #IMPLIED>+<!ATTLIST text:database-select text:row-number %integer; #REQUIRED>++<!ELEMENT text:database-row-number (#PCDATA)>+<!ATTLIST text:database-row-number %database-table;>+<!ATTLIST text:database-row-number %numFormat;>+<!ATTLIST text:database-row-number text:value %integer; #IMPLIED>+<!ATTLIST text:database-row-number text:display (none|value) #IMPLIED>++<!ELEMENT text:database-name (#PCDATA)>+<!ATTLIST text:database-name %database-table;>+<!ATTLIST text:database-name text:display (none|value) #IMPLIED>++<!ELEMENT text:initial-creator (#PCDATA)>+<!ATTLIST text:initial-creator text:fixed %boolean; "false">++<!ELEMENT text:creation-date (#PCDATA)>+<!ATTLIST text:creation-date text:fixed %boolean; "false">+<!ATTLIST text:creation-date text:date-value %date; #IMPLIED>+<!ATTLIST text:creation-date style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:creation-time (#PCDATA)>+<!ATTLIST text:creation-time text:fixed %boolean; "false">+<!ATTLIST text:creation-time text:time-value %timeInstance; #IMPLIED>+<!ATTLIST text:creation-time style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:description (#PCDATA)>+<!ATTLIST text:description text:fixed %boolean; "false">++<!ELEMENT text:user-defined (#PCDATA)>+<!ATTLIST text:user-defined text:fixed %boolean; "false">+<!ATTLIST text:user-defined text:name %string; #REQUIRED>++<!ELEMENT text:print-time (#PCDATA)>+<!ATTLIST text:print-time text:fixed %boolean; "false">+<!ATTLIST text:print-time text:time-value %timeInstance; #IMPLIED>+<!ATTLIST text:print-time style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:print-date (#PCDATA)>+<!ATTLIST text:print-date text:fixed %boolean; "false">+<!ATTLIST text:print-date text:date-value %date; #IMPLIED>+<!ATTLIST text:print-date style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:printed-by (#PCDATA)>+<!ATTLIST text:printed-by text:fixed %boolean; "false">++<!ELEMENT text:title (#PCDATA)>+<!ATTLIST text:title text:fixed %boolean; "false">++<!ELEMENT text:subject (#PCDATA)>+<!ATTLIST text:subject text:fixed %boolean; "false">++<!ELEMENT text:keywords (#PCDATA)>+<!ATTLIST text:keywords text:fixed %boolean; "false">++<!ELEMENT text:editing-cycles (#PCDATA)>+<!ATTLIST text:editing-cycles text:fixed %boolean; "false">++<!ELEMENT text:editing-duration (#PCDATA)>+<!ATTLIST text:editing-duration text:fixed %boolean; "false">+<!ATTLIST text:editing-duration text:duration %timeDuration; #IMPLIED>+<!ATTLIST text:editing-duration style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:modification-time (#PCDATA)>+<!ATTLIST text:modification-time text:fixed %boolean; "false">+<!ATTLIST text:modification-time text:time-value %timeInstance; #IMPLIED>+<!ATTLIST text:modification-time style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:modification-date (#PCDATA)>+<!ATTLIST text:modification-date text:fixed %boolean; "false">+<!ATTLIST text:modification-date text:date-value %date; #IMPLIED>+<!ATTLIST text:modification-date style:data-style-name %styleName; #IMPLIED>++<!ELEMENT text:creator (#PCDATA)>+<!ATTLIST text:creator text:fixed %boolean; "false">++<!ELEMENT text:conditional-text (#PCDATA)>+<!ATTLIST text:conditional-text text:condition %formula; #REQUIRED>+<!ATTLIST text:conditional-text text:string-value-if-false %string; #REQUIRED>+<!ATTLIST text:conditional-text text:string-value-if-true %string; #REQUIRED>+<!ATTLIST text:conditional-text text:current-value %boolean; "false">++<!ELEMENT text:hidden-text (#PCDATA)>+<!ATTLIST text:hidden-text text:condition %formula; #REQUIRED>+<!ATTLIST text:hidden-text text:string-value %string; #REQUIRED>+<!ATTLIST text:hidden-text text:is-hidden %boolean; "false">++<!ELEMENT text:hidden-paragraph EMPTY>+<!ATTLIST text:hidden-paragraph text:condition %formula; #REQUIRED>+<!ATTLIST text:hidden-paragraph text:is-hidden %boolean; "false">++<!ELEMENT text:chapter (#PCDATA)>+<!ATTLIST text:chapter text:display (name|number|number-and-name|+ plain-number-and-name|plain-number) + "number-and-name">+<!ATTLIST text:chapter text:outline-level %integer; "1">++<!ELEMENT text:file-name (#PCDATA)>+<!ATTLIST text:file-name text:display (full|path|name|name-and-extension) + "full">+<!ATTLIST text:file-name text:fixed %boolean; "false">++<!ELEMENT text:template-name (#PCDATA)>+<!ATTLIST text:template-name text:display (full|path|name|name-and-extension|+ area|title) "full">++<!ELEMENT text:page-variable-set EMPTY>+<!ATTLIST text:page-variable-set text:active %boolean; "true">+<!ATTLIST text:page-variable-set text:page-adjust %integer; "0">++<!ELEMENT text:page-variable-get (#PCDATA)>+<!ATTLIST text:page-variable-get %numFormat;>++<!ELEMENT text:execute-macro (#PCDATA|office:events)* >+<!ATTLIST text:execute-macro text:description %string; #IMPLIED>+++<!ELEMENT text:dde-connection-decls (text:dde-connection-decl)*>++<!ELEMENT text:dde-connection-decl EMPTY>+<!ATTLIST text:dde-connection-decl text:name %string; #REQUIRED>+<!ATTLIST text:dde-connection-decl office:dde-application %string; #REQUIRED>+<!ATTLIST text:dde-connection-decl office:dde-topic %string; #REQUIRED>+<!ATTLIST text:dde-connection-decl office:dde-item %string; #REQUIRED>+<!ATTLIST text:dde-connection-decl office:automatic-update %boolean; "false">++<!ELEMENT text:dde-connection (#PCDATA)>+<!ATTLIST text:dde-connection text:connection-name %string; #REQUIRED>++<!ELEMENT text:reference-ref (#PCDATA)>+<!ATTLIST text:reference-ref text:ref-name %string; #REQUIRED>+<!ATTLIST text:reference-ref text:reference-format (page|chapter|text|direction) #IMPLIED>++<!ELEMENT text:sequence-ref (#PCDATA)>+<!ATTLIST text:sequence-ref text:ref-name %string; #REQUIRED>+<!ATTLIST text:sequence-ref text:reference-format (page|chapter|text|direction|category-and-value|caption|value) #IMPLIED>++<!ELEMENT text:bookmark-ref (#PCDATA)>+<!ATTLIST text:bookmark-ref text:ref-name %string; #REQUIRED>+<!ATTLIST text:bookmark-ref text:reference-format (page|chapter|text|direction) #IMPLIED>++<!ELEMENT text:footnote-ref (#PCDATA)>+<!ATTLIST text:footnote-ref text:ref-name %string; #REQUIRED>+<!ATTLIST text:footnote-ref text:reference-format (page|chapter|text|direction) #IMPLIED>++<!ELEMENT text:endnote-ref (#PCDATA)>+<!ATTLIST text:endnote-ref text:ref-name %string; #REQUIRED>+<!ATTLIST text:endnote-ref text:reference-format (page|chapter|text|direction) #IMPLIED>++<!ELEMENT text:sheet-name (#PCDATA)>++<!ELEMENT text:page-count (#PCDATA)>+<!ATTLIST text:page-count style:num-format %string; #IMPLIED>+<!ATTLIST text:page-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:paragraph-count (#PCDATA)>+<!ATTLIST text:paragraph-count style:num-format %string; #IMPLIED>+<!ATTLIST text:paragraph-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:word-count (#PCDATA)>+<!ATTLIST text:word-count style:num-format %string; #IMPLIED>+<!ATTLIST text:word-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:character-count (#PCDATA)>+<!ATTLIST text:character-count style:num-format %string; #IMPLIED>+<!ATTLIST text:character-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:table-count (#PCDATA)>+<!ATTLIST text:table-count style:num-format %string; #IMPLIED>+<!ATTLIST text:table-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:image-count (#PCDATA)>+<!ATTLIST text:image-count style:num-format %string; #IMPLIED>+<!ATTLIST text:image-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:object-count (#PCDATA)>+<!ATTLIST text:object-count style:num-format %string; #IMPLIED>+<!ATTLIST text:object-count style:num-letter-sync %boolean; "false">++<!ELEMENT text:bibliography-mark (#PCDATA)>+<!ATTLIST text:bibliography-mark text:bibliography-type + ( article | book | booklet | conference | custom1 | custom2 | custom3 | + custom4 | custom5 | email | inbook | incollection | inproceedings | + journal | manual | mastersthesis | misc | phdthesis | proceedings | + techreport | unpublished | www ) #REQUIRED >+<!ATTLIST text:bibliography-mark text:identifier CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:address CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:annote CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:author CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:booktitle CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:chapter CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:edition CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:editor CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:howpublished CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:institution CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:journal CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:month CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:note CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:number CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:organizations CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:pages CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:publisher CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:school CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:series CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:title CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:report-type CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:volume CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:year CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:url CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:custom1 CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:custom2 CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:custom3 CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:custom4 CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:custom5 CDATA #IMPLIED>+<!ATTLIST text:bibliography-mark text:isbn CDATA #IMPLIED>+++<!ELEMENT text:bookmark EMPTY>+<!ATTLIST text:bookmark text:name CDATA #REQUIRED>++<!ELEMENT text:bookmark-start EMPTY>+<!ATTLIST text:bookmark-start text:name CDATA #REQUIRED>++<!ELEMENT text:bookmark-end EMPTY>+<!ATTLIST text:bookmark-end text:name CDATA #REQUIRED>++<!ELEMENT text:reference-mark EMPTY>+<!ATTLIST text:reference-mark text:name CDATA #REQUIRED>++<!ELEMENT text:reference-mark-start EMPTY>+<!ATTLIST text:reference-mark-start text:name CDATA #REQUIRED>++<!ELEMENT text:reference-mark-end EMPTY>+<!ATTLIST text:reference-mark-end text:name CDATA #REQUIRED>++<!ELEMENT text:footnotes-configuration (text:footnote-continuation-notice-forward?,text:footnote-continuation-notice-backward?)>+<!ATTLIST text:footnotes-configuration style:num-prefix %string; #IMPLIED>+<!ATTLIST text:footnotes-configuration style:num-suffix %string; #IMPLIED>+<!ATTLIST text:footnotes-configuration style:num-format %string; #IMPLIED>+<!ATTLIST text:footnotes-configuration style:num-letter-sync %string; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:citation-body-style-name %styleName; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:citation-style-name %styleName; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:default-style-name %styleName; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:master-page-name %styleName; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:start-value %integer; #IMPLIED>+<!ATTLIST text:footnotes-configuration text:footnotes-position (document|page) "page">+<!ATTLIST text:footnotes-configuration text:start-numbering-at (document|chapter|page) "document">++<!ELEMENT text:footnote-continuation-notice-forward (#PCDATA)> +<!ELEMENT text:footnote-continuation-notice-backward (#PCDATA)>++<!ELEMENT text:endnotes-configuration EMPTY>+<!ATTLIST text:endnotes-configuration style:num-prefix %string; #IMPLIED>+<!ATTLIST text:endnotes-configuration style:num-suffix %string; #IMPLIED>+<!ATTLIST text:endnotes-configuration style:num-format %string; #IMPLIED>+<!ATTLIST text:endnotes-configuration style:num-letter-sync %string; #IMPLIED>+<!ATTLIST text:endnotes-configuration text:start-value %integer; #IMPLIED>+<!ATTLIST text:endnotes-configuration text:citation-style-name %styleName; #IMPLIED>+<!ATTLIST text:endnotes-configuration text:citation-body-style-name %styleName; #IMPLIED>+<!ATTLIST text:endnotes-configuration text:default-style-name %styleName; #IMPLIED>+<!ATTLIST text:endnotes-configuration text:master-page-name %styleName; #IMPLIED>++<!-- Validity constraint: text:footnote and text:endnote elements may not + contain other text:footnote or text:endnote elements, even though the DTD+ allows this (via the %text; in the foot-/endnote-body).+ Unfortunatetly, this constraint cannot be easily specified in the DTD.+-->+<!ELEMENT text:footnote (text:footnote-citation, text:footnote-body)>+<!ATTLIST text:footnote text:id ID #IMPLIED>++<!ELEMENT text:footnote-citation (#PCDATA)>+<!ATTLIST text:footnote-citation text:label %string; #IMPLIED>++<!ELEMENT text:footnote-body (text:h|text:p|+ text:ordered-list|text:unordered-list)*>++<!ELEMENT text:endnote (text:endnote-citation, text:endnote-body)>+<!ATTLIST text:endnote text:id ID #IMPLIED>++<!ELEMENT text:endnote-citation (#PCDATA)>+<!ATTLIST text:endnote-citation text:label %string; #IMPLIED>++<!ELEMENT text:endnote-body (text:h|text:p|+ text:ordered-list|text:unordered-list)*>++<!ENTITY % sectionAttr "text:name CDATA #REQUIRED+ text:style-name %styleName; #IMPLIED+ text:protected %boolean; 'false' ">+++<!ELEMENT text:section ((text:section-source|office:dde-source)?,+ %sectionText;) >++<!ATTLIST text:section %sectionAttr;>+<!ATTLIST text:section text:display (true|none|condition) "true">+<!ATTLIST text:section text:condition %formula; #IMPLIED>+<!ATTLIST text:section text:protection-key CDATA #IMPLIED>+<!ATTLIST text:section text:is-hidden %boolean; #IMPLIED>++<!ELEMENT text:section-source EMPTY>+<!ATTLIST text:section-source xlink:href %string; #IMPLIED>+<!ATTLIST text:section-source xlink:type (simple) #FIXED "simple">+<!ATTLIST text:section-source xlink:show (embed) #FIXED "embed">+<!ATTLIST text:section-source text:section-name %string; #IMPLIED>+<!ATTLIST text:section-source text:filter-name %string; #IMPLIED>++<!ELEMENT text:table-of-content (text:table-of-content-source, + text:index-body) >+<!ATTLIST text:table-of-content %sectionAttr;>++<!ELEMENT text:table-of-content-source (text:index-title-template? , + text:table-of-content-entry-template*,+ text:index-source-styles* ) >+<!ATTLIST text:table-of-content-source text:outline-level %integer; #IMPLIED>+<!ATTLIST text:table-of-content-source text:use-outline-level %boolean; "true">+<!ATTLIST text:table-of-content-source text:use-index-marks %boolean; "true">+<!ATTLIST text:table-of-content-source text:use-index-source-styles + %boolean; "false">+<!ATTLIST text:table-of-content-source text:index-scope (document|chapter) + "document">+<!ATTLIST text:table-of-content-source text:relative-tab-stop-position + %boolean; "true">+<!ATTLIST text:table-of-content-source fo:language %string; #IMPLIED>+<!ATTLIST text:table-of-content-source fo:country %string; #IMPLIED>+<!ATTLIST text:table-of-content-source text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:table-of-content-entry-template (text:index-entry-chapter-number |+ text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop |+ text:index-entry-link-start |+ text:index-entry-link-end)* >+<!ATTLIST text:table-of-content-entry-template text:outline-level + %integer; #REQUIRED>+<!ATTLIST text:table-of-content-entry-template text:style-name + %styleName; #REQUIRED>++<!ELEMENT text:illustration-index + (text:illustration-index-source, text:index-body)>+<!ATTLIST text:illustration-index %sectionAttr;>++<!ELEMENT text:illustration-index-source (text:index-title-template?,+ text:illustration-index-entry-template?) >+<!ATTLIST text:illustration-index-source text:index-scope + (document|chapter) "document">+<!ATTLIST text:illustration-index-source text:relative-tab-stop-position + %boolean; "true">+<!ATTLIST text:illustration-index-source text:use-caption %boolean; "true">+<!ATTLIST text:illustration-index-source text:caption-sequence-name + %string; #IMPLIED>+<!ATTLIST text:illustration-index-source text:caption-sequence-format + (text|category-and-value|caption) "text">+<!ATTLIST text:illustration-index-source fo:language %string; #IMPLIED>+<!ATTLIST text:illustration-index-source fo:country %string; #IMPLIED>+<!ATTLIST text:illustration-index-source text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:illustration-index-entry-template + ( text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop )* >+<!ATTLIST text:illustration-index-entry-template text:style-name + %styleName; #REQUIRED>++<!ELEMENT text:table-index (text:table-index-source, text:index-body)>+<!ATTLIST text:table-index %sectionAttr;>++<!ELEMENT text:table-index-source (text:index-title-template?, + text:table-index-entry-template?) >+<!ATTLIST text:table-index-source text:index-scope + (document|chapter) "document">+<!ATTLIST text:table-index-source text:relative-tab-stop-position + %boolean; "true">+<!ATTLIST text:table-index-source text:use-caption %boolean; "true">+<!ATTLIST text:table-index-source text:caption-sequence-name + %string; #IMPLIED>+<!ATTLIST text:table-index-source text:caption-sequence-format + (text|category-and-value|caption) "text">+<!ATTLIST text:table-index-source fo:language %string; #IMPLIED>+<!ATTLIST text:table-index-source fo:country %string; #IMPLIED>+<!ATTLIST text:table-index-source text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:table-index-entry-template ( text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop )* >+<!ATTLIST text:table-index-entry-template text:style-name + %styleName; #REQUIRED>++<!ELEMENT text:object-index ( text:object-index-source, text:index-body ) >+<!ATTLIST text:object-index %sectionAttr;>++<!ELEMENT text:object-index-source ( text:index-title-template?,+ text:object-index-entry-template? ) >+<!ATTLIST text:object-index-source text:index-scope + (document|chapter) "document">+<!ATTLIST text:object-index-source text:relative-tab-stop-position + %boolean; "true">+<!ATTLIST text:object-index-source text:use-spreadsheet-objects + %boolean; "false">+<!ATTLIST text:object-index-source text:use-draw-objects %boolean; "false">+<!ATTLIST text:object-index-source text:use-chart-objects %boolean; "false">+<!ATTLIST text:object-index-source text:use-other-objects %boolean; "false">+<!ATTLIST text:object-index-source text:use-math-objects %boolean; "false">+<!ATTLIST text:object-index-source fo:language %string; #IMPLIED>+<!ATTLIST text:object-index-source fo:country %string; #IMPLIED>+<!ATTLIST text:object-index-source text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:object-index-entry-template ( text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop )* >+<!ATTLIST text:object-index-entry-template text:style-name + %styleName; #REQUIRED >++<!ELEMENT text:user-index (text:user-index-source, text:index-body) >+<!ATTLIST text:user-index %sectionAttr;>++<!ELEMENT text:user-index-source ( text:index-title-template?,+ text:user-index-entry-template*,+ text:index-source-styles* ) >+<!ATTLIST text:user-index-source text:index-scope + (document|chapter) "document">+<!ATTLIST text:user-index-source text:relative-tab-stop-position+ %boolean; "true">+<!ATTLIST text:user-index-source text:use-index-marks %boolean; "false">+<!ATTLIST text:user-index-source text:use-graphics %boolean; "false">+<!ATTLIST text:user-index-source text:use-tables %boolean; "false">+<!ATTLIST text:user-index-source text:use-floating-frames %boolean; "false">+<!ATTLIST text:user-index-source text:use-objects %boolean; "false">+<!ATTLIST text:user-index-source text:use-index-source-styles + %boolean; "false">+<!ATTLIST text:user-index-source text:copy-outline-levels %boolean; "false">+<!ATTLIST text:user-index-source fo:language %string; #IMPLIED>+<!ATTLIST text:user-index-source fo:country %string; #IMPLIED>+<!ATTLIST text:user-index-source text:sort-algorithm %string; #IMPLIED>+<!ATTLIST text:user-index-source text:index-name %string; #IMPLIED>++<!ELEMENT text:user-index-entry-template ( text:index-entry-chapter |+ text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop )* >+<!ATTLIST text:user-index-entry-template text:outline-level %integer; #REQUIRED>+<!ATTLIST text:user-index-entry-template text:style-name %styleName; #REQUIRED>++<!ELEMENT text:alphabetical-index (text:alphabetical-index-source, + text:index-body)>+<!ATTLIST text:alphabetical-index %sectionAttr;>++<!ELEMENT text:alphabetical-index-source ( text:index-title-template?, + text:alphabetical-index-entry-template* ) >+<!ATTLIST text:alphabetical-index-source text:index-scope + (document|chapter) "document">+<!ATTLIST text:alphabetical-index-source text:relative-tab-stop-position+ %boolean; "true">+<!ATTLIST text:alphabetical-index-source text:ignore-case %boolean; "false">+<!ATTLIST text:alphabetical-index-source text:main-entry-style-name + %styleName; #IMPLIED>+<!ATTLIST text:alphabetical-index-source text:alphabetical-separators + %boolean; "false">+<!ATTLIST text:alphabetical-index-source text:combine-entries+ %boolean; "true">+<!ATTLIST text:alphabetical-index-source text:combine-entries-with-dash+ %boolean; "false">+<!ATTLIST text:alphabetical-index-source text:combine-entries-with-pp+ %boolean; "true">+<!ATTLIST text:alphabetical-index-source text:use-keys-as-entries + %boolean; "false">+<!ATTLIST text:alphabetical-index-source text:capitalize-entries+ %boolean; "false">+<!ATTLIST text:alphabetical-index-source text:comma-separated+ %boolean; "false">+<!ATTLIST text:alphabetical-index-source fo:language %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-source fo:country %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-source text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:alphabetical-index-entry-template ( text:index-entry-chapter |+ text:index-entry-page-number |+ text:index-entry-text |+ text:index-entry-span |+ text:index-entry-tab-stop )* >+<!ATTLIST text:alphabetical-index-entry-template text:outline-level + (1|2|3|separator) #REQUIRED>+<!ATTLIST text:alphabetical-index-entry-template text:style-name + %styleName; #REQUIRED>++<!ELEMENT text:alphabetical-index-auto-mark-file EMPTY>+<!ATTLIST text:alphabetical-index-auto-mark-file xlink:href CDATA #IMPLIED>+<!ATTLIST text:alphabetical-index-auto-mark-file xlink:type (simple) #FIXED "simple">++<!ELEMENT text:bibliography (text:bibliography-source, text:index-body) >+<!ATTLIST text:bibliography %sectionAttr;>++<!ELEMENT text:bibliography-source ( text:index-title-template?,+ text:bibliography-entry-template* ) >++<!ELEMENT text:bibliography-entry-template ( text:index-entry-span |+ text:index-entry-tab-stop |+ text:index-entry-bibliography )* >+<!ATTLIST text:bibliography-entry-template text:bibliography-type + ( article | book | booklet | conference | custom1 | custom2 | + custom3 | custom4 | custom5 | email | inbook | incollection |+ inproceedings | journal | manual | mastersthesis | misc | + phdthesis | proceedings | techreport | unpublished | www ) + #REQUIRED >+<!ATTLIST text:bibliography-entry-template text:style-name + %styleName; #REQUIRED>++<!ELEMENT text:index-body %sectionText; >++<!-- +Validity constraint: text:index-title elements may appear only in+indices, and there may be only one text:index-title element. +-->+<!ELEMENT text:index-title %sectionText; >+<!ATTLIST text:index-title text:style-name %styleName; #IMPLIED>+<!ATTLIST text:index-title text:name %string; #IMPLIED>++<!ELEMENT text:index-title-template (#PCDATA)>+<!ATTLIST text:index-title-template text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-chapter-number EMPTY>+<!ATTLIST text:index-entry-chapter-number text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-chapter EMPTY>+<!ATTLIST text:index-entry-chapter text:style-name %styleName; #IMPLIED>+<!ATTLIST text:index-entry-chapter text:display (name|number|number-and-name) + "number-and-name" >++<!ELEMENT text:index-entry-text EMPTY>+<!ATTLIST text:index-entry-text text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-page-number EMPTY>+<!ATTLIST text:index-entry-page-number text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-span (#PCDATA)>+<!ATTLIST text:index-entry-span text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-bibliography EMPTY>+<!ATTLIST text:index-entry-bibliography text:style-name %styleName; #IMPLIED>+<!ATTLIST text:index-entry-bibliography text:bibliography-data-field+ ( address | annote | author | bibliography-type |+ booktitle | chapter | custom1 | custom2 | + custom3 | custom4 | custom5 | edition | editor |+ howpublished | identifier | institution | isbn |+ journal | month | note | number | organizations |+ pages | publisher | report-type | school | + series | title | url | volume | year ) #REQUIRED>+++<!ELEMENT text:index-entry-tab-stop EMPTY>+<!ATTLIST text:index-entry-tab-stop text:style-name %styleName; #IMPLIED>+<!ATTLIST text:index-entry-tab-stop style:leader-char %character; " ">+<!ATTLIST text:index-entry-tab-stop style:type (left|right) "left">+<!ATTLIST text:index-entry-tab-stop style:position %length; #IMPLIED>++<!ELEMENT text:index-entry-link-start EMPTY>+<!ATTLIST text:index-entry-link-start text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-entry-link-end EMPTY>+<!ATTLIST text:index-entry-link-end text:style-name %styleName; #IMPLIED>++<!ELEMENT text:index-source-styles (text:index-source-style)*>+<!ATTLIST text:index-source-styles text:outline-level %integer; #REQUIRED>++<!ELEMENT text:index-source-style EMPTY>+<!ATTLIST text:index-source-style text:style-name %styleName; #REQUIRED>++<!ELEMENT text:toc-mark-start EMPTY>+<!ATTLIST text:toc-mark-start text:id %string; #REQUIRED>+<!ATTLIST text:toc-mark-start text:outline-level %integer; #IMPLIED>++<!ELEMENT text:toc-mark-end EMPTY>+<!ATTLIST text:toc-mark-end text:id %string; #REQUIRED>++<!ELEMENT text:toc-mark EMPTY>+<!ATTLIST text:toc-mark text:string-value %string; #REQUIRED>+<!ATTLIST text:toc-mark text:outline-level %integer; #IMPLIED>++<!ELEMENT text:user-index-mark-start EMPTY>+<!ATTLIST text:user-index-mark-start text:id %string; #REQUIRED>+<!ATTLIST text:user-index-mark-start text:outline-level %integer; #IMPLIED>+<!ATTLIST text:user-index-mark-start text:index-name %string; #IMPLIED>++<!ELEMENT text:user-index-mark-end EMPTY>+<!ATTLIST text:user-index-mark-end text:id %string; #REQUIRED>++<!ELEMENT text:user-index-mark EMPTY>+<!ATTLIST text:user-index-mark text:string-value %string; #REQUIRED>+<!ATTLIST text:user-index-mark text:outline-level %integer; #IMPLIED>+<!ATTLIST text:user-index-mark text:index-name %string; #IMPLIED>++<!ELEMENT text:alphabetical-index-mark-start EMPTY>+<!ATTLIST text:alphabetical-index-mark-start text:id %string; #REQUIRED>+<!ATTLIST text:alphabetical-index-mark-start text:key1 %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-mark-start text:key2 %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-mark-start text:main-etry %boolean; "false">++<!ELEMENT text:alphabetical-index-mark-end EMPTY>+<!ATTLIST text:alphabetical-index-mark-end text:id %string; #REQUIRED>++<!ELEMENT text:alphabetical-index-mark EMPTY>+<!ATTLIST text:alphabetical-index-mark text:string-value %string; #REQUIRED>+<!ATTLIST text:alphabetical-index-mark text:key1 %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-mark text:key2 %string; #IMPLIED>+<!ATTLIST text:alphabetical-index-mark text:main-etry %boolean; "false">++<!ELEMENT text:bibliography-configuration (text:sort-key)*>+<!ATTLIST text:bibliography-configuration text:prefix %string; #IMPLIED>+<!ATTLIST text:bibliography-configuration text:suffix %string; #IMPLIED>+<!ATTLIST text:bibliography-configuration text:sort-by-position %boolean; "true">+<!ATTLIST text:bibliography-configuration text:numbered-entries %boolean; "false">+<!ATTLIST text:bibliography-configuration fo:language %string; #IMPLIED>+<!ATTLIST text:bibliography-configuration fo:country %string; #IMPLIED>+<!ATTLIST text:bibliography-configuration text:sort-algorithm %string; #IMPLIED>++<!ELEMENT text:sort-key EMPTY>+<!ATTLIST text:sort-key text:key ( address | annote | author | + bibliography-type | booktitle | chapter | custom1 | custom2 | + custom3 | custom4 | custom5 | edition | editor | howpublished | + identifier | institution | isbn | journal | month | note | number | + organizations | pages | publisher | report-type | school | series | + title | url | volume | year ) #REQUIRED>+<!ATTLIST text:sort-key text:sort-ascending %boolean; "true">++<!ELEMENT text:linenumbering-configuration (text:linenumbering-separator?)>+<!ATTLIST text:linenumbering-configuration text:style-name %styleName; #IMPLIED>+<!ATTLIST text:linenumbering-configuration text:number-lines %boolean; "true">+<!ATTLIST text:linenumbering-configuration text:count-empty-lines %boolean; "true">+<!ATTLIST text:linenumbering-configuration text:count-in-floating-frames %boolean; "false">+<!ATTLIST text:linenumbering-configuration text:restart-numbering %boolean; "false">+<!ATTLIST text:linenumbering-configuration text:offset %nonNegativeLength; #IMPLIED>+<!ATTLIST text:linenumbering-configuration style:num-format (1|a|A|i|I) "1">+<!ATTLIST text:linenumbering-configuration style:num-letter-sync %boolean; "false">+<!ATTLIST text:linenumbering-configuration text:number-position (left|rigth|inner|outer) "left">+<!ATTLIST text:linenumbering-configuration text:increment %nonNegativeInteger; #IMPLIED>++<!ELEMENT text:linenumbering-separator (#PCDATA)>+<!ATTLIST text:linenumbering-separator text:increment %nonNegativeInteger; #IMPLIED>++<!ELEMENT text:script (#PCDATA)>+<!ATTLIST text:script script:language CDATA #REQUIRED>+<!ATTLIST text:script xlink:href CDATA #IMPLIED>+<!ATTLIST text:script xlink:type (simple) #FIXED "simple">++<!ELEMENT text:measure (#PCDATA)>+<!ATTLIST text:measure text:kind (value|unit|gap) #REQUIRED>++<!ELEMENT text:ruby (text:ruby-base, text:ruby-text)>+<!ATTLIST text:ruby text:style-name %styleName; #IMPLIED>++<!ELEMENT text:ruby-base %inline-text;>++<!ELEMENT text:ruby-text (#PCDATA)>+<!ATTLIST text:ruby-text text:style-name %styleName; #IMPLIED>++<!-- elements for change tracking -->++<!ELEMENT text:change EMPTY>+<!ATTLIST text:change text:change-id CDATA #REQUIRED>++<!ELEMENT text:change-start EMPTY>+<!ATTLIST text:change-start text:change-id CDATA #REQUIRED>++<!ELEMENT text:change-end EMPTY>+<!ATTLIST text:change-end text:change-id CDATA #REQUIRED>++<!ELEMENT text:tracked-changes (text:changed-region)*>+<!ATTLIST text:tracked-changes text:track-changes %boolean; "true">+<!ATTLIST text:tracked-changes text:protection-key CDATA #IMPLIED>++<!ELEMENT text:changed-region (text:insertion | + (text:deletion, text:insertion?) | + text:format-change) >+<!ATTLIST text:changed-region text:id ID #REQUIRED>+<!ATTLIST text:changed-region text:merge-last-paragraph %boolean; "true">++<!ELEMENT text:insertion (office:change-info, %sectionText;)>+<!ELEMENT text:deletion (office:change-info, %sectionText;)>+<!ELEMENT text:format-change (office:change-info)>+
+ examples/README view
@@ -0,0 +1,77 @@+Please note:+The example code in this directory may not always work with the+current version of the the HaXml libraries. What little time I have+for maintenance goes into the main HaXml facilites, not into testing+these small demonstration exercises. Sorry.+++Parse/Pretty-Print example (Canonicalise.hs)+--------------------------+To demonstrate parsing and pretty-printing, I wrote a simple in-out+application:+ $ hmake Canonicalise -I../lib+Test it on some XML documents:+ $ ./Canonicalise album.xml+You will notice that it changes some parts of the document, for instance in+ $ ./Canonicalise subjdb.xml+all parameter entities are replaced with their expansion.+++Xml2Haskell example (album.dtd, AlbumDTD.hs, album.xml)+-------------------+In this example, I did the following:++Convert the XML DTD for an album into a Haskell module:+ $ DtdToHaskell album.dtd AlbumDtd.hs++Edit the generated file (just to change the module name to match!)+ $ vi AlbumDtd.hs++Wrote the test application (App.hs) using AlbumDTD.hs, and compiled it:+ $ hmake App -I../lib++Running the test displays some progress messages, and outputs the original+document again, only with the album title changed.+ $ ./App album.xml new.xml++And that's it.+++Haskell2Xml example (Types.hs, DTypes.hs, Example.hs, subjdb.xml)+-------------------+The file Types.hs defines some data types for a mini-database.+Derive the Haskell2Xml apparatus using DrIFT:+ $ DrIFT Types.hs >DTypes.hs++The example program in Example.hs just writes some Haskell data to+an XML file.+ $ hmake Example -I../lib+ $ ./Example+ $ less subjdb.xml++I hope that's reasonably clear.+++Bigger DtdToHaskell example+---------------------------+In directory SMIL, do+ $ DtdToHaskell SMIL20.dtd DTD_SMIL20.hs+and have a look at the resulting Haskell file. This is a large+multi-part DTD for the Synchronised Multimedia Integration Language,+defined by the W3C. As of 2000-11-16, our XML parser has been extended+to deal with the external subset as fully as possible.++DTDpp+-----+This little program is just a pretty-printer for an XML DTD - it+inlines any included files and expands all PE references. Its main+use is to check that the HaXml parser can read a complicated DTD+without errors.++DebugLex+--------+Another little debugging program to help find errors in HaXml -+this time in the lexer. It prints a stream of lexed tokens (and+their source positions) to stdout, so you can examine whether+some complicated piece of syntax has confused the lexer.+
+ examples/SMIL/DTD_SMIL20.hs view
@@ -0,0 +1,2446 @@+module DTD_SMIL20 where++import Text.XML.HaXml.Xml2Haskell+import Text.XML.HaXml.OneOfN+++{-Type decls-}++data Smil = Smil+ { smilId :: (Maybe String)+ , smilClass :: (Maybe String)+ , smilTitle :: (Maybe String)+ , smilXml'lang :: (Maybe String)+ , smilXmlns :: (Defaultable String)+ } deriving (Eq,Show)+data Head = Head+ { headId :: (Maybe String)+ , headClass :: (Maybe String)+ , headTitle :: (Maybe String)+ , headXml'lang :: (Maybe String)+ } deriving (Eq,Show)+data Body = Body+ { bodyId :: (Maybe String)+ , bodyClass :: (Maybe String)+ , bodyTitle :: (Maybe String)+ , bodyXml'lang :: (Maybe String)+ } deriving (Eq,Show)+data Animate = Animate+ { animateId :: (Maybe String)+ , animateClass :: (Maybe String)+ , animateTitle :: (Maybe String)+ , animateXml'lang :: (Maybe String)+ , animateCustomTest :: (Maybe String)+ , animateSystemBitrate :: (Maybe String)+ , animateSystemCaptions :: (Maybe Animate_SystemCaptions)+ , animateSystemLanguage :: (Maybe String)+ , animateSystemOverdubOrSubtitle :: (Maybe Animate_SystemOverdubOrSubtitle)+ , animateSystemRequired :: (Maybe String)+ , animateSystemScreenSize :: (Maybe String)+ , animateSystemScreenDepth :: (Maybe String)+ , animateSystemAudioDesc :: (Maybe Animate_SystemAudioDesc)+ , animateSystemOperatingSystem :: (Maybe String)+ , animateSystemCPU :: (Maybe String)+ , animateSystemComponent :: (Maybe String)+ , animateSystem_bitrate :: (Maybe String)+ , animateSystem_captions :: (Maybe Animate_System_captions)+ , animateSystem_language :: (Maybe String)+ , animateSystem_overdub_or_caption :: (Maybe Animate_System_overdub_or_caption)+ , animateSystem_required :: (Maybe String)+ , animateSystem_screen_size :: (Maybe String)+ , animateSystem_screen_depth :: (Maybe String)+ , animateDur :: (Maybe String)+ , animateRepeatCount :: (Maybe String)+ , animateRepeatDur :: (Maybe String)+ , animateBegin :: (Maybe String)+ , animateEnd :: (Maybe String)+ , animateAttributeName :: String+ , animateAttributeType :: (Maybe String)+ , animateValues :: (Maybe String)+ , animateFrom :: (Maybe String)+ , animateTo :: (Maybe String)+ , animateBy :: (Maybe String)+ , animateCalcMode :: (Defaultable Animate_CalcMode)+ , animateAdditive :: (Defaultable Animate_Additive)+ , animateAccumulate :: (Defaultable Animate_Accumulate)+ } deriving (Eq,Show)+data Animate_SystemCaptions = Animate_SystemCaptions_On | + Animate_SystemCaptions_Off+ deriving (Eq,Show)+data Animate_SystemOverdubOrSubtitle = Animate_SystemOverdubOrSubtitle_Overdub+ | Animate_SystemOverdubOrSubtitle_Subtitle+ deriving (Eq,Show)+data Animate_SystemAudioDesc = Animate_SystemAudioDesc_On | + Animate_SystemAudioDesc_Off+ deriving (Eq,Show)+data Animate_System_captions = Animate_System_captions_On | + Animate_System_captions_Off+ deriving (Eq,Show)+data Animate_System_overdub_or_caption = Animate_System_overdub_or_caption_Overdub+ | Animate_System_overdub_or_caption_Caption+ deriving (Eq,Show)+data Animate_CalcMode = Animate_CalcMode_Discrete | + Animate_CalcMode_Linear | Animate_CalcMode_Paced+ deriving (Eq,Show)+data Animate_Additive = Animate_Additive_Replace | + Animate_Additive_Sum+ deriving (Eq,Show)+data Animate_Accumulate = Animate_Accumulate_None | + Animate_Accumulate_Sum+ deriving (Eq,Show)+data Set = Set+ { setId :: (Maybe String)+ , setClass :: (Maybe String)+ , setTitle :: (Maybe String)+ , setXml'lang :: (Maybe String)+ , setCustomTest :: (Maybe String)+ , setSystemBitrate :: (Maybe String)+ , setSystemCaptions :: (Maybe Set_SystemCaptions)+ , setSystemLanguage :: (Maybe String)+ , setSystemOverdubOrSubtitle :: (Maybe Set_SystemOverdubOrSubtitle)+ , setSystemRequired :: (Maybe String)+ , setSystemScreenSize :: (Maybe String)+ , setSystemScreenDepth :: (Maybe String)+ , setSystemAudioDesc :: (Maybe Set_SystemAudioDesc)+ , setSystemOperatingSystem :: (Maybe String)+ , setSystemCPU :: (Maybe String)+ , setSystemComponent :: (Maybe String)+ , setSystem_bitrate :: (Maybe String)+ , setSystem_captions :: (Maybe Set_System_captions)+ , setSystem_language :: (Maybe String)+ , setSystem_overdub_or_caption :: (Maybe Set_System_overdub_or_caption)+ , setSystem_required :: (Maybe String)+ , setSystem_screen_size :: (Maybe String)+ , setSystem_screen_depth :: (Maybe String)+ , setDur :: (Maybe String)+ , setRepeatCount :: (Maybe String)+ , setRepeatDur :: (Maybe String)+ , setBegin :: (Maybe String)+ , setEnd :: (Maybe String)+ , setAttributeName :: String+ , setAttributeType :: (Maybe String)+ , setTo :: (Maybe String)+ } deriving (Eq,Show)+data Set_SystemCaptions = Set_SystemCaptions_On | + Set_SystemCaptions_Off+ deriving (Eq,Show)+data Set_SystemOverdubOrSubtitle = Set_SystemOverdubOrSubtitle_Overdub+ | Set_SystemOverdubOrSubtitle_Subtitle+ deriving (Eq,Show)+data Set_SystemAudioDesc = Set_SystemAudioDesc_On | + Set_SystemAudioDesc_Off+ deriving (Eq,Show)+data Set_System_captions = Set_System_captions_On | + Set_System_captions_Off+ deriving (Eq,Show)+data Set_System_overdub_or_caption = Set_System_overdub_or_caption_Overdub+ | Set_System_overdub_or_caption_Caption+ deriving (Eq,Show)+data AnimateMotion = AnimateMotion+ { animateMotionId :: (Maybe String)+ , animateMotionClass :: (Maybe String)+ , animateMotionTitle :: (Maybe String)+ , animateMotionXml'lang :: (Maybe String)+ , animateMotionCustomTest :: (Maybe String)+ , animateMotionSystemBitrate :: (Maybe String)+ , animateMotionSystemCaptions :: (Maybe AnimateMotion_SystemCaptions)+ , animateMotionSystemLanguage :: (Maybe String)+ , animateMotionSystemOverdubOrSubtitle :: (Maybe AnimateMotion_SystemOverdubOrSubtitle)+ , animateMotionSystemRequired :: (Maybe String)+ , animateMotionSystemScreenSize :: (Maybe String)+ , animateMotionSystemScreenDepth :: (Maybe String)+ , animateMotionSystemAudioDesc :: (Maybe AnimateMotion_SystemAudioDesc)+ , animateMotionSystemOperatingSystem :: (Maybe String)+ , animateMotionSystemCPU :: (Maybe String)+ , animateMotionSystemComponent :: (Maybe String)+ , animateMotionSystem_bitrate :: (Maybe String)+ , animateMotionSystem_captions :: (Maybe AnimateMotion_System_captions)+ , animateMotionSystem_language :: (Maybe String)+ , animateMotionSystem_overdub_or_caption :: (Maybe AnimateMotion_System_overdub_or_caption)+ , animateMotionSystem_required :: (Maybe String)+ , animateMotionSystem_screen_size :: (Maybe String)+ , animateMotionSystem_screen_depth :: (Maybe String)+ , animateMotionDur :: (Maybe String)+ , animateMotionRepeatCount :: (Maybe String)+ , animateMotionRepeatDur :: (Maybe String)+ , animateMotionBegin :: (Maybe String)+ , animateMotionEnd :: (Maybe String)+ , animateMotionValues :: (Maybe String)+ , animateMotionFrom :: (Maybe String)+ , animateMotionTo :: (Maybe String)+ , animateMotionBy :: (Maybe String)+ , animateMotionCalcMode :: (Defaultable AnimateMotion_CalcMode)+ , animateMotionAdditive :: (Defaultable AnimateMotion_Additive)+ , animateMotionAccumulate :: (Defaultable AnimateMotion_Accumulate)+ , animateMotionOrigin :: (Defaultable AnimateMotion_Origin)+ } deriving (Eq,Show)+data AnimateMotion_SystemCaptions = AnimateMotion_SystemCaptions_On+ | AnimateMotion_SystemCaptions_Off+ deriving (Eq,Show)+data AnimateMotion_SystemOverdubOrSubtitle = AnimateMotion_SystemOverdubOrSubtitle_Overdub+ | AnimateMotion_SystemOverdubOrSubtitle_Subtitle+ deriving (Eq,Show)+data AnimateMotion_SystemAudioDesc = AnimateMotion_SystemAudioDesc_On+ | AnimateMotion_SystemAudioDesc_Off+ deriving (Eq,Show)+data AnimateMotion_System_captions = AnimateMotion_System_captions_On+ | AnimateMotion_System_captions_Off+ deriving (Eq,Show)+data AnimateMotion_System_overdub_or_caption = AnimateMotion_System_overdub_or_caption_Overdub+ | AnimateMotion_System_overdub_or_caption_Caption+ deriving (Eq,Show)+data AnimateMotion_CalcMode = AnimateMotion_CalcMode_Discrete | + AnimateMotion_CalcMode_Linear | AnimateMotion_CalcMode_Paced+ deriving (Eq,Show)+data AnimateMotion_Additive = AnimateMotion_Additive_Replace | + AnimateMotion_Additive_Sum+ deriving (Eq,Show)+data AnimateMotion_Accumulate = AnimateMotion_Accumulate_None | + AnimateMotion_Accumulate_Sum+ deriving (Eq,Show)+data AnimateMotion_Origin = AnimateMotion_Origin_Default+ deriving (Eq,Show)+data AnimateColor = AnimateColor+ { animateColorId :: (Maybe String)+ , animateColorClass :: (Maybe String)+ , animateColorTitle :: (Maybe String)+ , animateColorXml'lang :: (Maybe String)+ , animateColorCustomTest :: (Maybe String)+ , animateColorSystemBitrate :: (Maybe String)+ , animateColorSystemCaptions :: (Maybe AnimateColor_SystemCaptions)+ , animateColorSystemLanguage :: (Maybe String)+ , animateColorSystemOverdubOrSubtitle :: (Maybe AnimateColor_SystemOverdubOrSubtitle)+ , animateColorSystemRequired :: (Maybe String)+ , animateColorSystemScreenSize :: (Maybe String)+ , animateColorSystemScreenDepth :: (Maybe String)+ , animateColorSystemAudioDesc :: (Maybe AnimateColor_SystemAudioDesc)+ , animateColorSystemOperatingSystem :: (Maybe String)+ , animateColorSystemCPU :: (Maybe String)+ , animateColorSystemComponent :: (Maybe String)+ , animateColorSystem_bitrate :: (Maybe String)+ , animateColorSystem_captions :: (Maybe AnimateColor_System_captions)+ , animateColorSystem_language :: (Maybe String)+ , animateColorSystem_overdub_or_caption :: (Maybe AnimateColor_System_overdub_or_caption)+ , animateColorSystem_required :: (Maybe String)+ , animateColorSystem_screen_size :: (Maybe String)+ , animateColorSystem_screen_depth :: (Maybe String)+ , animateColorDur :: (Maybe String)+ , animateColorRepeatCount :: (Maybe String)+ , animateColorRepeatDur :: (Maybe String)+ , animateColorBegin :: (Maybe String)+ , animateColorEnd :: (Maybe String)+ , animateColorAttributeName :: String+ , animateColorAttributeType :: (Maybe String)+ , animateColorValues :: (Maybe String)+ , animateColorFrom :: (Maybe String)+ , animateColorTo :: (Maybe String)+ , animateColorBy :: (Maybe String)+ , animateColorCalcMode :: (Defaultable AnimateColor_CalcMode)+ , animateColorAdditive :: (Defaultable AnimateColor_Additive)+ , animateColorAccumulate :: (Defaultable AnimateColor_Accumulate)+ } deriving (Eq,Show)+data AnimateColor_SystemCaptions = AnimateColor_SystemCaptions_On+ | AnimateColor_SystemCaptions_Off+ deriving (Eq,Show)+data AnimateColor_SystemOverdubOrSubtitle = AnimateColor_SystemOverdubOrSubtitle_Overdub+ | AnimateColor_SystemOverdubOrSubtitle_Subtitle+ deriving (Eq,Show)+data AnimateColor_SystemAudioDesc = AnimateColor_SystemAudioDesc_On+ | AnimateColor_SystemAudioDesc_Off+ deriving (Eq,Show)+data AnimateColor_System_captions = AnimateColor_System_captions_On+ | AnimateColor_System_captions_Off+ deriving (Eq,Show)+data AnimateColor_System_overdub_or_caption = AnimateColor_System_overdub_or_caption_Overdub+ | AnimateColor_System_overdub_or_caption_Caption+ deriving (Eq,Show)+data AnimateColor_CalcMode = AnimateColor_CalcMode_Discrete | + AnimateColor_CalcMode_Linear | AnimateColor_CalcMode_Paced+ deriving (Eq,Show)+data AnimateColor_Additive = AnimateColor_Additive_Replace | + AnimateColor_Additive_Sum+ deriving (Eq,Show)+data AnimateColor_Accumulate = AnimateColor_Accumulate_None | + AnimateColor_Accumulate_Sum+ deriving (Eq,Show)+data Switch = Switch+ { switchId :: (Maybe String)+ , switchClass :: (Maybe String)+ , switchTitle :: (Maybe String)+ , switchXml'lang :: (Maybe String)+ } deriving (Eq,Show)+data Meta = Meta+ { metaContent :: (Maybe String)+ , metaName :: String+ } deriving (Eq,Show)+data Metadata = Metadata+ { metadataId :: (Maybe String)+ , metadataClass :: (Maybe String)+ , metadataTitle :: (Maybe String)+ , metadataXml'lang :: (Maybe String)+ } deriving (Eq,Show)+data Layout = Layout+ { layoutId :: (Maybe String)+ , layoutClass :: (Maybe String)+ , layoutTitle :: (Maybe String)+ , layoutXml'lang :: (Maybe String)+ , layoutType :: (Defaultable String)+ } deriving (Eq,Show)+data Region = Region+ { regionId :: (Maybe String)+ , regionClass :: (Maybe String)+ , regionTitle :: (Maybe String)+ , regionXml'lang :: (Maybe String)+ , regionHeight :: (Defaultable String)+ , regionWidth :: (Defaultable String)+ , regionClose :: (Defaultable Region_Close)+ , regionOpen :: (Defaultable Region_Open)+ , regionBackgroundColor :: (Maybe String)+ , regionBackground_color :: (Maybe String)+ , regionBottom :: (Defaultable String)+ , regionLeft :: (Defaultable String)+ , regionRight :: (Defaultable String)+ , regionTop :: (Defaultable String)+ , regionZ_index :: (Maybe String)+ , regionShowBackground :: (Defaultable Region_ShowBackground)+ , regionFit :: (Defaultable Region_Fit)+ } deriving (Eq,Show)+data Region_Close = Region_Close_Never | + Region_Close_WhenNotActive+ deriving (Eq,Show)+data Region_Open = Region_Open_Always | Region_Open_WhenActive+ deriving (Eq,Show)+data Region_ShowBackground = Region_ShowBackground_Always | + Region_ShowBackground_WhenActive+ deriving (Eq,Show)+data Region_Fit = Region_Fit_Hidden | Region_Fit_Fill | + Region_Fit_Meet | Region_Fit_Scroll | Region_Fit_Slice+ deriving (Eq,Show)+data Root_layout = Root_layout+ { root_layoutId :: (Maybe String)+ , root_layoutClass :: (Maybe String)+ , root_layoutTitle :: (Maybe String)+ , root_layoutXml'lang :: (Maybe String)+ , root_layoutHeight :: (Defaultable String)+ , root_layoutWidth :: (Defaultable String)+ , root_layoutClose :: (Defaultable Root_layout_Close)+ , root_layoutOpen :: (Defaultable Root_layout_Open)+ , root_layoutBackgroundColor :: (Maybe String)+ , root_layoutBackground_color :: (Maybe String)+ } deriving (Eq,Show)+data Root_layout_Close = Root_layout_Close_Never | + Root_layout_Close_WhenNotActive+ deriving (Eq,Show)+data Root_layout_Open = Root_layout_Open_Always | + Root_layout_Open_WhenActive+ deriving (Eq,Show)+data Ref = Ref+ { refId :: (Maybe String)+ , refClass :: (Maybe String)+ , refTitle :: (Maybe String)+ , refXml'lang :: (Maybe String)+ } deriving (Eq,Show)+data Audio = Audio+ { audioId :: (Maybe String)+ , audioClass :: (Maybe String)+ , audioTitle :: (Maybe String)+ , audioXml'lang :: (Maybe String)+ } deriving (Eq,Show)+data Img = Img+ { imgId :: (Maybe String)+ , imgClass :: (Maybe String)+ , imgTitle :: (Maybe String)+ , imgXml'lang :: (Maybe String)+ } deriving (Eq,Show)+data Video = Video+ { videoId :: (Maybe String)+ , videoClass :: (Maybe String)+ , videoTitle :: (Maybe String)+ , videoXml'lang :: (Maybe String)+ } deriving (Eq,Show)+data Text = Text+ { textId :: (Maybe String)+ , textClass :: (Maybe String)+ , textTitle :: (Maybe String)+ , textXml'lang :: (Maybe String)+ } deriving (Eq,Show)+data Textstream = Textstream+ { textstreamId :: (Maybe String)+ , textstreamClass :: (Maybe String)+ , textstreamTitle :: (Maybe String)+ , textstreamXml'lang :: (Maybe String)+ } deriving (Eq,Show)+data Animation = Animation+ { animationId :: (Maybe String)+ , animationClass :: (Maybe String)+ , animationTitle :: (Maybe String)+ , animationXml'lang :: (Maybe String)+ } deriving (Eq,Show)+data Transition = Transition+ { transitionId :: (Maybe String)+ , transitionClass :: (Maybe String)+ , transitionTitle :: (Maybe String)+ , transitionXml'lang :: (Maybe String)+ , transitionType :: (Maybe Transition_Type)+ , transitionSubtype :: (Maybe Transition_Subtype)+ , transitionHorzRepeat :: (Defaultable String)+ , transitionVertRepeat :: (Defaultable String)+ , transitionBorderWidth :: (Defaultable String)+ , transitionBorderColor :: (Defaultable String)+ , transitionFadeColor :: (Defaultable String)+ , transitionCoordinated :: (Defaultable Transition_Coordinated)+ , transitionClibBoundary :: (Defaultable Transition_ClibBoundary)+ , transitionDur :: (Maybe String)+ , transitionStartProgress :: (Defaultable String)+ , transitionEndProgress :: (Defaultable String)+ , transitionDirection :: (Defaultable Transition_Direction)+ } deriving (Eq,Show)+data Transition_Type = Transition_Type_BarWipe | + Transition_Type_BoxWipe | Transition_Type_FourBoxWipe | + Transition_Type_BarnDoorWipe | Transition_Type_DiagonalWipe | + Transition_Type_BowTieWipe | Transition_Type_MiscDiagonalWipe | + Transition_Type_VeeWipe | Transition_Type_BarnVeeWipe | + Transition_Type_ZigZagWipe | Transition_Type_BarnZigZagWipe | + Transition_Type_MiscShapeWipe | Transition_Type_TriangleWipe | + Transition_Type_ArrowHeadWipe | Transition_Type_PentagonWipe | + Transition_Type_HexagonWipe | Transition_Type_EllipseWipe | + Transition_Type_EyeWipe | Transition_Type_RoundRectWipe | + Transition_Type_StarWipe | Transition_Type_ClockWipe | + Transition_Type_PinWheelWipe | Transition_Type_SingleSweepWipe+ | Transition_Type_FanWipe | Transition_Type_DoubleFanWipe | + Transition_Type_DoubleSweepWipe | Transition_Type_SaloonDoorWipe+ | Transition_Type_WindshieldWipe | Transition_Type_SnakeWipe+ | Transition_Type_SpiralWipe | + Transition_Type_ParallelSnakesWipe | + Transition_Type_BoxSnakesWipe | Transition_Type_WaterfallWipe | + Transition_Type_PushWipe | Transition_Type_SlideWipe | + Transition_Type_Fade+ deriving (Eq,Show)+data Transition_Subtype = Transition_Subtype_Bottom | + Transition_Subtype_BottomCenter | Transition_Subtype_BottomLeft+ | Transition_Subtype_BottomLeftClockwise | + Transition_Subtype_BottomLeftCounterClockwise | + Transition_Subtype_BottomLeftDiagonal | + Transition_Subtype_BottomRight | + Transition_Subtype_BottomRightClockwise | + Transition_Subtype_BottomRightCounterClockwise | + Transition_Subtype_BottomRightDiagonal | + Transition_Subtype_CenterRight | Transition_Subtype_CenterTop | + Transition_Subtype_Circle | Transition_Subtype_ClockwiseBottom+ | Transition_Subtype_ClockwiseBottomRight | + Transition_Subtype_ClockwiseLeft | + Transition_Subtype_ClockwiseNine | + Transition_Subtype_ClockwiseRight | + Transition_Subtype_ClockwiseSix | + Transition_Subtype_ClockwiseThree | + Transition_Subtype_ClockwiseTop | + Transition_Subtype_ClockwiseTopLeft | + Transition_Subtype_ClockwiseTwelve | Transition_Subtype_CornersIn+ | Transition_Subtype_CornersOut | + Transition_Subtype_CounterClockwiseBottomLeft | + Transition_Subtype_CounterClockwiseTopRight | + Transition_Subtype_Crossfade | + Transition_Subtype_DiagonalBottomLeft | + Transition_Subtype_DiagonalBottomLeftOpposite | + Transition_Subtype_DiagonalTopLeft | + Transition_Subtype_DiagonalTopLeftOpposite | + Transition_Subtype_Diamond | Transition_Subtype_DoubleBarnDoor+ | Transition_Subtype_DoubleDiamond | Transition_Subtype_Down+ | Transition_Subtype_FadeFromColor | + Transition_Subtype_FadeToColor | + Transition_Subtype_FanInHorizontal | + Transition_Subtype_FanInVertical | + Transition_Subtype_FanOutHorizontal | + Transition_Subtype_FanOutVertical | Transition_Subtype_FivePoint+ | Transition_Subtype_FourBlade | + Transition_Subtype_FourBoxHorizontal | + Transition_Subtype_FourBoxVertical | Transition_Subtype_FourPoint+ | Transition_Subtype_FromBottom | Transition_Subtype_FromLeft+ | Transition_Subtype_FromRight | Transition_Subtype_FromTop | + Transition_Subtype_Heart | Transition_Subtype_Horizontal | + Transition_Subtype_HorizontalLeft | + Transition_Subtype_HorizontalLeftSame | + Transition_Subtype_HorizontalRight | + Transition_Subtype_HorizontalRightSame | + Transition_Subtype_HorizontalTopLeftOpposite | + Transition_Subtype_HorizontalTopRightOpposite | + Transition_Subtype_Keyhole | Transition_Subtype_Left | + Transition_Subtype_LeftCenter | Transition_Subtype_LeftToRight+ | Transition_Subtype_OppositeHorizontal | + Transition_Subtype_OppositeVertical | + Transition_Subtype_ParallelDiagonal | + Transition_Subtype_ParallelDiagonalBottomLeft | + Transition_Subtype_ParallelDiagonalTopLeft | + Transition_Subtype_ParallelVertical | + Transition_Subtype_Rectangle | Transition_Subtype_Right | + Transition_Subtype_RightCenter | Transition_Subtype_SixPoint | + Transition_Subtype_Top | Transition_Subtype_TopCenter | + Transition_Subtype_TopLeft | Transition_Subtype_TopLeftClockwise+ | Transition_Subtype_TopLeftCounterClockwise | + Transition_Subtype_TopLeftDiagonal | + Transition_Subtype_TopLeftHorizontal | + Transition_Subtype_TopLeftVertical | Transition_Subtype_TopRight+ | Transition_Subtype_TopRightClockwise | + Transition_Subtype_TopRightCounterClockwise | + Transition_Subtype_TopRightDiagonal | + Transition_Subtype_TopToBottom | + Transition_Subtype_TwoBladeHorizontal | + Transition_Subtype_TwoBladeVertical | + Transition_Subtype_TwoBoxBottom | Transition_Subtype_TwoBoxLeft+ | Transition_Subtype_TwoBoxRight | Transition_Subtype_TwoBoxTop+ | Transition_Subtype_Up | Transition_Subtype_Vertical | + Transition_Subtype_VerticalBottomLeftOpposite | + Transition_Subtype_VerticalBottomSame | + Transition_Subtype_VerticalLeft | + Transition_Subtype_VerticalRight | + Transition_Subtype_VerticalTopLeftOpposite | + Transition_Subtype_VerticalTopSame+ deriving (Eq,Show)+data Transition_Coordinated = Transition_Coordinated_True | + Transition_Coordinated_False+ deriving (Eq,Show)+data Transition_ClibBoundary = Transition_ClibBoundary_Parent | + Transition_ClibBoundary_Children+ deriving (Eq,Show)+data Transition_Direction = Transition_Direction_Forward | + Transition_Direction_Reverse+ deriving (Eq,Show)+data TransitionFilter = TransitionFilter+ { transitionFilterId :: (Maybe String)+ , transitionFilterClass :: (Maybe String)+ , transitionFilterTitle :: (Maybe String)+ , transitionFilterXml'lang :: (Maybe String)+ , transitionFilterType :: (Maybe TransitionFilter_Type)+ , transitionFilterSubtype :: (Maybe TransitionFilter_Subtype)+ , transitionFilterHorzRepeat :: (Defaultable String)+ , transitionFilterVertRepeat :: (Defaultable String)+ , transitionFilterBorderWidth :: (Defaultable String)+ , transitionFilterBorderColor :: (Defaultable String)+ , transitionFilterFadeColor :: (Defaultable String)+ , transitionFilterCoordinated :: (Defaultable TransitionFilter_Coordinated)+ , transitionFilterClibBoundary :: (Defaultable TransitionFilter_ClibBoundary)+ , transitionFilterDur :: (Maybe String)+ , transitionFilterRepeatCount :: (Maybe String)+ , transitionFilterRepeatDur :: (Maybe String)+ , transitionFilterBegin :: (Maybe String)+ , transitionFilterEnd :: (Maybe String)+ , transitionFilterValues :: (Maybe String)+ , transitionFilterFrom :: (Maybe String)+ , transitionFilterTo :: (Maybe String)+ , transitionFilterBy :: (Maybe String)+ , transitionFilterCalcMode :: (Defaultable TransitionFilter_CalcMode)+ } deriving (Eq,Show)+data TransitionFilter_Type = TransitionFilter_Type_BarWipe | + TransitionFilter_Type_BoxWipe | TransitionFilter_Type_FourBoxWipe+ | TransitionFilter_Type_BarnDoorWipe | + TransitionFilter_Type_DiagonalWipe | + TransitionFilter_Type_BowTieWipe | + TransitionFilter_Type_MiscDiagonalWipe | + TransitionFilter_Type_VeeWipe | TransitionFilter_Type_BarnVeeWipe+ | TransitionFilter_Type_ZigZagWipe | + TransitionFilter_Type_BarnZigZagWipe | + TransitionFilter_Type_MiscShapeWipe | + TransitionFilter_Type_TriangleWipe | + TransitionFilter_Type_ArrowHeadWipe | + TransitionFilter_Type_PentagonWipe | + TransitionFilter_Type_HexagonWipe | + TransitionFilter_Type_EllipseWipe | TransitionFilter_Type_EyeWipe+ | TransitionFilter_Type_RoundRectWipe | + TransitionFilter_Type_StarWipe | TransitionFilter_Type_ClockWipe+ | TransitionFilter_Type_PinWheelWipe | + TransitionFilter_Type_SingleSweepWipe | + TransitionFilter_Type_FanWipe | + TransitionFilter_Type_DoubleFanWipe | + TransitionFilter_Type_DoubleSweepWipe | + TransitionFilter_Type_SaloonDoorWipe | + TransitionFilter_Type_WindshieldWipe | + TransitionFilter_Type_SnakeWipe | + TransitionFilter_Type_SpiralWipe | + TransitionFilter_Type_ParallelSnakesWipe | + TransitionFilter_Type_BoxSnakesWipe | + TransitionFilter_Type_WaterfallWipe | + TransitionFilter_Type_PushWipe | TransitionFilter_Type_SlideWipe+ | TransitionFilter_Type_Fade+ deriving (Eq,Show)+data TransitionFilter_Subtype = TransitionFilter_Subtype_Bottom | + TransitionFilter_Subtype_BottomCenter | + TransitionFilter_Subtype_BottomLeft | + TransitionFilter_Subtype_BottomLeftClockwise | + TransitionFilter_Subtype_BottomLeftCounterClockwise | + TransitionFilter_Subtype_BottomLeftDiagonal | + TransitionFilter_Subtype_BottomRight | + TransitionFilter_Subtype_BottomRightClockwise | + TransitionFilter_Subtype_BottomRightCounterClockwise | + TransitionFilter_Subtype_BottomRightDiagonal | + TransitionFilter_Subtype_CenterRight | + TransitionFilter_Subtype_CenterTop | + TransitionFilter_Subtype_Circle | + TransitionFilter_Subtype_ClockwiseBottom | + TransitionFilter_Subtype_ClockwiseBottomRight | + TransitionFilter_Subtype_ClockwiseLeft | + TransitionFilter_Subtype_ClockwiseNine | + TransitionFilter_Subtype_ClockwiseRight | + TransitionFilter_Subtype_ClockwiseSix | + TransitionFilter_Subtype_ClockwiseThree | + TransitionFilter_Subtype_ClockwiseTop | + TransitionFilter_Subtype_ClockwiseTopLeft | + TransitionFilter_Subtype_ClockwiseTwelve | + TransitionFilter_Subtype_CornersIn | + TransitionFilter_Subtype_CornersOut | + TransitionFilter_Subtype_CounterClockwiseBottomLeft | + TransitionFilter_Subtype_CounterClockwiseTopRight | + TransitionFilter_Subtype_Crossfade | + TransitionFilter_Subtype_DiagonalBottomLeft | + TransitionFilter_Subtype_DiagonalBottomLeftOpposite | + TransitionFilter_Subtype_DiagonalTopLeft | + TransitionFilter_Subtype_DiagonalTopLeftOpposite | + TransitionFilter_Subtype_Diamond | + TransitionFilter_Subtype_DoubleBarnDoor | + TransitionFilter_Subtype_DoubleDiamond | + TransitionFilter_Subtype_Down | + TransitionFilter_Subtype_FadeFromColor | + TransitionFilter_Subtype_FadeToColor | + TransitionFilter_Subtype_FanInHorizontal | + TransitionFilter_Subtype_FanInVertical | + TransitionFilter_Subtype_FanOutHorizontal | + TransitionFilter_Subtype_FanOutVertical | + TransitionFilter_Subtype_FivePoint | + TransitionFilter_Subtype_FourBlade | + TransitionFilter_Subtype_FourBoxHorizontal | + TransitionFilter_Subtype_FourBoxVertical | + TransitionFilter_Subtype_FourPoint | + TransitionFilter_Subtype_FromBottom | + TransitionFilter_Subtype_FromLeft | + TransitionFilter_Subtype_FromRight | + TransitionFilter_Subtype_FromTop | TransitionFilter_Subtype_Heart+ | TransitionFilter_Subtype_Horizontal | + TransitionFilter_Subtype_HorizontalLeft | + TransitionFilter_Subtype_HorizontalLeftSame | + TransitionFilter_Subtype_HorizontalRight | + TransitionFilter_Subtype_HorizontalRightSame | + TransitionFilter_Subtype_HorizontalTopLeftOpposite | + TransitionFilter_Subtype_HorizontalTopRightOpposite | + TransitionFilter_Subtype_Keyhole | TransitionFilter_Subtype_Left+ | TransitionFilter_Subtype_LeftCenter | + TransitionFilter_Subtype_LeftToRight | + TransitionFilter_Subtype_OppositeHorizontal | + TransitionFilter_Subtype_OppositeVertical | + TransitionFilter_Subtype_ParallelDiagonal | + TransitionFilter_Subtype_ParallelDiagonalBottomLeft | + TransitionFilter_Subtype_ParallelDiagonalTopLeft | + TransitionFilter_Subtype_ParallelVertical | + TransitionFilter_Subtype_Rectangle | + TransitionFilter_Subtype_Right | + TransitionFilter_Subtype_RightCenter | + TransitionFilter_Subtype_SixPoint | TransitionFilter_Subtype_Top+ | TransitionFilter_Subtype_TopCenter | + TransitionFilter_Subtype_TopLeft | + TransitionFilter_Subtype_TopLeftClockwise | + TransitionFilter_Subtype_TopLeftCounterClockwise | + TransitionFilter_Subtype_TopLeftDiagonal | + TransitionFilter_Subtype_TopLeftHorizontal | + TransitionFilter_Subtype_TopLeftVertical | + TransitionFilter_Subtype_TopRight | + TransitionFilter_Subtype_TopRightClockwise | + TransitionFilter_Subtype_TopRightCounterClockwise | + TransitionFilter_Subtype_TopRightDiagonal | + TransitionFilter_Subtype_TopToBottom | + TransitionFilter_Subtype_TwoBladeHorizontal | + TransitionFilter_Subtype_TwoBladeVertical | + TransitionFilter_Subtype_TwoBoxBottom | + TransitionFilter_Subtype_TwoBoxLeft | + TransitionFilter_Subtype_TwoBoxRight | + TransitionFilter_Subtype_TwoBoxTop | TransitionFilter_Subtype_Up+ | TransitionFilter_Subtype_Vertical | + TransitionFilter_Subtype_VerticalBottomLeftOpposite | + TransitionFilter_Subtype_VerticalBottomSame | + TransitionFilter_Subtype_VerticalLeft | + TransitionFilter_Subtype_VerticalRight | + TransitionFilter_Subtype_VerticalTopLeftOpposite | + TransitionFilter_Subtype_VerticalTopSame+ deriving (Eq,Show)+data TransitionFilter_Coordinated = TransitionFilter_Coordinated_True+ | TransitionFilter_Coordinated_False+ deriving (Eq,Show)+data TransitionFilter_ClibBoundary = TransitionFilter_ClibBoundary_Parent+ | TransitionFilter_ClibBoundary_Children+ deriving (Eq,Show)+data TransitionFilter_CalcMode = TransitionFilter_CalcMode_Discrete+ | TransitionFilter_CalcMode_Linear | + TransitionFilter_CalcMode_Paced+ deriving (Eq,Show)+++{-Instance decls-}++instance XmlContent Smil where+ fromElem (CElem (Elem "smil" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "smil" (toAttrs as) [])]+instance XmlAttributes Smil where+ fromAttrs as =+ Smil+ { smilId = possibleA fromAttrToStr "id" as+ , smilClass = possibleA fromAttrToStr "class" as+ , smilTitle = possibleA fromAttrToStr "title" as+ , smilXml'lang = possibleA fromAttrToStr "xml:lang" as+ , smilXmlns = defaultA fromAttrToStr "http://www.w3.org/TR/REC-smil/SMIL20" "xmlns" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (smilId v)+ , maybeToAttr toAttrFrStr "class" (smilClass v)+ , maybeToAttr toAttrFrStr "title" (smilTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (smilXml'lang v)+ , defaultToAttr toAttrFrStr "xmlns" (smilXmlns v)+ ]+instance XmlContent Head where+ fromElem (CElem (Elem "head" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "head" (toAttrs as) [])]+instance XmlAttributes Head where+ fromAttrs as =+ Head+ { headId = possibleA fromAttrToStr "id" as+ , headClass = possibleA fromAttrToStr "class" as+ , headTitle = possibleA fromAttrToStr "title" as+ , headXml'lang = possibleA fromAttrToStr "xml:lang" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (headId v)+ , maybeToAttr toAttrFrStr "class" (headClass v)+ , maybeToAttr toAttrFrStr "title" (headTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (headXml'lang v)+ ]+instance XmlContent Body where+ fromElem (CElem (Elem "body" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "body" (toAttrs as) [])]+instance XmlAttributes Body where+ fromAttrs as =+ Body+ { bodyId = possibleA fromAttrToStr "id" as+ , bodyClass = possibleA fromAttrToStr "class" as+ , bodyTitle = possibleA fromAttrToStr "title" as+ , bodyXml'lang = possibleA fromAttrToStr "xml:lang" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (bodyId v)+ , maybeToAttr toAttrFrStr "class" (bodyClass v)+ , maybeToAttr toAttrFrStr "title" (bodyTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (bodyXml'lang v)+ ]+instance XmlContent Animate where+ fromElem (CElem (Elem "animate" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "animate" (toAttrs as) [])]+instance XmlAttributes Animate where+ fromAttrs as =+ Animate+ { animateId = possibleA fromAttrToStr "id" as+ , animateClass = possibleA fromAttrToStr "class" as+ , animateTitle = possibleA fromAttrToStr "title" as+ , animateXml'lang = possibleA fromAttrToStr "xml:lang" as+ , animateCustomTest = possibleA fromAttrToStr "customTest" as+ , animateSystemBitrate = possibleA fromAttrToStr "systemBitrate" as+ , animateSystemCaptions = possibleA fromAttrToTyp "systemCaptions" as+ , animateSystemLanguage = possibleA fromAttrToStr "systemLanguage" as+ , animateSystemOverdubOrSubtitle = possibleA fromAttrToTyp "systemOverdubOrSubtitle" as+ , animateSystemRequired = possibleA fromAttrToStr "systemRequired" as+ , animateSystemScreenSize = possibleA fromAttrToStr "systemScreenSize" as+ , animateSystemScreenDepth = possibleA fromAttrToStr "systemScreenDepth" as+ , animateSystemAudioDesc = possibleA fromAttrToTyp "systemAudioDesc" as+ , animateSystemOperatingSystem = possibleA fromAttrToStr "systemOperatingSystem" as+ , animateSystemCPU = possibleA fromAttrToStr "systemCPU" as+ , animateSystemComponent = possibleA fromAttrToStr "systemComponent" as+ , animateSystem_bitrate = possibleA fromAttrToStr "system-bitrate" as+ , animateSystem_captions = possibleA fromAttrToTyp "system-captions" as+ , animateSystem_language = possibleA fromAttrToStr "system-language" as+ , animateSystem_overdub_or_caption = possibleA fromAttrToTyp "system-overdub-or-caption" as+ , animateSystem_required = possibleA fromAttrToStr "system-required" as+ , animateSystem_screen_size = possibleA fromAttrToStr "system-screen-size" as+ , animateSystem_screen_depth = possibleA fromAttrToStr "system-screen-depth" as+ , animateDur = possibleA fromAttrToStr "dur" as+ , animateRepeatCount = possibleA fromAttrToStr "repeatCount" as+ , animateRepeatDur = possibleA fromAttrToStr "repeatDur" as+ , animateBegin = possibleA fromAttrToStr "begin" as+ , animateEnd = possibleA fromAttrToStr "end" as+ , animateAttributeName = definiteA fromAttrToStr "animate" "attributeName" as+ , animateAttributeType = possibleA fromAttrToStr "attributeType" as+ , animateValues = possibleA fromAttrToStr "values" as+ , animateFrom = possibleA fromAttrToStr "from" as+ , animateTo = possibleA fromAttrToStr "to" as+ , animateBy = possibleA fromAttrToStr "by" as+ , animateCalcMode = defaultA fromAttrToTyp Animate_CalcMode_Linear "calcMode" as+ , animateAdditive = defaultA fromAttrToTyp Animate_Additive_Replace "additive" as+ , animateAccumulate = defaultA fromAttrToTyp Animate_Accumulate_None "accumulate" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (animateId v)+ , maybeToAttr toAttrFrStr "class" (animateClass v)+ , maybeToAttr toAttrFrStr "title" (animateTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (animateXml'lang v)+ , maybeToAttr toAttrFrStr "customTest" (animateCustomTest v)+ , maybeToAttr toAttrFrStr "systemBitrate" (animateSystemBitrate v)+ , maybeToAttr toAttrFrTyp "systemCaptions" (animateSystemCaptions v)+ , maybeToAttr toAttrFrStr "systemLanguage" (animateSystemLanguage v)+ , maybeToAttr toAttrFrTyp "systemOverdubOrSubtitle" (animateSystemOverdubOrSubtitle v)+ , maybeToAttr toAttrFrStr "systemRequired" (animateSystemRequired v)+ , maybeToAttr toAttrFrStr "systemScreenSize" (animateSystemScreenSize v)+ , maybeToAttr toAttrFrStr "systemScreenDepth" (animateSystemScreenDepth v)+ , maybeToAttr toAttrFrTyp "systemAudioDesc" (animateSystemAudioDesc v)+ , maybeToAttr toAttrFrStr "systemOperatingSystem" (animateSystemOperatingSystem v)+ , maybeToAttr toAttrFrStr "systemCPU" (animateSystemCPU v)+ , maybeToAttr toAttrFrStr "systemComponent" (animateSystemComponent v)+ , maybeToAttr toAttrFrStr "system-bitrate" (animateSystem_bitrate v)+ , maybeToAttr toAttrFrTyp "system-captions" (animateSystem_captions v)+ , maybeToAttr toAttrFrStr "system-language" (animateSystem_language v)+ , maybeToAttr toAttrFrTyp "system-overdub-or-caption" (animateSystem_overdub_or_caption v)+ , maybeToAttr toAttrFrStr "system-required" (animateSystem_required v)+ , maybeToAttr toAttrFrStr "system-screen-size" (animateSystem_screen_size v)+ , maybeToAttr toAttrFrStr "system-screen-depth" (animateSystem_screen_depth v)+ , maybeToAttr toAttrFrStr "dur" (animateDur v)+ , maybeToAttr toAttrFrStr "repeatCount" (animateRepeatCount v)+ , maybeToAttr toAttrFrStr "repeatDur" (animateRepeatDur v)+ , maybeToAttr toAttrFrStr "begin" (animateBegin v)+ , maybeToAttr toAttrFrStr "end" (animateEnd v)+ , toAttrFrStr "attributeName" (animateAttributeName v)+ , maybeToAttr toAttrFrStr "attributeType" (animateAttributeType v)+ , maybeToAttr toAttrFrStr "values" (animateValues v)+ , maybeToAttr toAttrFrStr "from" (animateFrom v)+ , maybeToAttr toAttrFrStr "to" (animateTo v)+ , maybeToAttr toAttrFrStr "by" (animateBy v)+ , defaultToAttr toAttrFrTyp "calcMode" (animateCalcMode v)+ , defaultToAttr toAttrFrTyp "additive" (animateAdditive v)+ , defaultToAttr toAttrFrTyp "accumulate" (animateAccumulate v)+ ]+instance XmlAttrType Animate_SystemCaptions where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just Animate_SystemCaptions_On+ translate "off" = Just Animate_SystemCaptions_Off+ translate _ = Nothing+ toAttrFrTyp n Animate_SystemCaptions_On = Just (n, str2attr "on")+ toAttrFrTyp n Animate_SystemCaptions_Off = Just (n, str2attr "off")+instance XmlAttrType Animate_SystemOverdubOrSubtitle where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "overdub" = Just Animate_SystemOverdubOrSubtitle_Overdub+ translate "subtitle" = Just Animate_SystemOverdubOrSubtitle_Subtitle+ translate _ = Nothing+ toAttrFrTyp n Animate_SystemOverdubOrSubtitle_Overdub = Just (n, str2attr "overdub")+ toAttrFrTyp n Animate_SystemOverdubOrSubtitle_Subtitle = Just (n, str2attr "subtitle")+instance XmlAttrType Animate_SystemAudioDesc where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just Animate_SystemAudioDesc_On+ translate "off" = Just Animate_SystemAudioDesc_Off+ translate _ = Nothing+ toAttrFrTyp n Animate_SystemAudioDesc_On = Just (n, str2attr "on")+ toAttrFrTyp n Animate_SystemAudioDesc_Off = Just (n, str2attr "off")+instance XmlAttrType Animate_System_captions where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just Animate_System_captions_On+ translate "off" = Just Animate_System_captions_Off+ translate _ = Nothing+ toAttrFrTyp n Animate_System_captions_On = Just (n, str2attr "on")+ toAttrFrTyp n Animate_System_captions_Off = Just (n, str2attr "off")+instance XmlAttrType Animate_System_overdub_or_caption where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "overdub" = Just Animate_System_overdub_or_caption_Overdub+ translate "caption" = Just Animate_System_overdub_or_caption_Caption+ translate _ = Nothing+ toAttrFrTyp n Animate_System_overdub_or_caption_Overdub = Just (n, str2attr "overdub")+ toAttrFrTyp n Animate_System_overdub_or_caption_Caption = Just (n, str2attr "caption")+instance XmlAttrType Animate_CalcMode where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "discrete" = Just Animate_CalcMode_Discrete+ translate "linear" = Just Animate_CalcMode_Linear+ translate "paced" = Just Animate_CalcMode_Paced+ translate _ = Nothing+ toAttrFrTyp n Animate_CalcMode_Discrete = Just (n, str2attr "discrete")+ toAttrFrTyp n Animate_CalcMode_Linear = Just (n, str2attr "linear")+ toAttrFrTyp n Animate_CalcMode_Paced = Just (n, str2attr "paced")+instance XmlAttrType Animate_Additive where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "replace" = Just Animate_Additive_Replace+ translate "sum" = Just Animate_Additive_Sum+ translate _ = Nothing+ toAttrFrTyp n Animate_Additive_Replace = Just (n, str2attr "replace")+ toAttrFrTyp n Animate_Additive_Sum = Just (n, str2attr "sum")+instance XmlAttrType Animate_Accumulate where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "none" = Just Animate_Accumulate_None+ translate "sum" = Just Animate_Accumulate_Sum+ translate _ = Nothing+ toAttrFrTyp n Animate_Accumulate_None = Just (n, str2attr "none")+ toAttrFrTyp n Animate_Accumulate_Sum = Just (n, str2attr "sum")+instance XmlContent Set where+ fromElem (CElem (Elem "set" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "set" (toAttrs as) [])]+instance XmlAttributes Set where+ fromAttrs as =+ Set+ { setId = possibleA fromAttrToStr "id" as+ , setClass = possibleA fromAttrToStr "class" as+ , setTitle = possibleA fromAttrToStr "title" as+ , setXml'lang = possibleA fromAttrToStr "xml:lang" as+ , setCustomTest = possibleA fromAttrToStr "customTest" as+ , setSystemBitrate = possibleA fromAttrToStr "systemBitrate" as+ , setSystemCaptions = possibleA fromAttrToTyp "systemCaptions" as+ , setSystemLanguage = possibleA fromAttrToStr "systemLanguage" as+ , setSystemOverdubOrSubtitle = possibleA fromAttrToTyp "systemOverdubOrSubtitle" as+ , setSystemRequired = possibleA fromAttrToStr "systemRequired" as+ , setSystemScreenSize = possibleA fromAttrToStr "systemScreenSize" as+ , setSystemScreenDepth = possibleA fromAttrToStr "systemScreenDepth" as+ , setSystemAudioDesc = possibleA fromAttrToTyp "systemAudioDesc" as+ , setSystemOperatingSystem = possibleA fromAttrToStr "systemOperatingSystem" as+ , setSystemCPU = possibleA fromAttrToStr "systemCPU" as+ , setSystemComponent = possibleA fromAttrToStr "systemComponent" as+ , setSystem_bitrate = possibleA fromAttrToStr "system-bitrate" as+ , setSystem_captions = possibleA fromAttrToTyp "system-captions" as+ , setSystem_language = possibleA fromAttrToStr "system-language" as+ , setSystem_overdub_or_caption = possibleA fromAttrToTyp "system-overdub-or-caption" as+ , setSystem_required = possibleA fromAttrToStr "system-required" as+ , setSystem_screen_size = possibleA fromAttrToStr "system-screen-size" as+ , setSystem_screen_depth = possibleA fromAttrToStr "system-screen-depth" as+ , setDur = possibleA fromAttrToStr "dur" as+ , setRepeatCount = possibleA fromAttrToStr "repeatCount" as+ , setRepeatDur = possibleA fromAttrToStr "repeatDur" as+ , setBegin = possibleA fromAttrToStr "begin" as+ , setEnd = possibleA fromAttrToStr "end" as+ , setAttributeName = definiteA fromAttrToStr "set" "attributeName" as+ , setAttributeType = possibleA fromAttrToStr "attributeType" as+ , setTo = possibleA fromAttrToStr "to" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (setId v)+ , maybeToAttr toAttrFrStr "class" (setClass v)+ , maybeToAttr toAttrFrStr "title" (setTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (setXml'lang v)+ , maybeToAttr toAttrFrStr "customTest" (setCustomTest v)+ , maybeToAttr toAttrFrStr "systemBitrate" (setSystemBitrate v)+ , maybeToAttr toAttrFrTyp "systemCaptions" (setSystemCaptions v)+ , maybeToAttr toAttrFrStr "systemLanguage" (setSystemLanguage v)+ , maybeToAttr toAttrFrTyp "systemOverdubOrSubtitle" (setSystemOverdubOrSubtitle v)+ , maybeToAttr toAttrFrStr "systemRequired" (setSystemRequired v)+ , maybeToAttr toAttrFrStr "systemScreenSize" (setSystemScreenSize v)+ , maybeToAttr toAttrFrStr "systemScreenDepth" (setSystemScreenDepth v)+ , maybeToAttr toAttrFrTyp "systemAudioDesc" (setSystemAudioDesc v)+ , maybeToAttr toAttrFrStr "systemOperatingSystem" (setSystemOperatingSystem v)+ , maybeToAttr toAttrFrStr "systemCPU" (setSystemCPU v)+ , maybeToAttr toAttrFrStr "systemComponent" (setSystemComponent v)+ , maybeToAttr toAttrFrStr "system-bitrate" (setSystem_bitrate v)+ , maybeToAttr toAttrFrTyp "system-captions" (setSystem_captions v)+ , maybeToAttr toAttrFrStr "system-language" (setSystem_language v)+ , maybeToAttr toAttrFrTyp "system-overdub-or-caption" (setSystem_overdub_or_caption v)+ , maybeToAttr toAttrFrStr "system-required" (setSystem_required v)+ , maybeToAttr toAttrFrStr "system-screen-size" (setSystem_screen_size v)+ , maybeToAttr toAttrFrStr "system-screen-depth" (setSystem_screen_depth v)+ , maybeToAttr toAttrFrStr "dur" (setDur v)+ , maybeToAttr toAttrFrStr "repeatCount" (setRepeatCount v)+ , maybeToAttr toAttrFrStr "repeatDur" (setRepeatDur v)+ , maybeToAttr toAttrFrStr "begin" (setBegin v)+ , maybeToAttr toAttrFrStr "end" (setEnd v)+ , toAttrFrStr "attributeName" (setAttributeName v)+ , maybeToAttr toAttrFrStr "attributeType" (setAttributeType v)+ , maybeToAttr toAttrFrStr "to" (setTo v)+ ]+instance XmlAttrType Set_SystemCaptions where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just Set_SystemCaptions_On+ translate "off" = Just Set_SystemCaptions_Off+ translate _ = Nothing+ toAttrFrTyp n Set_SystemCaptions_On = Just (n, str2attr "on")+ toAttrFrTyp n Set_SystemCaptions_Off = Just (n, str2attr "off")+instance XmlAttrType Set_SystemOverdubOrSubtitle where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "overdub" = Just Set_SystemOverdubOrSubtitle_Overdub+ translate "subtitle" = Just Set_SystemOverdubOrSubtitle_Subtitle+ translate _ = Nothing+ toAttrFrTyp n Set_SystemOverdubOrSubtitle_Overdub = Just (n, str2attr "overdub")+ toAttrFrTyp n Set_SystemOverdubOrSubtitle_Subtitle = Just (n, str2attr "subtitle")+instance XmlAttrType Set_SystemAudioDesc where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just Set_SystemAudioDesc_On+ translate "off" = Just Set_SystemAudioDesc_Off+ translate _ = Nothing+ toAttrFrTyp n Set_SystemAudioDesc_On = Just (n, str2attr "on")+ toAttrFrTyp n Set_SystemAudioDesc_Off = Just (n, str2attr "off")+instance XmlAttrType Set_System_captions where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just Set_System_captions_On+ translate "off" = Just Set_System_captions_Off+ translate _ = Nothing+ toAttrFrTyp n Set_System_captions_On = Just (n, str2attr "on")+ toAttrFrTyp n Set_System_captions_Off = Just (n, str2attr "off")+instance XmlAttrType Set_System_overdub_or_caption where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "overdub" = Just Set_System_overdub_or_caption_Overdub+ translate "caption" = Just Set_System_overdub_or_caption_Caption+ translate _ = Nothing+ toAttrFrTyp n Set_System_overdub_or_caption_Overdub = Just (n, str2attr "overdub")+ toAttrFrTyp n Set_System_overdub_or_caption_Caption = Just (n, str2attr "caption")+instance XmlContent AnimateMotion where+ fromElem (CElem (Elem "animateMotion" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "animateMotion" (toAttrs as) [])]+instance XmlAttributes AnimateMotion where+ fromAttrs as =+ AnimateMotion+ { animateMotionId = possibleA fromAttrToStr "id" as+ , animateMotionClass = possibleA fromAttrToStr "class" as+ , animateMotionTitle = possibleA fromAttrToStr "title" as+ , animateMotionXml'lang = possibleA fromAttrToStr "xml:lang" as+ , animateMotionCustomTest = possibleA fromAttrToStr "customTest" as+ , animateMotionSystemBitrate = possibleA fromAttrToStr "systemBitrate" as+ , animateMotionSystemCaptions = possibleA fromAttrToTyp "systemCaptions" as+ , animateMotionSystemLanguage = possibleA fromAttrToStr "systemLanguage" as+ , animateMotionSystemOverdubOrSubtitle = possibleA fromAttrToTyp "systemOverdubOrSubtitle" as+ , animateMotionSystemRequired = possibleA fromAttrToStr "systemRequired" as+ , animateMotionSystemScreenSize = possibleA fromAttrToStr "systemScreenSize" as+ , animateMotionSystemScreenDepth = possibleA fromAttrToStr "systemScreenDepth" as+ , animateMotionSystemAudioDesc = possibleA fromAttrToTyp "systemAudioDesc" as+ , animateMotionSystemOperatingSystem = possibleA fromAttrToStr "systemOperatingSystem" as+ , animateMotionSystemCPU = possibleA fromAttrToStr "systemCPU" as+ , animateMotionSystemComponent = possibleA fromAttrToStr "systemComponent" as+ , animateMotionSystem_bitrate = possibleA fromAttrToStr "system-bitrate" as+ , animateMotionSystem_captions = possibleA fromAttrToTyp "system-captions" as+ , animateMotionSystem_language = possibleA fromAttrToStr "system-language" as+ , animateMotionSystem_overdub_or_caption = possibleA fromAttrToTyp "system-overdub-or-caption" as+ , animateMotionSystem_required = possibleA fromAttrToStr "system-required" as+ , animateMotionSystem_screen_size = possibleA fromAttrToStr "system-screen-size" as+ , animateMotionSystem_screen_depth = possibleA fromAttrToStr "system-screen-depth" as+ , animateMotionDur = possibleA fromAttrToStr "dur" as+ , animateMotionRepeatCount = possibleA fromAttrToStr "repeatCount" as+ , animateMotionRepeatDur = possibleA fromAttrToStr "repeatDur" as+ , animateMotionBegin = possibleA fromAttrToStr "begin" as+ , animateMotionEnd = possibleA fromAttrToStr "end" as+ , animateMotionValues = possibleA fromAttrToStr "values" as+ , animateMotionFrom = possibleA fromAttrToStr "from" as+ , animateMotionTo = possibleA fromAttrToStr "to" as+ , animateMotionBy = possibleA fromAttrToStr "by" as+ , animateMotionCalcMode = defaultA fromAttrToTyp AnimateMotion_CalcMode_Linear "calcMode" as+ , animateMotionAdditive = defaultA fromAttrToTyp AnimateMotion_Additive_Replace "additive" as+ , animateMotionAccumulate = defaultA fromAttrToTyp AnimateMotion_Accumulate_None "accumulate" as+ , animateMotionOrigin = defaultA fromAttrToTyp AnimateMotion_Origin_Default "origin" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (animateMotionId v)+ , maybeToAttr toAttrFrStr "class" (animateMotionClass v)+ , maybeToAttr toAttrFrStr "title" (animateMotionTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (animateMotionXml'lang v)+ , maybeToAttr toAttrFrStr "customTest" (animateMotionCustomTest v)+ , maybeToAttr toAttrFrStr "systemBitrate" (animateMotionSystemBitrate v)+ , maybeToAttr toAttrFrTyp "systemCaptions" (animateMotionSystemCaptions v)+ , maybeToAttr toAttrFrStr "systemLanguage" (animateMotionSystemLanguage v)+ , maybeToAttr toAttrFrTyp "systemOverdubOrSubtitle" (animateMotionSystemOverdubOrSubtitle v)+ , maybeToAttr toAttrFrStr "systemRequired" (animateMotionSystemRequired v)+ , maybeToAttr toAttrFrStr "systemScreenSize" (animateMotionSystemScreenSize v)+ , maybeToAttr toAttrFrStr "systemScreenDepth" (animateMotionSystemScreenDepth v)+ , maybeToAttr toAttrFrTyp "systemAudioDesc" (animateMotionSystemAudioDesc v)+ , maybeToAttr toAttrFrStr "systemOperatingSystem" (animateMotionSystemOperatingSystem v)+ , maybeToAttr toAttrFrStr "systemCPU" (animateMotionSystemCPU v)+ , maybeToAttr toAttrFrStr "systemComponent" (animateMotionSystemComponent v)+ , maybeToAttr toAttrFrStr "system-bitrate" (animateMotionSystem_bitrate v)+ , maybeToAttr toAttrFrTyp "system-captions" (animateMotionSystem_captions v)+ , maybeToAttr toAttrFrStr "system-language" (animateMotionSystem_language v)+ , maybeToAttr toAttrFrTyp "system-overdub-or-caption" (animateMotionSystem_overdub_or_caption v)+ , maybeToAttr toAttrFrStr "system-required" (animateMotionSystem_required v)+ , maybeToAttr toAttrFrStr "system-screen-size" (animateMotionSystem_screen_size v)+ , maybeToAttr toAttrFrStr "system-screen-depth" (animateMotionSystem_screen_depth v)+ , maybeToAttr toAttrFrStr "dur" (animateMotionDur v)+ , maybeToAttr toAttrFrStr "repeatCount" (animateMotionRepeatCount v)+ , maybeToAttr toAttrFrStr "repeatDur" (animateMotionRepeatDur v)+ , maybeToAttr toAttrFrStr "begin" (animateMotionBegin v)+ , maybeToAttr toAttrFrStr "end" (animateMotionEnd v)+ , maybeToAttr toAttrFrStr "values" (animateMotionValues v)+ , maybeToAttr toAttrFrStr "from" (animateMotionFrom v)+ , maybeToAttr toAttrFrStr "to" (animateMotionTo v)+ , maybeToAttr toAttrFrStr "by" (animateMotionBy v)+ , defaultToAttr toAttrFrTyp "calcMode" (animateMotionCalcMode v)+ , defaultToAttr toAttrFrTyp "additive" (animateMotionAdditive v)+ , defaultToAttr toAttrFrTyp "accumulate" (animateMotionAccumulate v)+ , defaultToAttr toAttrFrTyp "origin" (animateMotionOrigin v)+ ]+instance XmlAttrType AnimateMotion_SystemCaptions where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just AnimateMotion_SystemCaptions_On+ translate "off" = Just AnimateMotion_SystemCaptions_Off+ translate _ = Nothing+ toAttrFrTyp n AnimateMotion_SystemCaptions_On = Just (n, str2attr "on")+ toAttrFrTyp n AnimateMotion_SystemCaptions_Off = Just (n, str2attr "off")+instance XmlAttrType AnimateMotion_SystemOverdubOrSubtitle where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "overdub" = Just AnimateMotion_SystemOverdubOrSubtitle_Overdub+ translate "subtitle" = Just AnimateMotion_SystemOverdubOrSubtitle_Subtitle+ translate _ = Nothing+ toAttrFrTyp n AnimateMotion_SystemOverdubOrSubtitle_Overdub = Just (n, str2attr "overdub")+ toAttrFrTyp n AnimateMotion_SystemOverdubOrSubtitle_Subtitle = Just (n, str2attr "subtitle")+instance XmlAttrType AnimateMotion_SystemAudioDesc where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just AnimateMotion_SystemAudioDesc_On+ translate "off" = Just AnimateMotion_SystemAudioDesc_Off+ translate _ = Nothing+ toAttrFrTyp n AnimateMotion_SystemAudioDesc_On = Just (n, str2attr "on")+ toAttrFrTyp n AnimateMotion_SystemAudioDesc_Off = Just (n, str2attr "off")+instance XmlAttrType AnimateMotion_System_captions where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just AnimateMotion_System_captions_On+ translate "off" = Just AnimateMotion_System_captions_Off+ translate _ = Nothing+ toAttrFrTyp n AnimateMotion_System_captions_On = Just (n, str2attr "on")+ toAttrFrTyp n AnimateMotion_System_captions_Off = Just (n, str2attr "off")+instance XmlAttrType AnimateMotion_System_overdub_or_caption where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "overdub" = Just AnimateMotion_System_overdub_or_caption_Overdub+ translate "caption" = Just AnimateMotion_System_overdub_or_caption_Caption+ translate _ = Nothing+ toAttrFrTyp n AnimateMotion_System_overdub_or_caption_Overdub = Just (n, str2attr "overdub")+ toAttrFrTyp n AnimateMotion_System_overdub_or_caption_Caption = Just (n, str2attr "caption")+instance XmlAttrType AnimateMotion_CalcMode where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "discrete" = Just AnimateMotion_CalcMode_Discrete+ translate "linear" = Just AnimateMotion_CalcMode_Linear+ translate "paced" = Just AnimateMotion_CalcMode_Paced+ translate _ = Nothing+ toAttrFrTyp n AnimateMotion_CalcMode_Discrete = Just (n, str2attr "discrete")+ toAttrFrTyp n AnimateMotion_CalcMode_Linear = Just (n, str2attr "linear")+ toAttrFrTyp n AnimateMotion_CalcMode_Paced = Just (n, str2attr "paced")+instance XmlAttrType AnimateMotion_Additive where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "replace" = Just AnimateMotion_Additive_Replace+ translate "sum" = Just AnimateMotion_Additive_Sum+ translate _ = Nothing+ toAttrFrTyp n AnimateMotion_Additive_Replace = Just (n, str2attr "replace")+ toAttrFrTyp n AnimateMotion_Additive_Sum = Just (n, str2attr "sum")+instance XmlAttrType AnimateMotion_Accumulate where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "none" = Just AnimateMotion_Accumulate_None+ translate "sum" = Just AnimateMotion_Accumulate_Sum+ translate _ = Nothing+ toAttrFrTyp n AnimateMotion_Accumulate_None = Just (n, str2attr "none")+ toAttrFrTyp n AnimateMotion_Accumulate_Sum = Just (n, str2attr "sum")+instance XmlAttrType AnimateMotion_Origin where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "default" = Just AnimateMotion_Origin_Default+ translate _ = Nothing+ toAttrFrTyp n AnimateMotion_Origin_Default = Just (n, str2attr "default")+instance XmlContent AnimateColor where+ fromElem (CElem (Elem "animateColor" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "animateColor" (toAttrs as) [])]+instance XmlAttributes AnimateColor where+ fromAttrs as =+ AnimateColor+ { animateColorId = possibleA fromAttrToStr "id" as+ , animateColorClass = possibleA fromAttrToStr "class" as+ , animateColorTitle = possibleA fromAttrToStr "title" as+ , animateColorXml'lang = possibleA fromAttrToStr "xml:lang" as+ , animateColorCustomTest = possibleA fromAttrToStr "customTest" as+ , animateColorSystemBitrate = possibleA fromAttrToStr "systemBitrate" as+ , animateColorSystemCaptions = possibleA fromAttrToTyp "systemCaptions" as+ , animateColorSystemLanguage = possibleA fromAttrToStr "systemLanguage" as+ , animateColorSystemOverdubOrSubtitle = possibleA fromAttrToTyp "systemOverdubOrSubtitle" as+ , animateColorSystemRequired = possibleA fromAttrToStr "systemRequired" as+ , animateColorSystemScreenSize = possibleA fromAttrToStr "systemScreenSize" as+ , animateColorSystemScreenDepth = possibleA fromAttrToStr "systemScreenDepth" as+ , animateColorSystemAudioDesc = possibleA fromAttrToTyp "systemAudioDesc" as+ , animateColorSystemOperatingSystem = possibleA fromAttrToStr "systemOperatingSystem" as+ , animateColorSystemCPU = possibleA fromAttrToStr "systemCPU" as+ , animateColorSystemComponent = possibleA fromAttrToStr "systemComponent" as+ , animateColorSystem_bitrate = possibleA fromAttrToStr "system-bitrate" as+ , animateColorSystem_captions = possibleA fromAttrToTyp "system-captions" as+ , animateColorSystem_language = possibleA fromAttrToStr "system-language" as+ , animateColorSystem_overdub_or_caption = possibleA fromAttrToTyp "system-overdub-or-caption" as+ , animateColorSystem_required = possibleA fromAttrToStr "system-required" as+ , animateColorSystem_screen_size = possibleA fromAttrToStr "system-screen-size" as+ , animateColorSystem_screen_depth = possibleA fromAttrToStr "system-screen-depth" as+ , animateColorDur = possibleA fromAttrToStr "dur" as+ , animateColorRepeatCount = possibleA fromAttrToStr "repeatCount" as+ , animateColorRepeatDur = possibleA fromAttrToStr "repeatDur" as+ , animateColorBegin = possibleA fromAttrToStr "begin" as+ , animateColorEnd = possibleA fromAttrToStr "end" as+ , animateColorAttributeName = definiteA fromAttrToStr "animateColor" "attributeName" as+ , animateColorAttributeType = possibleA fromAttrToStr "attributeType" as+ , animateColorValues = possibleA fromAttrToStr "values" as+ , animateColorFrom = possibleA fromAttrToStr "from" as+ , animateColorTo = possibleA fromAttrToStr "to" as+ , animateColorBy = possibleA fromAttrToStr "by" as+ , animateColorCalcMode = defaultA fromAttrToTyp AnimateColor_CalcMode_Linear "calcMode" as+ , animateColorAdditive = defaultA fromAttrToTyp AnimateColor_Additive_Replace "additive" as+ , animateColorAccumulate = defaultA fromAttrToTyp AnimateColor_Accumulate_None "accumulate" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (animateColorId v)+ , maybeToAttr toAttrFrStr "class" (animateColorClass v)+ , maybeToAttr toAttrFrStr "title" (animateColorTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (animateColorXml'lang v)+ , maybeToAttr toAttrFrStr "customTest" (animateColorCustomTest v)+ , maybeToAttr toAttrFrStr "systemBitrate" (animateColorSystemBitrate v)+ , maybeToAttr toAttrFrTyp "systemCaptions" (animateColorSystemCaptions v)+ , maybeToAttr toAttrFrStr "systemLanguage" (animateColorSystemLanguage v)+ , maybeToAttr toAttrFrTyp "systemOverdubOrSubtitle" (animateColorSystemOverdubOrSubtitle v)+ , maybeToAttr toAttrFrStr "systemRequired" (animateColorSystemRequired v)+ , maybeToAttr toAttrFrStr "systemScreenSize" (animateColorSystemScreenSize v)+ , maybeToAttr toAttrFrStr "systemScreenDepth" (animateColorSystemScreenDepth v)+ , maybeToAttr toAttrFrTyp "systemAudioDesc" (animateColorSystemAudioDesc v)+ , maybeToAttr toAttrFrStr "systemOperatingSystem" (animateColorSystemOperatingSystem v)+ , maybeToAttr toAttrFrStr "systemCPU" (animateColorSystemCPU v)+ , maybeToAttr toAttrFrStr "systemComponent" (animateColorSystemComponent v)+ , maybeToAttr toAttrFrStr "system-bitrate" (animateColorSystem_bitrate v)+ , maybeToAttr toAttrFrTyp "system-captions" (animateColorSystem_captions v)+ , maybeToAttr toAttrFrStr "system-language" (animateColorSystem_language v)+ , maybeToAttr toAttrFrTyp "system-overdub-or-caption" (animateColorSystem_overdub_or_caption v)+ , maybeToAttr toAttrFrStr "system-required" (animateColorSystem_required v)+ , maybeToAttr toAttrFrStr "system-screen-size" (animateColorSystem_screen_size v)+ , maybeToAttr toAttrFrStr "system-screen-depth" (animateColorSystem_screen_depth v)+ , maybeToAttr toAttrFrStr "dur" (animateColorDur v)+ , maybeToAttr toAttrFrStr "repeatCount" (animateColorRepeatCount v)+ , maybeToAttr toAttrFrStr "repeatDur" (animateColorRepeatDur v)+ , maybeToAttr toAttrFrStr "begin" (animateColorBegin v)+ , maybeToAttr toAttrFrStr "end" (animateColorEnd v)+ , toAttrFrStr "attributeName" (animateColorAttributeName v)+ , maybeToAttr toAttrFrStr "attributeType" (animateColorAttributeType v)+ , maybeToAttr toAttrFrStr "values" (animateColorValues v)+ , maybeToAttr toAttrFrStr "from" (animateColorFrom v)+ , maybeToAttr toAttrFrStr "to" (animateColorTo v)+ , maybeToAttr toAttrFrStr "by" (animateColorBy v)+ , defaultToAttr toAttrFrTyp "calcMode" (animateColorCalcMode v)+ , defaultToAttr toAttrFrTyp "additive" (animateColorAdditive v)+ , defaultToAttr toAttrFrTyp "accumulate" (animateColorAccumulate v)+ ]+instance XmlAttrType AnimateColor_SystemCaptions where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just AnimateColor_SystemCaptions_On+ translate "off" = Just AnimateColor_SystemCaptions_Off+ translate _ = Nothing+ toAttrFrTyp n AnimateColor_SystemCaptions_On = Just (n, str2attr "on")+ toAttrFrTyp n AnimateColor_SystemCaptions_Off = Just (n, str2attr "off")+instance XmlAttrType AnimateColor_SystemOverdubOrSubtitle where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "overdub" = Just AnimateColor_SystemOverdubOrSubtitle_Overdub+ translate "subtitle" = Just AnimateColor_SystemOverdubOrSubtitle_Subtitle+ translate _ = Nothing+ toAttrFrTyp n AnimateColor_SystemOverdubOrSubtitle_Overdub = Just (n, str2attr "overdub")+ toAttrFrTyp n AnimateColor_SystemOverdubOrSubtitle_Subtitle = Just (n, str2attr "subtitle")+instance XmlAttrType AnimateColor_SystemAudioDesc where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just AnimateColor_SystemAudioDesc_On+ translate "off" = Just AnimateColor_SystemAudioDesc_Off+ translate _ = Nothing+ toAttrFrTyp n AnimateColor_SystemAudioDesc_On = Just (n, str2attr "on")+ toAttrFrTyp n AnimateColor_SystemAudioDesc_Off = Just (n, str2attr "off")+instance XmlAttrType AnimateColor_System_captions where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "on" = Just AnimateColor_System_captions_On+ translate "off" = Just AnimateColor_System_captions_Off+ translate _ = Nothing+ toAttrFrTyp n AnimateColor_System_captions_On = Just (n, str2attr "on")+ toAttrFrTyp n AnimateColor_System_captions_Off = Just (n, str2attr "off")+instance XmlAttrType AnimateColor_System_overdub_or_caption where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "overdub" = Just AnimateColor_System_overdub_or_caption_Overdub+ translate "caption" = Just AnimateColor_System_overdub_or_caption_Caption+ translate _ = Nothing+ toAttrFrTyp n AnimateColor_System_overdub_or_caption_Overdub = Just (n, str2attr "overdub")+ toAttrFrTyp n AnimateColor_System_overdub_or_caption_Caption = Just (n, str2attr "caption")+instance XmlAttrType AnimateColor_CalcMode where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "discrete" = Just AnimateColor_CalcMode_Discrete+ translate "linear" = Just AnimateColor_CalcMode_Linear+ translate "paced" = Just AnimateColor_CalcMode_Paced+ translate _ = Nothing+ toAttrFrTyp n AnimateColor_CalcMode_Discrete = Just (n, str2attr "discrete")+ toAttrFrTyp n AnimateColor_CalcMode_Linear = Just (n, str2attr "linear")+ toAttrFrTyp n AnimateColor_CalcMode_Paced = Just (n, str2attr "paced")+instance XmlAttrType AnimateColor_Additive where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "replace" = Just AnimateColor_Additive_Replace+ translate "sum" = Just AnimateColor_Additive_Sum+ translate _ = Nothing+ toAttrFrTyp n AnimateColor_Additive_Replace = Just (n, str2attr "replace")+ toAttrFrTyp n AnimateColor_Additive_Sum = Just (n, str2attr "sum")+instance XmlAttrType AnimateColor_Accumulate where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "none" = Just AnimateColor_Accumulate_None+ translate "sum" = Just AnimateColor_Accumulate_Sum+ translate _ = Nothing+ toAttrFrTyp n AnimateColor_Accumulate_None = Just (n, str2attr "none")+ toAttrFrTyp n AnimateColor_Accumulate_Sum = Just (n, str2attr "sum")+instance XmlContent Switch where+ fromElem (CElem (Elem "switch" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "switch" (toAttrs as) [])]+instance XmlAttributes Switch where+ fromAttrs as =+ Switch+ { switchId = possibleA fromAttrToStr "id" as+ , switchClass = possibleA fromAttrToStr "class" as+ , switchTitle = possibleA fromAttrToStr "title" as+ , switchXml'lang = possibleA fromAttrToStr "xml:lang" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (switchId v)+ , maybeToAttr toAttrFrStr "class" (switchClass v)+ , maybeToAttr toAttrFrStr "title" (switchTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (switchXml'lang v)+ ]+instance XmlContent Meta where+ fromElem (CElem (Elem "meta" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "meta" (toAttrs as) [])]+instance XmlAttributes Meta where+ fromAttrs as =+ Meta+ { metaContent = possibleA fromAttrToStr "content" as+ , metaName = definiteA fromAttrToStr "meta" "name" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "content" (metaContent v)+ , toAttrFrStr "name" (metaName v)+ ]+instance XmlContent Metadata where+ fromElem (CElem (Elem "metadata" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "metadata" (toAttrs as) [])]+instance XmlAttributes Metadata where+ fromAttrs as =+ Metadata+ { metadataId = possibleA fromAttrToStr "id" as+ , metadataClass = possibleA fromAttrToStr "class" as+ , metadataTitle = possibleA fromAttrToStr "title" as+ , metadataXml'lang = possibleA fromAttrToStr "xml:lang" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (metadataId v)+ , maybeToAttr toAttrFrStr "class" (metadataClass v)+ , maybeToAttr toAttrFrStr "title" (metadataTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (metadataXml'lang v)+ ]+instance XmlContent Layout where+ fromElem (CElem (Elem "layout" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "layout" (toAttrs as) [])]+instance XmlAttributes Layout where+ fromAttrs as =+ Layout+ { layoutId = possibleA fromAttrToStr "id" as+ , layoutClass = possibleA fromAttrToStr "class" as+ , layoutTitle = possibleA fromAttrToStr "title" as+ , layoutXml'lang = possibleA fromAttrToStr "xml:lang" as+ , layoutType = defaultA fromAttrToStr "text/smil-basic-layout" "type" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (layoutId v)+ , maybeToAttr toAttrFrStr "class" (layoutClass v)+ , maybeToAttr toAttrFrStr "title" (layoutTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (layoutXml'lang v)+ , defaultToAttr toAttrFrStr "type" (layoutType v)+ ]+instance XmlContent Region where+ fromElem (CElem (Elem "region" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "region" (toAttrs as) [])]+instance XmlAttributes Region where+ fromAttrs as =+ Region+ { regionId = possibleA fromAttrToStr "id" as+ , regionClass = possibleA fromAttrToStr "class" as+ , regionTitle = possibleA fromAttrToStr "title" as+ , regionXml'lang = possibleA fromAttrToStr "xml:lang" as+ , regionHeight = defaultA fromAttrToStr "auto" "height" as+ , regionWidth = defaultA fromAttrToStr "auto" "width" as+ , regionClose = defaultA fromAttrToTyp Region_Close_Never "close" as+ , regionOpen = defaultA fromAttrToTyp Region_Open_Always "open" as+ , regionBackgroundColor = possibleA fromAttrToStr "backgroundColor" as+ , regionBackground_color = possibleA fromAttrToStr "background-color" as+ , regionBottom = defaultA fromAttrToStr "auto" "bottom" as+ , regionLeft = defaultA fromAttrToStr "auto" "left" as+ , regionRight = defaultA fromAttrToStr "auto" "right" as+ , regionTop = defaultA fromAttrToStr "auto" "top" as+ , regionZ_index = possibleA fromAttrToStr "z-index" as+ , regionShowBackground = defaultA fromAttrToTyp Region_ShowBackground_Always "showBackground" as+ , regionFit = defaultA fromAttrToTyp Region_Fit_Hidden "fit" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (regionId v)+ , maybeToAttr toAttrFrStr "class" (regionClass v)+ , maybeToAttr toAttrFrStr "title" (regionTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (regionXml'lang v)+ , defaultToAttr toAttrFrStr "height" (regionHeight v)+ , defaultToAttr toAttrFrStr "width" (regionWidth v)+ , defaultToAttr toAttrFrTyp "close" (regionClose v)+ , defaultToAttr toAttrFrTyp "open" (regionOpen v)+ , maybeToAttr toAttrFrStr "backgroundColor" (regionBackgroundColor v)+ , maybeToAttr toAttrFrStr "background-color" (regionBackground_color v)+ , defaultToAttr toAttrFrStr "bottom" (regionBottom v)+ , defaultToAttr toAttrFrStr "left" (regionLeft v)+ , defaultToAttr toAttrFrStr "right" (regionRight v)+ , defaultToAttr toAttrFrStr "top" (regionTop v)+ , maybeToAttr toAttrFrStr "z-index" (regionZ_index v)+ , defaultToAttr toAttrFrTyp "showBackground" (regionShowBackground v)+ , defaultToAttr toAttrFrTyp "fit" (regionFit v)+ ]+instance XmlAttrType Region_Close where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "never" = Just Region_Close_Never+ translate "whenNotActive" = Just Region_Close_WhenNotActive+ translate _ = Nothing+ toAttrFrTyp n Region_Close_Never = Just (n, str2attr "never")+ toAttrFrTyp n Region_Close_WhenNotActive = Just (n, str2attr "whenNotActive")+instance XmlAttrType Region_Open where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "always" = Just Region_Open_Always+ translate "whenActive" = Just Region_Open_WhenActive+ translate _ = Nothing+ toAttrFrTyp n Region_Open_Always = Just (n, str2attr "always")+ toAttrFrTyp n Region_Open_WhenActive = Just (n, str2attr "whenActive")+instance XmlAttrType Region_ShowBackground where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "always" = Just Region_ShowBackground_Always+ translate "whenActive" = Just Region_ShowBackground_WhenActive+ translate _ = Nothing+ toAttrFrTyp n Region_ShowBackground_Always = Just (n, str2attr "always")+ toAttrFrTyp n Region_ShowBackground_WhenActive = Just (n, str2attr "whenActive")+instance XmlAttrType Region_Fit where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "hidden" = Just Region_Fit_Hidden+ translate "fill" = Just Region_Fit_Fill+ translate "meet" = Just Region_Fit_Meet+ translate "scroll" = Just Region_Fit_Scroll+ translate "slice" = Just Region_Fit_Slice+ translate _ = Nothing+ toAttrFrTyp n Region_Fit_Hidden = Just (n, str2attr "hidden")+ toAttrFrTyp n Region_Fit_Fill = Just (n, str2attr "fill")+ toAttrFrTyp n Region_Fit_Meet = Just (n, str2attr "meet")+ toAttrFrTyp n Region_Fit_Scroll = Just (n, str2attr "scroll")+ toAttrFrTyp n Region_Fit_Slice = Just (n, str2attr "slice")+instance XmlContent Root_layout where+ fromElem (CElem (Elem "root-layout" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "root-layout" (toAttrs as) [])]+instance XmlAttributes Root_layout where+ fromAttrs as =+ Root_layout+ { root_layoutId = possibleA fromAttrToStr "id" as+ , root_layoutClass = possibleA fromAttrToStr "class" as+ , root_layoutTitle = possibleA fromAttrToStr "title" as+ , root_layoutXml'lang = possibleA fromAttrToStr "xml:lang" as+ , root_layoutHeight = defaultA fromAttrToStr "auto" "height" as+ , root_layoutWidth = defaultA fromAttrToStr "auto" "width" as+ , root_layoutClose = defaultA fromAttrToTyp Root_layout_Close_Never "close" as+ , root_layoutOpen = defaultA fromAttrToTyp Root_layout_Open_Always "open" as+ , root_layoutBackgroundColor = possibleA fromAttrToStr "backgroundColor" as+ , root_layoutBackground_color = possibleA fromAttrToStr "background-color" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (root_layoutId v)+ , maybeToAttr toAttrFrStr "class" (root_layoutClass v)+ , maybeToAttr toAttrFrStr "title" (root_layoutTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (root_layoutXml'lang v)+ , defaultToAttr toAttrFrStr "height" (root_layoutHeight v)+ , defaultToAttr toAttrFrStr "width" (root_layoutWidth v)+ , defaultToAttr toAttrFrTyp "close" (root_layoutClose v)+ , defaultToAttr toAttrFrTyp "open" (root_layoutOpen v)+ , maybeToAttr toAttrFrStr "backgroundColor" (root_layoutBackgroundColor v)+ , maybeToAttr toAttrFrStr "background-color" (root_layoutBackground_color v)+ ]+instance XmlAttrType Root_layout_Close where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "never" = Just Root_layout_Close_Never+ translate "whenNotActive" = Just Root_layout_Close_WhenNotActive+ translate _ = Nothing+ toAttrFrTyp n Root_layout_Close_Never = Just (n, str2attr "never")+ toAttrFrTyp n Root_layout_Close_WhenNotActive = Just (n, str2attr "whenNotActive")+instance XmlAttrType Root_layout_Open where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "always" = Just Root_layout_Open_Always+ translate "whenActive" = Just Root_layout_Open_WhenActive+ translate _ = Nothing+ toAttrFrTyp n Root_layout_Open_Always = Just (n, str2attr "always")+ toAttrFrTyp n Root_layout_Open_WhenActive = Just (n, str2attr "whenActive")+instance XmlContent Ref where+ fromElem (CElem (Elem "ref" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "ref" (toAttrs as) [])]+instance XmlAttributes Ref where+ fromAttrs as =+ Ref+ { refId = possibleA fromAttrToStr "id" as+ , refClass = possibleA fromAttrToStr "class" as+ , refTitle = possibleA fromAttrToStr "title" as+ , refXml'lang = possibleA fromAttrToStr "xml:lang" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (refId v)+ , maybeToAttr toAttrFrStr "class" (refClass v)+ , maybeToAttr toAttrFrStr "title" (refTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (refXml'lang v)+ ]+instance XmlContent Audio where+ fromElem (CElem (Elem "audio" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "audio" (toAttrs as) [])]+instance XmlAttributes Audio where+ fromAttrs as =+ Audio+ { audioId = possibleA fromAttrToStr "id" as+ , audioClass = possibleA fromAttrToStr "class" as+ , audioTitle = possibleA fromAttrToStr "title" as+ , audioXml'lang = possibleA fromAttrToStr "xml:lang" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (audioId v)+ , maybeToAttr toAttrFrStr "class" (audioClass v)+ , maybeToAttr toAttrFrStr "title" (audioTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (audioXml'lang v)+ ]+instance XmlContent Img where+ fromElem (CElem (Elem "img" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "img" (toAttrs as) [])]+instance XmlAttributes Img where+ fromAttrs as =+ Img+ { imgId = possibleA fromAttrToStr "id" as+ , imgClass = possibleA fromAttrToStr "class" as+ , imgTitle = possibleA fromAttrToStr "title" as+ , imgXml'lang = possibleA fromAttrToStr "xml:lang" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (imgId v)+ , maybeToAttr toAttrFrStr "class" (imgClass v)+ , maybeToAttr toAttrFrStr "title" (imgTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (imgXml'lang v)+ ]+instance XmlContent Video where+ fromElem (CElem (Elem "video" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "video" (toAttrs as) [])]+instance XmlAttributes Video where+ fromAttrs as =+ Video+ { videoId = possibleA fromAttrToStr "id" as+ , videoClass = possibleA fromAttrToStr "class" as+ , videoTitle = possibleA fromAttrToStr "title" as+ , videoXml'lang = possibleA fromAttrToStr "xml:lang" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (videoId v)+ , maybeToAttr toAttrFrStr "class" (videoClass v)+ , maybeToAttr toAttrFrStr "title" (videoTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (videoXml'lang v)+ ]+instance XmlContent Text where+ fromElem (CElem (Elem "text" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "text" (toAttrs as) [])]+instance XmlAttributes Text where+ fromAttrs as =+ Text+ { textId = possibleA fromAttrToStr "id" as+ , textClass = possibleA fromAttrToStr "class" as+ , textTitle = possibleA fromAttrToStr "title" as+ , textXml'lang = possibleA fromAttrToStr "xml:lang" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (textId v)+ , maybeToAttr toAttrFrStr "class" (textClass v)+ , maybeToAttr toAttrFrStr "title" (textTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (textXml'lang v)+ ]+instance XmlContent Textstream where+ fromElem (CElem (Elem "textstream" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "textstream" (toAttrs as) [])]+instance XmlAttributes Textstream where+ fromAttrs as =+ Textstream+ { textstreamId = possibleA fromAttrToStr "id" as+ , textstreamClass = possibleA fromAttrToStr "class" as+ , textstreamTitle = possibleA fromAttrToStr "title" as+ , textstreamXml'lang = possibleA fromAttrToStr "xml:lang" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (textstreamId v)+ , maybeToAttr toAttrFrStr "class" (textstreamClass v)+ , maybeToAttr toAttrFrStr "title" (textstreamTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (textstreamXml'lang v)+ ]+instance XmlContent Animation where+ fromElem (CElem (Elem "animation" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "animation" (toAttrs as) [])]+instance XmlAttributes Animation where+ fromAttrs as =+ Animation+ { animationId = possibleA fromAttrToStr "id" as+ , animationClass = possibleA fromAttrToStr "class" as+ , animationTitle = possibleA fromAttrToStr "title" as+ , animationXml'lang = possibleA fromAttrToStr "xml:lang" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (animationId v)+ , maybeToAttr toAttrFrStr "class" (animationClass v)+ , maybeToAttr toAttrFrStr "title" (animationTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (animationXml'lang v)+ ]+instance XmlContent Transition where+ fromElem (CElem (Elem "transition" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "transition" (toAttrs as) [])]+instance XmlAttributes Transition where+ fromAttrs as =+ Transition+ { transitionId = possibleA fromAttrToStr "id" as+ , transitionClass = possibleA fromAttrToStr "class" as+ , transitionTitle = possibleA fromAttrToStr "title" as+ , transitionXml'lang = possibleA fromAttrToStr "xml:lang" as+ , transitionType = possibleA fromAttrToTyp "type" as+ , transitionSubtype = possibleA fromAttrToTyp "subtype" as+ , transitionHorzRepeat = defaultA fromAttrToStr "0" "horzRepeat" as+ , transitionVertRepeat = defaultA fromAttrToStr "0" "vertRepeat" as+ , transitionBorderWidth = defaultA fromAttrToStr "0" "borderWidth" as+ , transitionBorderColor = defaultA fromAttrToStr "black" "borderColor" as+ , transitionFadeColor = defaultA fromAttrToStr "black" "fadeColor" as+ , transitionCoordinated = defaultA fromAttrToTyp Transition_Coordinated_False "coordinated" as+ , transitionClibBoundary = defaultA fromAttrToTyp Transition_ClibBoundary_Children "clibBoundary" as+ , transitionDur = possibleA fromAttrToStr "dur" as+ , transitionStartProgress = defaultA fromAttrToStr "0.0" "startProgress" as+ , transitionEndProgress = defaultA fromAttrToStr "1.0" "endProgress" as+ , transitionDirection = defaultA fromAttrToTyp Transition_Direction_Forward "direction" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (transitionId v)+ , maybeToAttr toAttrFrStr "class" (transitionClass v)+ , maybeToAttr toAttrFrStr "title" (transitionTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (transitionXml'lang v)+ , maybeToAttr toAttrFrTyp "type" (transitionType v)+ , maybeToAttr toAttrFrTyp "subtype" (transitionSubtype v)+ , defaultToAttr toAttrFrStr "horzRepeat" (transitionHorzRepeat v)+ , defaultToAttr toAttrFrStr "vertRepeat" (transitionVertRepeat v)+ , defaultToAttr toAttrFrStr "borderWidth" (transitionBorderWidth v)+ , defaultToAttr toAttrFrStr "borderColor" (transitionBorderColor v)+ , defaultToAttr toAttrFrStr "fadeColor" (transitionFadeColor v)+ , defaultToAttr toAttrFrTyp "coordinated" (transitionCoordinated v)+ , defaultToAttr toAttrFrTyp "clibBoundary" (transitionClibBoundary v)+ , maybeToAttr toAttrFrStr "dur" (transitionDur v)+ , defaultToAttr toAttrFrStr "startProgress" (transitionStartProgress v)+ , defaultToAttr toAttrFrStr "endProgress" (transitionEndProgress v)+ , defaultToAttr toAttrFrTyp "direction" (transitionDirection v)+ ]+instance XmlAttrType Transition_Type where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "barWipe" = Just Transition_Type_BarWipe+ translate "boxWipe" = Just Transition_Type_BoxWipe+ translate "fourBoxWipe" = Just Transition_Type_FourBoxWipe+ translate "barnDoorWipe" = Just Transition_Type_BarnDoorWipe+ translate "diagonalWipe" = Just Transition_Type_DiagonalWipe+ translate "bowTieWipe" = Just Transition_Type_BowTieWipe+ translate "miscDiagonalWipe" = Just Transition_Type_MiscDiagonalWipe+ translate "veeWipe" = Just Transition_Type_VeeWipe+ translate "barnVeeWipe" = Just Transition_Type_BarnVeeWipe+ translate "zigZagWipe" = Just Transition_Type_ZigZagWipe+ translate "barnZigZagWipe" = Just Transition_Type_BarnZigZagWipe+ translate "miscShapeWipe" = Just Transition_Type_MiscShapeWipe+ translate "triangleWipe" = Just Transition_Type_TriangleWipe+ translate "arrowHeadWipe" = Just Transition_Type_ArrowHeadWipe+ translate "pentagonWipe" = Just Transition_Type_PentagonWipe+ translate "hexagonWipe" = Just Transition_Type_HexagonWipe+ translate "ellipseWipe" = Just Transition_Type_EllipseWipe+ translate "eyeWipe" = Just Transition_Type_EyeWipe+ translate "roundRectWipe" = Just Transition_Type_RoundRectWipe+ translate "starWipe" = Just Transition_Type_StarWipe+ translate "clockWipe" = Just Transition_Type_ClockWipe+ translate "pinWheelWipe" = Just Transition_Type_PinWheelWipe+ translate "singleSweepWipe" = Just Transition_Type_SingleSweepWipe+ translate "fanWipe" = Just Transition_Type_FanWipe+ translate "doubleFanWipe" = Just Transition_Type_DoubleFanWipe+ translate "doubleSweepWipe" = Just Transition_Type_DoubleSweepWipe+ translate "saloonDoorWipe" = Just Transition_Type_SaloonDoorWipe+ translate "windshieldWipe" = Just Transition_Type_WindshieldWipe+ translate "snakeWipe" = Just Transition_Type_SnakeWipe+ translate "spiralWipe" = Just Transition_Type_SpiralWipe+ translate "parallelSnakesWipe" = Just Transition_Type_ParallelSnakesWipe+ translate "boxSnakesWipe" = Just Transition_Type_BoxSnakesWipe+ translate "waterfallWipe" = Just Transition_Type_WaterfallWipe+ translate "pushWipe" = Just Transition_Type_PushWipe+ translate "slideWipe" = Just Transition_Type_SlideWipe+ translate "fade" = Just Transition_Type_Fade+ translate _ = Nothing+ toAttrFrTyp n Transition_Type_BarWipe = Just (n, str2attr "barWipe")+ toAttrFrTyp n Transition_Type_BoxWipe = Just (n, str2attr "boxWipe")+ toAttrFrTyp n Transition_Type_FourBoxWipe = Just (n, str2attr "fourBoxWipe")+ toAttrFrTyp n Transition_Type_BarnDoorWipe = Just (n, str2attr "barnDoorWipe")+ toAttrFrTyp n Transition_Type_DiagonalWipe = Just (n, str2attr "diagonalWipe")+ toAttrFrTyp n Transition_Type_BowTieWipe = Just (n, str2attr "bowTieWipe")+ toAttrFrTyp n Transition_Type_MiscDiagonalWipe = Just (n, str2attr "miscDiagonalWipe")+ toAttrFrTyp n Transition_Type_VeeWipe = Just (n, str2attr "veeWipe")+ toAttrFrTyp n Transition_Type_BarnVeeWipe = Just (n, str2attr "barnVeeWipe")+ toAttrFrTyp n Transition_Type_ZigZagWipe = Just (n, str2attr "zigZagWipe")+ toAttrFrTyp n Transition_Type_BarnZigZagWipe = Just (n, str2attr "barnZigZagWipe")+ toAttrFrTyp n Transition_Type_MiscShapeWipe = Just (n, str2attr "miscShapeWipe")+ toAttrFrTyp n Transition_Type_TriangleWipe = Just (n, str2attr "triangleWipe")+ toAttrFrTyp n Transition_Type_ArrowHeadWipe = Just (n, str2attr "arrowHeadWipe")+ toAttrFrTyp n Transition_Type_PentagonWipe = Just (n, str2attr "pentagonWipe")+ toAttrFrTyp n Transition_Type_HexagonWipe = Just (n, str2attr "hexagonWipe")+ toAttrFrTyp n Transition_Type_EllipseWipe = Just (n, str2attr "ellipseWipe")+ toAttrFrTyp n Transition_Type_EyeWipe = Just (n, str2attr "eyeWipe")+ toAttrFrTyp n Transition_Type_RoundRectWipe = Just (n, str2attr "roundRectWipe")+ toAttrFrTyp n Transition_Type_StarWipe = Just (n, str2attr "starWipe")+ toAttrFrTyp n Transition_Type_ClockWipe = Just (n, str2attr "clockWipe")+ toAttrFrTyp n Transition_Type_PinWheelWipe = Just (n, str2attr "pinWheelWipe")+ toAttrFrTyp n Transition_Type_SingleSweepWipe = Just (n, str2attr "singleSweepWipe")+ toAttrFrTyp n Transition_Type_FanWipe = Just (n, str2attr "fanWipe")+ toAttrFrTyp n Transition_Type_DoubleFanWipe = Just (n, str2attr "doubleFanWipe")+ toAttrFrTyp n Transition_Type_DoubleSweepWipe = Just (n, str2attr "doubleSweepWipe")+ toAttrFrTyp n Transition_Type_SaloonDoorWipe = Just (n, str2attr "saloonDoorWipe")+ toAttrFrTyp n Transition_Type_WindshieldWipe = Just (n, str2attr "windshieldWipe")+ toAttrFrTyp n Transition_Type_SnakeWipe = Just (n, str2attr "snakeWipe")+ toAttrFrTyp n Transition_Type_SpiralWipe = Just (n, str2attr "spiralWipe")+ toAttrFrTyp n Transition_Type_ParallelSnakesWipe = Just (n, str2attr "parallelSnakesWipe")+ toAttrFrTyp n Transition_Type_BoxSnakesWipe = Just (n, str2attr "boxSnakesWipe")+ toAttrFrTyp n Transition_Type_WaterfallWipe = Just (n, str2attr "waterfallWipe")+ toAttrFrTyp n Transition_Type_PushWipe = Just (n, str2attr "pushWipe")+ toAttrFrTyp n Transition_Type_SlideWipe = Just (n, str2attr "slideWipe")+ toAttrFrTyp n Transition_Type_Fade = Just (n, str2attr "fade")+instance XmlAttrType Transition_Subtype where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "bottom" = Just Transition_Subtype_Bottom+ translate "bottomCenter" = Just Transition_Subtype_BottomCenter+ translate "bottomLeft" = Just Transition_Subtype_BottomLeft+ translate "bottomLeftClockwise" = Just Transition_Subtype_BottomLeftClockwise+ translate "bottomLeftCounterClockwise" = Just Transition_Subtype_BottomLeftCounterClockwise+ translate "bottomLeftDiagonal" = Just Transition_Subtype_BottomLeftDiagonal+ translate "bottomRight" = Just Transition_Subtype_BottomRight+ translate "bottomRightClockwise" = Just Transition_Subtype_BottomRightClockwise+ translate "bottomRightCounterClockwise" = Just Transition_Subtype_BottomRightCounterClockwise+ translate "bottomRightDiagonal" = Just Transition_Subtype_BottomRightDiagonal+ translate "centerRight" = Just Transition_Subtype_CenterRight+ translate "centerTop" = Just Transition_Subtype_CenterTop+ translate "circle" = Just Transition_Subtype_Circle+ translate "clockwiseBottom" = Just Transition_Subtype_ClockwiseBottom+ translate "clockwiseBottomRight" = Just Transition_Subtype_ClockwiseBottomRight+ translate "clockwiseLeft" = Just Transition_Subtype_ClockwiseLeft+ translate "clockwiseNine" = Just Transition_Subtype_ClockwiseNine+ translate "clockwiseRight" = Just Transition_Subtype_ClockwiseRight+ translate "clockwiseSix" = Just Transition_Subtype_ClockwiseSix+ translate "clockwiseThree" = Just Transition_Subtype_ClockwiseThree+ translate "clockwiseTop" = Just Transition_Subtype_ClockwiseTop+ translate "clockwiseTopLeft" = Just Transition_Subtype_ClockwiseTopLeft+ translate "clockwiseTwelve" = Just Transition_Subtype_ClockwiseTwelve+ translate "cornersIn" = Just Transition_Subtype_CornersIn+ translate "cornersOut" = Just Transition_Subtype_CornersOut+ translate "counterClockwiseBottomLeft" = Just Transition_Subtype_CounterClockwiseBottomLeft+ translate "counterClockwiseTopRight" = Just Transition_Subtype_CounterClockwiseTopRight+ translate "crossfade" = Just Transition_Subtype_Crossfade+ translate "diagonalBottomLeft" = Just Transition_Subtype_DiagonalBottomLeft+ translate "diagonalBottomLeftOpposite" = Just Transition_Subtype_DiagonalBottomLeftOpposite+ translate "diagonalTopLeft" = Just Transition_Subtype_DiagonalTopLeft+ translate "diagonalTopLeftOpposite" = Just Transition_Subtype_DiagonalTopLeftOpposite+ translate "diamond" = Just Transition_Subtype_Diamond+ translate "doubleBarnDoor" = Just Transition_Subtype_DoubleBarnDoor+ translate "doubleDiamond" = Just Transition_Subtype_DoubleDiamond+ translate "down" = Just Transition_Subtype_Down+ translate "fadeFromColor" = Just Transition_Subtype_FadeFromColor+ translate "fadeToColor" = Just Transition_Subtype_FadeToColor+ translate "fanInHorizontal" = Just Transition_Subtype_FanInHorizontal+ translate "fanInVertical" = Just Transition_Subtype_FanInVertical+ translate "fanOutHorizontal" = Just Transition_Subtype_FanOutHorizontal+ translate "fanOutVertical" = Just Transition_Subtype_FanOutVertical+ translate "fivePoint" = Just Transition_Subtype_FivePoint+ translate "fourBlade" = Just Transition_Subtype_FourBlade+ translate "fourBoxHorizontal" = Just Transition_Subtype_FourBoxHorizontal+ translate "fourBoxVertical" = Just Transition_Subtype_FourBoxVertical+ translate "fourPoint" = Just Transition_Subtype_FourPoint+ translate "fromBottom" = Just Transition_Subtype_FromBottom+ translate "fromLeft" = Just Transition_Subtype_FromLeft+ translate "fromRight" = Just Transition_Subtype_FromRight+ translate "fromTop" = Just Transition_Subtype_FromTop+ translate "heart" = Just Transition_Subtype_Heart+ translate "horizontal" = Just Transition_Subtype_Horizontal+ translate "horizontalLeft" = Just Transition_Subtype_HorizontalLeft+ translate "horizontalLeftSame" = Just Transition_Subtype_HorizontalLeftSame+ translate "horizontalRight" = Just Transition_Subtype_HorizontalRight+ translate "horizontalRightSame" = Just Transition_Subtype_HorizontalRightSame+ translate "horizontalTopLeftOpposite" = Just Transition_Subtype_HorizontalTopLeftOpposite+ translate "horizontalTopRightOpposite" = Just Transition_Subtype_HorizontalTopRightOpposite+ translate "keyhole" = Just Transition_Subtype_Keyhole+ translate "left" = Just Transition_Subtype_Left+ translate "leftCenter" = Just Transition_Subtype_LeftCenter+ translate "leftToRight" = Just Transition_Subtype_LeftToRight+ translate "oppositeHorizontal" = Just Transition_Subtype_OppositeHorizontal+ translate "oppositeVertical" = Just Transition_Subtype_OppositeVertical+ translate "parallelDiagonal" = Just Transition_Subtype_ParallelDiagonal+ translate "parallelDiagonalBottomLeft" = Just Transition_Subtype_ParallelDiagonalBottomLeft+ translate "parallelDiagonalTopLeft" = Just Transition_Subtype_ParallelDiagonalTopLeft+ translate "parallelVertical" = Just Transition_Subtype_ParallelVertical+ translate "rectangle" = Just Transition_Subtype_Rectangle+ translate "right" = Just Transition_Subtype_Right+ translate "rightCenter" = Just Transition_Subtype_RightCenter+ translate "sixPoint" = Just Transition_Subtype_SixPoint+ translate "top" = Just Transition_Subtype_Top+ translate "topCenter" = Just Transition_Subtype_TopCenter+ translate "topLeft" = Just Transition_Subtype_TopLeft+ translate "topLeftClockwise" = Just Transition_Subtype_TopLeftClockwise+ translate "topLeftCounterClockwise" = Just Transition_Subtype_TopLeftCounterClockwise+ translate "topLeftDiagonal" = Just Transition_Subtype_TopLeftDiagonal+ translate "topLeftHorizontal" = Just Transition_Subtype_TopLeftHorizontal+ translate "topLeftVertical" = Just Transition_Subtype_TopLeftVertical+ translate "topRight" = Just Transition_Subtype_TopRight+ translate "topRightClockwise" = Just Transition_Subtype_TopRightClockwise+ translate "topRightCounterClockwise" = Just Transition_Subtype_TopRightCounterClockwise+ translate "topRightDiagonal" = Just Transition_Subtype_TopRightDiagonal+ translate "topToBottom" = Just Transition_Subtype_TopToBottom+ translate "twoBladeHorizontal" = Just Transition_Subtype_TwoBladeHorizontal+ translate "twoBladeVertical" = Just Transition_Subtype_TwoBladeVertical+ translate "twoBoxBottom" = Just Transition_Subtype_TwoBoxBottom+ translate "twoBoxLeft" = Just Transition_Subtype_TwoBoxLeft+ translate "twoBoxRight" = Just Transition_Subtype_TwoBoxRight+ translate "twoBoxTop" = Just Transition_Subtype_TwoBoxTop+ translate "up" = Just Transition_Subtype_Up+ translate "vertical" = Just Transition_Subtype_Vertical+ translate "verticalBottomLeftOpposite" = Just Transition_Subtype_VerticalBottomLeftOpposite+ translate "verticalBottomSame" = Just Transition_Subtype_VerticalBottomSame+ translate "verticalLeft" = Just Transition_Subtype_VerticalLeft+ translate "verticalRight" = Just Transition_Subtype_VerticalRight+ translate "verticalTopLeftOpposite" = Just Transition_Subtype_VerticalTopLeftOpposite+ translate "verticalTopSame" = Just Transition_Subtype_VerticalTopSame+ translate _ = Nothing+ toAttrFrTyp n Transition_Subtype_Bottom = Just (n, str2attr "bottom")+ toAttrFrTyp n Transition_Subtype_BottomCenter = Just (n, str2attr "bottomCenter")+ toAttrFrTyp n Transition_Subtype_BottomLeft = Just (n, str2attr "bottomLeft")+ toAttrFrTyp n Transition_Subtype_BottomLeftClockwise = Just (n, str2attr "bottomLeftClockwise")+ toAttrFrTyp n Transition_Subtype_BottomLeftCounterClockwise = Just (n, str2attr "bottomLeftCounterClockwise")+ toAttrFrTyp n Transition_Subtype_BottomLeftDiagonal = Just (n, str2attr "bottomLeftDiagonal")+ toAttrFrTyp n Transition_Subtype_BottomRight = Just (n, str2attr "bottomRight")+ toAttrFrTyp n Transition_Subtype_BottomRightClockwise = Just (n, str2attr "bottomRightClockwise")+ toAttrFrTyp n Transition_Subtype_BottomRightCounterClockwise = Just (n, str2attr "bottomRightCounterClockwise")+ toAttrFrTyp n Transition_Subtype_BottomRightDiagonal = Just (n, str2attr "bottomRightDiagonal")+ toAttrFrTyp n Transition_Subtype_CenterRight = Just (n, str2attr "centerRight")+ toAttrFrTyp n Transition_Subtype_CenterTop = Just (n, str2attr "centerTop")+ toAttrFrTyp n Transition_Subtype_Circle = Just (n, str2attr "circle")+ toAttrFrTyp n Transition_Subtype_ClockwiseBottom = Just (n, str2attr "clockwiseBottom")+ toAttrFrTyp n Transition_Subtype_ClockwiseBottomRight = Just (n, str2attr "clockwiseBottomRight")+ toAttrFrTyp n Transition_Subtype_ClockwiseLeft = Just (n, str2attr "clockwiseLeft")+ toAttrFrTyp n Transition_Subtype_ClockwiseNine = Just (n, str2attr "clockwiseNine")+ toAttrFrTyp n Transition_Subtype_ClockwiseRight = Just (n, str2attr "clockwiseRight")+ toAttrFrTyp n Transition_Subtype_ClockwiseSix = Just (n, str2attr "clockwiseSix")+ toAttrFrTyp n Transition_Subtype_ClockwiseThree = Just (n, str2attr "clockwiseThree")+ toAttrFrTyp n Transition_Subtype_ClockwiseTop = Just (n, str2attr "clockwiseTop")+ toAttrFrTyp n Transition_Subtype_ClockwiseTopLeft = Just (n, str2attr "clockwiseTopLeft")+ toAttrFrTyp n Transition_Subtype_ClockwiseTwelve = Just (n, str2attr "clockwiseTwelve")+ toAttrFrTyp n Transition_Subtype_CornersIn = Just (n, str2attr "cornersIn")+ toAttrFrTyp n Transition_Subtype_CornersOut = Just (n, str2attr "cornersOut")+ toAttrFrTyp n Transition_Subtype_CounterClockwiseBottomLeft = Just (n, str2attr "counterClockwiseBottomLeft")+ toAttrFrTyp n Transition_Subtype_CounterClockwiseTopRight = Just (n, str2attr "counterClockwiseTopRight")+ toAttrFrTyp n Transition_Subtype_Crossfade = Just (n, str2attr "crossfade")+ toAttrFrTyp n Transition_Subtype_DiagonalBottomLeft = Just (n, str2attr "diagonalBottomLeft")+ toAttrFrTyp n Transition_Subtype_DiagonalBottomLeftOpposite = Just (n, str2attr "diagonalBottomLeftOpposite")+ toAttrFrTyp n Transition_Subtype_DiagonalTopLeft = Just (n, str2attr "diagonalTopLeft")+ toAttrFrTyp n Transition_Subtype_DiagonalTopLeftOpposite = Just (n, str2attr "diagonalTopLeftOpposite")+ toAttrFrTyp n Transition_Subtype_Diamond = Just (n, str2attr "diamond")+ toAttrFrTyp n Transition_Subtype_DoubleBarnDoor = Just (n, str2attr "doubleBarnDoor")+ toAttrFrTyp n Transition_Subtype_DoubleDiamond = Just (n, str2attr "doubleDiamond")+ toAttrFrTyp n Transition_Subtype_Down = Just (n, str2attr "down")+ toAttrFrTyp n Transition_Subtype_FadeFromColor = Just (n, str2attr "fadeFromColor")+ toAttrFrTyp n Transition_Subtype_FadeToColor = Just (n, str2attr "fadeToColor")+ toAttrFrTyp n Transition_Subtype_FanInHorizontal = Just (n, str2attr "fanInHorizontal")+ toAttrFrTyp n Transition_Subtype_FanInVertical = Just (n, str2attr "fanInVertical")+ toAttrFrTyp n Transition_Subtype_FanOutHorizontal = Just (n, str2attr "fanOutHorizontal")+ toAttrFrTyp n Transition_Subtype_FanOutVertical = Just (n, str2attr "fanOutVertical")+ toAttrFrTyp n Transition_Subtype_FivePoint = Just (n, str2attr "fivePoint")+ toAttrFrTyp n Transition_Subtype_FourBlade = Just (n, str2attr "fourBlade")+ toAttrFrTyp n Transition_Subtype_FourBoxHorizontal = Just (n, str2attr "fourBoxHorizontal")+ toAttrFrTyp n Transition_Subtype_FourBoxVertical = Just (n, str2attr "fourBoxVertical")+ toAttrFrTyp n Transition_Subtype_FourPoint = Just (n, str2attr "fourPoint")+ toAttrFrTyp n Transition_Subtype_FromBottom = Just (n, str2attr "fromBottom")+ toAttrFrTyp n Transition_Subtype_FromLeft = Just (n, str2attr "fromLeft")+ toAttrFrTyp n Transition_Subtype_FromRight = Just (n, str2attr "fromRight")+ toAttrFrTyp n Transition_Subtype_FromTop = Just (n, str2attr "fromTop")+ toAttrFrTyp n Transition_Subtype_Heart = Just (n, str2attr "heart")+ toAttrFrTyp n Transition_Subtype_Horizontal = Just (n, str2attr "horizontal")+ toAttrFrTyp n Transition_Subtype_HorizontalLeft = Just (n, str2attr "horizontalLeft")+ toAttrFrTyp n Transition_Subtype_HorizontalLeftSame = Just (n, str2attr "horizontalLeftSame")+ toAttrFrTyp n Transition_Subtype_HorizontalRight = Just (n, str2attr "horizontalRight")+ toAttrFrTyp n Transition_Subtype_HorizontalRightSame = Just (n, str2attr "horizontalRightSame")+ toAttrFrTyp n Transition_Subtype_HorizontalTopLeftOpposite = Just (n, str2attr "horizontalTopLeftOpposite")+ toAttrFrTyp n Transition_Subtype_HorizontalTopRightOpposite = Just (n, str2attr "horizontalTopRightOpposite")+ toAttrFrTyp n Transition_Subtype_Keyhole = Just (n, str2attr "keyhole")+ toAttrFrTyp n Transition_Subtype_Left = Just (n, str2attr "left")+ toAttrFrTyp n Transition_Subtype_LeftCenter = Just (n, str2attr "leftCenter")+ toAttrFrTyp n Transition_Subtype_LeftToRight = Just (n, str2attr "leftToRight")+ toAttrFrTyp n Transition_Subtype_OppositeHorizontal = Just (n, str2attr "oppositeHorizontal")+ toAttrFrTyp n Transition_Subtype_OppositeVertical = Just (n, str2attr "oppositeVertical")+ toAttrFrTyp n Transition_Subtype_ParallelDiagonal = Just (n, str2attr "parallelDiagonal")+ toAttrFrTyp n Transition_Subtype_ParallelDiagonalBottomLeft = Just (n, str2attr "parallelDiagonalBottomLeft")+ toAttrFrTyp n Transition_Subtype_ParallelDiagonalTopLeft = Just (n, str2attr "parallelDiagonalTopLeft")+ toAttrFrTyp n Transition_Subtype_ParallelVertical = Just (n, str2attr "parallelVertical")+ toAttrFrTyp n Transition_Subtype_Rectangle = Just (n, str2attr "rectangle")+ toAttrFrTyp n Transition_Subtype_Right = Just (n, str2attr "right")+ toAttrFrTyp n Transition_Subtype_RightCenter = Just (n, str2attr "rightCenter")+ toAttrFrTyp n Transition_Subtype_SixPoint = Just (n, str2attr "sixPoint")+ toAttrFrTyp n Transition_Subtype_Top = Just (n, str2attr "top")+ toAttrFrTyp n Transition_Subtype_TopCenter = Just (n, str2attr "topCenter")+ toAttrFrTyp n Transition_Subtype_TopLeft = Just (n, str2attr "topLeft")+ toAttrFrTyp n Transition_Subtype_TopLeftClockwise = Just (n, str2attr "topLeftClockwise")+ toAttrFrTyp n Transition_Subtype_TopLeftCounterClockwise = Just (n, str2attr "topLeftCounterClockwise")+ toAttrFrTyp n Transition_Subtype_TopLeftDiagonal = Just (n, str2attr "topLeftDiagonal")+ toAttrFrTyp n Transition_Subtype_TopLeftHorizontal = Just (n, str2attr "topLeftHorizontal")+ toAttrFrTyp n Transition_Subtype_TopLeftVertical = Just (n, str2attr "topLeftVertical")+ toAttrFrTyp n Transition_Subtype_TopRight = Just (n, str2attr "topRight")+ toAttrFrTyp n Transition_Subtype_TopRightClockwise = Just (n, str2attr "topRightClockwise")+ toAttrFrTyp n Transition_Subtype_TopRightCounterClockwise = Just (n, str2attr "topRightCounterClockwise")+ toAttrFrTyp n Transition_Subtype_TopRightDiagonal = Just (n, str2attr "topRightDiagonal")+ toAttrFrTyp n Transition_Subtype_TopToBottom = Just (n, str2attr "topToBottom")+ toAttrFrTyp n Transition_Subtype_TwoBladeHorizontal = Just (n, str2attr "twoBladeHorizontal")+ toAttrFrTyp n Transition_Subtype_TwoBladeVertical = Just (n, str2attr "twoBladeVertical")+ toAttrFrTyp n Transition_Subtype_TwoBoxBottom = Just (n, str2attr "twoBoxBottom")+ toAttrFrTyp n Transition_Subtype_TwoBoxLeft = Just (n, str2attr "twoBoxLeft")+ toAttrFrTyp n Transition_Subtype_TwoBoxRight = Just (n, str2attr "twoBoxRight")+ toAttrFrTyp n Transition_Subtype_TwoBoxTop = Just (n, str2attr "twoBoxTop")+ toAttrFrTyp n Transition_Subtype_Up = Just (n, str2attr "up")+ toAttrFrTyp n Transition_Subtype_Vertical = Just (n, str2attr "vertical")+ toAttrFrTyp n Transition_Subtype_VerticalBottomLeftOpposite = Just (n, str2attr "verticalBottomLeftOpposite")+ toAttrFrTyp n Transition_Subtype_VerticalBottomSame = Just (n, str2attr "verticalBottomSame")+ toAttrFrTyp n Transition_Subtype_VerticalLeft = Just (n, str2attr "verticalLeft")+ toAttrFrTyp n Transition_Subtype_VerticalRight = Just (n, str2attr "verticalRight")+ toAttrFrTyp n Transition_Subtype_VerticalTopLeftOpposite = Just (n, str2attr "verticalTopLeftOpposite")+ toAttrFrTyp n Transition_Subtype_VerticalTopSame = Just (n, str2attr "verticalTopSame")+instance XmlAttrType Transition_Coordinated where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "true" = Just Transition_Coordinated_True+ translate "false" = Just Transition_Coordinated_False+ translate _ = Nothing+ toAttrFrTyp n Transition_Coordinated_True = Just (n, str2attr "true")+ toAttrFrTyp n Transition_Coordinated_False = Just (n, str2attr "false")+instance XmlAttrType Transition_ClibBoundary where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "parent" = Just Transition_ClibBoundary_Parent+ translate "children" = Just Transition_ClibBoundary_Children+ translate _ = Nothing+ toAttrFrTyp n Transition_ClibBoundary_Parent = Just (n, str2attr "parent")+ toAttrFrTyp n Transition_ClibBoundary_Children = Just (n, str2attr "children")+instance XmlAttrType Transition_Direction where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "forward" = Just Transition_Direction_Forward+ translate "reverse" = Just Transition_Direction_Reverse+ translate _ = Nothing+ toAttrFrTyp n Transition_Direction_Forward = Just (n, str2attr "forward")+ toAttrFrTyp n Transition_Direction_Reverse = Just (n, str2attr "reverse")+instance XmlContent TransitionFilter where+ fromElem (CElem (Elem "transitionFilter" as []):rest) =+ (Just (fromAttrs as), rest)+ fromElem (CMisc _:rest) = fromElem rest+ fromElem rest = (Nothing, rest)+ toElem as =+ [CElem (Elem "transitionFilter" (toAttrs as) [])]+instance XmlAttributes TransitionFilter where+ fromAttrs as =+ TransitionFilter+ { transitionFilterId = possibleA fromAttrToStr "id" as+ , transitionFilterClass = possibleA fromAttrToStr "class" as+ , transitionFilterTitle = possibleA fromAttrToStr "title" as+ , transitionFilterXml'lang = possibleA fromAttrToStr "xml:lang" as+ , transitionFilterType = possibleA fromAttrToTyp "type" as+ , transitionFilterSubtype = possibleA fromAttrToTyp "subtype" as+ , transitionFilterHorzRepeat = defaultA fromAttrToStr "0" "horzRepeat" as+ , transitionFilterVertRepeat = defaultA fromAttrToStr "0" "vertRepeat" as+ , transitionFilterBorderWidth = defaultA fromAttrToStr "0" "borderWidth" as+ , transitionFilterBorderColor = defaultA fromAttrToStr "black" "borderColor" as+ , transitionFilterFadeColor = defaultA fromAttrToStr "black" "fadeColor" as+ , transitionFilterCoordinated = defaultA fromAttrToTyp TransitionFilter_Coordinated_False "coordinated" as+ , transitionFilterClibBoundary = defaultA fromAttrToTyp TransitionFilter_ClibBoundary_Children "clibBoundary" as+ , transitionFilterDur = possibleA fromAttrToStr "dur" as+ , transitionFilterRepeatCount = possibleA fromAttrToStr "repeatCount" as+ , transitionFilterRepeatDur = possibleA fromAttrToStr "repeatDur" as+ , transitionFilterBegin = possibleA fromAttrToStr "begin" as+ , transitionFilterEnd = possibleA fromAttrToStr "end" as+ , transitionFilterValues = possibleA fromAttrToStr "values" as+ , transitionFilterFrom = possibleA fromAttrToStr "from" as+ , transitionFilterTo = possibleA fromAttrToStr "to" as+ , transitionFilterBy = possibleA fromAttrToStr "by" as+ , transitionFilterCalcMode = defaultA fromAttrToTyp TransitionFilter_CalcMode_Linear "calcMode" as+ }+ toAttrs v = catMaybes + [ maybeToAttr toAttrFrStr "id" (transitionFilterId v)+ , maybeToAttr toAttrFrStr "class" (transitionFilterClass v)+ , maybeToAttr toAttrFrStr "title" (transitionFilterTitle v)+ , maybeToAttr toAttrFrStr "xml:lang" (transitionFilterXml'lang v)+ , maybeToAttr toAttrFrTyp "type" (transitionFilterType v)+ , maybeToAttr toAttrFrTyp "subtype" (transitionFilterSubtype v)+ , defaultToAttr toAttrFrStr "horzRepeat" (transitionFilterHorzRepeat v)+ , defaultToAttr toAttrFrStr "vertRepeat" (transitionFilterVertRepeat v)+ , defaultToAttr toAttrFrStr "borderWidth" (transitionFilterBorderWidth v)+ , defaultToAttr toAttrFrStr "borderColor" (transitionFilterBorderColor v)+ , defaultToAttr toAttrFrStr "fadeColor" (transitionFilterFadeColor v)+ , defaultToAttr toAttrFrTyp "coordinated" (transitionFilterCoordinated v)+ , defaultToAttr toAttrFrTyp "clibBoundary" (transitionFilterClibBoundary v)+ , maybeToAttr toAttrFrStr "dur" (transitionFilterDur v)+ , maybeToAttr toAttrFrStr "repeatCount" (transitionFilterRepeatCount v)+ , maybeToAttr toAttrFrStr "repeatDur" (transitionFilterRepeatDur v)+ , maybeToAttr toAttrFrStr "begin" (transitionFilterBegin v)+ , maybeToAttr toAttrFrStr "end" (transitionFilterEnd v)+ , maybeToAttr toAttrFrStr "values" (transitionFilterValues v)+ , maybeToAttr toAttrFrStr "from" (transitionFilterFrom v)+ , maybeToAttr toAttrFrStr "to" (transitionFilterTo v)+ , maybeToAttr toAttrFrStr "by" (transitionFilterBy v)+ , defaultToAttr toAttrFrTyp "calcMode" (transitionFilterCalcMode v)+ ]+instance XmlAttrType TransitionFilter_Type where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "barWipe" = Just TransitionFilter_Type_BarWipe+ translate "boxWipe" = Just TransitionFilter_Type_BoxWipe+ translate "fourBoxWipe" = Just TransitionFilter_Type_FourBoxWipe+ translate "barnDoorWipe" = Just TransitionFilter_Type_BarnDoorWipe+ translate "diagonalWipe" = Just TransitionFilter_Type_DiagonalWipe+ translate "bowTieWipe" = Just TransitionFilter_Type_BowTieWipe+ translate "miscDiagonalWipe" = Just TransitionFilter_Type_MiscDiagonalWipe+ translate "veeWipe" = Just TransitionFilter_Type_VeeWipe+ translate "barnVeeWipe" = Just TransitionFilter_Type_BarnVeeWipe+ translate "zigZagWipe" = Just TransitionFilter_Type_ZigZagWipe+ translate "barnZigZagWipe" = Just TransitionFilter_Type_BarnZigZagWipe+ translate "miscShapeWipe" = Just TransitionFilter_Type_MiscShapeWipe+ translate "triangleWipe" = Just TransitionFilter_Type_TriangleWipe+ translate "arrowHeadWipe" = Just TransitionFilter_Type_ArrowHeadWipe+ translate "pentagonWipe" = Just TransitionFilter_Type_PentagonWipe+ translate "hexagonWipe" = Just TransitionFilter_Type_HexagonWipe+ translate "ellipseWipe" = Just TransitionFilter_Type_EllipseWipe+ translate "eyeWipe" = Just TransitionFilter_Type_EyeWipe+ translate "roundRectWipe" = Just TransitionFilter_Type_RoundRectWipe+ translate "starWipe" = Just TransitionFilter_Type_StarWipe+ translate "clockWipe" = Just TransitionFilter_Type_ClockWipe+ translate "pinWheelWipe" = Just TransitionFilter_Type_PinWheelWipe+ translate "singleSweepWipe" = Just TransitionFilter_Type_SingleSweepWipe+ translate "fanWipe" = Just TransitionFilter_Type_FanWipe+ translate "doubleFanWipe" = Just TransitionFilter_Type_DoubleFanWipe+ translate "doubleSweepWipe" = Just TransitionFilter_Type_DoubleSweepWipe+ translate "saloonDoorWipe" = Just TransitionFilter_Type_SaloonDoorWipe+ translate "windshieldWipe" = Just TransitionFilter_Type_WindshieldWipe+ translate "snakeWipe" = Just TransitionFilter_Type_SnakeWipe+ translate "spiralWipe" = Just TransitionFilter_Type_SpiralWipe+ translate "parallelSnakesWipe" = Just TransitionFilter_Type_ParallelSnakesWipe+ translate "boxSnakesWipe" = Just TransitionFilter_Type_BoxSnakesWipe+ translate "waterfallWipe" = Just TransitionFilter_Type_WaterfallWipe+ translate "pushWipe" = Just TransitionFilter_Type_PushWipe+ translate "slideWipe" = Just TransitionFilter_Type_SlideWipe+ translate "fade" = Just TransitionFilter_Type_Fade+ translate _ = Nothing+ toAttrFrTyp n TransitionFilter_Type_BarWipe = Just (n, str2attr "barWipe")+ toAttrFrTyp n TransitionFilter_Type_BoxWipe = Just (n, str2attr "boxWipe")+ toAttrFrTyp n TransitionFilter_Type_FourBoxWipe = Just (n, str2attr "fourBoxWipe")+ toAttrFrTyp n TransitionFilter_Type_BarnDoorWipe = Just (n, str2attr "barnDoorWipe")+ toAttrFrTyp n TransitionFilter_Type_DiagonalWipe = Just (n, str2attr "diagonalWipe")+ toAttrFrTyp n TransitionFilter_Type_BowTieWipe = Just (n, str2attr "bowTieWipe")+ toAttrFrTyp n TransitionFilter_Type_MiscDiagonalWipe = Just (n, str2attr "miscDiagonalWipe")+ toAttrFrTyp n TransitionFilter_Type_VeeWipe = Just (n, str2attr "veeWipe")+ toAttrFrTyp n TransitionFilter_Type_BarnVeeWipe = Just (n, str2attr "barnVeeWipe")+ toAttrFrTyp n TransitionFilter_Type_ZigZagWipe = Just (n, str2attr "zigZagWipe")+ toAttrFrTyp n TransitionFilter_Type_BarnZigZagWipe = Just (n, str2attr "barnZigZagWipe")+ toAttrFrTyp n TransitionFilter_Type_MiscShapeWipe = Just (n, str2attr "miscShapeWipe")+ toAttrFrTyp n TransitionFilter_Type_TriangleWipe = Just (n, str2attr "triangleWipe")+ toAttrFrTyp n TransitionFilter_Type_ArrowHeadWipe = Just (n, str2attr "arrowHeadWipe")+ toAttrFrTyp n TransitionFilter_Type_PentagonWipe = Just (n, str2attr "pentagonWipe")+ toAttrFrTyp n TransitionFilter_Type_HexagonWipe = Just (n, str2attr "hexagonWipe")+ toAttrFrTyp n TransitionFilter_Type_EllipseWipe = Just (n, str2attr "ellipseWipe")+ toAttrFrTyp n TransitionFilter_Type_EyeWipe = Just (n, str2attr "eyeWipe")+ toAttrFrTyp n TransitionFilter_Type_RoundRectWipe = Just (n, str2attr "roundRectWipe")+ toAttrFrTyp n TransitionFilter_Type_StarWipe = Just (n, str2attr "starWipe")+ toAttrFrTyp n TransitionFilter_Type_ClockWipe = Just (n, str2attr "clockWipe")+ toAttrFrTyp n TransitionFilter_Type_PinWheelWipe = Just (n, str2attr "pinWheelWipe")+ toAttrFrTyp n TransitionFilter_Type_SingleSweepWipe = Just (n, str2attr "singleSweepWipe")+ toAttrFrTyp n TransitionFilter_Type_FanWipe = Just (n, str2attr "fanWipe")+ toAttrFrTyp n TransitionFilter_Type_DoubleFanWipe = Just (n, str2attr "doubleFanWipe")+ toAttrFrTyp n TransitionFilter_Type_DoubleSweepWipe = Just (n, str2attr "doubleSweepWipe")+ toAttrFrTyp n TransitionFilter_Type_SaloonDoorWipe = Just (n, str2attr "saloonDoorWipe")+ toAttrFrTyp n TransitionFilter_Type_WindshieldWipe = Just (n, str2attr "windshieldWipe")+ toAttrFrTyp n TransitionFilter_Type_SnakeWipe = Just (n, str2attr "snakeWipe")+ toAttrFrTyp n TransitionFilter_Type_SpiralWipe = Just (n, str2attr "spiralWipe")+ toAttrFrTyp n TransitionFilter_Type_ParallelSnakesWipe = Just (n, str2attr "parallelSnakesWipe")+ toAttrFrTyp n TransitionFilter_Type_BoxSnakesWipe = Just (n, str2attr "boxSnakesWipe")+ toAttrFrTyp n TransitionFilter_Type_WaterfallWipe = Just (n, str2attr "waterfallWipe")+ toAttrFrTyp n TransitionFilter_Type_PushWipe = Just (n, str2attr "pushWipe")+ toAttrFrTyp n TransitionFilter_Type_SlideWipe = Just (n, str2attr "slideWipe")+ toAttrFrTyp n TransitionFilter_Type_Fade = Just (n, str2attr "fade")+instance XmlAttrType TransitionFilter_Subtype where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "bottom" = Just TransitionFilter_Subtype_Bottom+ translate "bottomCenter" = Just TransitionFilter_Subtype_BottomCenter+ translate "bottomLeft" = Just TransitionFilter_Subtype_BottomLeft+ translate "bottomLeftClockwise" = Just TransitionFilter_Subtype_BottomLeftClockwise+ translate "bottomLeftCounterClockwise" = Just TransitionFilter_Subtype_BottomLeftCounterClockwise+ translate "bottomLeftDiagonal" = Just TransitionFilter_Subtype_BottomLeftDiagonal+ translate "bottomRight" = Just TransitionFilter_Subtype_BottomRight+ translate "bottomRightClockwise" = Just TransitionFilter_Subtype_BottomRightClockwise+ translate "bottomRightCounterClockwise" = Just TransitionFilter_Subtype_BottomRightCounterClockwise+ translate "bottomRightDiagonal" = Just TransitionFilter_Subtype_BottomRightDiagonal+ translate "centerRight" = Just TransitionFilter_Subtype_CenterRight+ translate "centerTop" = Just TransitionFilter_Subtype_CenterTop+ translate "circle" = Just TransitionFilter_Subtype_Circle+ translate "clockwiseBottom" = Just TransitionFilter_Subtype_ClockwiseBottom+ translate "clockwiseBottomRight" = Just TransitionFilter_Subtype_ClockwiseBottomRight+ translate "clockwiseLeft" = Just TransitionFilter_Subtype_ClockwiseLeft+ translate "clockwiseNine" = Just TransitionFilter_Subtype_ClockwiseNine+ translate "clockwiseRight" = Just TransitionFilter_Subtype_ClockwiseRight+ translate "clockwiseSix" = Just TransitionFilter_Subtype_ClockwiseSix+ translate "clockwiseThree" = Just TransitionFilter_Subtype_ClockwiseThree+ translate "clockwiseTop" = Just TransitionFilter_Subtype_ClockwiseTop+ translate "clockwiseTopLeft" = Just TransitionFilter_Subtype_ClockwiseTopLeft+ translate "clockwiseTwelve" = Just TransitionFilter_Subtype_ClockwiseTwelve+ translate "cornersIn" = Just TransitionFilter_Subtype_CornersIn+ translate "cornersOut" = Just TransitionFilter_Subtype_CornersOut+ translate "counterClockwiseBottomLeft" = Just TransitionFilter_Subtype_CounterClockwiseBottomLeft+ translate "counterClockwiseTopRight" = Just TransitionFilter_Subtype_CounterClockwiseTopRight+ translate "crossfade" = Just TransitionFilter_Subtype_Crossfade+ translate "diagonalBottomLeft" = Just TransitionFilter_Subtype_DiagonalBottomLeft+ translate "diagonalBottomLeftOpposite" = Just TransitionFilter_Subtype_DiagonalBottomLeftOpposite+ translate "diagonalTopLeft" = Just TransitionFilter_Subtype_DiagonalTopLeft+ translate "diagonalTopLeftOpposite" = Just TransitionFilter_Subtype_DiagonalTopLeftOpposite+ translate "diamond" = Just TransitionFilter_Subtype_Diamond+ translate "doubleBarnDoor" = Just TransitionFilter_Subtype_DoubleBarnDoor+ translate "doubleDiamond" = Just TransitionFilter_Subtype_DoubleDiamond+ translate "down" = Just TransitionFilter_Subtype_Down+ translate "fadeFromColor" = Just TransitionFilter_Subtype_FadeFromColor+ translate "fadeToColor" = Just TransitionFilter_Subtype_FadeToColor+ translate "fanInHorizontal" = Just TransitionFilter_Subtype_FanInHorizontal+ translate "fanInVertical" = Just TransitionFilter_Subtype_FanInVertical+ translate "fanOutHorizontal" = Just TransitionFilter_Subtype_FanOutHorizontal+ translate "fanOutVertical" = Just TransitionFilter_Subtype_FanOutVertical+ translate "fivePoint" = Just TransitionFilter_Subtype_FivePoint+ translate "fourBlade" = Just TransitionFilter_Subtype_FourBlade+ translate "fourBoxHorizontal" = Just TransitionFilter_Subtype_FourBoxHorizontal+ translate "fourBoxVertical" = Just TransitionFilter_Subtype_FourBoxVertical+ translate "fourPoint" = Just TransitionFilter_Subtype_FourPoint+ translate "fromBottom" = Just TransitionFilter_Subtype_FromBottom+ translate "fromLeft" = Just TransitionFilter_Subtype_FromLeft+ translate "fromRight" = Just TransitionFilter_Subtype_FromRight+ translate "fromTop" = Just TransitionFilter_Subtype_FromTop+ translate "heart" = Just TransitionFilter_Subtype_Heart+ translate "horizontal" = Just TransitionFilter_Subtype_Horizontal+ translate "horizontalLeft" = Just TransitionFilter_Subtype_HorizontalLeft+ translate "horizontalLeftSame" = Just TransitionFilter_Subtype_HorizontalLeftSame+ translate "horizontalRight" = Just TransitionFilter_Subtype_HorizontalRight+ translate "horizontalRightSame" = Just TransitionFilter_Subtype_HorizontalRightSame+ translate "horizontalTopLeftOpposite" = Just TransitionFilter_Subtype_HorizontalTopLeftOpposite+ translate "horizontalTopRightOpposite" = Just TransitionFilter_Subtype_HorizontalTopRightOpposite+ translate "keyhole" = Just TransitionFilter_Subtype_Keyhole+ translate "left" = Just TransitionFilter_Subtype_Left+ translate "leftCenter" = Just TransitionFilter_Subtype_LeftCenter+ translate "leftToRight" = Just TransitionFilter_Subtype_LeftToRight+ translate "oppositeHorizontal" = Just TransitionFilter_Subtype_OppositeHorizontal+ translate "oppositeVertical" = Just TransitionFilter_Subtype_OppositeVertical+ translate "parallelDiagonal" = Just TransitionFilter_Subtype_ParallelDiagonal+ translate "parallelDiagonalBottomLeft" = Just TransitionFilter_Subtype_ParallelDiagonalBottomLeft+ translate "parallelDiagonalTopLeft" = Just TransitionFilter_Subtype_ParallelDiagonalTopLeft+ translate "parallelVertical" = Just TransitionFilter_Subtype_ParallelVertical+ translate "rectangle" = Just TransitionFilter_Subtype_Rectangle+ translate "right" = Just TransitionFilter_Subtype_Right+ translate "rightCenter" = Just TransitionFilter_Subtype_RightCenter+ translate "sixPoint" = Just TransitionFilter_Subtype_SixPoint+ translate "top" = Just TransitionFilter_Subtype_Top+ translate "topCenter" = Just TransitionFilter_Subtype_TopCenter+ translate "topLeft" = Just TransitionFilter_Subtype_TopLeft+ translate "topLeftClockwise" = Just TransitionFilter_Subtype_TopLeftClockwise+ translate "topLeftCounterClockwise" = Just TransitionFilter_Subtype_TopLeftCounterClockwise+ translate "topLeftDiagonal" = Just TransitionFilter_Subtype_TopLeftDiagonal+ translate "topLeftHorizontal" = Just TransitionFilter_Subtype_TopLeftHorizontal+ translate "topLeftVertical" = Just TransitionFilter_Subtype_TopLeftVertical+ translate "topRight" = Just TransitionFilter_Subtype_TopRight+ translate "topRightClockwise" = Just TransitionFilter_Subtype_TopRightClockwise+ translate "topRightCounterClockwise" = Just TransitionFilter_Subtype_TopRightCounterClockwise+ translate "topRightDiagonal" = Just TransitionFilter_Subtype_TopRightDiagonal+ translate "topToBottom" = Just TransitionFilter_Subtype_TopToBottom+ translate "twoBladeHorizontal" = Just TransitionFilter_Subtype_TwoBladeHorizontal+ translate "twoBladeVertical" = Just TransitionFilter_Subtype_TwoBladeVertical+ translate "twoBoxBottom" = Just TransitionFilter_Subtype_TwoBoxBottom+ translate "twoBoxLeft" = Just TransitionFilter_Subtype_TwoBoxLeft+ translate "twoBoxRight" = Just TransitionFilter_Subtype_TwoBoxRight+ translate "twoBoxTop" = Just TransitionFilter_Subtype_TwoBoxTop+ translate "up" = Just TransitionFilter_Subtype_Up+ translate "vertical" = Just TransitionFilter_Subtype_Vertical+ translate "verticalBottomLeftOpposite" = Just TransitionFilter_Subtype_VerticalBottomLeftOpposite+ translate "verticalBottomSame" = Just TransitionFilter_Subtype_VerticalBottomSame+ translate "verticalLeft" = Just TransitionFilter_Subtype_VerticalLeft+ translate "verticalRight" = Just TransitionFilter_Subtype_VerticalRight+ translate "verticalTopLeftOpposite" = Just TransitionFilter_Subtype_VerticalTopLeftOpposite+ translate "verticalTopSame" = Just TransitionFilter_Subtype_VerticalTopSame+ translate _ = Nothing+ toAttrFrTyp n TransitionFilter_Subtype_Bottom = Just (n, str2attr "bottom")+ toAttrFrTyp n TransitionFilter_Subtype_BottomCenter = Just (n, str2attr "bottomCenter")+ toAttrFrTyp n TransitionFilter_Subtype_BottomLeft = Just (n, str2attr "bottomLeft")+ toAttrFrTyp n TransitionFilter_Subtype_BottomLeftClockwise = Just (n, str2attr "bottomLeftClockwise")+ toAttrFrTyp n TransitionFilter_Subtype_BottomLeftCounterClockwise = Just (n, str2attr "bottomLeftCounterClockwise")+ toAttrFrTyp n TransitionFilter_Subtype_BottomLeftDiagonal = Just (n, str2attr "bottomLeftDiagonal")+ toAttrFrTyp n TransitionFilter_Subtype_BottomRight = Just (n, str2attr "bottomRight")+ toAttrFrTyp n TransitionFilter_Subtype_BottomRightClockwise = Just (n, str2attr "bottomRightClockwise")+ toAttrFrTyp n TransitionFilter_Subtype_BottomRightCounterClockwise = Just (n, str2attr "bottomRightCounterClockwise")+ toAttrFrTyp n TransitionFilter_Subtype_BottomRightDiagonal = Just (n, str2attr "bottomRightDiagonal")+ toAttrFrTyp n TransitionFilter_Subtype_CenterRight = Just (n, str2attr "centerRight")+ toAttrFrTyp n TransitionFilter_Subtype_CenterTop = Just (n, str2attr "centerTop")+ toAttrFrTyp n TransitionFilter_Subtype_Circle = Just (n, str2attr "circle")+ toAttrFrTyp n TransitionFilter_Subtype_ClockwiseBottom = Just (n, str2attr "clockwiseBottom")+ toAttrFrTyp n TransitionFilter_Subtype_ClockwiseBottomRight = Just (n, str2attr "clockwiseBottomRight")+ toAttrFrTyp n TransitionFilter_Subtype_ClockwiseLeft = Just (n, str2attr "clockwiseLeft")+ toAttrFrTyp n TransitionFilter_Subtype_ClockwiseNine = Just (n, str2attr "clockwiseNine")+ toAttrFrTyp n TransitionFilter_Subtype_ClockwiseRight = Just (n, str2attr "clockwiseRight")+ toAttrFrTyp n TransitionFilter_Subtype_ClockwiseSix = Just (n, str2attr "clockwiseSix")+ toAttrFrTyp n TransitionFilter_Subtype_ClockwiseThree = Just (n, str2attr "clockwiseThree")+ toAttrFrTyp n TransitionFilter_Subtype_ClockwiseTop = Just (n, str2attr "clockwiseTop")+ toAttrFrTyp n TransitionFilter_Subtype_ClockwiseTopLeft = Just (n, str2attr "clockwiseTopLeft")+ toAttrFrTyp n TransitionFilter_Subtype_ClockwiseTwelve = Just (n, str2attr "clockwiseTwelve")+ toAttrFrTyp n TransitionFilter_Subtype_CornersIn = Just (n, str2attr "cornersIn")+ toAttrFrTyp n TransitionFilter_Subtype_CornersOut = Just (n, str2attr "cornersOut")+ toAttrFrTyp n TransitionFilter_Subtype_CounterClockwiseBottomLeft = Just (n, str2attr "counterClockwiseBottomLeft")+ toAttrFrTyp n TransitionFilter_Subtype_CounterClockwiseTopRight = Just (n, str2attr "counterClockwiseTopRight")+ toAttrFrTyp n TransitionFilter_Subtype_Crossfade = Just (n, str2attr "crossfade")+ toAttrFrTyp n TransitionFilter_Subtype_DiagonalBottomLeft = Just (n, str2attr "diagonalBottomLeft")+ toAttrFrTyp n TransitionFilter_Subtype_DiagonalBottomLeftOpposite = Just (n, str2attr "diagonalBottomLeftOpposite")+ toAttrFrTyp n TransitionFilter_Subtype_DiagonalTopLeft = Just (n, str2attr "diagonalTopLeft")+ toAttrFrTyp n TransitionFilter_Subtype_DiagonalTopLeftOpposite = Just (n, str2attr "diagonalTopLeftOpposite")+ toAttrFrTyp n TransitionFilter_Subtype_Diamond = Just (n, str2attr "diamond")+ toAttrFrTyp n TransitionFilter_Subtype_DoubleBarnDoor = Just (n, str2attr "doubleBarnDoor")+ toAttrFrTyp n TransitionFilter_Subtype_DoubleDiamond = Just (n, str2attr "doubleDiamond")+ toAttrFrTyp n TransitionFilter_Subtype_Down = Just (n, str2attr "down")+ toAttrFrTyp n TransitionFilter_Subtype_FadeFromColor = Just (n, str2attr "fadeFromColor")+ toAttrFrTyp n TransitionFilter_Subtype_FadeToColor = Just (n, str2attr "fadeToColor")+ toAttrFrTyp n TransitionFilter_Subtype_FanInHorizontal = Just (n, str2attr "fanInHorizontal")+ toAttrFrTyp n TransitionFilter_Subtype_FanInVertical = Just (n, str2attr "fanInVertical")+ toAttrFrTyp n TransitionFilter_Subtype_FanOutHorizontal = Just (n, str2attr "fanOutHorizontal")+ toAttrFrTyp n TransitionFilter_Subtype_FanOutVertical = Just (n, str2attr "fanOutVertical")+ toAttrFrTyp n TransitionFilter_Subtype_FivePoint = Just (n, str2attr "fivePoint")+ toAttrFrTyp n TransitionFilter_Subtype_FourBlade = Just (n, str2attr "fourBlade")+ toAttrFrTyp n TransitionFilter_Subtype_FourBoxHorizontal = Just (n, str2attr "fourBoxHorizontal")+ toAttrFrTyp n TransitionFilter_Subtype_FourBoxVertical = Just (n, str2attr "fourBoxVertical")+ toAttrFrTyp n TransitionFilter_Subtype_FourPoint = Just (n, str2attr "fourPoint")+ toAttrFrTyp n TransitionFilter_Subtype_FromBottom = Just (n, str2attr "fromBottom")+ toAttrFrTyp n TransitionFilter_Subtype_FromLeft = Just (n, str2attr "fromLeft")+ toAttrFrTyp n TransitionFilter_Subtype_FromRight = Just (n, str2attr "fromRight")+ toAttrFrTyp n TransitionFilter_Subtype_FromTop = Just (n, str2attr "fromTop")+ toAttrFrTyp n TransitionFilter_Subtype_Heart = Just (n, str2attr "heart")+ toAttrFrTyp n TransitionFilter_Subtype_Horizontal = Just (n, str2attr "horizontal")+ toAttrFrTyp n TransitionFilter_Subtype_HorizontalLeft = Just (n, str2attr "horizontalLeft")+ toAttrFrTyp n TransitionFilter_Subtype_HorizontalLeftSame = Just (n, str2attr "horizontalLeftSame")+ toAttrFrTyp n TransitionFilter_Subtype_HorizontalRight = Just (n, str2attr "horizontalRight")+ toAttrFrTyp n TransitionFilter_Subtype_HorizontalRightSame = Just (n, str2attr "horizontalRightSame")+ toAttrFrTyp n TransitionFilter_Subtype_HorizontalTopLeftOpposite = Just (n, str2attr "horizontalTopLeftOpposite")+ toAttrFrTyp n TransitionFilter_Subtype_HorizontalTopRightOpposite = Just (n, str2attr "horizontalTopRightOpposite")+ toAttrFrTyp n TransitionFilter_Subtype_Keyhole = Just (n, str2attr "keyhole")+ toAttrFrTyp n TransitionFilter_Subtype_Left = Just (n, str2attr "left")+ toAttrFrTyp n TransitionFilter_Subtype_LeftCenter = Just (n, str2attr "leftCenter")+ toAttrFrTyp n TransitionFilter_Subtype_LeftToRight = Just (n, str2attr "leftToRight")+ toAttrFrTyp n TransitionFilter_Subtype_OppositeHorizontal = Just (n, str2attr "oppositeHorizontal")+ toAttrFrTyp n TransitionFilter_Subtype_OppositeVertical = Just (n, str2attr "oppositeVertical")+ toAttrFrTyp n TransitionFilter_Subtype_ParallelDiagonal = Just (n, str2attr "parallelDiagonal")+ toAttrFrTyp n TransitionFilter_Subtype_ParallelDiagonalBottomLeft = Just (n, str2attr "parallelDiagonalBottomLeft")+ toAttrFrTyp n TransitionFilter_Subtype_ParallelDiagonalTopLeft = Just (n, str2attr "parallelDiagonalTopLeft")+ toAttrFrTyp n TransitionFilter_Subtype_ParallelVertical = Just (n, str2attr "parallelVertical")+ toAttrFrTyp n TransitionFilter_Subtype_Rectangle = Just (n, str2attr "rectangle")+ toAttrFrTyp n TransitionFilter_Subtype_Right = Just (n, str2attr "right")+ toAttrFrTyp n TransitionFilter_Subtype_RightCenter = Just (n, str2attr "rightCenter")+ toAttrFrTyp n TransitionFilter_Subtype_SixPoint = Just (n, str2attr "sixPoint")+ toAttrFrTyp n TransitionFilter_Subtype_Top = Just (n, str2attr "top")+ toAttrFrTyp n TransitionFilter_Subtype_TopCenter = Just (n, str2attr "topCenter")+ toAttrFrTyp n TransitionFilter_Subtype_TopLeft = Just (n, str2attr "topLeft")+ toAttrFrTyp n TransitionFilter_Subtype_TopLeftClockwise = Just (n, str2attr "topLeftClockwise")+ toAttrFrTyp n TransitionFilter_Subtype_TopLeftCounterClockwise = Just (n, str2attr "topLeftCounterClockwise")+ toAttrFrTyp n TransitionFilter_Subtype_TopLeftDiagonal = Just (n, str2attr "topLeftDiagonal")+ toAttrFrTyp n TransitionFilter_Subtype_TopLeftHorizontal = Just (n, str2attr "topLeftHorizontal")+ toAttrFrTyp n TransitionFilter_Subtype_TopLeftVertical = Just (n, str2attr "topLeftVertical")+ toAttrFrTyp n TransitionFilter_Subtype_TopRight = Just (n, str2attr "topRight")+ toAttrFrTyp n TransitionFilter_Subtype_TopRightClockwise = Just (n, str2attr "topRightClockwise")+ toAttrFrTyp n TransitionFilter_Subtype_TopRightCounterClockwise = Just (n, str2attr "topRightCounterClockwise")+ toAttrFrTyp n TransitionFilter_Subtype_TopRightDiagonal = Just (n, str2attr "topRightDiagonal")+ toAttrFrTyp n TransitionFilter_Subtype_TopToBottom = Just (n, str2attr "topToBottom")+ toAttrFrTyp n TransitionFilter_Subtype_TwoBladeHorizontal = Just (n, str2attr "twoBladeHorizontal")+ toAttrFrTyp n TransitionFilter_Subtype_TwoBladeVertical = Just (n, str2attr "twoBladeVertical")+ toAttrFrTyp n TransitionFilter_Subtype_TwoBoxBottom = Just (n, str2attr "twoBoxBottom")+ toAttrFrTyp n TransitionFilter_Subtype_TwoBoxLeft = Just (n, str2attr "twoBoxLeft")+ toAttrFrTyp n TransitionFilter_Subtype_TwoBoxRight = Just (n, str2attr "twoBoxRight")+ toAttrFrTyp n TransitionFilter_Subtype_TwoBoxTop = Just (n, str2attr "twoBoxTop")+ toAttrFrTyp n TransitionFilter_Subtype_Up = Just (n, str2attr "up")+ toAttrFrTyp n TransitionFilter_Subtype_Vertical = Just (n, str2attr "vertical")+ toAttrFrTyp n TransitionFilter_Subtype_VerticalBottomLeftOpposite = Just (n, str2attr "verticalBottomLeftOpposite")+ toAttrFrTyp n TransitionFilter_Subtype_VerticalBottomSame = Just (n, str2attr "verticalBottomSame")+ toAttrFrTyp n TransitionFilter_Subtype_VerticalLeft = Just (n, str2attr "verticalLeft")+ toAttrFrTyp n TransitionFilter_Subtype_VerticalRight = Just (n, str2attr "verticalRight")+ toAttrFrTyp n TransitionFilter_Subtype_VerticalTopLeftOpposite = Just (n, str2attr "verticalTopLeftOpposite")+ toAttrFrTyp n TransitionFilter_Subtype_VerticalTopSame = Just (n, str2attr "verticalTopSame")+instance XmlAttrType TransitionFilter_Coordinated where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "true" = Just TransitionFilter_Coordinated_True+ translate "false" = Just TransitionFilter_Coordinated_False+ translate _ = Nothing+ toAttrFrTyp n TransitionFilter_Coordinated_True = Just (n, str2attr "true")+ toAttrFrTyp n TransitionFilter_Coordinated_False = Just (n, str2attr "false")+instance XmlAttrType TransitionFilter_ClibBoundary where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "parent" = Just TransitionFilter_ClibBoundary_Parent+ translate "children" = Just TransitionFilter_ClibBoundary_Children+ translate _ = Nothing+ toAttrFrTyp n TransitionFilter_ClibBoundary_Parent = Just (n, str2attr "parent")+ toAttrFrTyp n TransitionFilter_ClibBoundary_Children = Just (n, str2attr "children")+instance XmlAttrType TransitionFilter_CalcMode where+ fromAttrToTyp n (n',v)+ | n==n' = translate (attr2str v)+ | otherwise = Nothing+ where translate "discrete" = Just TransitionFilter_CalcMode_Discrete+ translate "linear" = Just TransitionFilter_CalcMode_Linear+ translate "paced" = Just TransitionFilter_CalcMode_Paced+ translate _ = Nothing+ toAttrFrTyp n TransitionFilter_CalcMode_Discrete = Just (n, str2attr "discrete")+ toAttrFrTyp n TransitionFilter_CalcMode_Linear = Just (n, str2attr "linear")+ toAttrFrTyp n TransitionFilter_CalcMode_Paced = Just (n, str2attr "paced")+++{-Done-}
+ examples/SMIL/SMIL-anim.mod view
@@ -0,0 +1,175 @@+<!-- ======================================================================= -->+<!-- SMIL Animation Module ================================================ -->+<!-- file: SMIL-anim.mod++ This is SMIL 2.0.+ Copyright 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.++ Author: Patrick Schmitz, Ken Day, Jacco van Ossenbruggen+ Revision: $Id: SMIL-anim.mod,v 1.1.1.1 2002/03/19 12:29:23 malcolm Exp $++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Animation//EN"+ SYSTEM "SMIL-anim.mod"++ ======================================================================= -->+++<!-- ============================= Dependencies ============================ -->+<!-- The integrating profile is expected to define the following entities,+ Unless the defaults provided are sufficient.+ -->++<!-- SplineAnimation.module entity: Define as "INCLUDE" if the integrating+ profile includes the SMIL 2.0 SplineAnimation Module, "IGNORE" if not.+ The default is "IGNORE", i.e. by default SplineAnimation is not included+ in the integrating language profile.+ -->+<!ENTITY % SplineAnimation.module "IGNORE">++<!-- Animation depends on SMIL Timing, importing the attributes listed+ in the AnimationTime.attrib entity. If the integrating profile does + include the MinMaxTiming.module, its default value includes the + attributes defined in BasicInlineTiming.attrib and inMaxTiming.attrib.+ Otherwise, it is defaulted to BasicInlineTiming.attrib, which is the + minimum requirement.+ + Note that the profile can override these defaults by redefining + AnimationTime.attrib. The profile is also expected to define + Fill.attrib.+ -->+<!ENTITY % MinMaxTiming.module "IGNORE">+<![%MinMaxTiming.module;[+ <!ENTITY % AnimationTime.attrib "+ %BasicInlineTiming.attrib;+ %MinMaxTiming.attrib;+ ">+]]>+<!ENTITY % AnimationTime.attrib "%BasicInlineTiming.attrib;">+<!ENTITY % Fill.attrib "">++<!ENTITY % animTimingAttrs "+ %AnimationTime.attrib; + %Fill.attrib; +">++<!-- Language Designer chooses to integrate targetElement or xlink attributes.+ To integrate the targetElement attribute, define the entity+ animation-targetElement as "INCLUDE"; to integrate the XLink attributes,+ define animation-XLinkTarget as "INCLUDE".+ + One or the other MUST be defined. It is strongly recommended that only one+ of the two be defined.+-->++<!ENTITY % animation-targetElement "IGNORE">+<![%animation-targetElement;[+ <!ENTITY % animTargetElementAttr+ "targetElement IDREF #IMPLIED"+ >+]]>+<!ENTITY % animTargetElementAttr "">++<!ENTITY % animation-XLinkTarget "IGNORE">+<![%animation-XLinkTarget;[+ <!ENTITY % animTargetElementXLink "+ actuate (onRequest|onLoad) 'onLoad' + href %URI; #IMPLIED+ show (new | embed | replace) #FIXED 'embed'+ type (simple | extended | locator | arc) #FIXED 'simple'+">+]]>+<!ENTITY % animTargetElementXLink "">+++<!-- ========================== Attribute Groups =========================== -->++<!-- All animation elements include these attributes -->+<!ENTITY % animAttrsCommon+ "%Core.attrib;+ %I18n.attrib;+ %System.attrib;+ %animTimingAttrs;+ %animTargetElementAttr;+ %animTargetElementXLink;"+>++<!-- All except animateMotion need an identified target attribute -->+<!ENTITY % animAttrsNamedTarget+ "%animAttrsCommon;+ attributeName CDATA #REQUIRED+ attributeType CDATA #IMPLIED"+>++<!-- All except set support the full animation-function specification,+ additive and cumulative animation.+ SplineAnimation adds the attributes keyTimes, keySplines and path,+ and the calcMode value "spline", to those of BasicAnimation.+ -->+<![%SplineAnimation.module;[+ <!ENTITY % splineAnimCalcModeValues "| spline">+ <!ENTITY % splineAnimValueAttrs+ "keyTimes CDATA #IMPLIED+ keySplines CDATA #IMPLIED"+ >+ <!ENTITY % splineAnimPathAttr+ "path CDATA #IMPLIED"+ >+]]>+<!ENTITY % splineAnimCalcModeValues "">+<!ENTITY % splineAnimValueAttrs "">+<!ENTITY % splineAnimPathAttr "">++<!ENTITY % animValueAttrs "+ %BasicAnimation.attrib;+ calcMode (discrete|linear|paced %splineAnimCalcModeValues;) 'linear'+ %splineAnimValueAttrs;+ additive (replace | sum) 'replace'+ accumulate (none | sum) 'none'"+>+++<!-- ========================== Animation Elements ========================= -->++<!ENTITY % animate.attrib "">+<!ENTITY % animate.content "EMPTY">+<!ENTITY % animate.qname "animate">+<!ELEMENT %animate.qname; %animate.content;>+<!ATTLIST %animate.qname; %animate.attrib;+ %animAttrsNamedTarget;+ %animValueAttrs;+>++<!ENTITY % set.attrib "">+<!ENTITY % set.content "EMPTY">+<!ENTITY % set.qname "set">+<!ELEMENT %set.qname; %set.content;>+<!ATTLIST %set.qname; %set.attrib;+ %animAttrsNamedTarget;+ to CDATA #IMPLIED+>++<!ENTITY % animateMotion.attrib "">+<!ENTITY % animateMotion.content "EMPTY">+<!ENTITY % animateMotion.qname "animateMotion">+<!ELEMENT %animateMotion.qname; %animateMotion.content;>+<!ATTLIST %animateMotion.qname; %animateMotion.attrib;+ %animAttrsCommon;+ %animValueAttrs;+ %splineAnimPathAttr;+ origin (default) "default"+>+++<!ENTITY % animateColor.attrib "">+<!ENTITY % animateColor.content "EMPTY">+<!ENTITY % animateColor.qname "animateColor">+<!ELEMENT %animateColor.qname; %animateColor.content;>+<!ATTLIST %animateColor.qname; %animateColor.attrib;+ %animAttrsNamedTarget;+ %animValueAttrs;+>++<!-- ========================== End Animation ============================= -->+<!-- end of SMIL-anim.mod -->
+ examples/SMIL/SMIL-control.mod view
@@ -0,0 +1,71 @@+<!-- ================================================================= -->+<!-- SMIL Content Control Module ==================================== -->+<!-- file: SMIL-control.mod++ This is SMIL 2.0.+ Copyright 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.++ Author: Jacco van Ossenbruggen, Aaron Cohen+ Revision: $Id: SMIL-control.mod,v 1.1.1.1 2002/03/19 12:29:23 malcolm Exp $++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Content Control//EN"+ SYSTEM "SMIL-control.mod"++ ================================================================= -->++<!ENTITY % BasicContentControl.module "INCLUDE">+<![%BasicContentControl.module;[+ <!ENTITY % switch.attrib "">+ <!ENTITY % switch.content "EMPTY">+ <!ENTITY % switch.qname "switch">+ + <!ELEMENT %switch.qname; %switch.content;>+ <!ATTLIST %switch.qname; %switch.attrib;+ %Core.attrib;+ %I18n.attrib;+ >+]]>++<!-- ========================= CustomTest Elements ========================= -->+<!ENTITY % CustomTestAttributes.module "IGNORE">+<![%CustomTestAttributes.module;[++ <!ENTITY % customTest.attrib "">+ <!ENTITY % customTest.qname "customTest">+ <!ENTITY % customTest.content "EMPTY">+ <!ELEMENT %customTest.qname; %customTest.content;>+ <!ATTLIST %customTest.qname; %customTest.attrib;+ defaultState (true|false) 'false'+ override (allowed|not-allowed) 'not-allowed'+ uid %URI; #IMPLIED+ %Core.attrib;+ %I18n.attrib;+ >+ <!ENTITY % customAttributes.attrib "">+ <!ENTITY % customAttributes.qname "customAttributes">+ <!ENTITY % customAttributes.content "EMPTY">+ <!ELEMENT %customAttributes.qname; %customAttributes.content;>+ <!ATTLIST %customAttributes.qname; %customAttributes.attrib;+ %Core.attrib;+ %I18n.attrib;+ >++]]> <!-- end of CustomTestAttributes -->++<!-- ========================= PrefetchControl Elements ==================== -->+<!ENTITY % PrefetchControl.module "IGNORE">+<![%PrefetchControl.module;[+ <!ENTITY % prefetch.attrib "">+ <!ENTITY % prefetch.qname "prefetch">+ <!ENTITY % prefetch.content "EMPTY">+ <!ELEMENT %prefetch.qname; %prefetch.content;>+ <!ATTLIST %prefetch.qname; %prefetch.attrib;+ mediaSize CDATA #IMPLIED+ mediaTime CDATA #IMPLIED+ bandwidth CDATA #IMPLIED+ %Core.attrib;+ %I18n.attrib;+ >+]]>
+ examples/SMIL/SMIL-layout.mod view
@@ -0,0 +1,134 @@+<!-- ======================================================================= -->+<!-- SMIL 2.0 Layout Modules =============================================== -->+<!-- file: SMIL-layout.mod++ This is SMIL 2.0.+ Copyright 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.++ Authors: Jacco van Ossenbruggen, Aaron Cohen+ Revision: $Id: SMIL-layout.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Layout//EN"+ SYSTEM "SMIL-layout.mod"++ ==================================================================== -->++<!-- ================== BasicLayout ======================================== -->+<!-- ================== BasicLayout Profiling Entities ===================== -->+<!ENTITY % layout.attrib "">+<!ENTITY % region.attrib "">+<!ENTITY % rootlayout.attrib "">+<!ENTITY % layout.content "EMPTY">+<!ENTITY % region.content "EMPTY">+<!ENTITY % rootlayout.content "EMPTY">++<!-- ================== BasicLayout Entities =============================== -->+<!ENTITY % viewport-attrs "+ height CDATA 'auto'+ width CDATA 'auto'+ close (never|whenNotActive) 'never'+ open (always|whenActive) 'always'+ %BackgroundColor.attrib;+ %BackgroundColor-deprecated.attrib;+">++<!ENTITY % region-attrs "+ bottom CDATA 'auto'+ left CDATA 'auto'+ right CDATA 'auto'+ top CDATA 'auto'+ z-index CDATA #IMPLIED+ showBackground (always|whenActive) 'always'+ %Fit.attrib;+">++<!-- ================== BasicLayout Elements =============================== -->+<!--+ Layout contains the region and root-layout elements defined by+ smil-basic-layout or other elements defined an external layout+ mechanism.+-->++<!ENTITY % layout.qname "layout">+<!ELEMENT %layout.qname; %layout.content;>+<!ATTLIST %layout.qname; %layout.attrib;+ %Core.attrib;+ %I18n.attrib;+ type CDATA 'text/smil-basic-layout'+>++<!-- ================== Region Element ======================================-->+<!ENTITY % region.qname "region">+<!ELEMENT %region.qname; %region.content;>+<!ATTLIST %region.qname; %region.attrib;+ %Core.attrib;+ %I18n.attrib;+ %viewport-attrs;+ %region-attrs;+>++<!-- ================== Root-layout Element =================================-->+<!ENTITY % root-layout.qname "root-layout">+<!ELEMENT %root-layout.qname; %rootlayout.content; >+<!ATTLIST %root-layout.qname; %rootlayout.attrib;+ %Core.attrib;+ %I18n.attrib;+ %viewport-attrs;+>+++<!-- ================== AudioLayout ======================================== -->+<!ENTITY % AudioLayout.module "IGNORE">+<![%AudioLayout.module;[+ <!-- ================== AudioLayout Entities ============================= -->+ <!ENTITY % audio-attrs "+ soundLevel CDATA '100%'+ ">++ <!-- ================ AudioLayout Elements =============================== -->+ <!-- ================ Add soundLevel to region element =================== -->+ <!ATTLIST %region.qname; %audio-attrs;>+]]> <!-- end AudioLayout.module -->+++<!-- ================ MultiWindowLayout ==================================== -->+<!ENTITY % MultiWindowLayout.module "IGNORE">+<![%MultiWindowLayout.module;[+ <!-- ============== MultiWindowLayout Profiling Entities ================= -->+ <!ENTITY % viewport.attrib "">+ <!ENTITY % viewport.content "EMPTY">+ + <!-- ============== MultiWindowLayout Elements =========================== -->+ <!--================= viewport element =================================== -->+ <!ENTITY % viewport.qname "viewport">+ <!ELEMENT %viewport.qname; %viewport.content;>+ <!ATTLIST %viewport.qname; %viewport.attrib;+ %Core.attrib;+ %I18n.attrib;+ %viewport-attrs;+ >+]]> <!-- end MultiWindowLayout.module -->+++<!-- ====================== HierarchicalLayout ============================= -->+<!ENTITY % HierarchicalLayout.module "IGNORE">+<![%HierarchicalLayout.module;[+ <!-- ========== HierarchicalLayout Profiling Entities ==================== -->+ <!ENTITY % regPoint.attrib "">+ <!ENTITY % regPoint.content "EMPTY">++ <!-- ============ HierarchicalLayout Elements ============================ -->+ <!ENTITY % regPoint.qname "regPoint">+ <!ELEMENT %regPoint.qname; %regPoint.content;>+ <!ATTLIST %regPoint.qname; %regPoint.attrib;+ %Core.attrib;+ %I18n.attrib;+ %Sub-region.attrib;+ %RegistrationPoint.attrib;+ >+]]> <!-- end HierarchicalLayout.module -->+++<!-- end of SMIL-layout.mod -->
+ examples/SMIL/SMIL-link.mod view
@@ -0,0 +1,105 @@+<!-- ======================================================================= -->+<!-- SMIL Linking Module ================================================== -->+<!-- file: SMIL-link.mod++ This is SMIL 2.0.+ Copyright 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.++ Author: Jacco van Ossenbruggen, Lloyd Rutledge, Aaron Cohen+ Revision: $Id: SMIL-link.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Linking//EN"+ SYSTEM "SMIL-link.mod"++ ======================================================================= -->++<!-- ======================== LinkingAttributes Entities =================== -->+<!ENTITY % linking-attrs "+ sourceLevel CDATA '100%'+ destinationLevel CDATA '100%'+ sourcePlaystate (play|pause|stop) #IMPLIED+ destinationPlaystate (play|pause|stop) 'play'+ show (new|pause|replace) 'replace'+ accesskey CDATA #IMPLIED+ tabindex CDATA #IMPLIED+ target CDATA #IMPLIED+ external (true|false) 'false'+ actuate (onRequest|onLoad) 'onRequest'+">++++<!-- ========================= BasicLinking Elements ======================= -->+<!ENTITY % BasicLinking.module "IGNORE">+<![%BasicLinking.module;[++ <!-- ======================= BasicLinking Entities ======================= -->+ <!ENTITY % Shape "(rect|circle|poly|default)">+ <!ENTITY % Coords "CDATA">+ <!-- comma separated list of lengths -->++ <!ENTITY % a.attrib "">+ <!ENTITY % a.content "EMPTY">+ <!ENTITY % a.qname "a">+ <!ELEMENT %a.qname; %a.content;>+ <!ATTLIST %a.qname; %a.attrib;+ %linking-attrs;+ href %URI; #IMPLIED+ %Core.attrib;+ %I18n.attrib;+ >++ <!ENTITY % area.attrib "">+ <!ENTITY % area.content "EMPTY">+ <!ENTITY % area.qname "area">+ <!ELEMENT %area.qname; %area.content;>+ <!ATTLIST %area.qname; %area.attrib;+ %linking-attrs;+ shape %Shape; 'rect'+ coords %Coords; #IMPLIED+ href %URI; #IMPLIED+ nohref (nohref) #IMPLIED+ alt %Text; #IMPLIED+ %Core.attrib;+ %I18n.attrib;+ >++ <!ENTITY % anchor.attrib "">+ <!ENTITY % anchor.content "EMPTY">+ <!ENTITY % anchor.qname "anchor">+ <!ELEMENT %anchor.qname; %anchor.content;>+ <!ATTLIST %anchor.qname; %area.attrib;+ %linking-attrs;+ shape %Shape; 'rect'+ coords %Coords; #IMPLIED+ href %URI; #IMPLIED+ nohref (nohref) #IMPLIED+ alt %Text; #IMPLIED+ %Core.attrib;+ %I18n.attrib;+ >+]]> <!-- end of BasicLinking -->++<!-- ======================== ObjectLinking ================================ -->+<!ENTITY % ObjectLinking.module "IGNORE">+<![%ObjectLinking.module;[++ <!ENTITY % Fragment "+ fragment CDATA #IMPLIED+ ">++ <!-- ====================== ObjectLinking Elements ======================= -->+ <!-- add fragment attribute to area, and anchor elements -->+ <!ATTLIST %area.qname;+ %Fragment;+ >++ <!ATTLIST %anchor.qname;+ %Fragment;+ >+]]>+<!-- ======================== End ObjectLinking ============================ -->++<!-- end of SMIL-link.mod -->
+ examples/SMIL/SMIL-media.mod view
@@ -0,0 +1,179 @@+<!-- ======================================================================= -->+<!-- SMIL 2.0 Media Objects Modules ======================================== -->+<!-- file: SMIL-media.mod++ This is SMIL 2.0.+ Copyright 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.++ Author: Rob Lanphier, Jacco van Ossenbruggen+ Revision: $Id: SMIL-media.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Media Objects//EN"+ SYSTEM "SMIL-media.mod"++ ======================================================================= -->++<!-- ================== Profiling Entities ================================= -->++<!ENTITY % BasicMedia.module "INCLUDE">+<![%BasicMedia.module;[+ <!ENTITY % media-object.content "EMPTY">+ <!ENTITY % media-object.attrib "">++ <!-- ================ Media Objects Entities ============================= -->++ <!ENTITY % mo-attributes-BasicMedia "+ abstract CDATA #IMPLIED+ alt CDATA #IMPLIED+ author CDATA #IMPLIED+ copyright CDATA #IMPLIED+ longdesc CDATA #IMPLIED+ src CDATA #IMPLIED+ type CDATA #IMPLIED+ ">+]]>+<!ENTITY % mo-attributes-BasicMedia "">+++<!ENTITY % MediaClipping.module "IGNORE">+<![%MediaClipping.module;[+ <!ENTITY % mo-attributes-MediaClipping "+ clipBegin CDATA #IMPLIED+ clipEnd CDATA #IMPLIED+ ">+]]>+<!ENTITY % mo-attributes-MediaClipping "">++<!ENTITY % MediaClipping.deprecated.module "IGNORE">+<![%MediaClipping.module;[+ <!ENTITY % mo-attributes-MediaClipping-deprecated "+ clip-begin CDATA #IMPLIED+ clip-end CDATA #IMPLIED+ ">+ ]]>+<!ENTITY % mo-attributes-MediaClipping-deprecated "">++<!ENTITY % MediaParam.module "IGNORE">+<![%MediaParam.module;[+ <!ENTITY % mo-attributes-MediaParam "+ erase (whenDone|never) 'whenDone'+ mediaRepeat (preserve|strip) 'preserve'+ ">+]]>+<!ENTITY % mo-attributes-MediaParam "">++<!ENTITY % MediaAccessibility.module "IGNORE">+<![%MediaAccessibility.module;[+ <!ENTITY % mo-attributes-MediaAccessibility "+ readIndex CDATA #IMPLIED+ ">+]]>+<!ENTITY % mo-attributes-MediaAccessibility "">+++<!ENTITY % mo-attributes "+ %Core.attrib;+ %I18n.attrib;+ %mo-attributes-BasicMedia;+ %mo-attributes-MediaParam;+ %mo-attributes-MediaAccessibility;+ %media-object.attrib;+">++<!--+ Most info is in the attributes, media objects are empty or+ have children defined at the language integration level:+-->++<!ENTITY % mo-content "%media-object.content;">++<!-- ================== Media Objects Elements ============================= -->+<!-- BasicMedia -->+<!ENTITY % ref.qname "ref">+<!ENTITY % audio.qname "audio">+<!ENTITY % img.qname "img">+<!ENTITY % video.qname "video">+<!ENTITY % text.qname "text">+<!ENTITY % textstream.qname "textstream">+<!ENTITY % animation.qname "animation">++<!ENTITY % ref.content "%mo-content;">+<!ENTITY % audio.content "%mo-content;">+<!ENTITY % img.content "%mo-content;">+<!ENTITY % video.content "%mo-content;">+<!ENTITY % text.content "%mo-content;">+<!ENTITY % textstream.content "%mo-content;">+<!ENTITY % animation.content "%mo-content;">++<!ELEMENT %ref.qname; %ref.content;>+<!ELEMENT %audio.qname; %audio.content;>+<!ELEMENT %img.qname; %img.content;>+<!ELEMENT %video.qname; %video.content;>+<!ELEMENT %text.qname; %text.content;>+<!ELEMENT %textstream.qname; %textstream.content;>+<!ELEMENT %animation.qname; %animation.content;>++<!ATTLIST %img.qname; + %mo-attributes;+>+<!ATTLIST %text.qname; + %mo-attributes;+>+<!ATTLIST %ref.qname; + %mo-attributes-MediaClipping;+ %mo-attributes-MediaClipping-deprecated;+ %mo-attributes;+>+<!ATTLIST %audio.qname; + %mo-attributes-MediaClipping;+ %mo-attributes-MediaClipping-deprecated;+ %mo-attributes;+>+<!ATTLIST %video.qname; + %mo-attributes-MediaClipping;+ %mo-attributes-MediaClipping-deprecated;+ %mo-attributes;+>+<!ATTLIST %textstream.qname; + %mo-attributes-MediaClipping;+ %mo-attributes-MediaClipping-deprecated;+ %mo-attributes;+>+<!ATTLIST %animation.qname; + %mo-attributes-MediaClipping;+ %mo-attributes-MediaClipping-deprecated;+ %mo-attributes;+>++<!-- MediaParam -->+<![%MediaParam.module;[++ <!ENTITY % param.qname "param">+ <!ELEMENT %param.qname; EMPTY>++ <!ATTLIST %param.qname;+ %Core.attrib;+ %I18n.attrib;+ name CDATA #IMPLIED+ value CDATA #IMPLIED+ valuetype (data|ref|object) "data"+ type %ContentType; #IMPLIED+ >+]]>++<!-- BrushMedia -->+<!ENTITY % BrushMedia.module "IGNORE">+<![%BrushMedia.module;[+ <!ENTITY % brush.attrib "">+ <!ENTITY % brush.content "%mo-content;">+ <!ENTITY % brush.qname "brush">+ <!ELEMENT %brush.qname; %brush.content;>+ <!ATTLIST %brush.qname; %brush.attrib; + %mo-attributes; + color CDATA #IMPLIED+ >+]]>++<!-- end of SMIL-media.mod -->
+ examples/SMIL/SMIL-metainformation.mod view
@@ -0,0 +1,48 @@+<!-- ================================================================ -->+<!-- SMIL Metainformation Module =================================== -->+<!-- file: SMIL-metainformation.mod++ This is SMIL 2.0.+ Copyright 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.++ This module declares the meta and metadata elements types and + its attributes, used to provide declarative document metainformation.++ Author: Thierry Michel, Jacco van Ossenbruggen+ Revision: $Id: SMIL-metainformation.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $+ + This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Document Metadata//EN"+ SYSTEM "SMIL-metainformation.mod"++ ================================================================ -->+++<!-- ================== Profiling Entities ========================== -->++<!ENTITY % meta.content "EMPTY">+<!ENTITY % meta.attrib "">+<!ENTITY % meta.qname "meta">++<!ENTITY % metadata.content "EMPTY">+<!ENTITY % metadata.attrib "">+<!ENTITY % metadata.qname "metadata">++<!-- ================== meta element ================================ -->++<!ELEMENT %meta.qname; %meta.content;>+<!ATTLIST %meta.qname; %meta.attrib;+ content CDATA #IMPLIED+ name CDATA #REQUIRED + >++<!-- ================== metadata element ============================ -->++<!ELEMENT %metadata.qname; %metadata.content;>+<!ATTLIST %metadata.qname; %metadata.attrib;+ %Core.attrib;+ %I18n.attrib;+>++<!-- end of SMIL-metadata.mod -->
+ examples/SMIL/SMIL-struct.mod view
@@ -0,0 +1,51 @@+<!-- ====================================================================== -->+<!-- SMIL Structure Module =============================================== -->+<!-- file: SMIL-struct.mod++ This is SMIL 2.0.+ Copyright 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Document Structure//EN"+ SYSTEM "SMIL-struct.mod"++ Author: Warner ten Kate, Jacco van Ossenbruggen+ Revision: $Id: SMIL-struct.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $++ ===================================================================== -->++<!-- ================== SMIL Document Root =============================== -->+<!ENTITY % smil.attrib "" >+<!ENTITY % smil.content "EMPTY" >+<!ENTITY % smil.qname "smil" >++<!ELEMENT %smil.qname; %smil.content;>+<!ATTLIST %smil.qname; %smil.attrib;+ %Core.attrib;+ %I18n.attrib;+ xmlns %URI; #FIXED %SMIL.ns;+>++<!-- ================== The Document Head ================================ -->+<!ENTITY % head.content "EMPTY" >+<!ENTITY % head.attrib "" >+<!ENTITY % head.qname "head" >++<!ELEMENT %head.qname; %head.content;>+<!ATTLIST %head.qname; %head.attrib;+ %Core.attrib;+ %I18n.attrib;+>++<!--=================== The Document Body - Timing Root ================== -->+<!ENTITY % body.content "EMPTY" >+<!ENTITY % body.attrib "" >+<!ENTITY % body.qname "body" >++<!ELEMENT %body.qname; %body.content;>+<!ATTLIST %body.qname; %body.attrib;+ %Core.attrib;+ %I18n.attrib;+>+<!-- end of SMIL-struct.mod -->
+ examples/SMIL/SMIL-timing.mod view
@@ -0,0 +1,80 @@+<!-- ================================================================= -->+<!-- SMIL Timing and Synchronization Modules ========================= -->+<!-- file: SMIL-timing.mod++ This is SMIL 2.0.+ Copyright 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.++ Author: Jacco van Ossenbruggen.+ Revision: $Id: SMIL-timing.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Timing//EN"+ SYSTEM "SMIL-timing.mod"++ ================================================================= -->+++<!-- ================== Timing Elements ============================== -->++<!ENTITY % BasicTimeContainers.module "IGNORE">+<![%BasicTimeContainers.module;[+ <!ENTITY % par.content "EMPTY">+ <!ENTITY % seq.content "EMPTY">+ <!ENTITY % par.attrib "">+ <!ENTITY % seq.attrib "">+ <!ENTITY % seq.qname "seq">+ <!ENTITY % par.qname "par">++ <!ENTITY % description.attrib "+ abstract CDATA #IMPLIED+ author CDATA #IMPLIED+ copyright CDATA #IMPLIED+ ">++ <!ELEMENT %seq.qname; %seq.content;>+ <!ATTLIST %seq.qname; %seq.attrib;+ %Core.attrib;+ %I18n.attrib;+ %description.attrib;+ >++ <!ELEMENT %par.qname; %par.content;>+ <!ATTLIST %par.qname; %par.attrib;+ %Core.attrib;+ %I18n.attrib;+ %description.attrib;+ >+]]> <!-- End of BasicTimeContainers.module -->+++<!ENTITY % ExclTimeContainers.module "IGNORE">+<![%ExclTimeContainers.module;[+ <!ENTITY % excl.content "EMPTY">+ <!ENTITY % priorityClass.content "EMPTY">+ <!ENTITY % excl.attrib "">+ <!ENTITY % priorityClass.attrib "">+ <!ENTITY % excl.qname "excl">+ <!ENTITY % priorityClass.qname "priorityClass">++ <!ELEMENT %excl.qname; %excl.content;>+ <!ATTLIST %excl.qname; %excl.attrib;+ %Core.attrib;+ %I18n.attrib;+ %description.attrib;+ >++ <!ELEMENT %priorityClass.qname; %priorityClass.content;>+ <!ATTLIST %priorityClass.qname; %priorityClass.attrib;+ peers (stop|pause|defer|never) "stop"+ higher (stop|pause) "pause" + lower (defer|never) "defer"+ pauseDisplay (disable|hide|show ) "show"+ %description.attrib;+ %Core.attrib;+ %I18n.attrib;+ >+]]> <!-- End of ExclTimeContainers.module -->++<!-- end of SMIL-timing.mod -->
+ examples/SMIL/SMIL-transition.mod view
@@ -0,0 +1,94 @@+<!-- ====================================================================== -->+<!-- SMIL Transition Module ============================================== -->+<!-- file: SMIL-transition.mod++ This is SMIL 2.0+ Copyright 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.++ Revision: $Id: SMIL-transition.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Transition//EN"+ SYSTEM "SMIL-transition.mod"++ ++ ====================================================================== -->++<!ENTITY % transition-types "(barWipe|boxWipe|fourBoxWipe|barnDoorWipe|+diagonalWipe|bowTieWipe|miscDiagonalWipe|veeWipe|barnVeeWipe|zigZagWipe|+barnZigZagWipe|miscShapeWipe|triangleWipe|arrowHeadWipe|pentagonWipe|+hexagonWipe|ellipseWipe|eyeWipe|roundRectWipe|starWipe|clockWipe|+pinWheelWipe|singleSweepWipe|fanWipe|doubleFanWipe|doubleSweepWipe|+saloonDoorWipe|windshieldWipe|snakeWipe|spiralWipe|parallelSnakesWipe|+boxSnakesWipe|waterfallWipe|pushWipe|slideWipe|fade)"+>++<!ENTITY % transition-subtypes "(bottom+|bottomCenter|bottomLeft|bottomLeftClockwise|bottomLeftCounterClockwise|+bottomLeftDiagonal|bottomRight|bottomRightClockwise|+bottomRightCounterClockwise|bottomRightDiagonal|centerRight|centerTop|+circle|clockwiseBottom|clockwiseBottomRight|clockwiseLeft|clockwiseNine|+clockwiseRight|clockwiseSix|clockwiseThree|clockwiseTop|clockwiseTopLeft|+clockwiseTwelve|cornersIn|cornersOut|counterClockwiseBottomLeft|+counterClockwiseTopRight|crossfade|diagonalBottomLeft|+diagonalBottomLeftOpposite|diagonalTopLeft|diagonalTopLeftOpposite|+diamond|doubleBarnDoor|doubleDiamond|down|fadeFromColor|fadeToColor|+fanInHorizontal|fanInVertical|fanOutHorizontal|fanOutVertical|fivePoint|+fourBlade|fourBoxHorizontal|fourBoxVertical|fourPoint|fromBottom|fromLeft|+fromRight|fromTop|heart|horizontal|horizontalLeft|horizontalLeftSame|+horizontalRight|horizontalRightSame|horizontalTopLeftOpposite|+horizontalTopRightOpposite|keyhole|left|leftCenter|leftToRight|+oppositeHorizontal|oppositeVertical|parallelDiagonal|+parallelDiagonalBottomLeft|parallelDiagonalTopLeft|+parallelVertical|rectangle|right|rightCenter|sixPoint|top|topCenter|+topLeft|topLeftClockwise|topLeftCounterClockwise|topLeftDiagonal|+topLeftHorizontal|topLeftVertical|topRight|topRightClockwise|+topRightCounterClockwise|topRightDiagonal|topToBottom|twoBladeHorizontal|+twoBladeVertical|twoBoxBottom|twoBoxLeft|twoBoxRight|twoBoxTop|up|+vertical|verticalBottomLeftOpposite|verticalBottomSame|verticalLeft|+verticalRight|verticalTopLeftOpposite|verticalTopSame)"+>+++<!ENTITY % transition-attrs '+ type %transition-types; #IMPLIED+ subtype %transition-subtypes; #IMPLIED+ horzRepeat CDATA "0"+ vertRepeat CDATA "0"+ borderWidth CDATA "0"+ borderColor CDATA "black"+ fadeColor CDATA "black"+ coordinated (true|false) "false" + clibBoundary (parent|children) "children" +'>++<!ENTITY % transition.attrib "">+<!ENTITY % transition.content "EMPTY">+<!ENTITY % transition.qname "transition">+<!ELEMENT %transition.qname; %transition.content;>+<!ATTLIST %transition.qname; %transition.attrib;+ %Core.attrib;+ %I18n.attrib;+ %transition-attrs;+ dur CDATA #IMPLIED+ startProgress CDATA "0.0"+ endProgress CDATA "1.0"+ direction (forward|reverse) "forward"+>++<!ENTITY % transitionFilter.attrib "">+<!ENTITY % transitionFilter.content "EMPTY">+<!ENTITY % transitionFilter.qname "transitionFilter">+<!ELEMENT %transitionFilter.qname; %transitionFilter.content;>+<!ATTLIST %transitionFilter.qname; %transitionFilter.attrib;+ %Core.attrib;+ %I18n.attrib;+ %transition-attrs;+ %BasicInlineTiming.attrib;+ %BasicAnimation.attrib;+ calcMode (discrete|linear|paced) 'linear'+>+ +<!-- end of SMIL-transition.mod -->
+ examples/SMIL/SMIL20.dtd view
@@ -0,0 +1,108 @@+<!-- ....................................................................... -->+<!-- SMIL 2.0 DTD ......................................................... -->+<!-- file: SMIL20.dtd +-->+<!-- SMIL 2.0 DTD++ This is SMIL 2.0.++ Copyright 1998-2000 World Wide Web Consortium+ (Massachusetts Institute of Technology, Institut National de+ Recherche en Informatique et en Automatique, Keio University).+ All Rights Reserved.++ Permission to use, copy, modify and distribute the SMIL 2.0 DTD and+ its accompanying documentation for any purpose and without fee is+ hereby granted in perpetuity, provided that the above copyright notice+ and this paragraph appear in all copies. The copyright holders make+ no representation about the suitability of the DTD for any purpose.++ It is provided "as is" without expressed or implied warranty.++ Author: Jacco van Ossenbruggen+ Revision: $Id: SMIL20.dtd,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $++-->+<!-- This is the driver file for the SMIL 2.0 DTD.++ Please use this formal public identifier to identify it:++ "-//W3C//DTD SMIL 2.0//EN"+-->++<!ENTITY % NS.prefixed "IGNORE" >+<!ENTITY % SMIL.prefix "" >++<!-- Define the Content Model -->+<!ENTITY % smil-model.mod+ PUBLIC "-//W3C//ENTITIES SMIL 2.0 Document Model 1.0//EN"+ "smil-model-1.mod" >++<!-- Modular Framework Module ................................... -->+<!ENTITY % smil-framework.module "INCLUDE" >+<![%smil-framework.module;[+<!ENTITY % smil-framework.mod+ PUBLIC "-//W3C//ENTITIES SMIL 2.0 Modular Framework 1.0//EN"+ "smil-framework-1.mod" >+%smil-framework.mod;]]>++<!-- The SMIL 2.0 Profile includes the following sections:+ C. The SMIL Animation Module + D. The SMIL Content Control Module + G. The SMIL Layout Module + H. The SMIL Linking Module + I. The SMIL Media Object Module + J. The SMIL Metainformation Module + K. The SMIL Structure Module + L. The SMIL Timing and Synchronization Module + M. Integrating SMIL Timing into other XML-Based Languages + P. The SMIL Transition effects Module ++ The SMIL Streaming Media Object Module is optional.+-->++<!ENTITY % streamingmedia.model "IGNORE">+<![%streamingmedia.model;[+ <!ENTITY % streaming-mod + PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Streaming Media Objects//EN" + "SMIL-streamingmedia.mod">+ %streaming-mod;+]]>++<!ENTITY % anim-mod + PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Animation//EN" + "SMIL-anim.mod">+<!ENTITY % control-mod + PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Content Control//EN" + "SMIL-control.mod">+<!ENTITY % layout-mod + PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Layout//EN" + "SMIL-layout.mod">+<!ENTITY % link-mod + PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Linking//EN" + "SMIL-link.mod">+<!ENTITY % media-mod + PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Media Objects//EN" + "SMIL-media.mod">+<!ENTITY % meta-mod + PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Document Metainformation//EN" + "SMIL-metainformation.mod">+<!ENTITY % struct-mod + PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Document Structure//EN" + "SMIL-struct.mod">+<!ENTITY % timing-mod + PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Timing//EN" + "SMIL-timing.mod">+<!ENTITY % transition-mod + PUBLIC "-//W3C//ELEMENTS SMIL 2.0 Transition//EN"+ "SMIL-transition.mod">++%struct-mod;+%anim-mod;+%control-mod;+%meta-mod;+%layout-mod;+%link-mod;+%media-mod;+%timing-mod;+%transition-mod;
+ examples/SMIL/smil-attribs-1.mod view
@@ -0,0 +1,205 @@+<!-- ...................................................................... -->+<!-- SMIL 2.0 Common Attributes Module ................................... -->+<!-- file: smil-attribs-1.mod++ This is SMIL 2.0.+ Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.+ Revision: $Id: smil-attribs-1.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ENTITIES SMIL 2.0 Common Attributes 1.0//EN"+ SYSTEM "smil-attribs-1.mod"++ ...................................................................... -->++<!-- Common Attributes++ This module declares the common attributes for the SMIL DTD Modules.+-->++<!ENTITY % SMIL.pfx "">++<!ENTITY % Id.attrib+ "%SMIL.pfx;id ID #IMPLIED"+>++<!ENTITY % Class.attrib+ "%SMIL.pfx;class CDATA #IMPLIED"+>++<!ENTITY % Title.attrib+ "%SMIL.pfx;title %Text; #IMPLIED"+>++<!ENTITY % Core.extra.attrib "" >++<!ENTITY % Core.attrib+ "%Id.attrib;+ %Class.attrib;+ %Title.attrib;+ %Core.extra.attrib;"+>++<!ENTITY % I18n.extra.attrib "" >+<!ENTITY % I18n.attrib "+ xml:lang %LanguageCode; #IMPLIED+ %I18n.extra.attrib;"+>++<!-- ================== BasicLayout ======================================= -->+<!ENTITY % Region.attrib "+ %SMIL.pfx;region CDATA #IMPLIED+">++<!ENTITY % Fill.attrib "+ %SMIL.pfx;fill (remove|freeze|hold|transition) #IMPLIED+">++<!-- ================== HierarchicalLayout ======================================= -->+<!ENTITY % BackgroundColor.attrib "+ %SMIL.pfx;backgroundColor CDATA #IMPLIED+">+<!ENTITY % BackgroundColor-deprecated.attrib "+ %SMIL.pfx;background-color CDATA #IMPLIED+">++<!ENTITY % Sub-region.attrib "+ %SMIL.pfx;top CDATA 'auto'+ %SMIL.pfx;bottom CDATA 'auto'+ %SMIL.pfx;left CDATA 'auto'+ %SMIL.pfx;right CDATA 'auto'+">++<!ENTITY % Fit.attrib "+ %SMIL.pfx;fit (hidden|fill|meet|scroll|slice) 'hidden'+">++<!-- ================ Registration Point attribute for media elements ============ -->+<!-- integrating language using HierarchicalLayout must include regPoint -->+<!-- attribute on media elements for regPoint elements to be useful -->++<!ENTITY % RegistrationPoint.attrib "+ %SMIL.pfx;regPoint CDATA #IMPLIED+ %SMIL.pfx;regAlign (topLeft|topMid|topRight|midLeft|center|+ midRight|bottomLeft|bottomMid|bottomRight) #IMPLIED+">++<!--=================== Content Control =======================-->+<!-- customTest Attribute -->+<!ENTITY % CustomTest.attrib "+ %SMIL.pfx;customTest IDREF #IMPLIED+">++<!-- ========================= SkipContentControl Module ========================= -->+<!ENTITY % skipContent.attrib "+ %SMIL.pfx;skip-content (true|false) 'true'+">++<!-- Switch Parameter Attributes --> ++<!ENTITY % System.attrib "+ %CustomTest.attrib;+ %SMIL.pfx;systemBitrate CDATA #IMPLIED+ %SMIL.pfx;systemCaptions (on|off) #IMPLIED+ %SMIL.pfx;systemLanguage CDATA #IMPLIED+ %SMIL.pfx;systemOverdubOrSubtitle (overdub|subtitle) #IMPLIED+ %SMIL.pfx;systemRequired NMTOKEN #IMPLIED+ %SMIL.pfx;systemScreenSize CDATA #IMPLIED+ %SMIL.pfx;systemScreenDepth CDATA #IMPLIED+ %SMIL.pfx;systemAudioDesc (on|off) #IMPLIED+ %SMIL.pfx;systemOperatingSystem NMTOKEN #IMPLIED+ %SMIL.pfx;systemCPU NMTOKEN #IMPLIED+ %SMIL.pfx;systemComponent CDATA #IMPLIED++ %SMIL.pfx;system-bitrate CDATA #IMPLIED+ %SMIL.pfx;system-captions (on|off) #IMPLIED+ %SMIL.pfx;system-language CDATA #IMPLIED+ %SMIL.pfx;system-overdub-or-caption (overdub|caption) #IMPLIED+ %SMIL.pfx;system-required NMTOKEN #IMPLIED+ %SMIL.pfx;system-screen-size CDATA #IMPLIED+ %SMIL.pfx;system-screen-depth CDATA #IMPLIED+">++<!-- SMIL Animation Module ================================================ -->+<!ENTITY % BasicAnimation.attrib "+ %SMIL.pfx;values CDATA #IMPLIED+ %SMIL.pfx;from CDATA #IMPLIED+ %SMIL.pfx;to CDATA #IMPLIED+ %SMIL.pfx;by CDATA #IMPLIED+">++<!-- SMIL Timing Module =================================================== -->+<!ENTITY % BasicInlineTiming.attrib "+ %SMIL.pfx;dur %TimeValue; #IMPLIED+ %SMIL.pfx;repeatCount %TimeValue; #IMPLIED+ %SMIL.pfx;repeatDur %TimeValue; #IMPLIED+ %SMIL.pfx;begin %TimeValue; #IMPLIED+ %SMIL.pfx;end %TimeValue; #IMPLIED+">++<!ENTITY % MinMaxTiming.attrib "+ %SMIL.pfx;min %TimeValue; #IMPLIED+ %SMIL.pfx;max %TimeValue; #IMPLIED+">++<!ENTITY % BasicInlineTiming-deprecated.attrib "+ %SMIL.pfx;repeat %TimeValue; #IMPLIED+">++<!ENTITY % BasicTimeContainers.attrib "+ %SMIL.pfx;endsync (first|last|all|IDREF) 'last'+ %Fill.attrib;+">++<!ENTITY % TimeContainerAttributes.attrib "+ %SMIL.pfx;timeAction CDATA #IMPLIED+ %SMIL.pfx;timeContainer CDATA #IMPLIED+">++<!ENTITY % RestartTiming.attrib "+ %SMIL.pfx;restart (always|whenNotActive|never) 'always'+">++<!ENTITY % RestartDefaultTiming.attrib "+ %SMIL.pfx;restartDefault (inherit|always|never|whenNotActive) 'always'+">++<!ENTITY % SyncBehavior.attrib "+ %SMIL.pfx;syncBehavior (canSlip|locked|independent) #IMPLIED+ %SMIL.pfx;syncTolerence %TimeValue; #IMPLIED+">++<!ENTITY % SyncBehaviorDefault.attrib "+ %SMIL.pfx;syncBehaviorDefault (canSlip|locked|independent) #IMPLIED+ %SMIL.pfx;syncToleranceDefault %TimeValue; #IMPLIED+">++<!ENTITY % SyncMaster.attrib "+ %SMIL.pfx;syncMaster (true|false) 'false'+">++<!-- ================== Time Manipulations ================================= -->+<!ENTITY % TimeManipulations.attrib "+ %SMIL.pfx;accelerate %Number; '0'+ %SMIL.pfx;decelerate %Number; '0'+ %SMIL.pfx;autoReverse (true|false) 'false'+ %SMIL.pfx;speed %Number; '1.0'+">++<!-- ================== Streaming Media ==================================== -->+<!ENTITY % Streaming-media.attrib "+ %SMIL.pfx;port CDATA #IMPLIED+ %SMIL.pfx;rtpformat CDATA #IMPLIED+ %SMIL.pfx;transport CDATA #IMPLIED+">++<!ENTITY % Streaming-timecontainer.attrib "+ %SMIL.pfx;control CDATA #IMPLIED+">++<!-- ================== Transitions Media ================================== -->+<!ENTITY % Transition.attrib "+ %SMIL.pfx;transIn IDREF #IMPLIED+ %SMIL.pfx;transOut IDREF #IMPLIED+">
+ examples/SMIL/smil-datatypes-1.mod view
@@ -0,0 +1,41 @@+<!-- ...................................................................... -->+<!-- SMIL 2.0 Datatypes Module ........................................... -->+<!-- file: smil-datatypes-1.mod++ This is SMIL 2.0.+ Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.+ Revision: $Id: smil-datatypes-1.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ENTITIES SMIL 2.0 Datatypes 1.0//EN"+ SYSTEM "smil-datatypes-1.mod"++ ....................................................................... -->++<!-- Datatypes++ defines containers for the following datatypes, many of+ these imported from other specifications and standards.+-->++<!ENTITY % Character "CDATA">+ <!-- a single character from [ISO10646] -->+<!ENTITY % ContentType "CDATA">+ <!-- media type, as per [RFC2045] -->+<!ENTITY % LanguageCode "NMTOKEN">+ <!-- a language code, as per [RFC1766] -->+<!ENTITY % LanguageCodes "CDATA">+ <!-- comma-separated list of language codes, as per [RFC1766] -->+<!ENTITY % Number "CDATA">+ <!-- one or more digits -->+<!ENTITY % Script "CDATA">+ <!-- script expression -->+<!ENTITY % Text "CDATA">+ <!-- used for titles etc. -->+<!ENTITY % TimeValue "CDATA">+ <!-- a Number, possibly with its dimension, or a reserved + word like 'indefinite' -->+<!ENTITY % URI.datatype "CDATA" >+<!ENTITY % URI "CDATA" >+ <!-- used for URI references -->
+ examples/SMIL/smil-framework-1.mod view
@@ -0,0 +1,67 @@+<!-- ...................................................................... -->+<!-- SMIL 2.0 Modular Framework Module ................................... -->+<!-- file: smil-framework-1.mod++ This is SMIL 2.0.+ Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ENTITIES SMIL 2.0 Modular Framework 1.0//EN"+ SYSTEM "smil-framework-1.mod"++ Revision: $Id: smil-framework-1.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $+ ....................................................................... -->++<!-- Modular Framework++ This required module instantiates the modules needed+ to support the SMIL 2.0 modularization model, including:++ + datatypes+ + namespace-qualified names+ + common attributes+ + document model++ The Intrinsic Events module is ignored by default but+ occurs in this module because it must be instantiated+ prior to Attributes but after Datatypes.+-->++<!-- The (still to be determined) SMIL namespace: -->+<!ENTITY % SMIL.ns "'http://www.w3.org/TR/REC-smil/SMIL20'">++<!ENTITY % smil-datatypes.module "INCLUDE" >+<![%smil-datatypes.module;[+<!ENTITY % smil-datatypes.mod+ PUBLIC "-//W3C//ENTITIES SMIL 2.0 Datatypes 1.0//EN"+ "smil-datatypes-1.mod" >+%smil-datatypes.mod;]]>++<!ENTITY % smil-qname.module "INCLUDE" >+<![%smil-qname.module;[+<!ENTITY % smil-qname.mod+ PUBLIC "-//W3C//ENTITIES SMIL 2.0 Qualified Names 1.0//EN"+ "smil-qname-1.mod" >+%smil-qname.mod;]]>++<!ENTITY % smil-events.module "IGNORE" >+<![%smil-events.module;[+<!ENTITY % smil-events.mod+ PUBLIC "-//W3C//ENTITIES SMIL 2.0 Intrinsic Events 1.0//EN"+ "smil-events-1.mod" >+%smil-events.mod;]]>++<!ENTITY % smil-attribs.module "INCLUDE" >+<![%smil-attribs.module;[+<!ENTITY % smil-attribs.mod+ PUBLIC "-//W3C//ENTITIES SMIL 2.0 Common Attributes 1.0//EN"+ "smil-attribs-1.mod" >+%smil-attribs.mod;]]>++<!ENTITY % smil-model.module "INCLUDE" >+<![%smil-model.module;[+<!-- A content model MUST be defined by the driver file -->+%smil-model.mod;]]>++<!-- end of smil-framework-1.mod -->
+ examples/SMIL/smil-model-1.mod view
@@ -0,0 +1,223 @@+<!-- .................................................................... -->+<!-- SMIL 2.0 Document Model Module ..................................... -->+<!-- file: smil-model-1.mod++ This is SMIL 2.0.+ Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ENTITIES SMIL 2.0 Document Model 1.0//EN"+ SYSTEM "smil-model-1.mod"++ Author: Warner ten Kate, Jacco van Ossenbruggen, Aaron Cohen+ Revision: $Id: smil-model-1.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $+ ....................................................................... -->++<!--+ This file defines the SMIL 2.0 Language Document Model.+ All attributes and content models are defined in the second+ half of this file. We first start with some utility definitions.+ These are mainly used to simplify the use of Modules in the+ second part of the file.++-->+<!-- ================== Util: Head ========================================= -->+<!ENTITY % head-meta.content "metadata?,meta*">+<!ENTITY % head-layout.content "layout|switch">+<!ENTITY % head-control.content "customAttributes">+<!ENTITY % head-transition.content "transition+, meta*">++<!--=================== Util: Body - Content Control ======================= -->+<!ENTITY % content-control "switch|prefetch">++<!--=================== Util: Body - Animation ========================= -->+<!ENTITY % animation.elements "animate|set|animateMotion|animateColor">++<!--=================== Util: Body - Media ========================= -->++<!ENTITY % media-object "audio|video|animation|text|img|textstream|ref|brush+ |%animation.elements;">++<!--=================== Util: Body - Timing ================================ -->+<!ENTITY % BasicTimeContainers.class "par|seq">+<!ENTITY % ExclTimeContainers.class "excl">+<!ENTITY % timecontainer.class+ "%BasicTimeContainers.class;|%ExclTimeContainers.class;">+<!ENTITY % timecontainer.content+ "%timecontainer.class;|%media-object;|%content-control;|a">++<!ENTITY % smil-time.attrib "+ %BasicInlineTiming.attrib;+ %MinMaxTiming.attrib;+ %RestartTiming.attrib;+ %SyncBehavior.attrib;+ %SyncBehaviorDefault.attrib;+ %BasicInlineTiming-deprecated.attrib;+ %Fill.attrib;+">++<!ENTITY % timecontainer.attrib "+ %BasicInlineTiming.attrib;+ %MinMaxTiming.attrib;+ %BasicTimeContainers.attrib;+ %RestartTiming.attrib;+ %SyncBehavior.attrib;+ %SyncBehaviorDefault.attrib;+ %BasicInlineTiming-deprecated.attrib;+ %System.attrib;+">++<!-- ====================================================================== -->+<!-- ====================================================================== -->+<!-- ====================================================================== -->++<!-- + The actual content model and attribute definitions for each module + sections follow below.+-->++<!-- ================== Content Control =================================== -->+<!ENTITY % BasicContentControl.module "INCLUDE">+<!ENTITY % CustomTestAttributes.module "INCLUDE">+<!ENTITY % PrefetchControl.module "INCLUDE">+<!ENTITY % SkipContentControl.module "INCLUDE">++<!ENTITY % switch.content "(layout|%timecontainer.class;|%media-object;|+ %content-control;|a)*">+<!ENTITY % prefetch.content "%switch.content;">+<!ENTITY % customAttributes.content "(customTest)+">++<!ENTITY % switch.attrib "%System.attrib; %skipContent.attrib;">+<!ENTITY % prefetch.attrib "%timecontainer.attrib; %skipContent.attrib; ">+<!ENTITY % customAttributes.attrib "%skipContent.attrib;">+<!ENTITY % customTest.attrib "%skipContent.attrib;">++<!-- ================== Animation ========================================= -->+<!ENTITY % BasicAnimation.module "INCLUDE">++<!-- choose targetElement or XLink: -->+<!ENTITY % animation-targetElement "INCLUDE">+<!ENTITY % animation-XLinkTarget "IGNORE">++<!ENTITY % animate.content "EMPTY">+<!ENTITY % animateColor.content "EMPTY">+<!ENTITY % animateMotion.content "EMPTY">+<!ENTITY % set.content "EMPTY">++<!ENTITY % animate.attrib "%skipContent.attrib;">+<!ENTITY % animateColor.attrib "%skipContent.attrib;">+<!ENTITY % animateMotion.attrib "%skipContent.attrib;">+<!ENTITY % set.attrib "%skipContent.attrib;">++<!-- ================== Layout ============================================ -->+<!ENTITY % BasicLayout.module "INCLUDE">+<!ENTITY % AudioLayout.module "INCLUDE">+<!ENTITY % MultiWindowLayout.module "INCLUDE">+<!ENTITY % HierarchicalLayout.module "INCLUDE">++<!ENTITY % layout.content "(region|viewport|root-layout|regPoint)*">+<!ENTITY % region.content "(region)*">+<!ENTITY % rootlayout.content "(region)*">+<!ENTITY % viewport.content "(region)*">+<!ENTITY % regPoint.content "EMPTY">++<!ENTITY % rootlayout.attrib "%skipContent.attrib;">+<!ENTITY % viewport.attrib "%skipContent.attrib;">+<!ENTITY % region.attrib "%skipContent.attrib;">+<!ENTITY % regPoint.attrib "%skipContent.attrib;">++<!-- ================== Linking =========================================== -->+<!ENTITY % LinkingAttributes.module "INCLUDE">+<!ENTITY % BasicLinking.module "INCLUDE">+<!ENTITY % ObjectLinking.module "INCLUDE">++<!ENTITY % a.content "(%timecontainer.class;|%media-object;|+ %content-control;)*">+<!ENTITY % area.content "EMPTY">+<!ENTITY % anchor.content "EMPTY">++<!ENTITY % a.attrib "%smil-time.attrib;">+<!ENTITY % area.attrib "%smil-time.attrib; %skipContent.attrib;"> +<!ENTITY % anchor.attrib "%smil-time.attrib; %skipContent.attrib;"> ++<!-- ================== Media ============================================ -->+<!ENTITY % BasicMedia.module "INCLUDE">+<!ENTITY % MediaClipping.module "INCLUDE">+<!ENTITY % MediaClipping.deperecated.module "INCLUDE">+<!ENTITY % MediaClipMarkers.module "INCLUDE">+<!ENTITY % MediaParam.module "INCLUDE">+<!ENTITY % BrushMedia.module "INCLUDE">+<!ENTITY % MediaAccessibility.module "INCLUDE">++<!ENTITY % media-object.content "(%animation.elements;|anchor|area+ |transitionFilter|param)*">+<!ENTITY % media-object.attrib "+ %smil-time.attrib;+ %System.attrib;+ %Region.attrib;+ %Transition.attrib;+ %BackgroundColor.attrib;+ %BackgroundColor-deprecated.attrib;+ %Sub-region.attrib;+ %RegistrationPoint.attrib;+ %Fit.attrib;+">++<!ENTITY % brush.attrib "%skipContent.attrib;">++<!-- ================== Metadata ========================================== -->+<!ENTITY % meta.content "EMPTY">+<!ENTITY % meta.attrib "%skipContent.attrib;">++<!ENTITY % metadata.content "EMPTY">+<!ENTITY % metadata.attrib "%skipContent.attrib;">++<!-- ================== Structure ========================================= -->+<!ENTITY % Structure.module "INCLUDE">+<!ENTITY % smil.content "(head?,body?)">+<!ENTITY % head.content "+ ((%head-meta.content;)?,+ ((%head-layout.content;),meta*)?,+ (%head-transition.content;)?,+ ((%head-control.content;),meta*)?)">+<!ENTITY % body.content "(%timecontainer.class;|%media-object;|+ %content-control;|a)*">++<!ENTITY % body.attrib "%timecontainer.attrib; %Region.attrib;">++<!-- ================== Transitions ======================================= -->+<!ENTITY % BasicTransitions.module "INCLUDE">+<!ENTITY % MultiElementTransitions.module "INCLUDE">++<!ENTITY % transition.content "(transitionFilter*)">+<!ENTITY % transition.attrib "%skipContent.attrib;">+<!ENTITY % transitionFilter.attrib "%skipContent.attrib;">++<!-- ================== Timing ============================================ -->+<!ENTITY % BasicInlineTiming.module "INCLUDE">+<!ENTITY % SyncbaseTiming.module "INCLUDE">+<!ENTITY % EventTiming.module "INCLUDE">+<!ENTITY % WallclockTiming.module "INCLUDE">+<!ENTITY % MultiSyncArcTiming.module "INCLUDE">+<!ENTITY % MediaMarkerTiming.module "INCLUDE">+<!ENTITY % MinMaxTiming.module "INCLUDE">+<!ENTITY % BasicTimeContainers.module "INCLUDE">+<!ENTITY % ExclTimeContainers.module "INCLUDE">+<!ENTITY % PrevTiming.module "INCLUDE">+<!ENTITY % RestartTiming.module "INCLUDE">+<!ENTITY % SyncBehavior.module "INCLUDE">+<!ENTITY % SyncBehaviorDefault.module "INCLUDE">+<!ENTITY % RestartDefault.module "INCLUDE">+<!ENTITY % FillDefault.module "INCLUDE">++<!ENTITY % par.attrib "%timecontainer.attrib; %Region.attrib;">+<!ENTITY % seq.attrib "%timecontainer.attrib; %Region.attrib;">+<!ENTITY % excl.attrib "%timecontainer.attrib; %Region.attrib; %skipContent.attrib;">++<!ENTITY % par.content "(%timecontainer.content;)*">+<!ENTITY % seq.content "(%timecontainer.content;)*">+<!ENTITY % excl.content "((%timecontainer.content;)*|priorityClass+)">++<!ENTITY % priorityClass.attrib "%skipContent.attrib;">+<!ENTITY % priorityClass.content "((%timecontainer.content;)*|priorityClass+)">
+ examples/SMIL/smil-qname-1.mod view
@@ -0,0 +1,164 @@+<!-- ....................................................................... -->+<!-- SMIL Qualified Names Module .......................................... -->+<!-- file: smil-qname-1.mod++ This is SMIL.+ Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.+ Revision: $Id: smil-qname-1.mod,v 1.1.1.1 2002/03/19 12:29:24 malcolm Exp $ SMI++ This DTD module is identified by the PUBLIC and SYSTEM identifiers:++ PUBLIC "-//W3C//ENTITIES SMIL Qualified Names 1.0//EN"+ SYSTEM "smil-qname-1.mod"++ ....................................................................... -->++<!-- SMIL Qualified Names++ This module is contained in two parts, labeled Section 'A' and 'B':++ Section A declares parameter entities to support namespace-+ qualified names, namespace declarations, and name prefixing + for SMIL and extensions.+ + Section B declares parameter entities used to provide+ namespace-qualified names for all SMIL element types:++ %animation.qname; the xmlns-qualified name for <animation>+ %video.qname; the xmlns-qualified name for <video>+ ...++ SMIL extensions would create a module similar to this one, + using the '%smil-qname-extra.mod;' parameter entity to insert + it within Section A. A template module suitable for this purpose + ('template-qname-1.mod') is included in the XHTML distribution.+-->++<!-- Section A: SMIL XML Namespace Framework :::::::::::::::::::: -->++<!-- 1. Declare the two parameter entities used to support XLink,+ first the parameter entity container for the URI used to+ identify the XLink namespace:+-->+<!ENTITY % XLINK.xmlns "http://www.w3.org/1999/xlink" >++<!-- This contains the XLink namespace declaration attribute.+-->+<!ENTITY % XLINK.xmlns.attrib+ "xmlns:xlink %URI.datatype; #FIXED '%XLINK.xmlns;'"+>++<!-- 2. Declare parameter entities (eg., %SMIL.xmlns;) containing + the namespace URI for the SMIL namespace, and any namespaces+ included by SMIL:+-->++<!ENTITY % SMIL.xmlns "http://www.w3.org/TR/REC-smil/SMIL20" >++<!-- 3. Declare parameter entities (eg., %SMIL.prefix;) containing+ the default namespace prefix string(s) to use when prefixing + is enabled. This may be overridden in the DTD driver or the+ internal subset of an document instance.++ NOTE: As specified in [XMLNAMES], the namespace prefix serves + as a proxy for the URI reference, and is not in itself significant.+-->+<!ENTITY % SMIL.prefix "" >++<!-- 4. Declare a %SMIL.prefixed; conditional section keyword, used+ to activate namespace prefixing. The default value should + inherit '%NS.prefixed;' from the DTD driver, so that unless + overridden, the default behaviour follows the overall DTD + prefixing scheme.+-->+<!ENTITY % NS.prefixed "IGNORE" >+<!ENTITY % SMIL.prefixed "%NS.prefixed;" >++<!-- 5. Declare parameter entities (eg., %SMIL.pfx;) containing the + colonized prefix(es) (eg., '%SMIL.prefix;:') used when + prefixing is active, an empty string when it is not.+-->+<![%SMIL.prefixed;[+<!ENTITY % SMIL.pfx "%SMIL.prefix;:" >+]]>+<!ENTITY % SMIL.pfx "" >+++<!-- declare qualified name extensions here -->+<!ENTITY % smil-qname-extra.mod "" >+%smil-qname-extra.mod;++<!-- 6. The parameter entity %SMIL.xmlns.extra.attrib; may be+ redeclared to contain any non-SMIL namespace declaration + attributes for namespaces embedded in SMIL. The default + is an empty string. XLink should be included here if used + in the DTD and not already included by a previously-declared + %*.xmlns.extra.attrib;.+-->+<!ENTITY % SMIL.xmlns.extra.attrib "" >++<!-- 7. The parameter entity %NS.prefixed.attrib; is defined to be+ the prefix for SMIL elements if any and whatever is in+ SMIL.xmlns.extra.attrib.+-->+<![%SMIL.prefixed;[+<!ENTITY % NS.prefixed.attrib+ "xmlns:%SMIL.prefix; %URI.datatype; #FIXED '%SMIL.xmlns;'+ %SMIL.xmlns.extra.attrib; " >+]]>+<!ENTITY % NS.prefixed.attrib "%SMIL.xmlns.extra.attrib;" >+++<!-- Section B: SMIL Qualified Names ::::::::::::::::::::::::::::: -->++<!-- This section declares parameter entities used to provide+ namespace-qualified names for all SMIL element types.+-->++<!ENTITY % animate.qname "%SMIL.pfx;animate" >+<!ENTITY % set.qname "%SMIL.pfx;set" >+<!ENTITY % animateMotion.qname "%SMIL.pfx;animateMotion" >+<!ENTITY % animateColor.qname "%SMIL.pfx;animateColor" >++<!ENTITY % switch.qname "%SMIL.pfx;switch" >+<!ENTITY % customTest.qname "%SMIL.pfx;customTest" >+<!ENTITY % customAttributes.qname "%SMIL.pfx;customAttributes" >+<!ENTITY % prefetch.qname "%SMIL.pfx;prefetch" >++<!ENTITY % layout.qname "%SMIL.pfx;layout" >+<!ENTITY % region.qname "%SMIL.pfx;region" >+<!ENTITY % root-layout.qname "%SMIL.pfx;root-layout" >+<!ENTITY % viewport.qname "%SMIL.pfx;viewport" >+<!ENTITY % regPoint.qname "%SMIL.pfx;regPoint" >++<!ENTITY % a.qname "%SMIL.pfx;a" >+<!ENTITY % area.qname "%SMIL.pfx;area" >+<!ENTITY % anchor.qname "%SMIL.pfx;anchor" >++<!ENTITY % ref.qname "%SMIL.pfx;ref" >+<!ENTITY % audio.qname "%SMIL.pfx;audio" >+<!ENTITY % img.qname "%SMIL.pfx;img" >+<!ENTITY % video.qname "%SMIL.pfx;video" >+<!ENTITY % text.qname "%SMIL.pfx;text" >+<!ENTITY % textstream.qname "%SMIL.pfx;textstream" >+<!ENTITY % animation.qname "%SMIL.pfx;animation" >+<!ENTITY % param.qname "%SMIL.pfx;param" >+<!ENTITY % brush.qname "%SMIL.pfx;brush" >++<!ENTITY % meta.qname "%SMIL.pfx;meta" >+<!ENTITY % metadata.qname "%SMIL.pfx;metadata" >++<!ENTITY % rtpmap.qname "%SMIL.pfx;rtpmap" >++<!ENTITY % smil.qname "%SMIL.pfx;smil" >+<!ENTITY % head.qname "%SMIL.pfx;head" >+<!ENTITY % body.qname "%SMIL.pfx;body" >++<!ENTITY % seq.qname "%SMIL.pfx;seq" >+<!ENTITY % par.qname "%SMIL.pfx;par" >+<!ENTITY % excl.qname "%SMIL.pfx;excl" >++<!ENTITY % transition.qname "%SMIL.pfx;transition" >+<!ENTITY % transitionFilter.qname "%SMIL.pfx;transitionFilter" >++<!-- end of smil-qname-1.mod -->
+ examples/SimpleTest.hs view
@@ -0,0 +1,43 @@+module Main where++import List (isPrefixOf)+import Text.XML.HaXml.Haskell2Xml+import Text.XML.HaXml.Types+import Text.PrettyPrint.HughesPJ (render)+import Text.XML.HaXml.Pretty (document)++-- Test stuff+value1 :: ([(Bool,Int)],(String,Maybe Char))+value1 = ([(True,42),(False,0)],("Hello World",Just 'x'))++data MyType a = ConsA Int a+ | ConsB String deriving Eq+ {-! derive : Haskell2Xml !-}+++instance Haskell2Xml a => Haskell2Xml (MyType a) where+ toHType v = Defined "MyType" [toHType a]+ [Constr "ConsA" [toHType a] [Prim "Int" "int", toHType a]+ ,Constr "ConsB" [] [String]+ ]+ where (ConsA _ a) = v+ toContents v@(ConsA n a) = [mkElemC (showConstr 0 (toHType v))+ (concat [toContents n, toContents a])]+ toContents v@(ConsB s) = [mkElemC (showConstr 1 (toHType v)) (toContents s)]+ fromContents (CElem (Elem constr [] cs) : etc)+ | "ConsA-" `isPrefixOf` constr =+ (\(i,cs')-> (\(a,_) -> (ConsA i a,etc))+ (fromContents cs')) (fromContents cs)+ | "ConsB" `isPrefixOf` constr =+ (\(s,_)-> (ConsB s, etc)) (fromContents cs)+++value2 :: (MyType [Int], MyType ())+value2 = (ConsA 2 [42,0], ConsB "hello world")++--main = do (putStrLn . render . document . toXml) value2++main = putStrLn+ (if value2 == (fst . fromContents . toContents) value2 then "success"+ else "failure")+
+ examples/SimpleTestBool.hs view
@@ -0,0 +1,16 @@+module Main where++import List (isPrefixOf)+import Text.XML.HaXml.Haskell2Xml+import Text.XML.HaXml.Types+import Text.PrettyPrint.HughesPJ (render)+import Text.XML.HaXml.Pretty (document)++-- Test stuff+--value1 :: ([(Bool,Int)],(String,Maybe Char))+value1 = True++--main = do (putStrLn . render . document . toXml) value2++main = fWriteXml "/dev/tty" value1+
+ examples/SimpleTestD.hs view
@@ -0,0 +1,103 @@+module Main where++import IO+import System (getArgs)+--import List (isPrefixOf)++import Text.XML.HaXml.Haskell2Xml++-- Test stuff+data MyType a = ConsA Int a+ | ConsB String+ {-! derive : Haskell2Xml !-}++instance Eq a => Eq (MyType a) where+ (ConsA a b) == (ConsA c d) = a==c && b==d+ (ConsB e) == (ConsB f) = e `isPrefixOf` f || f `isPrefixOf` e+ _ == _ = False++{-+-- Hand-written example of preferred instance declaration.+instance Haskell2Xml a => Haskell2Xml (MyType a) where+ toHType v = Defined "MyType" [toHType a]+ [Constr "ConsA" [toHType a] [Prim "Int" "int", toHType a]+ ,Constr "ConsB" [] [String]+ ]+ where (ConsA _ a) = v+ toContents v@(ConsA n a) = [mkElemC (showConstr 0 (toHType v))+ (concat [toContents n, toContents a])]+ toContents v@(ConsB s) = [mkElemC (showConstr 1 (toHType v)) (toContents s)]+ fromContents (CElem (Elem constr [] cs) : etc)+ | "ConsA-" `isPrefixOf` constr =+ (\(i,cs')-> (\(a,_) -> (ConsA i a,etc))+ (fromContents cs')) (fromContents cs)+ | "ConsB" `isPrefixOf` constr =+ (\(s,_)-> (ConsB s, etc)) (fromContents cs)+-}++value1 :: Maybe ([(Bool,Int)],(String,Maybe Char))+value1 = Just ([(True,42),(False,0)],("Hello World",Nothing))++value2 :: (MyType [Int], MyType ())+value2 = (ConsA 2 [42,0], ConsB "hello world")++value3 :: MyType [Int]+value3 = ConsA 2 [42,0]++-- Main wrapper+main =+ getArgs >>= \args->+ if length args /= 3 then+ putStrLn "Usage: <app> [1|2|3] [-w|-r] <xmlfile>"+ else+ let (arg0:arg1:arg2:_) = args in+ ( case arg1 of+ "-w"-> return (stdout,WriteMode)+ "-r"-> return (stdin,ReadMode)+ _ -> fail ("Usage: <app> [-r|-w] <xmlfile>") ) >>= \(std,mode)->+ ( if arg2=="-" then return std+ else openFile arg2 mode ) >>= \f->+ ( case arg0 of+ "1" -> checkValue f mode value1+ "2" -> checkValue f mode value2+ "3" -> checkValue f mode value3+ _ -> fail ("Usage: <app> [-r|-w] <xmlfile>") )++checkValue f mode value =+ case mode of+ WriteMode-> hPutXml f value+ ReadMode -> do ivalue <- hGetXml f+ putStrLn (if ivalue==value then "success" else "failure")++-- WriteMode-> (hPutStrLn f . render . document . toXml) value1+-- ReadMode -> hGetContents f >>= \content ->+-- let ivalue = (fromXml . xmlParse) content in+-- (putStrLn . render . document . toXml) (ivalue `asTypeOf` value1) >>+-- putStrLn (if ivalue == value1 then "success" else "failure")+++-- Machine generated stuff+{-* Generated by DrIFT-v1.0 : Look, but Don't Touch. *-}+instance (Haskell2Xml a) => Haskell2Xml (MyType a) where+ toHType v =+ Defined "MyType" [a]+ [Constr "ConsA" [a] [toHType aa,toHType ab],+ Constr "ConsB" [] [toHType ac]]+ where+ (ConsA aa ab) = v+ (ConsB ac) = v+ (a) = toHType ab+ fromContents (CElem (Elem constr [] cs):etc)+ | "ConsA" `isPrefixOf` constr =+ (\(aa,cs00)-> (\(ab,_)-> (ConsA aa ab, etc)) (fromContents cs00))+ (fromContents cs)+ | "ConsB" `isPrefixOf` constr =+ (\(ac,_)-> (ConsB ac, etc)) (fromContents cs)+ fromContents (CElem (Elem constr _ _):etc) =+ error ("expected ConsA or ConsB, got "++constr)+ toContents v@(ConsA aa ab) =+ [mkElemC (showConstr 0 (toHType v)) (concat [toContents aa,+ toContents ab])]+ toContents v@(ConsB ac) =+ [mkElemC (showConstr 1 (toHType v)) (toContents ac)]+
+ examples/Types.hs view
@@ -0,0 +1,20 @@+module DTypes where++import Text.XML.HaXml.Haskell2Xml hiding (Name)++-- data types for a simple test program++data Person = Person Name Email [Rating] Version {-! derive :Haskell2Xml !-}++newtype Name = Name String {-! derive :Haskell2Xml !-}+newtype Email = Email String {-! derive :Haskell2Xml !-}+newtype Version = Version Int {-! derive :Haskell2Xml !-}++data Rating = Rating SubjectID Interest Skill {-! derive :Haskell2Xml !-}++newtype SubjectID = SubjectID Int {-! derive :Haskell2Xml !-}+newtype Interest = Interest Score {-! derive :Haskell2Xml !-}+newtype Skill = Skill Score {-! derive :Haskell2Xml !-}++data Score = ScoreNone | ScoreLow | ScoreMedium | ScoreHigh {-! derive :Haskell2Xml !-}+
+ examples/album.dtd view
@@ -0,0 +1,34 @@+<!DOCTYPE album [+<!ELEMENT album (title, artist, recording?, coverart, catalogno*,+ personnel, track*, notes) >+<!ELEMENT title (#PCDATA) >+<!ELEMENT artist (#PCDATA) >+<!ELEMENT recording EMPTY>+ <!ATTLIST recording date CDATA #IMPLIED+ place CDATA #IMPLIED>+<!ELEMENT coverart (location)? >+ <!ATTLIST coverart style CDATA #REQUIRED>+<!ELEMENT location EMPTY >+ <!ATTLIST location thumbnail CDATA #IMPLIED+ fullsize CDATA #IMPLIED>+<!ELEMENT catalogno EMPTY >+ <!ATTLIST catalogno label CDATA #REQUIRED+ number CDATA #REQUIRED+ format (CD | LP | MiniDisc) #IMPLIED+ releasedate CDATA #IMPLIED+ country CDATA #IMPLIED>+<!ELEMENT personnel (player)+ >+<!ELEMENT player EMPTY >+ <!ATTLIST player name CDATA #REQUIRED+ instrument CDATA #REQUIRED>+<!ELEMENT track EMPTY>+ <!ATTLIST track title CDATA #REQUIRED+ credit CDATA #IMPLIED+ timing CDATA #IMPLIED>+<!ELEMENT notes (#PCDATA | albumref | trackref)* >+ <!ATTLIST notes author CDATA #IMPLIED>+<!ELEMENT albumref (#PCDATA)>+ <!ATTLIST albumref link CDATA #REQUIRED>+<!ELEMENT trackref (#PCDATA)>+ <!ATTLIST trackref link CDATA #IMPLIED>+]>
+ examples/album.xml view
@@ -0,0 +1,40 @@+<?xml version='1.0'?>+<!DOCTYPE album SYSTEM "album.dtd">+<album+ ><title>Time Out</title+ ><artist>Dave Brubeck Quartet</artist+ ><recording date="June-August 1959" place="NYC"+ /><coverart style='abstract'+ ><location thumbnail='pix/small/timeout.jpg'+ fullsize='pix/covers/timeout.jpg'+ /></coverart++ ><catalogno label='Columbia' number='CL 1397' format='mono'+ /><catalogno label='Columbia' number='CS 8192' format='stereo'+ /><catalogno label='Columbia' number='CPK 1181' format='LP' country='Korea'+ /><catalogno label='Sony/CBS' number='Legacy CK 40585' format='CD'++ /><personnel+ ><player name='Dave Brubeck' instrument='piano'+ /><player name='Paul Desmond' instrument='alto sax'+ /><player name='Eugene Wright' instrument='bass'+ /><player name='Joe Morello' instrument='drums'+ /></personnel++ ><track title='Blue Rondo à la Turk' credit='Brubeck' timing='6m42s'+ /><track title='Strange Meadow Lark' credit='Brubeck' timing='7m20s'+ /><track title='Take Five' credit='Desmond' timing='5m24s'+ /><track title='Three To Get Ready' credit='Brubeck' timing='5m21s'+ /><track title="Kathy's Waltz" credit='Brubeck' timing='4m48s'+ /><track title="'Everybody's Jumpin'" credit='Brubeck' timing='4m22s'+ /><track title='Pick Up Sticks' credit='Brubeck' timing='4m16s'++ /><notes+ >Possibly the DBQ's most famous album, this contains+ <trackref link='#3'>Take Five</trackref>, the most famous jazz track+ of that period. These experiments in different time signatures are+ what Dave Brubeck is most remembered for. Recorded Jun-Aug 1959 in+ NYC. See also the sequel,+ <albumref link='cbs-timefurthout'>Time Further Out</albumref>.+ </notes+></album>
+ examples/subjdb.xml view
@@ -0,0 +1,53 @@+<!DOCTYPE Person-XML [+<!ELEMENT Version (int)>+<!ENTITY %Version '(Version)'>+<!ELEMENT ScoreHigh EMPTY>+<!ELEMENT ScoreMedium EMPTY>+<!ELEMENT ScoreLow EMPTY>+<!ELEMENT ScoreNone EMPTY>+<!ENTITY %Score '(ScoreNone|ScoreLow|ScoreMedium|ScoreHigh)'>+<!ELEMENT Skill (%Score;)>+<!ENTITY %Skill '(Skill)'>+<!ELEMENT Interest (%Score;)>+<!ENTITY %Interest '(Interest)'>+<!ATTLIST int value CDATA #REQUIRED>+<!ELEMENT int EMPTY>+<!ELEMENT SubjectID (int)>+<!ENTITY %SubjectID '(SubjectID)'>+<!ELEMENT Rating (%SubjectID;,%Interest;,%Skill;)>+<!ENTITY %Rating '(Rating)'>+<!ELEMENT list-Rating %Rating;*>+<!ELEMENT Email (string)>+<!ENTITY %Email '(Email)'>+<!ELEMENT string (#PCDATA)>+<!ELEMENT Name (string)>+<!ENTITY %Name '(Name)'>+<!ELEMENT Person (%Name;,%Email;,list-Rating,%Version;)>+<!ENTITY %Person '(Person)'>+<!ELEMENT Person-XML %Person;>+]>+<Person-XML+ ><Person+ ><Name+ ><string+ >Rob Noble</string></Name+ ><Email+ ><string+ >rjn</string></Email+ ><list-Rating+ ><Rating+ ><SubjectID+ ><int value="1"/></SubjectID+ ><Interest+ ><ScoreNone/></Interest+ ><Skill+ ><ScoreLow/></Skill></Rating+ ><Rating+ ><SubjectID+ ><int value="2"/></SubjectID+ ><Interest+ ><ScoreMedium/></Interest+ ><Skill+ ><ScoreHigh/></Skill></Rating></list-Rating+ ><Version+ ><int value="1"/></Version></Person></Person-XML>
+ rpm.spec view
@@ -0,0 +1,120 @@+%define ghc_version 6.2++Summary: Haskell utilities for processing XML+Name: HaXml+Version: 1.13.2+Release: 1+License: GPL/LGPL+Group: Development/Languages/Haskell+URL: http://www.haskell.org/HaXml/+Source0: %{name}-%{version}.tar.gz+NoSource: 0+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot++%description+HaXml is a collection of utilities for parsing, filtering,+transforming, and generating XML documents using Haskell.+Its basic facilities include:++ * a parser for XML,+ * a separate error-correcting parser for HTML,+ * an XML validator,+ * pretty-printers for XML and HTML, + * a combinator library for XML transformation,+ * a translator from DTD to Haskell datatypes.+++%package ghc%{ghc_version}+Summary: Haskell library for processing XML+Group: Development/Languages/Haskell+Requires: ghc = %{ghc_version}+BuildRequires: ghc = %{ghc_version}++%description ghc%{ghc_version}+HaXml is a collection of utilities for using XML from Haskell.++This package contains the library built for ghc-%{ghc-version}.++%package doc+Summary: Haskell utilities for processing XML documentation+Group: Development/Languages/Haskell++%description doc+HaXml is a collection of utilities for using XML from Haskell.++This package contains the documentation.++%define ghclibdir %{_libdir}/ghc-%{ghc_version}++%prep+%setup -q++%build+./configure --buildwith=ghc-%{ghc_version} --prefix=%{buildroot}%{_bindir}+make++%install+rm -rf $RPM_BUILD_ROOT+perl -pi -e "s|^%{_prefix}|%{buildroot}%{_prefix}|" obj/ghc/{ghcincdir,ghclibdir}+mkdirhier %{buildroot}%{_bindir}+mkdirhier %{buildroot}%{ghclibdir}/imports/HaXml+make install-filesonly+cp -p obj/ghc/pkg.conf %{buildroot}%{ghclibdir}/imports/HaXml/package.conf++%clean+rm -rf $RPM_BUILD_ROOT++%post ghc%{ghc_version}+ghc-pkg-%{ghc_version} --update-package < %{ghclibdir}/imports/HaXml/package.conf++%preun ghc%{ghc_version}+ghc-pkg-%{ghc_version} --remove-package=%{name}++%files+%defattr(-,root,root,-)+%{_bindir}/*+%doc COPYRIGHT LICENCE-GPL LICENCE-LGPL README++%files ghc%{ghc_version}+%defattr(-,root,root,-)+%{ghclibdir}+%doc COPYRIGHT LICENCE-GPL LICENCE-LGPL README examples++%files doc+%defattr(-,root,root,-)+%doc docs++%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.12+- Licence has changed to GPL + LPGL++* Mon Mar 15 2004 Bjorn Bringert <bjorn@bringert.net> 1.11-1+- Updated to HaXml 1.11+- Removed newline that broke postinstall script++* Mon Dec 22 2003 Bjorn Bringert <bjorn@bringert.net> 1.09-5+- Updated to GHC 6.2++* Mon Dec 8 2003 Bjorn Bringert <bjorn@bringert.net> 1.09-4+- Updated to GHC 6.0.1+- Removed newline that broke install rule in spec++* Tue Jun 10 2003 Jens Petersen <petersen@haskell.org> - 1.09-3+- fix post script package location and preun script package name+- no need to make the ghci object file++* Tue Jun 10 2003 Jens Petersen <petersen@haskell.org> - 1.09-2+- add doc files+- include examples in lib package+- add doc package++* Tue Jun 10 2003 Jens Petersen <petersen@haskell.org> - 1.09-1+- Initial packaging.++
+ script/echo.c view
@@ -0,0 +1,20 @@+#include <stdio.h>++int main (int argc, char** argv) {+ int i=0;+ if (argc>1) {+ if (strcmp(argv[1],"-n")==0) {+ for (i=2; i<argc; i++) {+ fputs(argv[i],stdout);+ if (i+1!=argc) putchar(' ');+ }+ } else {+ for (i=1; i<argc; i++) {+ fputs(argv[i],stdout);+ if (i+1!=argc) putchar(' ');+ }+ putchar('\n');+ }+ } else putchar('\n');+ exit(0);+}
+ src/Makefile view
@@ -0,0 +1,114 @@+SOFTWARE = HaXml+VERSION = 1.13.1++LIBSRCS = \+ 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++LIBOBJS = $(patsubst %.hs, %.o, $(LIBSRCS))++TOOLSRCS = \+ Text/XML/HaXml/DtdToHaskell/TypeDef.hs \+ 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++TOOLSET = \+ ../../DtdToHaskell$(EXE) ../../Xtract$(EXE) ../../Validate$(EXE) \+ ../../Canonicalise$(EXE) ../../MkOneOf$(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)+endif+COMPILER := $(findstring nhc98, $(HC))+ifeq "$(COMPILER)" "nhc98"+COMPILE = hmake -hc=$(HC) -I. -K4M +CTS -H8M -CTS -package base+RENAME = echo Built+endif++.PHONY: all libs toolset++all: libs toolset+libs: libHSHaXml.a+toolset: $(TOOLSET)+install-filesonly-ghc: libs $(INSTALLDIR)+ 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+ 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+ 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` --add-package <pkg.conf || \+ `cat ghcpkgcmd` register HaXml.pkgconf+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/%+ 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 "hs-libraries: HS$(SOFTWARE)" >>$@++++# packaged library+libHSHaXml.a: $(LIBSRCS)+ $(COMPILE) $(LIBSRCS)+ ar r libHSHaXml.a $(LIBOBJS)+ -ld -r -x $(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; $(RENAME) $(patsubst ../../%, %, $@)+ mv $(patsubst ../../%, tools/%, $@) ../..++toolset-hugs:+ for file in tools/*.hs ;\+ do tool=`basename $$file .hs` ;\+ echo '#!'`which runhugs` >$$tool ;\+ cat $$file >>$$tool ;\+ chmod +x $$tool ;\+ done++$(INSTALLDIR):+ if [ ! -d $(INSTALLDIR) ] ; then mkdir -p $(INSTALLDIR); fi+
+ src/Text/ParserCombinators/HuttonMeijerWallace.hs view
@@ -0,0 +1,297 @@+{-----------------------------------------------------------------------------++ 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
@@ -0,0 +1,34 @@+-- | 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.+module Text.XML.HaXml+ ( module Text.XML.HaXml.Types+ , module Text.XML.HaXml.Combinators+ , module Text.XML.HaXml.Parse+ , module Text.XML.HaXml.Pretty+ , module Text.XML.HaXml.Html.Generate+ , module Text.XML.HaXml.Html.Parse+ , module Text.XML.HaXml.Validate+ , module Text.XML.HaXml.Wrappers+ , module Text.XML.HaXml.Verbatim+ , module Text.XML.HaXml.Escape+ , render+ , version+ ) where++import Text.XML.HaXml.Types+import Text.XML.HaXml.Combinators+import Text.XML.HaXml.Parse (xmlParse,dtdParse)+import Text.XML.HaXml.Pretty (element)+import Text.XML.HaXml.Html.Generate+import Text.XML.HaXml.Html.Parse (htmlParse)+import Text.XML.HaXml.Validate (validate)+import Text.XML.HaXml.Wrappers (fix2Args,processXmlWith)+import Text.XML.HaXml.Verbatim+import Text.XML.HaXml.Escape++import Text.PrettyPrint.HughesPJ (render)++-- | The version of the library (currently "1.13.2").+version :: String+version = "1.13.2"
+ src/Text/XML/HaXml/Combinators.hs view
@@ -0,0 +1,405 @@+--------------------------------------------+-- | This module defines the notion of filters and filter combinators+-- for processing XML documents.+--+-- 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.+--------------------------------------------+module Text.XML.HaXml.Combinators+ (-- * The content filter type.+ CFilter++ -- * Simple filters.+ -- ** Selection filters.+ -- $selection+ , keep, none, children, position++ -- ** Predicate filters.+ -- $pred+ , elm, txt, tag, attr, attrval, tagWith++ -- ** Search filters.+ , find, iffind, ifTxt++ -- * Filter combinators+ -- ** Basic combinators.+ , o, union, cat, andThen+ , (|>|), with, without+ , (/>), (</), et+ , path+ -- ** Recursive search.+ -- $recursive+ , deep, deepest, multi+ -- ** Interior editing.+ , when, guards, chip, foldXml+ -- ** Constructive filters.+ , mkElem, mkElemAttr, literal, cdata, replaceTag, replaceAttrs++ -- * C-like conditionals.+ -- $cond+ , ThenElse(..), (?>)++ -- * Filters with labelled results.+ , LabelFilter+ -- ** Using and combining labelled filters.+ , oo, x+ -- ** Some label-generating filters.+ , numbered, interspersed, tagged, attributed, textlabelled, extracted++ ) where+++import Text.XML.HaXml.Types+import Maybe (fromMaybe)++infixl 6 `with`, `without`+infixr 5 `o`, `oo`, `union`, `andThen` -- , `orelse`+infixl 5 />, </, |>|+infixr 4 `when`, `guards`+infixr 3 ?>, :>++++-- THE CONTENT FILTER TYPE++-- | 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]++++-- BASIC SELECTION FILTERS+-- $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 = \x->[x]+none = \x->[]++-- | Throw away current node, keep just the (unprocessed) children.+children :: CFilter+children (CElem (Elem _ _ cs)) = cs+children _ = []++-- | Select the @n@'th positional result of a filter.+position :: Int -> CFilter -> CFilter+position n f = (\cs-> [cs!!n]) . f++++-- BASIC PREDICATE FILTERS+-- $pred+-- These filters either keep or throw away some content based on+-- a simple test. For instance, @elm@ keeps only a tagged element,+-- @txt@ keeps only non-element text, @tag@ keeps only an element+-- with the named tag, @attr@ keeps only an element with the named+-- attribute, @attrval@ keeps only an element with the given+-- 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 x@(CElem _) = [x]+elm _ = []++txt x@(CString _ _) = [x]+txt x@(CRef _) = [x]+txt _ = []++tag t x@(CElem (Elem n _ _)) | t==n = [x]+tag t _ = []++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 _ = []++attrval av x@(CElem (Elem _ as _)) | av `elem` as = [x]+attrval av _ = []++++-- SEARCH FILTERS++-- | 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+ 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 _)) =+ case (lookup key as) of+ Nothing -> no c+ (Just (AttValue [Left s])) -> yes s 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++++-- C-LIKE CONDITIONALS+--+-- $cond+-- These definitions provide C-like conditionals, lifted to the filter level.+--+-- The @(cond ? yes : no)@ style in C becomes @(cond ?> yes :> no)@ in Haskell.++-- | Conjoin the two branches of a conditional.+data ThenElse a = a :> a++-- | Select between the two branches of a joined conditional.+(?>) :: (a->[b]) -> ThenElse (a->[b]) -> (a->[b])+p ?> (f :> g) = \c-> if (not.null.p) c then f c else g c++++-- FILTER COMBINATORS+++-- | Sequential (/Irish/,/backwards/) composition+o :: CFilter -> CFilter -> CFilter+f `o` g = concatMap f . g++-- | 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.)+union :: (a->[b]) -> (a->[b]) -> (a->[b])+union = lift (++) -- in Haskell 98: union = lift List.union+ where+ lift :: (a->b->d) -> (c->a) -> (c->b) -> c -> d+ lift f g h = \x-> f (g x) (h x)++-- | Glue a list of filters together. (A list version of union;+-- also has a more general type than just CFilter.)+cat :: [a->[b]] -> (a->[b])+-- Specification: cat fs = \e-> concat [ f e | f <- fs ]+-- more efficient implementation below:+cat [] = const []+cat fs = foldr1 union fs++-- | 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.+andThen :: (a->c) -> (c->a->b) -> (a->b)+andThen f g = \x-> g (f x) x -- lift g f id++-- | Process children using specified filters. /not exported/+childrenBy :: CFilter -> CFilter+childrenBy f = f `o` children++-- | Directional choice:+-- in @f |>| g@ give g-productions only if no f-productions+(|>|) :: (a->[b]) -> (a->[b]) -> (a->[b])+f |>| g = \x-> let fx = f x in if null fx then g x else fx+-- f |>| g = f ?> f :> g++-- | Pruning: in @f `with` g@,+-- keep only those f-productions which have at least one g-production+with :: CFilter -> CFilter -> CFilter+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+f `without` g = filter (null.g) . f++-- | Pronounced /slash/, @f \/> g@ means g inside f+(/>) :: CFilter -> CFilter -> CFilter+f /> g = g `o` children `o` f++-- | Pronounced /outside/, @f \<\/ g@ means f containing g+(</) :: CFilter -> CFilter -> CFilter+f </ g = f `with` (g `o` children)++-- | Join an element-matching filter with a text-only filter+et :: (String->CFilter) -> CFilter -> CFilter+et f g = (f `oo` tagged elm)+ |>|+ (g `o` txt)++-- | 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 fs = foldr (flip (o)) keep fs+++-- RECURSIVE SEARCH+-- $recursive+-- Recursive search has three variants: @deep@ does a breadth-first+-- 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 f = f |>| (deep f `o` children)+deepest f = (deepest f `o` children) |>| f+multi f = f `union` (multi f `o` children)++-- | Interior editing:+-- @f `when` g@ applies @f@ only when the predicate @g@ succeeds,+-- otherwise the content is unchanged.+when :: CFilter -> CFilter -> CFilter+-- | Interior editing:+-- @g `guards` f@ applies @f@ only when the predicate @g@ succeeds,+-- otherwise the content is discarded.+guards :: CFilter -> CFilter -> CFilter+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 f c = [c]++-- | Recursive application of filters: a fold-like operator. Defined+-- as @f `o` chip (foldXml f)@.+foldXml :: CFilter -> CFilter+foldXml f = f `o` chip (foldXml f)+++++-- CONSTRUCTIVE CONTENT FILTERS++-- | 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)) ]++-- | 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)) ]+ where attr t (n,vf) =+ 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]++-- | Build some CDATA content.+cdata :: String -> CFilter+cdata s = const [CString True s]++-- | Rename an element tag.+replaceTag :: String -> CFilter+replaceTag n (CElem (Elem _ _ cs)) = [CElem (Elem n [] cs)]+replaceTag n _ = []++-- | Replace the attributes of an element.+replaceAttrs :: [(String,String)] -> CFilter+replaceAttrs as (CElem (Elem n _ cs)) = [CElem (Elem n as' cs)]+ where as' = map (\(n,v)-> (n, AttValue [Left v])) as+replaceAttrs as _ = []++++-- LABELLING++-- | 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)]++-- | Compose a label-processing filter with a label-generating filter.+oo :: (a->CFilter) -> LabelFilter a -> CFilter+f `oo` g = concatMap (uncurry f) . g++-- | Combine labels. Think of this as a pair-wise zip on labels.+x :: (CFilter->LabelFilter a) -> (CFilter->LabelFilter b) ->+ (CFilter->LabelFilter (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)+++-- Some basic label-generating filters.++-- | Number the results from 1 upwards.+numbered :: CFilter -> LabelFilter String+numbered f = zip (map show [(1::Int)..]) . 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 a f b =+ (\xs-> zip (replicate (len xs) a ++ [b]) xs) . f+ where+ len [] = 0+ len xs = length xs - 1++-- | Label each element in the result with its tag name. Non-element+-- results get an empty string label.+tagged :: CFilter -> LabelFilter String+tagged f = extracted name f+ 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 key f = extracted att f+ where att (CElem (Elem _ as _)) =+ case (lookup key as) of+ Nothing -> ""+ (Just (AttValue [Left s])) -> s+ att _ = ""++-- | Label each textual part of the result with its text. Element+-- results get an empty string label.+textlabelled :: CFilter -> LabelFilter (Maybe String)+textlabelled f = extracted text f+ where text (CString _ s) = Just s+ text _ = Nothing++-- | Label each content with some information extracted from itself.+extracted :: (Content->a) -> CFilter -> LabelFilter a+extracted proj f = concatMap (\c->[(proj c, c)]) . f+ +++{-+-- MISC++-- | I haven't yet remembered \/ worked out what this does.+combine :: (Read a,Show a) => ([a]->a) -> LabelFilter String -> CFilter+combine f lf = \c-> [ CString False (show (f [ read l | (l,_) <- lf c ])) ]+-}+++{- OLD STUFF - OBSOLETE+-- Keep an element by its numbered position (starting at 1).+position :: Int -> [Content] -> [Content]+position n | n>0 = (:[]) . (!!(n-1))+ | otherwise = const []++-- Chop and remove the root portions of trees to depth n.+layer :: Int -> [Content] -> [Content]+layer n = apply n (concatMap lay)+ where lay (CElem (Elem _ _ cs)) = cs+ lay _ = []+ apply 0 f xs = xs+ apply n f xs = apply (n-1) f (f xs)++combine :: (Read a, Show a) => ([a]->a) -> [Content] -> [Content]+combine f = \cs-> [ CString False (show (f [ read s | CString _ s <- cs ])) ]+-}
+ src/Text/XML/HaXml/DtdToHaskell/Convert.hs view
@@ -0,0 +1,126 @@+-- | This module performs the translation of a parsed XML DTD into the+-- internal representation of corresponding Haskell data\/newtypes.++module Text.XML.HaXml.DtdToHaskell.Convert+ ( dtd2TypeDef+ ) where++import List (intersperse)++import Text.XML.HaXml.Types hiding (Name)+import Text.XML.HaXml.DtdToHaskell.TypeDef+++---- Internal representation for database of DTD decls ----+data Record = R [AttDef] ContentSpec+type Db = [(String,Record)]+++---- Build a database of DTD decls then convert them to typedefs ----+---- (Done in two steps because we need to merge ELEMENT and ATTLIST decls.)+---- Apparently multiple ATTLIST decls for the same element are permitted,+---- although only one ELEMENT decl for it is allowed.+dtd2TypeDef :: [MarkupDecl] -> [TypeDef]+dtd2TypeDef mds = + (concatMap convert . reverse . database []) mds+ where+ database db [] = db+ database db (m:ms) =+ case m of+ (Element (ElementDecl n cs)) ->+ case lookup n db of+ Nothing -> database ((n, R [] cs):db) ms+ (Just (R as _)) -> database (replace n (R as cs) db) ms+ (AttList (AttListDecl n as)) ->+ case lookup n db of+ Nothing -> database ((n, R as EMPTY):db) ms+ (Just (R a cs)) -> database (replace n (R (a++as) cs) db) ms+ -- (MarkupPE _ m') -> database db (m':ms)+ _ -> database db ms++ replace n v [] = error "dtd2TypeDef.replace: no element to replace"+ replace n v (x@(n0,_):db)+ | n==n0 = (n,v): db+ | otherwise = x: replace n v db++++---- Convert DTD record to typedef ----+convert :: (String, Record) -> [TypeDef]+convert (n, R as cs) =+ case cs of+ EMPTY -> modifier None []+ ANY -> modifier None [[Any]]+ --error "NYI: contentspec of ANY"+ (Mixed PCDATA) -> modifier None [[String]]+ (Mixed (PCDATAplus ns)) -> modifier Star ([String]: map ((:[]) . Defined . name) ns)+ (ContentSpec cp) ->+ case cp of+ (TagName n' m) -> modifier m [[Defined (name n')]]+ (Choice cps m) -> modifier m (map ((:[]).inner) cps)+ (Seq cps m) -> modifier m [map inner cps]+ ++ concatMap (mkAttrDef n) as+ where+ attrs :: AttrFields+ attrs = map (mkAttrField n) as++ modifier None sts = mkData sts attrs False (name n)+ modifier m [[st]] = mkData [[modf m st]] attrs False (name n)+ modifier m sts = mkData [[modf m (Defined (name_ n))]]+ attrs False (name n) +++ mkData sts [] True (name_ n)++ inner :: CP -> StructType+ inner (TagName n' m) = modf m (Defined (name n'))+ inner (Choice cps m) = modf m (OneOf (map inner cps))+ inner (Seq cps None) = Tuple (map inner cps)+ inner (Seq cps m) = modf m (Tuple (map inner cps))++ modf None x = x+ modf Query x = Maybe x+ modf Star x = List x+ modf Plus x = List1 x++mkData :: [[StructType]] -> AttrFields -> Bool -> Name -> [TypeDef]+mkData [] fs aux n = [DataDef aux n fs []]+mkData [ts] fs aux n = [DataDef aux n fs [(n, ts)]]+mkData tss fs aux n = [DataDef aux n fs (map (mkConstr n) tss)]+ 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) ++ "_" ++-}+ concat (intersperse "_" (map flatten sts))+ flatten String = "Str"+ flatten (OneOf sts) = {-"OneOf" ++ show (length sts) ++ "_" ++-}+ concat (intersperse "_" (map flatten sts))+ flatten Any = "Any"+ flatten (Defined (Name _ n)) = n++mkAttrDef e (AttDef n StringType def) =+ []+mkAttrDef e (AttDef n (TokenizedType t) def) =+ [] -- mkData [[String]] [] False (name n)+mkAttrDef e (AttDef n (EnumeratedType (NotationType nt)) def) =+ [EnumDef (name_a e n) (map (name_ac e n) nt)]+mkAttrDef e (AttDef n (EnumeratedType (Enumeration es)) def) =+ [EnumDef (name_a e n) (map (name_ac e n) es)]+ -- Default attribute values not handled here++mkAttrField :: String -> AttDef -> (Name,StructType)+mkAttrField e (AttDef n typ req) = (name_f e n, mkType typ req)+ where+ mkType StringType REQUIRED = String+ mkType StringType IMPLIED = Maybe String+ mkType StringType (DefaultTo (AttValue [Left s]) f) = Defaultable String s+ mkType (TokenizedType _) REQUIRED = String+ mkType (TokenizedType _) IMPLIED = Maybe String+ mkType (TokenizedType _) (DefaultTo (AttValue [Left s]) f) =+ Defaultable String s+ 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))+
+ src/Text/XML/HaXml/DtdToHaskell/Instance.hs view
@@ -0,0 +1,322 @@+module Text.XML.HaXml.DtdToHaskell.Instance+ ( mkInstance+ ) where++import List (intersperse)++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+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 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 "[CElem (Elem \"" <> ppXName n <> text "\""+ <+> toattr <+> text "[])]")+ )+ $$+ mkInstanceAttrs Same n fs++-- single constructor, "real" (non-auxiliary) type+mkInstance (DataDef False n fs [(n0,sts)]) =+ let vs = nameSupply sts+ (frpat, frattr, topat, toattr) = attrpats fs+ in+ 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 "[CElem (Elem \"" <> ppXName n <> text "\""+ <+> toattr <+> parens (mkToElem sts vs) <> text ")]")+ )+ $$+ mkInstanceAttrs Extended n fs++-- single constructor, auxiliary type+mkInstance (DataDef True n fs [(n0,sts)]) =+ let vs = nameSupply sts+ (frpat, frattr, topat, toattr) = attrpats fs+ in+ text "instance XmlContent" <+> ppHName n <+> text "where" $$+ nest 4 ( text "fromElem c0 =" $$+ mkFrAux True frattr [(n0,sts)]+ $$+ 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))+ )+ $$+ mkInstanceAttrs Extended n fs++-- multiple constructors+mkInstance (DataDef aux n fs cs) =+ let vs = nameSupply cs+ (frpat, frattr, topat, toattr) = attrpats fs+ mixattrs = if null fs then False else True+ in+ 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)+ )+ $$+ mkInstanceAttrs Extended n fs++-- enumeration of attribute values+mkInstance (EnumDef n es) =+ text "instance XmlAttrType" <+> ppHName n <+> text "where" $$+ nest 4 ( text "fromAttrToTyp n (n',v)" $$+ nest 4 (text "| n==n' = translate (attr2str v)" $$+ text "| otherwise = Nothing") $$+ nest 2 (text "where" <+> mkTranslate es)+ $$+ vcat (map mkToAttr es)+ )+++data SameName = Same | Extended++mkInstanceAttrs :: SameName -> Name -> AttrFields -> Doc+mkInstanceAttrs s n [] = empty+mkInstanceAttrs s n fs =+ let ppName = case s of { Same-> ppHName; Extended-> ppAName; }+ in+ text "instance XmlAttributes" <+> ppName n <+> text "where" $$+ nest 4 ( text "fromAttrs as =" $$+ nest 4 ( ppName n $$+ nest 2 (vcat ((text "{" <+> mkFrFld n (head fs)):+ map (\x-> comma <+> mkFrFld n x) (tail fs)) $$+ text "}"))+ $$+ text "toAttrs v = catMaybes " $$+ nest 4 (vcat ((text "[" <+> mkToFld (head fs)):+ map (\x-> comma <+> mkToFld x) (tail fs)) $$+ text "]")+ )+++-- respectively (frpat,frattr,topat,toattr)+attrpats :: AttrFields -> (Doc,Doc,Doc,Doc)+attrpats fs =+ if null fs then (text "[]", empty, empty, text "[]")+ else (text "as", parens (text "fromAttrs as"), text "as", parens (text "toAttrs as"))+++++mkFrElem :: Name -> [StructType] -> [Doc] -> Doc -> Doc+mkFrElem 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 (+ case st of+ (Maybe String) -> text "fromText" <+> cvo+ (Maybe s) -> text "fromElem" <+> cvo+ (List String) -> text "many fromText" <+> cvo+ (List s) -> text "many fromElem" <+> cvo+ (List1 s) -> text "definite fromElem"+ <+> text "\"" <> text (show s)<> text "+\""+ <+> text "\"" <> ppXName n <> text "\""+ <+> cvo+ (Tuple ss) -> text "definite fromElem"+ <+> text "\"(" <> hcat (intersperse (text ",")+ (map (text.show) ss))+ <> text ")\""+ <+> text "\"" <> ppXName n <> text "\""+ <+> cvo+ (OneOf ss) -> text "definite fromElem"+ <+> text "\"OneOf\""+ <+> text "\"" <> ppXName n <> text "\""+ <+> cvo+ (String) -> text "definite fromText" <+> text "\"text\" \"" <>+ ppXName n <> text "\"" <+> cvo+ (Any) -> text "definite fromElem" <+> text "\"ANY\" \"" <>+ ppXName n <> text "\"" <+> cvo+ (Defined m) -> text "definite fromElem" <+>+ text "\"<" <> ppXName m <> text ">\" \"" <>+ ppXName n <> text "\"" <+> cvo+ (Defaultable _ _) -> text "nyi_fromElem_Defaultable" <+> cvo+ )++mkToElem :: [StructType] -> [Doc] -> Doc+mkToElem [] [] = text "[]"+mkToElem sts vs =+ fsep (intersperse (text "++") (zipWith toElem sts vs))+ where+ toElem st v =+ case st of+ (Maybe String) -> text "maybe [] toText" <+> v+ (Maybe s) -> text "maybe [] toElem" <+> 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+ (String) -> text "toText" <+> v+ (Any) -> text "toElem" <+> v+ (Defined m) -> text "toElem" <+> v+ (Defaultable _ _) -> text "nyi_toElem_Defaultable" <+> v++mkRpat :: [Doc] -> Doc+mkRpat [v] = v+mkRpat vs = (parens . hcat . intersperse comma) vs++mkCpat :: Name -> Doc -> [Doc] -> Doc+mkCpat n i vs = ppHName n <+> i <+> fsep vs++nameSupply,nameSupply2 :: [b] -> [Doc]+nameSupply ss = take (length ss) (map char ['a'..])+nameSupply2 ss = take (length ss) [ text ('c':v:[]) | v <- ['a'..]]++mkTranslate :: [Name] -> Doc+mkTranslate es =+ vcat (map trans es) $$+ text "translate _ = Nothing"+ where+ trans n = text "translate \"" <> ppXName n <> text "\" =" <+>+ text "Just" <+> ppHName n++mkToAttr n = text "toAttrFrTyp n" <+> ppHName n <+> text "=" <+>+ text "Just (n, str2attr" <+> doubleQuotes (ppXName n) <> text ")"++mkFrFld :: Name -> (Name,StructType) -> Doc+mkFrFld tag (n,st) =+ ppHName n <+> text "=" <+>+ ( case st of+ (Defaultable String s) -> text "defaultA fromAttrToStr" <+>+ doubleQuotes (text s)+ (Defaultable _ s) -> text "defaultA fromAttrToTyp" <+> text s+ (Maybe String) -> text "possibleA fromAttrToStr"+ (Maybe _) -> text "possibleA fromAttrToTyp"+ String -> text "definiteA fromAttrToStr" <+>+ doubleQuotes (ppXName tag)+ _ -> text "definiteA fromAttrToTyp" <+>+ doubleQuotes (ppXName tag)+ ) <+> doubleQuotes (ppXName n) <+> text "as"++mkToFld :: (Name,StructType) -> Doc+mkToFld (n,st) =+ ( case st of+ (Defaultable String _) -> text "defaultToAttr toAttrFrStr"+ (Defaultable _ _) -> text "defaultToAttr toAttrFrTyp"+ (Maybe String) -> text "maybeToAttr toAttrFrStr"+ (Maybe _) -> text "maybeToAttr toAttrFrTyp"+ String -> text "toAttrFrStr"+ _ -> text "toAttrFrTyp"+ ) <+> doubleQuotes (ppXName n) <+> parens (ppHName n <+> text "v")++mkFrAux :: Bool -> Doc -> [(Name,[StructType])] -> Doc+mkFrAux keeprest attrs cs = foldr frAux inner cs+ where+ inner = text "(Nothing, c0)"+ rest = if keeprest then text "rest" else text "_"+ frAux (n,sts) inner =+ let vs = nameSupply sts in+ nest 4 (text "case" <+> blah sts vs <+> text "of" $$+ succpat sts vs <+> text "-> (Just" <+>+ parens (mkCpat n attrs vs) <> text ", rest)"+ $$+ failpat sts <+> text "->" $$ nest 4 inner+ )+ blah [st] [v] =+ blahblahblah st (text "c0")+ blah sts vs =+ let ns = nameSupply2 vs+ cvs = zip ns (text "c0": init ns)+ blahblah (st,v,(cvi,cvo)) inner =+ parens (text "\\" <> parens (v<>comma<>cvi) <> text "->" $$+ nest 2 inner) $$+ blahblahblah st cvo+ in+ foldr blahblah (mkRpat (vs++[last ns])) (zip3 sts vs cvs)+ blahblahblah st cvo = parens (+ case st of+ (Maybe String) -> text "fromText" <+> cvo+ (Maybe s) -> text "fromElem" <+> cvo+ (List String) -> text "many fromText" <+> cvo+ (List s) -> text "many fromElem" <+> cvo+ (List1 s) -> text "fromElem" <+> cvo+ (Tuple ss) -> text "fromElem" <+> cvo -- ??+ (OneOf ss) -> text "fromElem" <+> cvo+ (String) -> text "fromText" <+> cvo+ (Any) -> text "fromElem" <+> cvo+ (Defined m) -> text "fromElem" <+> cvo+ )+ failpat sts =+ let fp st =+ case st of+ (Maybe s) -> text "Nothing"+ (List s) -> text "[]"+ (List1 s) -> text "_"+ (Tuple ss) -> text "_"+ (OneOf ss) -> text "_"+ (String) -> text "_"+ (Any) -> text "_"+ (Defined m) -> text "_"+ in parens (hcat (intersperse comma (map fp sts++[text "_"])))+ succpat sts vs =+ let sp st v =+ case st of+ (Maybe s) -> v+ (List s) -> v+ (List1 s) -> text "Just" <+> v+ (Tuple ss) -> text "Just" <+> v+ (OneOf ss) -> text "Just" <+> v+ (String) -> text "Just" <+> v+ (Any) -> text "Just" <+> v+ (Defined m) -> text "Just" <+> v+ in parens (hcat (intersperse comma (zipWith sp sts vs++[rest])))++mkToAux :: Bool -> (Name,[StructType]) -> Doc+mkToAux mixattrs (n,sts) =+ let vs = nameSupply sts+ attrs = if mixattrs then text "as" else empty+ in+ text "toElem" <+> 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 ")]"+
+ src/Text/XML/HaXml/DtdToHaskell/TypeDef.hs view
@@ -0,0 +1,204 @@+-- | 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 "Text.PrettyPrint.HughesPJ".++module Text.XML.HaXml.DtdToHaskell.TypeDef+ ( -- * Internal representation of types+ TypeDef(..)+ , Constructors+ , AttrFields+ , StructType(..)+ -- * Pretty-print a TypeDef+ , ppTypeDef+ , ppHName+ , ppXName+ , ppAName+ -- * Name mangling+ , Name(..)+ , name, name_, name_a, name_ac, name_f, mangle, manglef+ ) where++import Char (isLower, isUpper, toLower, toUpper, isDigit)+import List (intersperse)+import Text.PrettyPrint.HughesPJ+++---- Internal representation for typedefs ----++-- | Need to keep both the XML and Haskell versions of a name.+data Name = Name { xName :: String -- ^ original XML name+ , hName :: String -- ^ mangled Haskell name+ }+ deriving Eq++data TypeDef =+ DataDef Bool Name AttrFields Constructors -- ^ Bool for main\/aux.+ | EnumDef Name [Name]+ deriving Eq+type Constructors = [(Name,[StructType])]+type AttrFields = [(Name, StructType)]+data StructType =+ Maybe StructType+ | Defaultable StructType String -- ^ String holds default value.+ | List StructType+ | List1 StructType -- ^ Non-empty lists.+ | Tuple [StructType]+ | OneOf [StructType]+ | Any -- ^ XML's contentspec allows ANY+ | String+ | Defined Name+ deriving Eq++-- used for converting StructType (roughly) back to an XML content model+instance Show StructType where+ showsPrec p (Maybe s) = showsPrec (p+1) s . showChar '?'+ showsPrec p (Defaultable s _) = shows s+ showsPrec p (List s) = showsPrec (p+1) s . showChar '*'+ showsPrec p (List1 s) = showsPrec (p+1) s . showChar '+'+ showsPrec p (Tuple ss) = showChar '('+ . foldr1 (.) (intersperse (showChar ',')+ (map shows ss))+ . showChar ')'+ showsPrec p (OneOf ss) = showChar '('+ . foldr1 (.) (intersperse (showChar '|')+ (map shows ss))+ . showChar ')'+ showsPrec p (Any) = showString "ANY"+ showsPrec p (String) = showString "#PCDATA"+ showsPrec p (Defined (Name n _)) = showString n+++---- Pretty-printing typedefs ----+ppTypeDef :: TypeDef -> Doc++-- no attrs, no constructors+ppTypeDef (DataDef _ n [] []) =+ let name = ppHName n in+ text "data" <+> name <+> text "=" <+> name <+> text "\t\t" <> derives++-- no attrs, single constructor+ppTypeDef (DataDef _ n [] [c@(_,[_])]) =+ text "newtype" <+> ppHName n <+> text "=" <+> ppC c <+> text "\t\t" <> derives++-- no attrs, multiple constrs+ppTypeDef (DataDef _ n [] cs) =+ text "data" <+> ppHName n <+>+ ( text "=" <+> ppC (head cs) $$+ vcat (map (\c-> text "|" <+> ppC c) (tail cs)) $$+ derives )++-- nonzero attrs, no constructors+ppTypeDef (DataDef _ n fs []) =+ let name = ppHName n in+ text "data" <+> name <+> text "=" <+> name $$+ nest 4 ( text "{" <+> ppF (head fs) $$+ vcat (map (\f-> text "," <+> ppF f) (tail fs)) $$+ text "}" <+> derives )++-- nonzero attrs, one or more constrs+ppTypeDef (DataDef _ n fs cs) =+ let attr = ppAName n in+ text "data" <+> ppHName n <+>+ ( text "=" <+> ppAC attr (head cs) $$+ vcat (map (\c-> text "|" <+> ppAC attr c) (tail cs)) $$+ derives ) $$+ text "data" <+> attr <+> text "=" <+> attr $$+ nest 4 ( text "{" <+> ppF (head fs) $$+ vcat (map (\f-> text "," <+> ppF f) (tail fs)) $$+ text "}" <+> derives )++-- enumerations (of attribute values)+ppTypeDef (EnumDef n es) =+ text "data" <+> ppHName n <+>+ ( text "=" <+>+ fsep (intersperse (text " | ") (map ppHName es))+ $$ derives )+++ppST :: StructType -> Doc+ppST (Defaultable st _) = parens (text "Defaultable" <+> ppST st)+ppST (Maybe st) = parens (text "Maybe" <+> ppST st)+ppST (List st) = text "[" <> ppST st <> text "]"+ppST (List1 st) = parens (text "List1" <+> ppST st)+ppST (Tuple sts) = parens (commaList (map ppST sts))+ppST (OneOf sts) = parens (text "OneOf" <> text (show (length sts)) <+>+ hsep (map ppST sts))+ppST String = text "String"+ppST Any = text "ANYContent"+ppST (Defined n) = ppHName n++-- constructor and components+ppC :: (Name,[StructType]) -> Doc+ppC (n,sts) = ppHName n <+> fsep (map ppST sts)++-- attribute (fieldname and type)+ppF :: (Name,StructType) -> Doc+ppF (n,st) = ppHName n <+> text "::" <+> ppST st++-- constructor and components with initial attr-type+ppAC :: Doc -> (Name,[StructType]) -> Doc+ppAC atype (n,sts) = ppHName n <+> fsep (atype: map ppST sts)++-- | Pretty print Haskell name.+ppHName :: Name -> Doc+ppHName (Name _ s) = text s+-- | Pretty print XML name.+ppXName :: Name -> Doc+ppXName (Name s _) = text s+-- | Pretty print Haskell attributes name.+ppAName :: Name -> Doc+ppAName (Name _ s) = text s <> text "_Attrs"+ +derives = text "deriving" <+> parens (commaList (map text ["Eq","Show"]))+++---- Some operations on Names ----++-- | Make a name valid in both XML and Haskell.+name :: String -> Name+name n = Name n (mangle n)++-- | Append an underscore to the Haskell version of the name.+name_ :: String -> Name+name_ n = Name n (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)++-- | 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)++-- | Prefix a field name with its enclosing element name.+name_f :: String -> String -> Name+name_f e n = Name n (manglef e ++ mangle n)++---- obsolete+-- elementname_at :: String -> Name+-- elementname_at n = Name n (mangle n ++ "_Attrs")++-- | Convert an XML name to a Haskell conid.+mangle :: String -> String+mangle (n:ns)+ | isLower n = toUpper n: map decolonify ns+ | isDigit n = 'I': n: map decolonify ns+ | otherwise = n: map decolonify ns++-- | Convert an XML name to a Haskell varid.+manglef :: String -> String+manglef (n:ns)+ | isUpper n = toLower n: map decolonify ns+ | isDigit n = '_': n: map decolonify ns+ | otherwise = n: map decolonify ns++-- | Convert colon to prime, hyphen to underscore.+decolonify :: Char -> Char+decolonify ':' = '\'' -- TODO: turn namespaces into qualified identifiers+decolonify '-' = '_'+decolonify c = c++commaList = hcat . intersperse comma
+ src/Text/XML/HaXml/Escape.hs view
@@ -0,0 +1,278 @@+{- This module contains code for escaping/unescaping text in attributes+ and elements in the HaXml Element type, replacing characters by character + references or vice-versa. Two uses are envisaged for this:++ (1) stopping HaXml generating incorrect XML when a character is included+ which is also the appropriate XML terminating character, for example+ when an attribute includes a double quote.+ (2) representing XML which contains non-ASCII characters as ASCII.+ -}+module Text.XML.HaXml.Escape(+ xmlEscape,+ -- :: XmlEscaper -> Element -> Element+ xmlUnEscape,+ -- :: XmlEscaper -> Element -> Element++ XmlEscaper,+ -- Something describing a particular set of escapes.++ stdXmlEscaper,+ -- Standard boilerplate escaper, escaping everything that is + -- nonprintable, non-ASCII, or might conceivably cause problems by+ -- parsing XML, for example quotes, < signs, and ampersands.++ mkXmlEscaper,+ -- :: [(Char,String)] -> (Char -> Bool) -> XmlEscaper+ -- The first argument contains a list of characters, with their+ -- corresponding character reference names.+ -- For example [('\60',"lt"),('\62',"gt"),('\38',"amp"),+ -- ('\39',"apos"),('\34',"quot")] will give you the "standard"+ -- XML escapes listed in section 4.6 of the XML standard, so that+ -- """ will automatically get translated into a double+ -- quotation mark.+ --+ -- It's the caller's responsibility to see that the reference+ -- names ("lt","gt","amp","apos" and "quot" in the above example)+ -- are valid XML reference names. A sequence of letters, digits,+ -- "." or ":" characters should be fine so long as the first one+ -- isn't a digit.+ --+ -- The second argument is a function applied to each text character.+ -- If it returns True, that means we should escape this character.++ -- Policy: on escaping, we expand all characters for which the+ -- (Char -> Bool) function returns True, either giving the corresponding+ -- character reference name if one was supplied, or else using a+ -- hexadecimal CharRef.+ --+ -- on unescaping, we translate all the references we understand+ -- (hexadecimal,decimal, and the ones in the [(Char,String)] list,+ -- and leave the others alone.++ ) where++import Char+import Numeric+import Text.XML.HaXml.Types++#if __GLASGOW_HASKELL__ >= 604 || __NHC__ >= 118 || defined(__HUGS__)+-- emulate older finite map interface using Data.Map, if it is available+import qualified Data.Map as Map+type FiniteMap a b = Map.Map a b+listToFM :: Ord a => [(a,b)] -> FiniteMap a b+listToFM = Map.fromList+lookupFM :: Ord a => FiniteMap a b -> a -> Maybe b+lookupFM = flip Map.lookup+#elif __GLASGOW_HASKELL__ >= 504 || __NHC__ > 114+-- real finite map, if it is available+import Data.FiniteMap+#else+-- otherwise, a very simple and inefficient implementation of a finite map+type FiniteMap a b = [(a,b)]+listToFM :: Eq a => [(a,b)] -> FiniteMap a b+listToFM = id+lookupFM :: Eq a => FiniteMap a b -> a -> Maybe b+lookupFM fm k = lookup k fm+#endif+++-- ------------------------------------------------------------------------+-- Data types+-- ------------------------------------------------------------------------++data XmlEscaper = XmlEscaper {+ toEscape :: FiniteMap Char String,+ fromEscape :: FiniteMap String Char,+ isEscape :: Char -> Bool+ }+++-- ------------------------------------------------------------------------+-- Escaping+-- ------------------------------------------------------------------------++++xmlEscape :: XmlEscaper -> Element -> Element+xmlEscape xmlEscaper element = + compressElement (escapeElement xmlEscaper element)++escapeElement :: XmlEscaper -> Element -> Element+escapeElement xmlEscaper (Elem name attributes content) =+ Elem name (escapeAttributes xmlEscaper attributes) + (escapeContent xmlEscaper content)++escapeAttributes :: XmlEscaper -> [Attribute] -> [Attribute]+escapeAttributes xmlEscaper atts =+ map+ (\ (name,av) -> (name,escapeAttValue xmlEscaper av))+ atts+ +escapeAttValue :: XmlEscaper -> AttValue -> AttValue+escapeAttValue xmlEscaper (AttValue attValList) =+ AttValue (+ concat ( + map+ (\ av -> case av of+ Right ref -> [av]+ Left s ->+ map+ (\ c -> if isEscape xmlEscaper c + then+ Right (mkEscape xmlEscaper c)+ else+ Left [c]+ )+ s + )+ attValList+ )+ )++escapeContent :: XmlEscaper -> [Content] -> [Content]+escapeContent xmlEscaper contents =+ concat+ (map+ (\ content -> case content of+ (CString b str) ->+ map+ (\ c -> if isEscape xmlEscaper c+ then+ CRef (mkEscape xmlEscaper c)+ else+ CString b [c]+ )+ str+ (CElem elem) -> [CElem (escapeElement xmlEscaper elem)]+ _ -> [content]+ )+ contents+ )++mkEscape :: XmlEscaper -> Char -> Reference+mkEscape (XmlEscaper {toEscape = toEscape}) ch =+ case lookupFM toEscape ch of+ Nothing -> RefChar (ord ch)+ Just str -> RefEntity str+ where+ showHex = showIntAtBase 16 intToDigit + -- It should be, but in GHC it isn't.++-- ------------------------------------------------------------------------+-- Unescaping+-- ------------------------------------------------------------------------++xmlUnEscape :: XmlEscaper -> Element -> Element+xmlUnEscape xmlEscaper element =+ compressElement (unEscapeElement xmlEscaper element)++unEscapeElement :: XmlEscaper -> Element -> Element+unEscapeElement xmlEscaper (Elem name attributes content) =+ Elem name (unEscapeAttributes xmlEscaper attributes)+ (unEscapeContent xmlEscaper content)++unEscapeAttributes :: XmlEscaper -> [Attribute] -> [Attribute]+unEscapeAttributes xmlEscaper atts =+ map+ (\ (name,av) -> (name,unEscapeAttValue xmlEscaper av))+ atts++unEscapeAttValue :: XmlEscaper -> AttValue -> AttValue+unEscapeAttValue xmlEscaper (AttValue attValList) =+ AttValue (+ map+ (\ av -> case av of+ Left s -> av+ Right ref -> case unEscapeChar xmlEscaper ref of+ Just c -> Left [c]+ Nothing -> av+ )+ attValList+ )++unEscapeContent :: XmlEscaper -> [Content] -> [Content]+unEscapeContent xmlEscaper content =+ map+ (\ content -> case content of+ CRef ref -> case unEscapeChar xmlEscaper ref of+ Just c -> CString True [c]+ Nothing -> content+ CElem elem -> CElem (unEscapeElement xmlEscaper elem)+ _ -> content+ )+ content++unEscapeChar :: XmlEscaper -> Reference -> Maybe Char+unEscapeChar xmlEscaper ref =+ case ref of+ RefChar i -> Just (chr i)+ RefEntity name -> lookupFM (fromEscape xmlEscaper) name++-- ------------------------------------------------------------------------+-- After escaping and unescaping we rebuild the lists, compressing+-- adjacent identical character data.+-- ------------------------------------------------------------------------++compressElement :: Element -> Element+compressElement (Elem name attributes content) =+ Elem name (compressAttributes attributes) (compressContent content)++compressAttributes :: [(Name,AttValue)] -> [(Name,AttValue)]+compressAttributes atts =+ map+ (\ (name,av) -> (name,compressAttValue av))+ atts++compressAttValue :: AttValue -> AttValue+compressAttValue (AttValue l) = AttValue (compress l)+ where+ compress :: [Either String Reference] -> [Either String Reference]+ compress [] = []+ compress (Right ref : es) = Right ref : (compress es)+ compress ( (ls @ (Left s1)) : es) =+ case compress es of+ (Left s2 : es2) -> Left (s1 ++ s2) : es2+ es2 -> ls : es2++compressContent :: [Content] -> [Content]+compressContent [] = []+compressContent ((csb @ (CString b1 s1)) : cs) =+ case compressContent cs of+ (CString b2 s2) : cs2+ | b1 == b2+ -> CString b1 (s1 ++ s2) : cs2+ cs2 -> csb : cs2+compressContent (CElem element : cs) = + CElem (compressElement element) : compressContent cs+compressContent (c : cs) = c : compressContent cs+++-- ------------------------------------------------------------------------+-- Making XmlEscaper values.+-- ------------------------------------------------------------------------++stdXmlEscaper :: XmlEscaper+stdXmlEscaper = mkXmlEscaper+ [('\60',"lt"),('\62',"gt"),('\38',"amp"),('\39',"apos"),('\34',"quot")]+ (\ ch -> + let+ i = ord ch+ in+ i < 32 || i >= 127 ||+ case ch of+ '\"' -> True+ '&' -> True+ '<' -> True+ '>' -> True+ _ -> False+ )+ + +mkXmlEscaper :: [(Char,String)] -> (Char -> Bool) -> XmlEscaper+mkXmlEscaper escapes isEscape =+ XmlEscaper {+ toEscape = listToFM escapes,+ fromEscape = listToFM (map (\ (c,str) -> (str,c)) escapes),+ isEscape = isEscape+ }+
+ src/Text/XML/HaXml/Haskell2Xml.hs view
@@ -0,0 +1,379 @@+-- | 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 [Left s]) = read s++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
@@ -0,0 +1,175 @@+-- | These are just some common abbreviations for generating HTML+-- content within the XML transformation framework defined+-- by "Text.Xml.HaXml.Combinators".+module Text.XML.HaXml.Html.Generate+ ( -- * HTML construction filters+ -- ** Containers+ html+ , hhead+ , htitle+ , hbody+ , h1, h2, h3, h4+ , hpara+ , hdiv, hspan, margin+ -- ** Anchors+ , anchor, makehref, anchorname+ -- ** Text style+ , hpre+ , hcentre+ , hem, htt, hbold+ , parens, bullet+ -- ** Tables+ , htable, hrow, hcol+ -- ** Breaks, lines+ , hbr, hhr+ -- ** Attributes+ , showattr, (!), (?)+ -- * A simple HTML pretty-printer+ , htmlprint+ ) where++import Char (isSpace)+import List (partition)++import Text.XML.HaXml.Types+import Text.XML.HaXml.Combinators+import qualified Text.PrettyPrint.HughesPJ as Pretty++---- Constructor functions++html, hhead, htitle, hbody, h1, h2, h3, h4, hpara, hpre, hcentre,+ hem, htt, hbold, htable, hrow, hcol, hdiv, hspan, margin+ :: [CFilter] -> CFilter+html = mkElem "html"+hhead = mkElem "head"+htitle = mkElem "title"+hbody = mkElem "body"+h1 = mkElem "h1"+h2 = mkElem "h2"+h3 = mkElem "h3"+h4 = mkElem "h4"+hpara = mkElem "p"+hpre = mkElem "pre"+hcentre = mkElem "center"+hem = mkElem "em"+htt = mkElem "tt"+hbold = mkElem "b"++htable = mkElem "table"+hrow = mkElem "tr"+hcol = mkElem "td"++hdiv = mkElem "div"+hspan = mkElem "span"+margin = mkElemAttr "div" [("margin-left",("2em"!)),+ ("margin-top", ("1em"!))]++anchor :: [(String, CFilter)] -> [CFilter] -> CFilter+anchor = mkElemAttr "a"++makehref, anchorname :: CFilter -> [CFilter] -> CFilter+makehref r = anchor [ ("href",r) ]+anchorname n = anchor [ ("name",n) ]+++hbr, hhr :: CFilter+hbr = mkElem "br" []+hhr = mkElem "hr" []+++showattr, (!), (?) :: String -> CFilter+showattr n = find n literal+(!) = literal+(?) = showattr++parens :: CFilter -> CFilter+parens f = cat [ literal "(", f, literal ")" ]++bullet :: [CFilter] -> CFilter+bullet = cat . (literal "M-^U":)+++---- Printing function++-- htmlprint :: [Content] -> String+-- htmlprint = concatMap cprint+-- where+-- cprint (CElem e _) = elem e +-- cprint (CString _ s) = s+-- cprint (CMisc m) = ""+-- +-- elem (Elem n as []) = "\n<"++n++attrs as++" />"+-- elem (Elem n as cs) = "\n<"++n++attrs as++">"++htmlprint cs++"\n</"++n++">"+-- +-- attrs = concatMap attr+-- attr (n,v) = " "++n++"='"++v++"'"+++htmlprint :: [Content] -> 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 (c:cs) = c : foldrefs cs++--ref (RefEntity (EntityRef n)) = n -- Actually, should look-up symtable.+--ref (RefChar (CharRef s)) = s+ 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+ ((if ws then id else deSpace) s)))+ cprint (CRef r) = Pretty.text ("&"++ref r++";")+ cprint (CMisc m) = Pretty.empty+ + elem (Elem n as []) = Pretty.text "<" Pretty.<>+ Pretty.text n Pretty.<>+ attrs as Pretty.<>+ Pretty.text " />"+ elem (Elem n as cs) =+ -- ( Pretty.text "<" Pretty.<>+ -- Pretty.text n Pretty.<>+ -- attrs as Pretty.<>+ -- Pretty.text ">") Pretty.$$+ -- Pretty.nest 6 (htmlprint cs) Pretty.$$+ -- ( Pretty.text "</" Pretty.<>+ -- Pretty.text n Pretty.<>+ -- Pretty.text ">" )+ Pretty.fcat [ ( Pretty.text "<" Pretty.<>+ Pretty.text n Pretty.<>+ attrs as Pretty.<>+ Pretty.text ">")+ , Pretty.nest 4 (htmlprint cs)+ , ( Pretty.text "</" Pretty.<>+ Pretty.text n Pretty.<>+ Pretty.text ">" )+ ]++ attrs = Pretty.cat . map attr+ attr (n,AttValue [Left v]) =+ Pretty.text " " Pretty.<>+ Pretty.text n Pretty.<>+ Pretty.text "='" Pretty.<>+ Pretty.text v Pretty.<>+ Pretty.text "'"++ fmt n [] = []+ fmt n s = let (top,bot) = splitAt n s+ (word,left) = keepUntil isSpace (reverse top)+ in if length top < n then [s]+ else if not (null left) then+ reverse left: fmt n (word++bot)+ else let (big,rest) = keepUntil isSpace s+ in reverse big: fmt n rest++ deSpace [] = []+ deSpace (c:cs) | c=='\n' = deSpace (' ':cs)+ | isSpace c = c : deSpace (dropWhile isSpace cs)+ | otherwise = c : deSpace cs++ keepUntil p xs = select p ([],xs)+ where select p (ls,[]) = (ls,[])+ select p (ls,(x:xs)) | p x = (ls,x:xs)+ | otherwise = select p (x:ls,xs)
+ src/Text/XML/HaXml/Html/Parse.hs view
@@ -0,0 +1,693 @@+-- | 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.Parse+ ( 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.ParserCombinators.HuttonMeijerWallace++-- #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.+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")+++---- Document simplification ----++simplify :: Document -> Document+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)) -> CElem (Elem n avs (deepfilter p cs))+ _ -> 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) String a++name :: HParser Name+name = do {(p,TokName s) <- item; return s}++string, freetext :: HParser String+string = do {(p,TokName s) <- item; return s}+freetext = do {(p,TokFreeText s) <- item; return s}++maybe :: HParser a -> HParser (Maybe a)+maybe p =+ ( p >>= return . Just) ++++ ( return Nothing)++either :: HParser a -> HParser b -> HParser (Either a b)+either p q =+ ( p >>= return . Left) ++++ ( 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 [] } )++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)]; } )++nmtoken :: HParser NmToken+nmtoken = (string +++ freetext)+++---- XML Parsing Functions ----++document :: HParser Document+document = do+ p <- prolog `elserror` "unrecognisable XML prolog"+ 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))+ ms)++comment :: HParser Comment+comment = do+ bracket (tok TokCommentOpen) freetext (tok TokCommentClose)++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)++cdsect :: HParser CDSect+cdsect = do+ tok TokSectionOpen+ bracket (tok (TokSection CDATAx)) chardata (tok TokSectionClose)++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" +++ word "XML")+ p <- posn+ s <- freetext+ tok TokPIClose `elserror` "missing ?> in <?xml ...?>"+ (raise . papply' aux () . 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++versioninfo :: HParser VersionInfo+versioninfo = do+ (word "version" +++ word "VERSION")+ tok TokEqual+ bracket (tok TokQuote) freetext (tok TokQuote)++misc :: HParser Misc+misc = + ( comment >>= return . Comment) ++++ ( 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)+ 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 [])++--markupdecl :: HParser MarkupDecl+--markupdecl =+-- ( elementdecl >>= return . Element) ++++-- ( attlistdecl >>= return . AttList) ++++-- ( entitydecl >>= return . Entity) ++++-- ( notationdecl >>= return . Notation) ++++-- ( misc >>= return . MarkupMisc) ++++-- 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) ++++-- ( conditionalsect >>= return . ExtConditionalSect) ++++-- 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)+++++----+-- 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)+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 [])) ++++ -- ( do tok TokAnyClose -- sequence <tag></tag> (**not HTML?**)+ -- debug (e++"[+")+ -- n <- bracket (tok TokEndOpen) name (tok TokAnyClose)+ -- debug "]"+ -- if e == (map toLower n :: Name) + -- then return ([], Elem e avs []) + -- else return (error "no nesting in empty tag")) ++++ ( 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"+ debug (e++"[")+ zz <- many (content e)+ -- (if null zz then return (error ("empty content in context: "++e)) else return ())+ 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 "^"+ return ([], Elem e avs cs)+ else+ 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)))++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 (map Right (zip (repeat p) ts))++reformatAttrs avs = concatMap f0 avs+ where f0 (a, AttValue [Left s]) = [TokName a, TokEqual, TokQuote,+ TokFreeText s, 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))++----+elemtag :: HParser ElemTag+elemtag = do+ n <- name `elserror` "malformed element tag"+ as <- many attribute+ return (ElemTag (map toLower n) as)++attribute :: HParser Attribute+attribute = do+ n <- name+ v <- (do tok TokEqual+ attvalue) ++++ (return (AttValue [Left "TRUE"]))+ return (map toLower n,v)++--elementdecl :: HParser ElementDecl+--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"+-- return (ElementDecl n c)+--+--contentspec :: HParser ContentSpec+--contentspec =+-- ( word "EMPTY" >> return EMPTY) ++++-- ( word "ANY" >> return ANY) ++++-- ( mixed >>= return . Mixed) ++++-- ( cp >>= return . ContentSpec) ++++-- PEREF(ContentPE,contentspec)+--+--choice :: HParser [CP]+--choice = do+-- bracket (tok TokBraOpen)+-- (cp `sepby1` (tok TokPipe))+-- (tok TokBraClose)+--+--sequence :: HParser [CP]+--sequence = do+-- bracket (tok TokBraOpen)+-- (cp `sepby1` (tok TokComma))+-- (tok TokBraClose)+--+--cp :: HParser CP+--cp =+-- ( do n <- name+-- m <- modifier+-- return (TagName n m)) ++++-- ( do ss <- sequence+-- m <- modifier+-- return (Seq ss m)) ++++-- ( do cs <- choice+-- m <- modifier+-- return (Choice cs m)) ++++-- PEREF(CPPE,cp)+--+--modifier :: HParser Modifier+--modifier =+-- ( tok TokStar >> return Star) ++++-- ( tok TokQuery >> return Query) ++++-- ( tok TokPlus >> return Plus) ++++-- ( return None)+--+--mixed :: HParser Mixed+--mixed = do+-- tok TokBraOpen+-- tok TokHash+-- word "PCDATA"+-- cont+-- where+-- cont = ( tok TokBraClose >> return PCDATA) ++++-- ( 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 `elserror` "missing identifier in ATTLIST"+-- ds <- many attdef+-- tok TokAnyClose `elserror` "missing > terminating ATTLIST"+-- return (AttListDecl n ds)+--+--attdef :: HParser AttDef+--attdef = do+-- n <- name+-- t <- atttype `elserror` "missing attribute type in attlist defn"+-- d <- defaultdecl+-- return (AttDef n t d)+--+--atttype :: HParser AttType+--atttype =+-- ( word "CDATA" >> return StringType) ++++-- ( tokenizedtype >>= return . TokenizedType) ++++-- ( 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 "NMTOKENS" >> return NMTOKENS)+--+--enumeratedtype :: HParser EnumeratedType+--enumeratedtype =+-- ( notationtype >>= return . NotationType) ++++-- ( enumeration >>= return . Enumeration)+--+--notationtype :: HParser NotationType+--notationtype = do+-- word "NOTATION"+-- bracket (tok TokBraOpen)+-- (name `sepby1` (tok TokPipe))+-- (tok TokBraClose)+--+--enumeration :: HParser Enumeration+--enumeration =+-- bracket (tok TokBraOpen)+-- (nmtoken `sepby1` (tok TokPipe))+-- (tok TokBraClose)+--+--defaultdecl :: HParser DefaultDecl+--defaultdecl =+-- ( tok TokHash >> word "REQUIRED" >> return REQUIRED) ++++-- ( tok TokHash >> word "IMPLIED" >> return IMPLIED) ++++-- ( 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 `elserror` "missing [ after INCLUDE"+-- i <- extsubsetdecl `elserror` "missing ExtSubsetDecl in INCLUDE"+-- tok TokSectionClose `elserror` "missing ] after INCLUDE"+-- return (IncludeSect i)) ++++-- ( do tok TokSectionOpen+-- tok (TokSection IGNOREx)+-- tok TokSqOpen `elserror` "missing [ after IGNORE"+-- i <- many ignoresectcontents+-- tok TokSectionClose `elserror` "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) (freetext >>= val) (tok TokSemi)+ 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) ++++ ( entityref >>= return . RefEntity)++entityref :: HParser EntityRef+entityref = do+ n <- bracket (tok TokAmp) name (tok TokSemi)+ return n++charref :: HParser CharRef+charref = do+ bracket (tok TokAmp) (freetext >>= readCharVal) (tok TokSemi)+ 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) nmtoken (tok TokSemi)+--+--entitydecl :: HParser EntityDecl+--entitydecl =+-- ( gedecl >>= return . EntityGEDecl) ++++-- ( pedecl >>= return . EntityPEDecl)+--+--gedecl :: HParser GEDecl+--gedecl = do+-- 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"+-- return (GEDecl n e)+--+--pedecl :: HParser PEDecl+--pedecl = do+-- tok TokSpecialOpen+-- 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"+-- return (PEDecl n e)+--+--entitydef :: HParser EntityDef+--entitydef =+-- ( entityvalue >>= return . DefEntityValue) ++++-- ( do eid <- externalid+-- ndd <- maybe ndatadecl+-- return (DefExternalID eid ndd))+--+--pedef :: HParser PEDef+--pedef =+-- ( entityvalue >>= return . PEDefEntityValue) ++++-- ( externalid >>= return . PEDefExternalID)++externalid :: HParser ExternalID+externalid =+ ( do word "SYSTEM"+ s <- systemliteral+ return (SYSTEM s)) ++++ ( do word "PUBLIC"+ p <- pubidliteral+ s <- (systemliteral +++ 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" +++ word "XML")+ v <- maybe versioninfo+ e <- encodingdecl+ tok TokPIClose `elserror` "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" +++ word "ENCODING")+ tok TokEqual `elserror` "expected = in 'encoding' decl"+ f <- bracket (tok TokQuote) freetext (tok TokQuote)+ return (EncodingDecl f)++--notationdecl :: HParser NotationDecl+--notationdecl = do+-- tok TokSpecialOpen+-- word "NOTATION"+-- n <- name+-- e <- either externalid publicid+-- tok TokAnyClose `elserror` "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) (many ev) (tok TokQuote)+ return (EntityValue evs)++ev :: HParser EV+ev =+ ( freetext >>= return . EVString) ++++-- PEREF(EVPERef,ev) ++++ ( reference >>= return . EVRef)++attvalue :: HParser AttValue+attvalue =+ ( do avs <- bracket (tok TokQuote)+ (many (either freetext reference))+ (tok TokQuote)+ return (AttValue avs) ) ++++ ( do p <- (tok TokPlus >> return ('+':))+ +++ (tok TokHash >> return ('#':))+ +++ (return id)+ v <- nmtoken+ return (AttValue [Left (p v)]) )++systemliteral :: HParser SystemLiteral+systemliteral = do+ s <- bracket (tok TokQuote) freetext (tok TokQuote)+ return (SystemLiteral s) -- note: need to fold &...; escapes++pubidliteral :: HParser PubidLiteral+pubidliteral = do+ s <- bracket (tok TokQuote) freetext (tok TokQuote)+ return (PubidLiteral s) -- note: need to fold &...; escapes++chardata :: HParser CharData+chardata = freetext -- >>= return . CharData+
+ src/Text/XML/HaXml/Html/Pretty.hs view
@@ -0,0 +1,234 @@+-- | This is a separate pretty-printer for HTML documents, recognising+-- some of the differences between HTML and true XML.++module Text.XML.HaXml.Html.Pretty+ ( document+ , element+ , attribute+ , content+ ) where++import Prelude hiding (maybe,either)+import Maybe hiding (maybe)+import List (intersperse)+import Char (isSpace)+import Text.PrettyPrint.HughesPJ+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++--peref p = text "%" <> text p <> text ";"++----++document :: Document -> 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++element :: Element -> Doc+attribute :: Attribute -> Doc --etc+content :: Content -> 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 (cs',d') = carryscan carrycontent cs (text ">")+-- in+-- ( c <>+-- text "<" <> text n <+> fsep (map attribute as) $$+-- nest 2 (vcat cs') <> -- $$+-- c' <> text "</" <> text n+-- , text ">")+--carrycontent (CElem e) c = carryelem e c+--carrycontent (CString _ s) c = (c <> chardata 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, c') = f a c+-- (bs,c'') = carryscan f as c'+-- in (b:bs, c'')++carryelem e@(Elem n as cs) c+ | isText (head cs) =+ ( start <>+ text ">" <> hcat (map content cs) <> text "</" <> text n+ , text ">")+ | otherwise =+ let (d,c') = foldl carrycontent (start, text ">") cs in+ ( d <> c' <> 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 _ s) = chardata 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) = 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) = text "'" <> text s <> text "'"+systemliteral (SystemLiteral s)= text "'" <> text s <> text "'"+chardata s = if all isSpace s then empty else text s+cdsect c = text "<![CDATA[" <> chardata c <> text "]]>"++----
+ src/Text/XML/HaXml/Lex.hs view
@@ -0,0 +1,349 @@+-- | 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.)+--+-- 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 'xmlLex'. A secondary entry point, 'xmlReLex', 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).+--+-- As one would expect, the lexer is essentially a small finite+-- state machine.++module Text.XML.HaXml.Lex+ (+ -- * Entry points to the lexer+ xmlLex -- :: String -> String -> [Token]+ , xmlReLex -- :: Posn -> String -> [Token]+ , posInNewCxt -- :: String -> Posn+ -- * Token and position types+ , Token+ , Posn(..)+ , TokenT(..)+ , Special(..)+ , Section(..)+ ) where++import Char++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 )++-- | The basic token type.+data TokenT =+ TokCommentOpen -- ^ \<!--+ | TokCommentClose -- ^ -->+ | TokPIOpen -- ^ \<?+ | TokPIClose -- ^ ?>+ | TokSectionOpen -- ^ \<![+ | TokSectionClose -- ^ ]]>+ | TokSection Section -- ^ CDATA INCLUDE IGNORE etc+ | TokSpecialOpen -- ^ \<!+ | TokSpecial Special -- ^ DOCTYPE ELEMENT ATTLIST etc+ | TokEndOpen -- ^ \<\/+ | TokEndClose -- ^ \/>+ | TokAnyOpen -- ^ \<+ | TokAnyClose -- ^ >+ | TokSqOpen -- ^ \[+ | TokSqClose -- ^ \]+ | TokEqual -- ^ =+ | TokQuery -- ^ ?+ | TokStar -- ^ \*+ | TokPlus -- ^ ++ | TokAmp -- ^ &+ | TokSemi -- ^ ;+ | TokHash -- ^ #+ | TokBraOpen -- ^ (+ | TokBraClose -- ^ )+ | TokPipe -- ^ |+ | TokPercent -- ^ %+ | TokComma -- ^ ,+ | TokQuote -- ^ \'\' or \"\"+ | TokName String -- ^ begins with letter, no spaces+ | TokFreeText String -- ^ any character data+ | TokNull -- ^ fake token+ deriving (Eq)++data Special =+ DOCTYPEx+ | ELEMENTx+ | ATTLISTx+ | ENTITYx+ | NOTATIONx+ deriving (Eq,Show)+data Section =+ CDATAx+ | INCLUDEx+ | IGNOREx+ deriving (Eq,Show)++instance Show TokenT where+ showsPrec p TokCommentOpen = showString "<!--"+ showsPrec p TokCommentClose = showString "-->"+ showsPrec p TokPIOpen = showString "<?"+ showsPrec p TokPIClose = showString "?>"+ showsPrec p TokSectionOpen = showString "<!["+ showsPrec p TokSectionClose = showString "]]>"+ showsPrec p (TokSection s) = showsPrec p s+ showsPrec p TokSpecialOpen = showString "<!"+ showsPrec p (TokSpecial s) = showsPrec p s+ showsPrec p TokEndOpen = showString "</"+ showsPrec p TokEndClose = showString "/>"+ showsPrec p TokAnyOpen = showString "<"+ showsPrec p TokAnyClose = showString ">"+ showsPrec p TokSqOpen = showString "["+ showsPrec p TokSqClose = showString "]"+ showsPrec p TokEqual = showString "="+ showsPrec p TokQuery = showString "?"+ showsPrec p TokStar = showString "*"+ showsPrec p TokPlus = showString "+"+ showsPrec p TokAmp = showString "&"+ showsPrec p TokSemi = showString ";"+ showsPrec p TokHash = showString "#"+ showsPrec p TokBraOpen = showString "("+ showsPrec p TokBraClose = showString ")"+ showsPrec p TokPipe = showString "|"+ showsPrec p TokPercent = showString "%"+ showsPrec p TokComma = showString ","+ showsPrec p TokQuote = showString "' or \""+ showsPrec p (TokName s) = showString s+ showsPrec p (TokFreeText s) = showString s+ showsPrec p TokNull = showString "(null)"++--trim, revtrim :: String -> String+--trim = f . f where f = reverse . dropWhile isSpace+--revtrim = f.reverse.f where f = dropWhile isSpace+--revtrim = reverse . dropWhile (=='\n') -- most recently used defn.++emit :: TokenT -> Posn -> Token+emit tok p = forcep p `seq` Right (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++skip :: Int -> Posn -> String -> (Posn->String->[Token]) -> [Token]+skip n p s k = k (addcol n p) (drop n s)++blank :: ([Where]->Posn->String->[Token]) -> [Where]-> Posn-> String-> [Token]+blank k (InTag t:_) p [] = lexerror ("unexpected EOF within "++t) p+blank k _ p [] = []+blank k w p (' ': s) = blank k w (addcol 1 p) s+blank k w p ('\t':s) = blank k w (tab p) s+blank k w p ('\n':s) = blank k w (newline p) s+blank k w p ('\r':s) = blank k w p s+blank k w p ('\xa0': s) = blank k w (addcol 1 p) s+blank k w p s = k w p s++prefixes :: String -> String -> Bool+[] `prefixes` ys = True+(x:xs) `prefixes` (y:ys) = x==y && xs `prefixes` ys+(x:xs) `prefixes` [] = False --error "unexpected EOF in prefix"++textUntil close tok acc pos p [] k =+ lexerror ("unexpected EOF while looking for closing token "++close+ ++"\n to match the opening token in "++show pos) p+textUntil close tok acc pos p (s:ss) k+ | close `prefixes` (s:ss) = emit (TokFreeText (reverse acc)) pos:+ emit tok p:+ skip (length close-1) (addcol 1 p) ss k+ | isSpace s = textUntil close tok (s:acc) pos (white s p) ss k+ | otherwise = textUntil close tok (s:acc) pos (addcol 1 p) ss k++textOrRefUntil close tok acc pos p [] k =+ lexerror ("unexpected EOF while looking for closing token "++close+ ++"\n to match the opening token in "++show pos) p+textOrRefUntil close tok acc pos p (s:ss) k+ | close `prefixes` (s:ss) = emit (TokFreeText (reverse acc)) pos:+ emit tok p:+ skip (length close-1) (addcol 1 p) ss k+ | s=='&' = (if not (null acc)+ then (emit (TokFreeText (reverse acc)) pos:)+ else id)+ (emit TokAmp p:+ textUntil ";" TokSemi "" p (addcol 1 p) ss+ (\p' i-> textOrRefUntil close tok "" p p' i k))+ | isSpace s = textOrRefUntil close tok (s:acc) pos (white s p) ss k+ | 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+-- the XML file.+xmlLex :: String -> String -> [Token]+xmlLex filename = xmlAny [] (posInNewCxt ("file "++filename) Nothing)++-- | 'xmlReLex' 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.+xmlReLex :: Posn -> String -> [Token]+xmlReLex p s+ | "INCLUDE" `prefixes` s = emit (TokSection INCLUDEx) p: k 7+ | "IGNORE" `prefixes` s = emit (TokSection IGNOREx) p: k 6+ | otherwise = blank xmlAny [] p s+ where+ k n = skip n p s (blank xmlAny [])++--xmltop :: Posn -> String -> [Token]+--xmltop p [] = []+--xmltop p s+-- | "<?" `prefixes` s = emit TokPIOpen p: next 2 (xmlPI [InTag "<?...?>"])+-- | "<!--" `prefixes` s = emit TokCommentOpen p: next 4 (xmlComment [])+-- | "<!" `prefixes` s = emit TokSpecialOpen p: next 2 (xmlSpecial [InTag "<!...>"])+-- | otherwise = lexerror "expected <?xml?> or <!DOCTYPE>" p+-- where next n k = skip n p s k++xmlPI w p s = xmlName p s "name of processor in <? ?>" (blank xmlPIEnd w)+xmlPIEnd w p s = textUntil "?>" TokPIClose "" p p s (blank xmlAny (tail w))+xmlComment w p s = textUntil "-->" TokCommentClose "" p p s (blank xmlAny w)++-- Note: the order of the clauses in xmlAny is very important.+-- Some matches must precede the NotInTag test, the rest must follow it.+xmlAny :: [Where] -> Posn -> String -> [Token]+xmlAny (InTag t:_) p [] = lexerror ("unexpected EOF within "++t) p+xmlAny _ p [] = []+xmlAny w p s@('<':ss)+ | "?" `prefixes` ss = emit TokPIOpen p:+ skip 2 p s (xmlPI (InTag "<?...?>":w))+ | "!--" `prefixes` ss = emit TokCommentOpen p: skip 4 p s (xmlComment w)+ | "![" `prefixes` ss = emit TokSectionOpen p: skip 3 p s (xmlSection w)+ | "!" `prefixes` ss = emit TokSpecialOpen p:+ skip 2 p s (xmlSpecial (InTag "<!...>":w))+ | "/" `prefixes` ss = emit TokEndOpen p: + skip 2 p s (xmlTag (InTag "</...>":tail w))+ | otherwise = emit TokAnyOpen p:+ skip 1 p s (xmlTag (InTag "<...>":NotInTag:w))+xmlAny (_:_:w) p s@('/':ss)+ | ">" `prefixes` ss = emit TokEndClose p: skip 2 p s (xmlAny w)+xmlAny w p ('&':ss) = emit TokAmp p: textUntil ";" TokSemi "" p+ (addcol 1 p) ss (xmlAny w)+xmlAny w@(NotInTag:_) p s = xmlContent "" w p p s+-- everything below here is implicitly InTag.+xmlAny w p ('>':ss) = emit TokAnyClose p: xmlAny (tail w) (addcol 1 p) ss+xmlAny w p ('[':ss) = emit TokSqOpen p:+ blank xmlAny (InTag "[...]":w) (addcol 1 p) ss+xmlAny w p (']':ss)+ | "]>" `prefixes` ss =+ emit TokSectionClose p: skip 3 p (']':ss) (xmlAny (tail w))+ | otherwise = emit TokSqClose p: blank xmlAny (tail w) (addcol 1 p) ss+xmlAny w p ('(':ss) = emit TokBraOpen p:+ blank xmlAny (InTag "(...)":w) (addcol 1 p) ss+xmlAny w p (')':ss) = emit TokBraClose p: blank xmlAny (tail w) (addcol 1 p) ss+xmlAny w p ('=':ss) = emit TokEqual p: blank xmlAny w (addcol 1 p) ss+xmlAny w p ('*':ss) = emit TokStar p: blank xmlAny w (addcol 1 p) ss+xmlAny w p ('+':ss) = emit TokPlus p: blank xmlAny w (addcol 1 p) ss+xmlAny w p ('?':ss) = emit TokQuery p: blank xmlAny w (addcol 1 p) ss+xmlAny w p ('|':ss) = emit TokPipe p: blank xmlAny w (addcol 1 p) ss+xmlAny w p ('%':ss) = emit TokPercent p: blank xmlAny w (addcol 1 p) ss+xmlAny w p (';':ss) = emit TokSemi p: blank xmlAny w (addcol 1 p) ss+xmlAny w p (',':ss) = emit TokComma p: blank xmlAny w (addcol 1 p) ss+xmlAny w p ('#':ss) = emit TokHash p: blank xmlAny w (addcol 1 p) ss+xmlAny w p ('"':ss) = emit TokQuote p: textOrRefUntil "\"" TokQuote "" p1+ p1 ss (xmlAny w)+ where p1 = addcol 1 p+xmlAny w p ('\'':ss) = emit TokQuote p: textOrRefUntil "'" TokQuote "" p1+ p1 ss (xmlAny w)+ where p1 = addcol 1 p+xmlAny w p s+ | isSpace (head s) = blank xmlAny w p s+ | isAlphaNum (head s) || (head s)`elem`":_"+ = xmlName p s "some kind of name" (blank xmlAny w)+ | otherwise = lexerror ("unrecognised token: "++take 4 s) p++xmlTag w p s = xmlName p s "tagname for element in < >" (blank xmlAny w)++xmlSection = blank xmlSection0+ where+ xmlSection0 w p s+ | "CDATA[" `prefixes` s = emit (TokSection CDATAx) p: accum w p s 6+ | "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+ 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)++xmlSpecial w p s+ | "DOCTYPE" `prefixes` s = emit (TokSpecial DOCTYPEx) p: k 7+ | "ELEMENT" `prefixes` s = emit (TokSpecial ELEMENTx) p: k 7+ | "ATTLIST" `prefixes` s = emit (TokSpecial ATTLISTx) p: k 7+ | "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+ where k n = skip n p s (blank xmlAny w)++xmlName p (s:ss) cxt k+ | isAlphaNum s || s==':' || s=='_' = gatherName (s:[]) p (addcol 1 p) ss k+ | otherwise = lexerror ("expected a "++cxt++", but got char "++show s) p+ where+ gatherName acc pos p [] k =+ emit (TokName (reverse acc)) pos: k p []+ -- lexerror ("unexpected EOF in name at "++show pos) p+ gatherName acc pos p (s:ss) k+ | isAlphaNum s || s `elem` ".-_:"+ = gatherName (s:acc) pos (addcol 1 p) ss k+ | otherwise = emit (TokName (reverse acc)) pos: k p (s:ss)++xmlContent acc w pos p [] = if all isSpace acc then []+ else lexerror "unexpected EOF between tags" p+xmlContent acc w pos p (s:ss)+ | elem s "<&" = {- if all isSpace acc then xmlAny w p (s:ss) else -}+ emit (TokFreeText (reverse acc)) pos: xmlAny w p (s:ss)+ | isSpace s = xmlContent (s:acc) w pos (white s p) ss+ | otherwise = xmlContent (s:acc) w pos (addcol 1 p) ss++++--ident :: (String->TokenT) ->+-- Posn -> String -> [String] ->+-- (Posn->String->[String]->[Token]) -> [Token]+--ident tok p s ss k =+-- let (name,s0) = span (\c-> isAlphaNum c || c `elem` "`-_#.'/\\") s+-- in emit (tok name) p: skip (length name) p s ss k
+ src/Text/XML/HaXml/OneOfN.hs view
@@ -0,0 +1,553 @@+module Text.XML.HaXml.OneOfN where++import Text.XML.HaXml.Xml2Haskell++data OneOf2 a b+ = OneOf2 a | TwoOf2 b+ deriving (Eq,Show)++instance (XmlContent a,XmlContent b)+ => XmlContent (OneOf2 a b)+ where+ fromElem cs =+ (choice OneOf2 $ choice TwoOf2+ $ (\c->(Nothing,c))) cs+ toElem (OneOf2 x) = toElem x+ toElem (TwoOf2 x) = toElem x++----+data OneOf3 a b c+ = OneOf3 a | TwoOf3 b | ThreeOf3 c+ deriving (Eq,Show)++instance (XmlContent a,XmlContent b,XmlContent c)+ => XmlContent (OneOf3 a b c)+ where+ fromElem cs =+ (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++----+data OneOf4 a b c d+ = OneOf4 a | TwoOf4 b | ThreeOf4 c | FourOf4 d+ deriving (Eq,Show)++instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d)+ => XmlContent (OneOf4 a b c d)+ where+ fromElem cs =+ (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++----+data OneOf5 a b c d e+ = OneOf5 a | TwoOf5 b | ThreeOf5 c | FourOf5 d | FiveOf5 e+ deriving (Eq,Show)++instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e)+ => XmlContent (OneOf5 a b c d e)+ where+ fromElem cs =+ (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++----+data OneOf6 a b c d e f+ = OneOf6 a | TwoOf6 b | ThreeOf6 c | FourOf6 d | FiveOf6 e | SixOf6 f+ deriving (Eq,Show)++instance (XmlContent a,XmlContent b,XmlContent c,XmlContent d,XmlContent e+ ,XmlContent f)+ => XmlContent (OneOf6 a b c d e f)+ where+ fromElem cs =+ (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++----+data OneOf7 a b c d e f g+ = OneOf7 a | TwoOf7 b | ThreeOf7 c | FourOf7 d | FiveOf7 e | SixOf7 f+ | SevenOf7 g+ deriving (Eq,Show)++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 =+ (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++----+data OneOf8 a b c d e f g h+ = OneOf8 a | TwoOf8 b | ThreeOf8 c | FourOf8 d | FiveOf8 e | SixOf8 f+ | SevenOf8 g | EightOf8 h+ deriving (Eq,Show)++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 =+ (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++----+data OneOf9 a b c d e f g h i+ = OneOf9 a | TwoOf9 b | ThreeOf9 c | FourOf9 d | FiveOf9 e | SixOf9 f+ | SevenOf9 g | EightOf9 h | NineOf9 i+ deriving (Eq,Show)++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 =+ (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++----+data OneOf10 a b c d e f g h i j+ = OneOf10 a | TwoOf10 b | ThreeOf10 c | FourOf10 d | FiveOf10 e+ | SixOf10 f | SevenOf10 g | EightOf10 h | NineOf10 i | TenOf10 j+ deriving (Eq,Show)++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 =+ (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++----+data OneOf11 a b c d e f g h i j k+ = OneOf11 a | TwoOf11 b | ThreeOf11 c | FourOf11 d | FiveOf11 e+ | SixOf11 f | SevenOf11 g | EightOf11 h | NineOf11 i | TenOf11 j+ | ElevenOf11 k+ deriving (Eq,Show)++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 =+ (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++----+data OneOf12 a b c d e f g h i j k l+ = OneOf12 a | TwoOf12 b | ThreeOf12 c | FourOf12 d | FiveOf12 e+ | SixOf12 f | SevenOf12 g | EightOf12 h | NineOf12 i | TenOf12 j+ | ElevenOf12 k | TwelveOf12 l+ deriving (Eq,Show)++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 =+ (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++----+data OneOf13 a b c d e f g h i j k l m+ = OneOf13 a | TwoOf13 b | ThreeOf13 c | FourOf13 d | FiveOf13 e+ | SixOf13 f | SevenOf13 g | EightOf13 h | NineOf13 i | TenOf13 j+ | ElevenOf13 k | TwelveOf13 l | ThirteenOf13 m+ deriving (Eq,Show)++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 =+ (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++----+data OneOf14 a b c d e f g h i j k l m n+ = OneOf14 a | TwoOf14 b | ThreeOf14 c | FourOf14 d | FiveOf14 e+ | SixOf14 f | SevenOf14 g | EightOf14 h | NineOf14 i | TenOf14 j+ | ElevenOf14 k | TwelveOf14 l | ThirteenOf14 m | FourteenOf14 n+ deriving (Eq,Show)++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 =+ (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++----+data OneOf15 a b c d e f g h i j k l m n o+ = OneOf15 a | TwoOf15 b | ThreeOf15 c | FourOf15 d | FiveOf15 e+ | SixOf15 f | SevenOf15 g | EightOf15 h | NineOf15 i | TenOf15 j+ | ElevenOf15 k | TwelveOf15 l | ThirteenOf15 m | FourteenOf15 n+ | FifteenOf15 o+ deriving (Eq,Show)++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 =+ (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++----+data OneOf16 a b c d e f g h i j k l m n o p+ = OneOf16 a | TwoOf16 b | ThreeOf16 c | FourOf16 d | FiveOf16 e+ | SixOf16 f | SevenOf16 g | EightOf16 h | NineOf16 i | TenOf16 j+ | ElevenOf16 k | TwelveOf16 l | ThirteenOf16 m | FourteenOf16 n+ | FifteenOf16 o | SixteenOf16 p+ deriving (Eq,Show)++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 =+ (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++----+data OneOf17 a b c d e f g h i j k l m n o p q+ = OneOf17 a | TwoOf17 b | ThreeOf17 c | FourOf17 d | FiveOf17 e+ | SixOf17 f | SevenOf17 g | EightOf17 h | NineOf17 i | TenOf17 j+ | ElevenOf17 k | TwelveOf17 l | ThirteenOf17 m | FourteenOf17 n+ | FifteenOf17 o | SixteenOf17 p | SeventeenOf17 q+ deriving (Eq,Show)++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 =+ (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++----+data OneOf18 a b c d e f g h i j k l m n o p q r+ = OneOf18 a | TwoOf18 b | ThreeOf18 c | FourOf18 d | FiveOf18 e+ | SixOf18 f | SevenOf18 g | EightOf18 h | NineOf18 i | TenOf18 j+ | ElevenOf18 k | TwelveOf18 l | ThirteenOf18 m | FourteenOf18 n+ | FifteenOf18 o | SixteenOf18 p | SeventeenOf18 q | EighteenOf18 r+ deriving (Eq,Show)++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 =+ (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++----+data OneOf19 a b c d e f g h i j k l m n o p q r s+ = OneOf19 a | TwoOf19 b | ThreeOf19 c | FourOf19 d | FiveOf19 e+ | SixOf19 f | SevenOf19 g | EightOf19 h | NineOf19 i | TenOf19 j+ | ElevenOf19 k | TwelveOf19 l | ThirteenOf19 m | FourteenOf19 n+ | FifteenOf19 o | SixteenOf19 p | SeventeenOf19 q | EighteenOf19 r+ | NineteenOf19 s+ deriving (Eq,Show)++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 =+ (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++----+data OneOf20 a b c d e f g h i j k l m n o p q r s t+ = OneOf20 a | TwoOf20 b | ThreeOf20 c | FourOf20 d | FiveOf20 e+ | SixOf20 f | SevenOf20 g | EightOf20 h | NineOf20 i | TenOf20 j+ | ElevenOf20 k | TwelveOf20 l | ThirteenOf20 m | FourteenOf20 n+ | FifteenOf20 o | SixteenOf20 p | SeventeenOf20 q | EighteenOf20 r+ | NineteenOf20 s | TwentyOf20 t+ deriving (Eq,Show)++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 =+ (choice OneOf20 $ choice TwoOf20 $ choice ThreeOf20 $ choice FourOf20+ $ choice FiveOf20 $ choice SixOf20 $ choice SevenOf20+ $ choice EightOf20 $ choice NineOf20 $ choice TenOf20+ $ choice ElevenOf20 $ choice TwelveOf20 $ choice ThirteenOf20+ $ 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++----
+ src/Text/XML/HaXml/Parse.hs view
@@ -0,0 +1,713 @@+-- | A non-validating XML parser. For the input grammar, see+-- <http://www.w3.org/TR/REC-xml>.+module Text.XML.HaXml.Parse+ (+ -- * Parse a whole document+ xmlParse, xmlParse'+ -- * Parse just a DTD+ , dtdParse, dtdParse'+ ) 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)+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 Text.XML.HaXml.Types+import Text.XML.HaXml.Lex+import Text.ParserCombinators.HuttonMeijerWallace+++#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++-- | 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++-- | 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 = 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++{-+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")+-}++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+++---- Symbol table stuff ----++type SymTabs = (SymTab PEDef, SymTab EntityDef)++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++";"+++---- Misc ----++fst3 (a,_,_) = a+snd3 (_,a,_) = a+thd3 (_,_,a) = a+++---- Auxiliary Parsing Functions ----+type XParser a = Parser SymTabs (Posn,TokenT) String a++name :: XParser Name+name = do {(p,TokName s) <- item; return s}++string, freetext :: XParser String+string = do {(p,TokName s) <- item; return s}+freetext = do {(p,TokFreeText s) <- item; return s}++maybe :: XParser a -> XParser (Maybe a)+maybe p =+ ( p >>= return . Just) ++++ ( return Nothing)++either :: XParser a -> XParser b -> XParser (Either a b)+either p q =+ ( p >>= return . Left) ++++ ( 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 [] } )++posn :: XParser Posn+posn = P (\st inp-> case inp of {+ (Left err:_) -> Left err;+ (Right (p,_):_) -> Right [(p,st,inp)];+ [] -> Right [] } )++nmtoken :: XParser NmToken+nmtoken = (string +++ freetext)+++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)) ->+ 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 -> mzero `elserror` "PEReference use before definition" )++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))+ | all isSpace (flattenEV ev) ->+ do blank p `debug` "Empty macro definition"+ (Just _) -> mzero+ Nothing -> mzero `elserror` "PEReference use before definition" )++++---- XML Parsing Functions ----++justDTD :: XParser (Maybe DocTypeDecl)+justDTD =+ ( do (ExtSubset _ ds) <- extsubset `debug` "Trying external subset"+ if null ds then mzero+ else return (Just (DTD "extsubset" Nothing (concatMap extract ds)))+ ) ++++ ( 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+document = do+ p <- prolog `elserror` "unrecognisable XML prolog"+ e <- element `elserror` "no toplevel document element"+ ms <- many misc+ (_,ge) <- stget+ return (Document p ge e ms)++comment :: XParser Comment+comment = do+ bracket (tok TokCommentOpen) freetext (tok TokCommentClose)++processinginstruction :: XParser ProcessingInstruction+processinginstruction = do+ tok TokPIOpen+ n <- string `elserror` "processing instruction has no target"+ f <- freetext+ tok TokPIClose `elserror` "missing ?>"+ return (n, f)++cdsect :: XParser CDSect+cdsect = do+ tok TokSectionOpen+ bracket (tok (TokSection CDATAx)) chardata (tok TokSectionClose)++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" +++ word "XML")+ p <- posn+ s <- freetext+ tok TokPIClose `elserror` "missing ?> in <?xml ...?>"+ raise ((papply' 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++versioninfo :: XParser VersionInfo+versioninfo = do+ (word "version" +++ word "VERSION")+ tok TokEqual+ bracket (tok TokQuote) freetext (tok TokQuote)++misc :: XParser Misc+misc =+ ( comment >>= return . Comment) ++++ ( processinginstruction >>= return . PI)++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 }))++markupdecl :: XParser MarkupDecl+markupdecl =+ ( elementdecl >>= return . Element) ++++ ( attlistdecl >>= return . AttList) ++++ ( entitydecl >>= return . Entity) ++++ ( notationdecl >>= return . Notation) ++++ ( misc >>= return . MarkupMisc)++extsubset :: XParser ExtSubset+extsubset = do+ td <- maybe textdecl+ ds <- many (peRef extsubsetdecl)+ return (ExtSubset td ds)++extsubsetdecl :: XParser ExtSubsetDecl+extsubsetdecl =+ ( markupdecl >>= return . ExtMarkupDecl) ++++ ( 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)++element :: XParser Element+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")++checkmatch :: Posn -> Name -> Name -> XParser ()+checkmatch p n m =+ if n == m then return ()+ else mzero `elserror` ("tag <"++n++"> terminated by </"++m++">")++elemtag :: XParser ElemTag+elemtag = do+ n <- name `elserror` "malformed element tag"+ as <- many attribute+ return (ElemTag n as)++attribute :: XParser Attribute+attribute = do+ n <- name+ tok TokEqual `elserror` "missing = in attribute"+ v <- attvalue `elserror` "missing attvalue"+ return (n,v)++content :: XParser Content+content =+ ( element >>= return . CElem) ++++ ( chardata >>= return . CString False) ++++ ( reference >>= return . CRef) ++++ ( cdsect >>= return . CString True) ++++ ( misc >>= return . CMisc)++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`+ ("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 =+ ( peRef (word "EMPTY") >> return EMPTY) ++++ ( peRef (word "ANY") >> return ANY) ++++ ( peRef mixed >>= return . Mixed) ++++ ( peRef cp >>= return . ContentSpec)++choice :: XParser [CP]+choice = do+ bracket (tok TokBraOpen `debug` "Trying choice")+ (peRef cp `sepby1` blank (tok TokPipe))+ (blank (tok TokBraClose `debug` "Succeeded with choice"))++sequence :: XParser [CP]+sequence = do+ bracket (tok TokBraOpen `debug` "Trying sequence")+ (peRef cp `sepby1` blank (tok TokComma))+ (blank (tok TokBraClose `debug` "Succeeded with sequence"))++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))++modifier :: XParser Modifier+modifier =+ ( 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")+ 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)++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"+ 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+ return (AttDef n t d)++atttype :: XParser AttType+atttype =+ ( word "CDATA" >> return StringType) ++++ ( tokenizedtype >>= return . TokenizedType) ++++ ( enumeratedtype >>= return . EnumeratedType)++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)++enumeratedtype :: XParser EnumeratedType+enumeratedtype =+ ( notationtype >>= return . NotationType) ++++ ( enumeration >>= return . Enumeration)++notationtype :: XParser NotationType+notationtype = do+ word "NOTATION"+ bracket (tok TokBraOpen)+ (peRef name `sepby1` peRef (tok TokPipe))+ (blank (tok TokBraClose))++enumeration :: XParser Enumeration+enumeration =+ bracket (tok TokBraOpen)+ (peRef nmtoken `sepby1` peRef ((tok TokPipe)))+ (blank (tok TokBraClose))++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))++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 []))++newIgnore :: XParser Ignore+newIgnore =+ ( do tok TokSectionOpen+ many newIgnore `debug` "IGNORING conditional section"+ tok TokSectionClose+ return Ignore `debug` "end of IGNORED conditional section") ++++ ( 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)+----++reference :: XParser Reference+reference = do+ bracket (tok TokAmp) (freetext >>= val) (tok TokSemi)+ 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) ++++ ( entityref >>= return . RefEntity)++entityref :: XParser EntityRef+entityref = do+ bracket (tok TokAmp) name (tok TokSemi)++charref :: XParser CharRef+charref = do+ bracket (tok TokAmp) (freetext >>= readCharVal) (tok TokSemi)+ 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) nmtoken (tok TokSemi)++entitydecl :: XParser EntityDecl+entitydecl =+ ( gedecl >>= return . EntityGEDecl) ++++ ( pedecl >>= return . EntityPEDecl)++gedecl :: XParser GEDecl+gedecl = do+ 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)+ return (GEDecl n e)++pedecl :: XParser PEDecl+pedecl = do+ tok TokSpecialOpen+ 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)+ return (PEDecl n e)++entitydef :: XParser EntityDef+entitydef =+ ( entityvalue >>= return . DefEntityValue) ++++ ( do eid <- externalid+ ndd <- maybe ndatadecl+ return (DefExternalID eid ndd))++pedef :: XParser PEDef+pedef =+ ( entityvalue >>= return . PEDefEntityValue) ++++ ( 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))++ndatadecl :: XParser NDataDecl+ndatadecl = do+ word "NDATA"+ n <- name+ return (NDATA n)++textdecl :: XParser TextDecl+textdecl = do+ tok TokPIOpen+ (word "xml" +++ word "XML")+ v <- maybe versioninfo+ e <- encodingdecl+ tok TokPIClose `elserror` "expected ?> terminating text decl"+ return (TextDecl v e)++extparsedent :: XParser ExtParsedEnt+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" +++ word "ENCODING")+ tok TokEqual `elserror` "expected = in 'encoding' decl"+ f <- bracket (tok TokQuote) freetext (tok TokQuote)+ return (EncodingDecl f)++notationdecl :: XParser NotationDecl+notationdecl = do+ tok TokSpecialOpen+ tok (TokSpecial NOTATIONx)+ n <- name+ e <- either externalid publicid+ tok TokAnyClose `elserror` "expected > terminating NOTATION decl"+ 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) (many (peRef ev)) (tok TokQuote)+ tok TokQuote+ evs <- many (peRef ev)+ tok TokQuote `elserror` "expected quote to terminate entityvalue"+ return (EntityValue evs)++ev :: XParser EV+ev =+ ( (string+++freetext) >>= return . EVString) ++++ ( reference >>= return . EVRef)++attvalue :: XParser AttValue+attvalue = do+ avs <- bracket (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++pubidliteral :: XParser PubidLiteral+pubidliteral = do+ s <- bracket (tok TokQuote) freetext (tok TokQuote)+ return (PubidLiteral s) -- note: need to fold &...; escapes++chardata :: XParser CharData+chardata = freetext+
+ src/Text/XML/HaXml/Pretty.hs view
@@ -0,0 +1,259 @@+-- | 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.++module Text.XML.HaXml.Pretty+ (+ -- * 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)+import Maybe hiding (maybe)+import List (intersperse)+--import Char (isSpace)+import Text.PrettyPrint.HughesPJ+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++--peref p = text "%" <> text p <> text ";"++----++document :: Document -> 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 -> Doc+attribute :: Attribute -> Doc --etc+content :: Content -> 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/Types.hs view
@@ -0,0 +1,251 @@+{- |+ This module defines an internal (generic) representation for XML+ documents including their DTDs.++ 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.+-}++module Text.XML.HaXml.Types+ (+ -- * A simple symbol table mapping strings (references) to values.+ SymTab+ -- ** Symbol table operations+ , emptyST+ , addST+ , lookupST++ -- * XML Types+ -- ** The top-level document container+ , Document(..)++ -- ** The main document content+ , Element(..)+ , ElemTag(..)+ , Content(..)+ , Attribute+ , AttValue(..)++ -- ** Administrative parts of the document+ , Prolog(..)+ , XMLDecl(..)+ , Misc(..)+ , ProcessingInstruction+ , SDDecl+ , VersionInfo+ , Comment+ , PITarget++ -- ** The DTD+ -- *** content model+ , DocTypeDecl(..)+ , MarkupDecl(..)+ , ExtSubset(..)+ , ExtSubsetDecl(..)+ , ElementDecl(..)+ , ContentSpec(..)+ , CP(..)+ , Modifier(..)+ , Mixed(..)++ -- *** attribute model+ , AttListDecl(..)+ , AttDef(..)+ , AttType(..)+ , TokenizedType(..)+ , EnumeratedType(..)+ , NotationType+ , Enumeration+ , DefaultDecl(..)+ , FIXED(..)++ -- *** conditional sections+ , ConditionalSect(..)+ , IncludeSect+ , IgnoreSect+ , Ignore(..)+ , IgnoreSectContents(..)++ -- ** References+ , Reference(..)+ , EntityRef+ , CharRef+ , PEReference++ -- ** Entities+ , EntityDecl(..)+ , GEDecl(..)+ , PEDecl(..)+ , EntityDef(..)+ , PEDef(..)+ , ExternalID(..)+ , NDataDecl(..)+ , TextDecl(..)+ , ExtParsedEnt(..)+ , ExtPE(..)+ , NotationDecl(..)+ , PublicID(..)+ , EncodingDecl(..)+ , EntityValue(..)+ , EV(..)+ , PubidLiteral(..)+ , SystemLiteral(..)++ -- ** Basic value types+ , Name+ , Names+ , NmToken+ , NmTokens+ , CharData+ , CDSect+ ) where++++{- A simple symbol table for storing macros whilst parsing. -}++type SymTab a = [(String,a)]++emptyST :: SymTab a+emptyST = []++addST :: String -> a -> SymTab a -> SymTab a+addST n v = ((n,v):)++lookupST :: String -> SymTab a -> Maybe a+lookupST = lookup++++{- XML types start here -}++-- | The symbol table stored in a document holds all its general entity+-- reference definitions.+data Document = Document Prolog (SymTab EntityDef) Element [Misc]+data Prolog = Prolog (Maybe XMLDecl) [Misc] (Maybe DocTypeDecl) [Misc]+data XMLDecl = XMLDecl VersionInfo (Maybe EncodingDecl) (Maybe SDDecl) +data Misc = Comment Comment+ | PI ProcessingInstruction+ +type ProcessingInstruction = (PITarget,String)++type SDDecl = Bool +type VersionInfo = String +type Comment = String +type PITarget = String ++data DocTypeDecl = DTD Name (Maybe ExternalID) [MarkupDecl] +data MarkupDecl = Element ElementDecl+ | AttList AttListDecl+ | Entity EntityDecl+ | Notation NotationDecl+ | MarkupMisc Misc++data ExtSubset = ExtSubset (Maybe TextDecl) [ExtSubsetDecl] +data ExtSubsetDecl = ExtMarkupDecl MarkupDecl+ | ExtConditionalSect ConditionalSect++data Element = Elem Name [Attribute] [Content]+data ElemTag = ElemTag Name [Attribute] -- ^ intermediate for parsing+type Attribute = (Name, AttValue)+data Content = CElem Element+ | CString Bool CharData+ -- ^ bool is whether whitespace is significant+ | CRef Reference+ | CMisc Misc++data ElementDecl = ElementDecl Name ContentSpec+data ContentSpec = EMPTY+ | ANY+ | Mixed Mixed+ | ContentSpec CP+data CP = TagName Name Modifier+ | Choice [CP] Modifier+ | Seq [CP] Modifier +data Modifier = None -- ^ Just One+ | Query -- ^ Zero Or One+ | Star -- ^ Zero Or More+ | Plus -- ^ One Or More +data Mixed = PCDATA+ | PCDATAplus [Name] ++data AttListDecl = AttListDecl Name [AttDef]+data AttDef = AttDef Name AttType DefaultDecl +data AttType = StringType+ | TokenizedType TokenizedType+ | EnumeratedType EnumeratedType +data TokenizedType = ID+ | IDREF+ | IDREFS+ | ENTITY+ | ENTITIES+ | NMTOKEN+ | NMTOKENS +data EnumeratedType = NotationType NotationType+ | Enumeration Enumeration +type NotationType = [Name] -- nonempty list+type Enumeration = [NmToken] -- nonempty list+data DefaultDecl = REQUIRED+ | IMPLIED+ | DefaultTo AttValue (Maybe FIXED) +data FIXED = FIXED ++data ConditionalSect = IncludeSect IncludeSect+ | IgnoreSect IgnoreSect +type IncludeSect = [ExtSubsetDecl]+type IgnoreSect = [IgnoreSectContents]+data Ignore = Ignore+data IgnoreSectContents = IgnoreSectContents Ignore [(IgnoreSectContents,Ignore)] ++data Reference = RefEntity EntityRef+ | RefChar CharRef + deriving Eq+type EntityRef = Name +type CharRef = Int+type PEReference = Name ++data EntityDecl = EntityGEDecl GEDecl+ | EntityPEDecl PEDecl +data GEDecl = GEDecl Name EntityDef +data PEDecl = PEDecl Name PEDef +data EntityDef = DefEntityValue EntityValue+ | DefExternalID ExternalID (Maybe NDataDecl) +data PEDef = PEDefEntityValue EntityValue+ | PEDefExternalID ExternalID +data ExternalID = SYSTEM SystemLiteral+ | PUBLIC PubidLiteral SystemLiteral +newtype NDataDecl = NDATA Name ++data TextDecl = TextDecl (Maybe VersionInfo) EncodingDecl +data ExtParsedEnt = ExtParsedEnt (Maybe TextDecl) Content +data ExtPE = ExtPE (Maybe TextDecl) [ExtSubsetDecl]++data NotationDecl = NOTATION Name (Either ExternalID PublicID) +newtype PublicID = PUBLICID PubidLiteral +newtype EncodingDecl = EncodingDecl String ++type Name = String -- non-empty string+type Names = [Name] -- non-empty list+type NmToken = String -- non-empty string+type NmTokens = [NmToken] -- non-empty list++data AttValue = AttValue [Either String Reference]+ deriving Eq+data EntityValue = EntityValue [EV] +data EV = EVString String+ -- -- | EVPERef PEReference+ | EVRef Reference +newtype PubidLiteral = PubidLiteral String +newtype SystemLiteral = SystemLiteral String +type CharData = String +type CDSect = CharData++instance Eq ElemTag where+ (ElemTag n _) == (ElemTag m _) = n==m
+ src/Text/XML/HaXml/Validate.hs view
@@ -0,0 +1,266 @@+-- | Validate a document against a dtd.+module Text.XML.HaXml.Validate+ ( validate+ , partialValidate+ ) where++import Text.XML.HaXml.Types+import Text.XML.HaXml.Combinators (multi,tag,iffind,literal,none,o)+import Text.XML.HaXml.Xml2Haskell (attr2str)+import Maybe (fromMaybe,isNothing,fromJust)+import List (intersperse,nub,(\\))+import Char (isSpace)++#if __GLASGOW_HASKELL__ >= 604 || __NHC__ >= 118 || defined(__HUGS__)+-- emulate older finite map interface using Data.Map, if it is available+import qualified Data.Map as Map+type FiniteMap a b = Map.Map a b+listToFM :: Ord a => [(a,b)] -> FiniteMap a b+listToFM = Map.fromList+lookupFM :: Ord a => FiniteMap a b -> a -> Maybe b+lookupFM = flip Map.lookup+#elif __GLASGOW_HASKELL__ >= 504 || __NHC__ > 114+-- real finite map, if it is available+import Data.FiniteMap+#else+-- otherwise, a very simple and inefficient implementation of a finite map+type FiniteMap a b = [(a,b)]+listToFM :: Eq a => [(a,b)] -> FiniteMap a b+listToFM = id+lookupFM :: Eq a => FiniteMap a b -> a -> Maybe b+lookupFM fm k = lookup k fm+#endif++-- gather appropriate information out of the DTD+data SimpleDTD = SimpleDTD+ { elements :: FiniteMap Name ContentSpec -- content model of elem+ , attributes :: FiniteMap (Name,Name) AttType -- type of (elem,attr)+ , required :: FiniteMap Name [Name] -- required attributes of elem+ , ids :: [(Name,Name)] -- all (element,attr) with ID type+ , idrefs :: [(Name,Name)] -- all (element,attr) with IDREF type+ }++simplifyDTD :: DocTypeDecl -> SimpleDTD+simplifyDTD (DTD _ _ decls) =+ SimpleDTD+ { elements = listToFM [ (name,content)+ | Element (ElementDecl name content) <- decls ]+ , attributes = listToFM [ ((elem,attr),typ)+ | AttList (AttListDecl elem attdefs) <- decls+ , AttDef attr typ _ <- attdefs ]+ , required = listToFM [ (elem, [ attr+ | AttDef attr _ REQUIRED <- attdefs ])+ | AttList (AttListDecl elem attdefs) <- decls ]+ , ids = [ (elem,attr)+ | Element (ElementDecl elem _) <- decls+ , AttList (AttListDecl name attdefs) <- decls+ , elem == name+ , AttDef attr (TokenizedType ID) _ <- attdefs ]+ , idrefs = [] -- not implemented+ }++-- simple auxiliary to avoid lots of if-then-else with empty else clauses.+gives :: Bool -> a -> [a]+True `gives` x = [x]+False `gives` _ = []++-- | 'validate' takes a DTD and a tagged element, and returns a list of+-- errors in the document with respect to its DTD.+--+-- 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 dtd' elem = root dtd' elem ++ partialValidate dtd' elem+ where+ root (DTD name _ _) (Elem name' _ _) =+ (name/=name') `gives` ("Document type should be <"++name+ ++"> but appears to be <"++name'++">.")++-- | '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 dtd' elem = valid elem ++ checkIDs elem+ where+ dtd = simplifyDTD dtd'++ valid (Elem name attrs contents) =+ -- is the element defined in the DTD?+ let spec = lookupFM (elements dtd) name in + (isNothing spec) `gives` ("Element <"++name++"> not known.")+ -- is each attribute mentioned only once?+ ++ (let dups = duplicates (map fst attrs) in+ not (null dups) `gives`+ ("Element <"++name++"> has duplicate attributes: "+ ++concat (intersperse "," dups)++"."))+ -- does each attribute belong to this element? value is in range?+ ++ concatMap (checkAttr name) attrs+ -- are all required attributes present?+ ++ concatMap (checkRequired name attrs)+ (fromMaybe [] (lookupFM (required dtd) name))+ -- 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 ]++ checkAttr elem (attr, val) =+ let typ = lookupFM (attributes dtd) (elem,attr)+ attval = attr2str val in+ if isNothing typ then ["Attribute \""++attr+ ++"\" not known for element <"++elem++">."]+ else+ case fromJust typ of+ EnumeratedType e ->+ case e of+ Enumeration es ->+ (not (attval `Prelude.elem` es)) `gives`+ ("Value \""++attval++"\" of attribute \""+ ++attr++"\" in element <"++elem+ ++"> is not in the required enumeration range: "+ ++unwords es)+ _ -> []+ _ -> []++ checkRequired elem attrs req =+ (not (req `Prelude.elem` map fst attrs)) `gives`+ ("Element <"++elem++"> requires the attribute \""++req+ ++"\" but it is missing.")++ checkContentSpec elem ANY _ = []+ checkContentSpec elem EMPTY [] = []+ checkContentSpec elem EMPTY (_:_) =+ ["Element <"++elem++"> is not empty but should be."]+ checkContentSpec elem (Mixed PCDATA) cs = concatMap (checkMixed elem []) cs+ checkContentSpec elem (Mixed (PCDATAplus names)) cs =+ concatMap (checkMixed elem names) cs+ checkContentSpec elem (ContentSpec cp) cs = excludeText elem cs +++ (let (errs,rest) = checkCP elem cp (flatten cs) in+ case rest of [] -> errs+ _ -> errs++["Element <"++elem++"> contains extra "+ ++"elements beyond its content spec."])++ 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 [] = []++ 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 [] = []++ -- This is a little parser really. Returns any errors, plus the remainder+ -- of the input string.+ checkCP :: Name -> CP -> [Name] -> ([String],[Name])+ checkCP elem cp@(TagName n None) [] = (cpError elem cp, [])+ checkCP elem cp@(TagName n None) (n':ns)+ | n==n' = ([], ns)+ | otherwise = (cpError elem cp, n':ns)+ checkCP elem cp@(TagName n Query) [] = ([],[])+ checkCP elem cp@(TagName n Query) (n':ns)+ | n==n' = ([], ns)+ | otherwise = ([], n':ns)+ checkCP elem cp@(TagName n Star) [] = ([],[])+ checkCP elem cp@(TagName n Star) (n':ns)+ | n==n' = checkCP elem (TagName n Star) ns+ | otherwise = ([], n':ns)+ checkCP elem cp@(TagName n Plus) [] = (cpError elem cp, [])+ checkCP elem cp@(TagName n Plus) (n':ns)+ | n==n' = checkCP elem (TagName n Star) ns+ | otherwise = (cpError elem cp, n':ns)+ -- omit this clause, to permit (a?|b?) as a valid but empty choice+ -- checkCP elem cp@(Choice cps None) [] = (cpError elem cp, [])+ checkCP elem cp@(Choice cps None) ns =+ let next = choice elem ns cps in+ if null next then (cpError elem cp, ns)+ else ([], head next) -- choose the first alternative with no errors+ checkCP elem cp@(Choice cps Query) [] = ([],[])+ checkCP elem cp@(Choice cps Query) ns =+ let next = choice elem ns cps in+ if null next then ([],ns)+ else ([], head next)+ checkCP elem cp@(Choice cps Star) [] = ([],[])+ checkCP elem cp@(Choice cps Star) ns =+ let next = choice elem ns cps in+ if null next then ([],ns)+ else checkCP elem (Choice cps Star) (head next)+ checkCP elem cp@(Choice cps Plus) [] = (cpError elem cp, [])+ checkCP elem cp@(Choice cps Plus) ns =+ let next = choice elem ns cps in+ if null next then (cpError elem cp, ns)+ else checkCP elem (Choice cps Star) (head next)+ -- omit this clause, to permit (a?,b?) as a valid but empty sequence+ -- checkCP elem cp@(Seq cps None) [] = (cpError elem cp, [])+ checkCP elem cp@(Seq cps None) ns =+ let (errs,next) = sequence elem ns cps in+ if null errs then ([],next)+ else (cpError elem cp++errs, ns)+ checkCP elem cp@(Seq cps Query) [] = ([],[])+ checkCP elem cp@(Seq cps Query) ns =+ let (errs,next) = sequence elem ns cps in+ if null errs then ([],next)+ else ([], ns)+ checkCP elem cp@(Seq cps Star) [] = ([],[])+ checkCP elem cp@(Seq cps Star) ns =+ let (errs,next) = sequence elem ns cps in+ if null errs then checkCP elem (Seq cps Star) next+ else ([], ns)+ checkCP elem cp@(Seq cps Plus) [] = (cpError elem cp, [])+ checkCP elem cp@(Seq cps Plus) ns =+ let (errs,next) = sequence elem ns cps in+ if null errs then checkCP elem (Seq cps Star) next+ else (cpError elem cp++errs, ns)++ choice elem ns cps = -- return only those parses that don't give any errors+ [ rem | ([],rem) <- map (\cp-> checkCP elem (definite cp) ns) cps ]+ where definite (TagName n Query) = TagName n None+ definite (Choice cps Query) = Choice cps None+ definite (Seq cps Query) = Seq cps None+ definite (TagName n Star) = TagName n Plus+ definite (Choice cps Star) = Choice cps Plus+ definite (Seq cps Star) = Seq cps Plus+ definite x = x+ sequence elem ns cps = -- accumulate errors down the sequence+ foldl (\(es,ns) cp-> let (es',ns') = checkCP elem cp ns+ in (es++es', ns'))+ ([],ns) cps++ checkIDs elem =+ let celem = CElem elem+ 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)+ in not (null badIds) `gives`+ ("These attribute values of type ID are not unique: "+ ++concat (intersperse "," badIds)++".")+++cpError :: Name -> CP -> [String]+cpError elem cp =+ ["Element <"++elem++"> should contain "++display cp++" but does not."]+++display :: CP -> String+display (TagName name mod) = name ++ modifier mod+display (Choice cps mod) = "(" ++ concat (intersperse "|" (map display cps))+ ++ ")" ++ modifier mod+display (Seq cps mod) = "(" ++ concat (intersperse "," (map display cps))+ ++ ")" ++ modifier mod++modifier :: Modifier -> String+modifier None = ""+modifier Query = "?"+modifier Star = "*"+modifier Plus = "+"++duplicates :: Eq a => [a] -> [a]+duplicates xs = xs \\ (nub xs)
+ src/Text/XML/HaXml/Verbatim.hs view
@@ -0,0 +1,91 @@+{- |+ Maintainer : simons@cryp.to+ Stability : experimental+ Portability : portable++ The preferred method for rendering a 'Document' or single 'Content'+ is by using the pretty printing facility defined in "Pretty".+ 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 @\<pre\>@ tag, Docbook's @\<literallayout\>@ tag,+ and many more.++ Theoretically, the document author could avoid this problem by+ wrapping the contents of these tags in a \<![CDATA[...]]\> 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.++ As an alternative, this module provides the function 'verbatim',+ which will format XML 'Content' as a 'String' while retaining the+ formatting of the input document unchanged.++ /Know problems/:++ * HaXml's parser eats line feeds between two tags.++ * 'Attribute's should be formatted by making them an instance of+ 'Verbatim' as well, but since an 'Attribute' is just a tuple,+ not a full data type, the helper function 'verbAttr' must be+ used instead.++ * 'CMisc' is not yet supported.++ * 'Element's, which contain no content, are formatted as+ @\<element-name\/\>@, even if they were not defined as being of+ type @EMPTY@. In XML this perfectly alright, but in SGML it is+ not. Those, who wish to use 'verbatim' to format parts of say+ an HTML page will have to (a) replace problematic elements by+ 'literal's /before/ running 'verbatim' or (b) use a second+ search-and-replace stage to fix this.+ -}++module Text.XML.HaXml.Verbatim where++import Text.XML.HaXml.Types++-- |This class promises that the function 'verbatim' knows how to+-- format this data type into a string without changing the+-- formatting.++class Verbatim a where+ verbatim :: a -> String++instance (Verbatim a) => Verbatim [a] where+ verbatim = concat . (map verbatim)++instance Verbatim Char where+ verbatim c = [c]++instance (Verbatim a, Verbatim b) => Verbatim (Either a b) where+ 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 Element where+ verbatim (Elem nam att []) = "<" ++ nam ++ (concat . (map verbAttr)) att+ ++ "/>"+ verbatim (Elem nam att cont) = "<" ++ nam ++ (concat . (map verbAttr)) att+ ++ ">" ++ verbatim cont ++ "</" ++ nam ++ ">"++instance Verbatim Reference where+ verbatim (RefEntity r) = "&" ++ verbatim r ++ ";"+ verbatim (RefChar c) = "&#" ++ show c ++ ";"+++-- |This is a helper function is required because Haskell does not+-- allow to make an ordinary tuple (like 'Attribute') an instance of a+-- class. The resulting output will preface the actual attribute with+-- a single blank so that lists of 'Attribute's can be handled+-- implicitly by the definition for lists of 'Verbatim' data types.++verbAttr :: Attribute -> String+verbAttr (n, AttValue v) = " " ++ n ++ "=\"" ++ verbatim v ++ "\""+
+ src/Text/XML/HaXml/Wrappers.hs view
@@ -0,0 +1,61 @@+module Text.XML.HaXml.Wrappers+ ( fix2Args+ , processXmlWith+ ) where++-- imports required for processXmlWith and fix2Args+import System+import IO+import List (isSuffixOf)++import Text.XML.HaXml.Types (Document(..),Content(..))+import Text.XML.HaXml.Combinators (CFilter)+import Text.XML.HaXml.Parse (xmlParse)+import Text.XML.HaXml.Html.Parse (htmlParse)+import Text.XML.HaXml.Pretty as PP(document)+import Text.PrettyPrint.HughesPJ (render)+++-- | 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.+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+++-- | The wrapper @processXmlWith@ 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.+--+-- 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 f = do+ (inf,outf) <- fix2Args+ input <- if inf=="-" then getContents else readFile inf+ o <- if outf=="-" then return stdout else openFile outf WriteMode+ 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+ 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"+
+ src/Text/XML/HaXml/Xml2Haskell.hs view
@@ -0,0 +1,465 @@+-- | 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/Xtract/Combinators.hs view
@@ -0,0 +1,84 @@+-- | This is a new set of XML combinators for Xtract, not standard,+-- but based on the standard set in "Text.Xml.Haxml.Combinators".+-- 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 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.++module Text.XML.HaXml.Xtract.Combinators where++import Text.XML.HaXml.Types+import Text.XML.HaXml.Combinators+++-- | double content filter - takes document root + local subtree.+type DFilter = Content -> Content -> [Content]++-- | lift an ordinary content filter to a double filter.+local,global :: CFilter -> DFilter+local f = \xml sub-> f sub+global f = \xml sub-> f xml++-- | drop a double filter to an ordinary content filter+dfilter :: DFilter -> CFilter+dfilter f = \xml-> f xml 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++-- | lifted composition over double filters.+ooo :: DFilter -> DFilter -> DFilter+g `ooo` 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++-- | 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++-- | lifted unit and zero.+okeepo, ononeo :: DFilter+okeepo = \xml sub-> [sub] -- local keep+ononeo = \xml sub-> [] -- local none++ochildreno, oelmo, otxto :: DFilter+ochildreno = local children+oelmo = local elm+otxto = local txt++applypred :: CFilter -> DFilter -> CFilter+applypred f p = \xml-> (const f `owitho` p) xml xml++oiffindo :: String -> (String -> DFilter) -> DFilter -> DFilter+oiffindo 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++ocato :: [a->b->[c]] -> (a->b->[c])+ocato fs = \xml sub-> concat [ f xml sub | f <- fs ]++(//>>) :: DFilter -> DFilter -> DFilter+f //>> g = g `ooo` ochildreno `ooo` f++(<<//) :: DFilter -> DFilter -> DFilter+f <<// g = f `owitho` (g `ooo` ochildreno)++odeepo :: DFilter -> DFilter+odeepo f = f ||>|| (odeepo f `ooo` ochildreno)+
+ src/Text/XML/HaXml/Xtract/Lex.hs view
@@ -0,0 +1,124 @@+-- | 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.)+--+-- The Xtract command language is very like the XPath specification.++module Text.XML.HaXml.Xtract.Lex+ ( lexXtract+ , Posn(..)+ , TokenT(..)+ , Token+ ) where++import Char+import List(isPrefixOf)+++type Token = Either String (Posn, TokenT)++data Posn = Pn Int -- char index only+ deriving Eq++instance Show Posn where+ showsPrec p (Pn c) = showString "char pos " . shows c++data TokenT =+ Symbol String+ | TokString String -- begins with letter+ | TokNum Integer -- begins with digit+ deriving Eq++instance Show TokenT where+ showsPrec p (Symbol s) = showString s+ showsPrec p (TokString s) = showString s+ showsPrec p (TokNum n) = shows n++emit :: TokenT -> Posn -> Token+emit tok p = forcep p `seq` Right (p,tok)+ where forcep (Pn n) = n++lexerror :: String -> Posn -> [Token]+lexerror s p = [Left ("Lexical error in selection pattern at "++show p++": "+ ++s++"\n")]++addcol :: Int -> Posn -> Posn+addcol n (Pn c) = Pn (c+n)++newline, tab :: Posn -> Posn+newline (Pn c) = Pn (c+1)+tab (Pn c) = Pn (((c`div`8)+1)*8)++white :: Char -> Posn -> Posn+white '\t' = tab+white ' ' = addcol 1+white '\n' = addcol 1+white '\r' = addcol 1+white '\xa0' = addcol 1++blank :: (Posn->String->[Token]) -> Posn-> String-> [Token]+blank k p [] = []+blank k p (' ': s) = blank k (addcol 1 p) s+blank k p ('\t':s) = blank k (tab p) s+blank k p ('\n':s) = blank k (newline p) s+blank k p ('\r':s) = blank k p s+blank k p ('\xa0': s) = blank k (addcol 1 p) s+blank k p s = k p s++----+lexXtract :: String -> [Token]+lexXtract = selAny (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)+ | 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++gatherNum acc pos p (s:ss) k+ | isHexDigit s = gatherNum (s:acc) pos (addcol 1 p) ss k+gatherNum acc pos p ss k =+ emit (TokNum (read (reverse acc))) pos: k p ss++accumulateUntil c tok acc pos p [] k =+ lexerror ("found end of pattern while looking for "++c+ :" to match opening quote at "++show pos) p+accumulateUntil c tok acc pos p (s:ss) k+ | c==s = emit (TokString (reverse acc)) pos:+ emit tok p: k (addcol 1 p) ss+ | isSpace s = accumulateUntil c tok (s:acc) pos (white s p) ss k+ | otherwise = accumulateUntil c tok (s:acc) pos (addcol 1 p) ss k
+ src/Text/XML/HaXml/Xtract/Parse.hs view
@@ -0,0 +1,395 @@+-- | A parser for the Xtract command-language. (The string input is+-- tokenised internally by the lexer 'lexXtract'.)+-- See <http://www.haskell.org/HaXml/Xtract.html> for the grammar that+-- is accepted.++-- Because the original Xtract grammar was left-recursive, we have+-- 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.XML.HaXml.Xtract.Lex+import Text.XML.HaXml.Xtract.Combinators+import Text.XML.HaXml.Combinators+import List(isPrefixOf)++-- | To mix an Xtract query into an ordinary HaXml combinator expression.+xtract :: String -> CFilter+xtract query = dfilter (parseXtract query)++-- | 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++xql = aquery (local keep)+++---- Auxiliary Parsing Functions ----+type XParser s a = Parser s (Posn,TokenT) String 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 "\""++pam fs x = [ f x | f <- fs ]+++{--- original Xtract grammar ----+ query = string tagname+ | string * tagname prefix+ | * string tagname suffix+ | * any element+ | - chardata+ | ( query )+ | query / query parent/child relationship+ | query // query deep inside+ | query + query union of queries+ | query [predicate]+ | query [positions]++ predicate = quattr has attribute+ | quattr op ' string ' attribute has value+ | quattr op " string " attribute has value+ | quattr op quattr attribute value comparison (lexical)+ | quattr nop integer attribute has value (numerical)+ | quattr nop quattr attribute value comparison (numerical)+ | ( predicate ) bracketting+ | predicate & predicate logical and+ | predicate | predicate logical or+ | ~ predicate logical not++ attribute = @ string has attribute+ | query / @ string child has attribute+ | - has textual content+ | query / - child has textual content++ quattr = query+ | attribute++ op = = equal to+ | != not equal to+ | < less than+ | <= less than or equal to+ | > greater than+ | >= greater than or equal to++ nop = .=. equal to+ | .!=. not equal to+ | .<. less than+ | .<=. less than or equal to+ | .>. greater than+ | .>=. greater than or equal to++ positions = position {, positions} multiple positions+ | position - position ranges++ position = integer numbering is from 0 upwards+ | $ last+++---- transformed grammar (removing left recursion)+ aquery = ./ tquery -- current context+ | tquery -- also current context+ | / tquery -- root context+ | // tquery -- deep context from root++ tquery = ( tquery ) xquery+ | tag xquery+ | - -- fixes original grammar ("-/*" is incorrect)+ + tag = string *+ | string+ | * string+ | *+ + xquery = / tquery+ | // tquery+ | / @ string -- new: print attribute value+ | + tquery+ | [ tpredicate ] xquery+ | [ positions ] xquery+ | lambda++ tpredicate = vpredicate upredicate+ upredicate = & tpredicate+ | | tpredicate+ | lambda+ vpredicate = ( tpredicate )+ | ~ tpredicate+ | tattribute++ tattribute = aquery uattribute+ | @ string vattribute+ uattribute = / @ string vattribute+ | vattribute+ vattribute = op wattribute+ | op ' string '+ | nop wattribute+ | nop integer+ | lambda+ wattribute = @ string+ | aquery / @ string+ | aquery++ positions = simplepos commapos+ simplepos = integer range+ | $+ range = - integer+ | - $+ | lambda+ commapos = , simplepos commapos+ | lambda++ op = =+ | !=+ | <+ | <=+ | >+ | >=++ nop = .=.+ | .!=.+ | .<.+ | .<=.+ | .>.+ | .>=.+-}++bracket :: XParser s a -> XParser s a+bracket p =+ do symbol "("+ x <- p+ symbol ")"+ return x+++---- 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 //>>)] )++tquery :: [DFilter->DFilter] -> XParser s DFilter+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)) )++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) )+++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 )++tpredicate :: XParser s DFilter+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 )++vpredicate :: XParser s DFilter+vpredicate =+ ( do bracket tpredicate ) ++++ ( do symbol "~"+ p <- tpredicate+ return (local keep `owithouto` 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) )++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) )++vattribute :: (DFilter, DFilter, (String->DFilter)->DFilter->DFilter)+ -> XParser s DFilter+vattribute (q,a,iffn) =+ ( do cmp <- op+ quote+ s2 <- string+ quote+ return ((iffn (\s1->if cmp s1 s2 then okeepo else ononeo) ononeo)+ `ooo` 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+ n <- number+ return ((iffn (\s->if cmp (read s) n then okeepo else ononeo) ononeo)+ `ooo` 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)))++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) )+++iindex :: XParser s [[a]->[a]]+iindex =+ 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) )++rrange, numberdollar :: Integer -> XParser s ([a]->[a])+rrange n1 =+ ( do symbol "-"+ numberdollar n1 ) ++++ ( do return (keep.(!!(fromInteger n1))) )++numberdollar n1 =+ ( 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 [] )+++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 (>=) )++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 (>=) )+
+ src/pkg.conf view
@@ -0,0 +1,16 @@+Package+ { name = "HaXml"+ , auto = True+ , import_dirs = ["$libdir/imports/HaXml"]+ , source_dirs = []+ , library_dirs = ["$libdir"]+ , hs_libraries = ["HSHaXml" ]+ , extra_libraries = []+ , include_dirs = []+ , c_includes = []+ , package_deps = ["lang","data","base"]+ , extra_ghc_opts = []+ , extra_cc_opts = []+ , extra_ld_opts = []+ }+
+ src/tools/Canonicalise.hs view
@@ -0,0 +1,29 @@+module Main where++import System (getArgs)+import IO+import List (isSuffixOf)++import Text.XML.HaXml.Parse (xmlParse)+import Text.XML.HaXml.Html.Parse (htmlParse)+import Text.XML.HaXml.Pretty (document)+import Text.XML.HaXml.Wrappers (fix2Args)+import Text.PrettyPrint.HughesPJ (render)++-- 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 = if ".html" `isSuffixOf` inf || ".htm" `isSuffixOf` inf+ then htmlParse inf else xmlParse inf+ in+ do ( hPutStrLn o . render . document . parse) content+ hFlush o+
+ src/tools/DtdToHaskell.hs view
@@ -0,0 +1,51 @@+module Main where++-- This program is provided to convert an XML file containing a DTD+-- into a Haskell module containing data/newtype definitions which+-- mirror the DTD. Once you have used this program to generate your type+-- definitions, you should import Xml2Haskell wherever you intend+-- to read and write XML files with your Haskell programs.++import System+import IO+import List (nub,takeWhile,dropWhile)++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)+import Text.XML.HaXml.DtdToHaskell.Convert (dtd2TypeDef)+import Text.XML.HaXml.DtdToHaskell.Instance (mkInstance)+import Text.PrettyPrint.HughesPJ (render,vcat)++main =+ fix2Args >>= \(inf,outf)->+ ( if inf=="-" then getContents+ else readFile inf ) >>= \content->+ ( if outf=="-" then return stdout+ else openFile outf WriteMode ) >>= \o->+ let (DTD name _ markup) = (getDtd . dtdParse inf) content+ decls = (nub . dtd2TypeDef) markup+ realname = if outf/="-" then mangle (trim outf)+ else if null name then mangle (trim inf)+ else mangle name+ in+ do hPutStrLn o ("module "++realname+ ++" where\n\nimport Text.XML.HaXml.Xml2Haskell"+ ++"\nimport Text.XML.HaXml.OneOfN"+ ++"\nimport Char (isSpace)")+ 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+ hPutStrLn o "\n\n{-Done-}"+ hFlush o+++getDtd (Just dtd) = dtd+getDtd (Nothing) = error "No DTD in this document"++trim name | '/' `elem` name = (trim . tail . dropWhile (/='/')) name+ | '.' `elem` name = takeWhile (/='.') name+ | otherwise = name+
+ src/tools/MkOneOf.hs view
@@ -0,0 +1,82 @@+module Main where++import System (getArgs)+import Char (isDigit)+import IO (hFlush,stdout)++main = do+ args <- getArgs+ 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 (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")+ mapM_ (putStrLn . mkOneOf) [n..m]+ _ -> error "Usage: MkOneOf n [m]"+ hFlush stdout++---- main text-generating function ----+mkOneOf :: Int -> String+mkOneOf n =+ "data "++ typename n 12+ ++ "\n "++ format 3 78 3 " = " " | "+ (zipWith (\m v->constructor m n++" "++v)+ [1..n]+ (take n variables))+ ++ "\n deriving (Eq,Show)"+ ++ "\n\ninstance "++ format 10 78 10 "(" ","+ (map ("XmlContent "++) (take n variables))+ ++ ")\n => XmlContent ("++ typename n 26 ++")\n where"+ ++ "\n fromElem cs ="+ ++ "\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")+ [1..n]+ ++ "\n\n----"++---- constructor names ----+typename :: Int -> Int -> String+typename n pos = constructor 1 n ++ format pos 78 pos " " " " (take n variables)++constructor :: Int -> Int -> String+constructor n m = ordinal n ++"Of" ++ show m++ordinal :: Int -> String+ordinal n | n <= 20 = ordinals!!n+ordinal n | otherwise = "Choice"++show n++ordinals = ["Zero","One","Two","Three","Four","Five","Six","Seven","Eight"+ ,"Nine","Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen"+ ,"Sixteen","Seventeen","Eighteen","Nineteen","Twenty"]++---- variable names ----+variables = [ v:[] | v <- ['a'..'z']]+ ++ [ v:w:[] | v <- ['a'..'z'], w <- ['a'..'z']]++---- simple pretty-printing ----++format :: Int -- current position on page+ -> Int -- maximum width of page+ -> Int -- amount to indent when a newline is emitted+ -> String -- text to precede first value+ -> String -- text to precede subsequent values+ -> [String] -- list of values to format+ -> String+format cur max ind s0 s1 [] = ""+format cur max ind s0 s1 (x:xs)+ | sameline < max = s0 ++ x ++ format sameline max ind s1 s1 xs+ | otherwise = "\n" ++ replicate ind ' ' +++ s0 ++ x ++ format newline max ind s1 s1 xs+ where sameline = cur + length s0 + length x+ newline = ind + length s0 + length x++---- safe integer parsing ----+saferead :: String -> IO Int+saferead s | all isDigit s = return (read s)+saferead s | otherwise = error ("expected a number on the commandline, "+ ++"but got \""++s++"\" instead")
+ src/tools/Validate.hs view
@@ -0,0 +1,27 @@+module Main where++import System (getArgs)+import IO+import List (isSuffixOf)+import Maybe (fromJust)++import Text.XML.HaXml.Types (Document(..),Content(..))+import Text.XML.HaXml.Parse (xmlParse,dtdParse)+import Text.XML.HaXml.Validate (validate)+import Text.XML.HaXml.Wrappers (fix2Args)++-- This is a fairly trivial application that reads a DTD from a file,+-- an XML document from another file (or stdin), and writes any validation+-- errors to stdout.++main = do+ (dtdf,xmlf) <- fix2Args+ dtdtext <- ( if dtdf=="-" then error "Usage: validate dtdfile [xmlfile]"+ else readFile dtdf )+ content <- ( if xmlf=="-" then getContents else readFile xmlf )+ let dtd = dtdParse dtdf dtdtext+ Document _ _ xml _ = xmlParse xmlf content+ errs = validate (fromJust dtd) xml+ mapM_ putStrLn errs+ hFlush stdout+
+ src/tools/Xtract.hs view
@@ -0,0 +1,51 @@+------------------------------------------------------------+-- 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.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)+++main =+ getArgs >>= \args->+ if length args < 1 then+ putStrLn "Usage: Xtract <pattern> [xmlfile ...]" >>+ exitWith (ExitFailure 1)+ else+ let (pattern:files) = args+-- 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 . htmlParse x+ else hPutStrLn stdout . render . format .+ xtract pattern . getElem . xmlParse x) c+ hFlush stdout)+ files++getElem (Document _ _ e _) = CElem e+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