hxt-filter 8.3.0 → 8.4.0
raw patch · 129 files changed
+56/−52345 lines, 129 filesdep ~HTTPdep ~HUnitdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: HTTP, HUnit, base, containers, directory, filepath, haskell98, hxt, network, parsec, process
API changes (from Hackage documentation)
Files
- Makefile +0/−138
- README +0/−23
- Version.mk +0/−7
- doc/hxt-filter/Control-Monad-MonadStateIO.html +0/−487
- doc/hxt-filter/Data-Tree-NTree-Filter.html +0/−3754
- doc/hxt-filter/System-PipeOpen.html +0/−190
- doc/hxt-filter/Text-XML-HXT-DOM-EditFilters.html +0/−1463
- doc/hxt-filter/Text-XML-HXT-DOM-Namespace.html +0/−174
- doc/hxt-filter/Text-XML-HXT-DOM-NamespaceFilter.html +0/−434
- doc/hxt-filter/Text-XML-HXT-DOM-XmlState.html +0/−3126
- doc/hxt-filter/Text-XML-HXT-DOM-XmlTree.html +0/−120
- doc/hxt-filter/Text-XML-HXT-DOM-XmlTreeFilter.html +0/−5758
- doc/hxt-filter/Text-XML-HXT-DOM-XmlTreeFunctions.html +0/−3474
- doc/hxt-filter/Text-XML-HXT-DOM-XmlTreeTypes.html +0/−690
- doc/hxt-filter/Text-XML-HXT-DOM.html +0/−134
- doc/hxt-filter/Text-XML-HXT-Parser-DTDProcessing.html +0/−347
- doc/hxt-filter/Text-XML-HXT-Parser-DefaultURI.html +0/−104
- doc/hxt-filter/Text-XML-HXT-Parser-HtmlParser.html +0/−338
- doc/hxt-filter/Text-XML-HXT-Parser-MainFunctions.html +0/−694
- doc/hxt-filter/Text-XML-HXT-Parser-ProtocolHandler.html +0/−108
- doc/hxt-filter/Text-XML-HXT-Parser-ProtocolHandlerFile.html +0/−106
- doc/hxt-filter/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html +0/−106
- doc/hxt-filter/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html +0/−106
- doc/hxt-filter/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html +0/−106
- doc/hxt-filter/Text-XML-HXT-Parser-XmlInput.html +0/−658
- doc/hxt-filter/Text-XML-HXT-Parser-XmlOutput.html +0/−583
- doc/hxt-filter/Text-XML-HXT-Parser-XmlParser.html +0/−184
- doc/hxt-filter/Text-XML-HXT-Parser.html +0/−178
- doc/hxt-filter/Text-XML-HXT-Validator-AttributeValueValidation.html +0/−232
- doc/hxt-filter/Text-XML-HXT-Validator-DTDValidation.html +0/−199
- doc/hxt-filter/Text-XML-HXT-Validator-DocTransformation.html +0/−164
- doc/hxt-filter/Text-XML-HXT-Validator-DocValidation.html +0/−164
- doc/hxt-filter/Text-XML-HXT-Validator-IdValidation.html +0/−167
- doc/hxt-filter/Text-XML-HXT-Validator-RE.html +0/−1152
- doc/hxt-filter/Text-XML-HXT-Validator-Validation.html +0/−180
- doc/hxt-filter/Text-XML-HXT-Validator-ValidationFilter.html +0/−387
- doc/hxt-filter/Text-XML-HXT-Validator-XmlRE.html +0/−874
- doc/hxt-filter/doc-index.html +0/−5830
- doc/hxt-filter/haddock-util.js +0/−133
- doc/hxt-filter/haddock.css +0/−267
- doc/hxt-filter/haskell_icon.gif binary
- doc/hxt-filter/hxt-filter.haddock binary
- doc/hxt-filter/index.html +0/−571
- doc/hxt-filter/minus.gif binary
- doc/hxt-filter/plus.gif binary
- doc/hxt-filter/src/Control-Monad-MonadStateIO.html +0/−107
- doc/hxt-filter/src/Data-Tree-NTree-Filter.html +0/−922
- doc/hxt-filter/src/System-PipeOpen.html +0/−70
- doc/hxt-filter/src/Text-XML-HXT-DOM-EditFilters.html +0/−577
- doc/hxt-filter/src/Text-XML-HXT-DOM-Namespace.html +0/−62
- doc/hxt-filter/src/Text-XML-HXT-DOM-NamespaceFilter.html +0/−231
- doc/hxt-filter/src/Text-XML-HXT-DOM-XmlState.html +0/−697
- doc/hxt-filter/src/Text-XML-HXT-DOM-XmlTree.html +0/−29
- doc/hxt-filter/src/Text-XML-HXT-DOM-XmlTreeFilter.html +0/−965
- doc/hxt-filter/src/Text-XML-HXT-DOM-XmlTreeFunctions.html +0/−561
- doc/hxt-filter/src/Text-XML-HXT-DOM-XmlTreeTypes.html +0/−87
- doc/hxt-filter/src/Text-XML-HXT-DOM.html +0/−34
- doc/hxt-filter/src/Text-XML-HXT-Parser-DTDProcessing.html +0/−941
- doc/hxt-filter/src/Text-XML-HXT-Parser-DefaultURI.html +0/−57
- doc/hxt-filter/src/Text-XML-HXT-Parser-HtmlParser.html +0/−180
- doc/hxt-filter/src/Text-XML-HXT-Parser-MainFunctions.html +0/−465
- doc/hxt-filter/src/Text-XML-HXT-Parser-ProtocolHandler.html +0/−93
- doc/hxt-filter/src/Text-XML-HXT-Parser-ProtocolHandlerFile.html +0/−87
- doc/hxt-filter/src/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html +0/−202
- doc/hxt-filter/src/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html +0/−161
- doc/hxt-filter/src/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html +0/−53
- doc/hxt-filter/src/Text-XML-HXT-Parser-XmlInput.html +0/−392
- doc/hxt-filter/src/Text-XML-HXT-Parser-XmlOutput.html +0/−176
- doc/hxt-filter/src/Text-XML-HXT-Parser-XmlParser.html +0/−91
- doc/hxt-filter/src/Text-XML-HXT-Parser.html +0/−45
- doc/hxt-filter/src/Text-XML-HXT-Validator-AttributeValueValidation.html +0/−367
- doc/hxt-filter/src/Text-XML-HXT-Validator-DTDValidation.html +0/−637
- doc/hxt-filter/src/Text-XML-HXT-Validator-DocTransformation.html +0/−244
- doc/hxt-filter/src/Text-XML-HXT-Validator-DocValidation.html +0/−547
- doc/hxt-filter/src/Text-XML-HXT-Validator-IdValidation.html +0/−278
- doc/hxt-filter/src/Text-XML-HXT-Validator-RE.html +0/−340
- doc/hxt-filter/src/Text-XML-HXT-Validator-Validation.html +0/−74
- doc/hxt-filter/src/Text-XML-HXT-Validator-ValidationFilter.html +0/−135
- doc/hxt-filter/src/Text-XML-HXT-Validator-XmlRE.html +0/−113
- doc/hxt-filter/src/hscolour.css +0/−5
- examples/Makefile +0/−40
- examples/dtd2haskell/DTDtoHXT.hs +0/−434
- examples/dtd2haskell/Makefile +0/−56
- examples/hfilter/FilterExample.hs +0/−172
- examples/hfilter/Makefile +0/−63
- examples/hfilter/lousy.html +0/−26
- examples/hparser/HXmlParser.hs +0/−136
- examples/hparser/Makefile +0/−111
- examples/hparser/example1.xml +0/−22
- examples/hparser/invalid.xml +0/−13
- examples/hparser/lousy.html +0/−26
- examples/hparser/namespace0.xml +0/−31
- examples/hparser/namespace1.xml +0/−60
- examples/hsvg/.ghci +0/−11
- examples/hsvg/Makefile +0/−83
- examples/hsvg/TreeVisualisation.hs +0/−449
- examples/hunit/HUnitExample.hs +0/−616
- examples/hunit/Makefile +0/−32
- examples/hunit/mini1.xml +0/−1
- examples/hunit/mini2.xml +0/−1
- examples/mini/Makefile +0/−34
- examples/mini/ParseExample.hs +0/−50
- examples/mini/example1.xml +0/−22
- examples/xhtml/xhtml-lat1.ent +0/−196
- examples/xhtml/xhtml-special.ent +0/−79
- examples/xhtml/xhtml-symbol.ent +0/−242
- examples/xhtml/xhtml.xml +0/−1484
- examples/xhtml/xhtml1-frameset.dtd +0/−1225
- examples/xhtml/xhtml1-strict.dtd +0/−988
- examples/xhtml/xhtml1-transitional.dtd +0/−1196
- hxt-filter.cabal +12/−12
- src/Data/Tree/NTree/Filter.hs +2/−3
- src/HXT.hs +0/−5
- src/Makefile +0/−163
- src/Text/XML/HXT/DOM/Namespace.hs +2/−2
- src/Text/XML/HXT/DOM/XmlState.hs +10/−14
- src/Text/XML/HXT/Parser/DTDProcessing.hs +15/−16
- src/Text/XML/HXT/Parser/HtmlParser.hs +5/−7
- src/Text/XML/HXT/Parser/MainFunctions.hs +1/−1
- src/Text/XML/HXT/Parser/ProtocolHandlerFile.hs +1/−1
- src/Text/XML/HXT/Parser/ProtocolHandlerHttpCurl.hs +2/−2
- src/Text/XML/HXT/Parser/ProtocolHandlerHttpNative.hs +2/−4
- src/Text/XML/HXT/Parser/XmlOutput.hs +2/−2
- src/Text/XML/HXT/ProtocolHandler/Makefile +0/−45
- src/Text/XML/HXT/ProtocolHandler/ProtocolHandler.hs +0/−113
- src/Text/XML/HXT/Validator/DocTransformation.hs +0/−3
- src/Text/XML/HXT/Validator/DocValidation.hs +0/−2
- src/Text/XML/HXT/Validator/Validation.hs +2/−2
- src/hxt-filter-package.hs +0/−114
− Makefile
@@ -1,138 +0,0 @@-include Version.mk--HXT_HOME = .--DIST = $(DIST_NAME)-DIST_TAR = $(DIST_NAME).tar.gz-DIST_FILES = Makefile Version.mk README LICENCE Setup.lhs $(SOFTWARE).cabal--SETUP = Setup.lhs--VERSIONTAG = $(DIST_NAME)-PUBDATE := $(shell date +%Y-%m-%d)--EDIT_VERSION = sed 's/%DISTFILE%/$(DIST_NAME)/g' \- | sed 's/%VERSION%/$(VERSION)/g' \- | sed 's/%PUBDATE%/$(PUBDATE)/g'--HSCOLOUR = HsColour-HSCOLOUR_CSS = doc/hscolour.css--# ----------------------------------------------------all :- $(MAKE) -C src all- $(MAKE) $(SOFTWARE).cabal--allexamples :- $(MAKE) -C examples all--test :- $(MAKE) -C examples test--# --------------------------------------------------------------cabal :- $(MAKE) cabal_configure cabal_build cabal_doc cabal_install--cabal_configure :- runhaskell $(SETUP) configure --global--cabal_doc :- $(HSCOLOUR) -print-css > $(HSCOLOUR)- runhaskell $(SETUP) haddock --hyperlink-source --hscolour-css=$(HSCOLOUR)- rm -f $(HSCOLOUR)--cabal_build :- runhaskell $(SETUP) build--cabal_install :- sudo runhaskell $(SETUP) install --global--# --------------------------------------------------------------$(SOFTWARE).cabal : src/$(SOFTWARE)-package.hs src/Makefile Makefile- $(MAKE) -C src ../$(SOFTWARE).cabal--DOC_HXT = $(DIST)/doc/$(SOFTWARE)--doc : $(SOFTWARE).cabal- $(MAKE) cabal_configure cabal_doc- [ -d $(DOC_HXT) ] || mkdir -p $(DOC_HXT)- ( cd dist/doc/html/$(SOFTWARE) ; tar cf - . ) | ( cd $(DOC_HXT) ; tar xf - )--dist : all doc- [ -d $(DIST) ] || mkdir -p $(DIST)- $(MAKE) -C src dist- $(MAKE) -C examples dist- cp $(DIST_FILES) $(DIST)--tarball : dist- tar -zcvf $(DIST_TAR) $(DIST)--# --------------------------------------------------------------clean :- $(MAKE) -C src clean- $(MAKE) -C examples clean- rm -rf $(DIST) $(DIST_TAR) $(SOFTWARE).cabal .setup-config .installed-pkg-config dist--# --------------------------------------------------------------tag :- darcs tag $(VERSIONTAG) .--install :- $(MAKE) -C src install--uninstall :- $(MAKE) -C src uninstall--DISTDATE = $(shell date -r $(DIST_TAR) +%Y-%m-%d.%R)--distcopy : $(DIST_TAR)- scp $(DIST_TAR) hxt@darcs.fh-wedel.de:/home/hxt/$(SOFTWARE)/$(SOFTWARE)-head-$(DISTDATE).tar.gz--# ----------------------------------------------------.PHONY : all doc test dist clean tag install uninstall tarball webpage cleanwebpage--# ----------------------------------------------------# Create webpage directory for distribution--WEBHOME = ../../../fh/public_html/HXmlToolbox--webpage : tarball- [ -d $(WEBHOME) ] || exit 1- [ -d $(WEBHOME)/hdoc-filter ] || mkdir -p $(WEBHOME)/hdoc-filter- cp -r dist/doc/html/$(SOFTWARE)/* $(WEBHOME)/hdoc-filter- cp $(DIST_TAR) $(WEBHOME)--# ----------------------------------------------------# make a clean installation from distribution tar--PROD_DIR = ~/tmp-INSTALL = echo now run: "(" cd $(PROD_DIR)/$(DIST) ";" -INSTEND = ")"--distbuild : tarball- ( [ -f $(DIST_TAR) ] || exit 1 \- ; cp -f $(DIST_TAR) $(PROD_DIR) || exit 1 \- ; cd $(PROD_DIR) || exit 1 \- ; rm -rf $(DIST) \- ; tar xvzf $(DIST_TAR) \- ; cd $(DIST) || exit 1 \- ; runhaskell $(SETUP) configure || exit 1 \- ; runhaskell $(SETUP) build || exit 1 \- ; $(INSTALL) sudo runhaskell $(SETUP) install --global $(INSTEND) \- )--distinstall :- $(MAKE) distbuild INSTALL="" INSTEND=""--# ---------------------------------------------------#--# end Makefile
− README
@@ -1,23 +0,0 @@-The Haskell XML Toolbox is a collection of tools for processing XML with-Haskell.--The Haskell XML Toolbox is available from:- http://www.fh-wedel.de/~si/HXmlToolbox/-or from hackage.haskell.org--Detailed information about the features, changes, requirements, installation and documentation-is available from that web page.--This is the "old" approach with the filters like in HaXmL.-The package name for these modules is "hxt-filter".-It requires the "hxt" package to be installed.-For new projects we strongly recomend the-library based on arrows (package "hxt").--Installation can be done with cabal in the usual way.--Good luck,--Uwe Schmidt--(uwe@fh-wedel.de)
− Version.mk
@@ -1,7 +0,0 @@-# Version.mk-# Version numbering for HXT filter package--SOFTWARE = hxt-filter-VERSION = 8.3.0-LASTVERSION = 8.2.0-DIST_NAME = $(SOFTWARE)-$(VERSION)
− doc/hxt-filter/Control-Monad-MonadStateIO.html
@@ -1,487 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Control.Monad.MonadStateIO</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Control-Monad-MonadStateIO.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Control.Monad.MonadStateIO</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->general usefull state monad for a local state and IO-</P-><P->This module is used for threading a state and io actions- through a computation.- Here the monad is constructed by hand.- It could easily be refactored with the use of the monad transformer library.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->newtype</SPAN-> <A HREF="#t%3AStateIO"->StateIO</A-> state res = <A HREF="#v%3ASTIO"->STIO</A-> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="recfield"-><A HREF="#v%3Atrans"->trans</A-> :: state -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> (res, state)</TD-></TR-></TABLE->}</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aio"->io</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> a -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtrcState"->trcState</A-> :: (state -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->) -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AchangeState"->changeState</A-> :: (state -> state) -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetState"->setState</A-> :: state -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetState"->getState</A-> :: <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Arun"->run</A-> :: state -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state res -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> res</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->newtype</SPAN-> <A NAME="t%3AStateIO"-></A-><B->StateIO</B-> state res </TD-><TD CLASS="declbut"-><A HREF="src/Control-Monad-MonadStateIO.html#StateIO"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ASTIO"-></A-><B->STIO</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="body" COLSPAN="2"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3Atrans"-></A-><B->trans</B-> :: state -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> (res, state)</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:StateIO')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:StateIO" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> (<A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aio"-></A-><B->io</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> a -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state a</TD-><TD CLASS="declbut"-><A HREF="src/Control-Monad-MonadStateIO.html#io"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->lift IO command to <TT-><A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtrcState"-></A-><B->trcState</B-> :: (state -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->) -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state ()</TD-><TD CLASS="declbut"-><A HREF="src/Control-Monad-MonadStateIO.html#trcState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->state inspection command: a "show"-like function is applied to the state- and the result is written to stderr.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AchangeState"-></A-><B->changeState</B-> :: (state -> state) -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state state</TD-><TD CLASS="declbut"-><A HREF="src/Control-Monad-MonadStateIO.html#changeState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->change the state with a given function and return the new state-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetState"-></A-><B->setState</B-> :: state -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state state</TD-><TD CLASS="declbut"-><A HREF="src/Control-Monad-MonadStateIO.html#setState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->set the state-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetState"-></A-><B->getState</B-> :: <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state state</TD-><TD CLASS="declbut"-><A HREF="src/Control-Monad-MonadStateIO.html#getState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->read the state-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Arun"-></A-><B->run</B-> :: state -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> state res -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> res</TD-><TD CLASS="declbut"-><A HREF="src/Control-Monad-MonadStateIO.html#run"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->run a <TT-><A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-></TT-> command with an initial state-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Data-Tree-NTree-Filter.html
@@ -1,3754 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Data.Tree.NTree.Filter</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Data-Tree-NTree-Filter.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Data.Tree.NTree.Filter</FONT-></TD-><TD ALIGN="right"-><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="infohead"->Portability</TD-><TD CLASS="infoval"->portable</TD-></TR-><TR-><TD CLASS="infohead"->Stability</TD-><TD CLASS="infoval"->stable</TD-></TR-><TR-><TD CLASS="infohead"->Maintainer</TD-><TD CLASS="infoval"->Uwe Schmidt (uwe\@fh-wedel.de)</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"-><B->Contents</B-></TD-></TR-><TR-><TD-><DL-><DT-><A HREF="#1"->Filter-</A-></DT-><DT-><A HREF="#2"->Monadic Filter-</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->Filter for n-ary tree structure with filter combinators- copied and modified from HaXml (<A HREF="http://www.cs.york.ac.uk/fp/HaXml/"->http://www.cs.york.ac.uk/fp/HaXml/</A->)-</P-><P->Similar but more flexible functions for tree processing are defined in the- arrow classes <A HREF="Control-Arrow-ArrowList.html"->Control.Arrow.ArrowList</A->, <A HREF="Control-Arrow-ArrowIf.html"->Control.Arrow.ArrowIf</A->, <A HREF="Control-Arrow-ArrowTree.html"->Control.Arrow.ArrowTree</A-> and <A HREF="Control-Arrow-ArrowState.html"->Control.Arrow.ArrowState</A->.- For new applications, especially for XML processing, it's recommended to use the arrow interface- <A HREF="Text-XML-HXT-Arrow.html"->Text.XML.HXT.Arrow</A-> instead of this filter approach as part of the api <A HREF="Text-XML-HXT-Parser.html"->Text.XML.HXT.Parser</A->-</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%3ATFilter"->TFilter</A-> node = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ATSFilter"->TSFilter</A-> node = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Asatisfies"->satisfies</A-> :: (a -> [b]) -> a -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Anone"->none</A-> :: a -> [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Athis"->this</A-> :: a -> [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisOf"->isOf</A-> :: (a -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> a -> [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisOfNode"->isOfNode</A-> :: (node -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkNTree"->mkNTree</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AreplaceNode"->replaceNode</A-> :: node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AreplaceChildren"->replaceChildren</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmodifyNode"->modifyNode</A-> :: (node -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Maybe.html#t%3AMaybe"->Maybe</A-> node) -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmodifyNode0"->modifyNode0</A-> :: (node -> node) -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmodifyChildren"->modifyChildren</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATSFilter"->TSFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsubstChildren"->substChildren</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessChildren"->processChildren</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Ao"->o</A-> :: (a -> [b]) -> (c -> [a]) -> c -> [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3A.%3E"->(.>)</A-> :: (a -> [b]) -> (b -> [c]) -> a -> [c]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AseqF"->seqF</A-> :: [a -> [a]] -> a -> [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3A..%3E"->(..>)</A-> :: (a -> [b]) -> (a -> b -> [d]) -> a -> [d]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3A%2B%2B%2B"->(+++)</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%3AorElse"->orElse</A-> :: (a -> [b]) -> (a -> [b]) -> a -> [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aiff"->iff</A-> :: (a -> [c]) -> (a -> [b]) -> (a -> [b]) -> a -> [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Achoice"->choice</A-> :: [<A HREF="Data-Tree-NTree-Filter.html#t%3AIfThen"->IfThen</A-> (a -> [c]) (a -> [b])] -> a -> [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AIfThen"->IfThen</A-> a b = a <A HREF="#v%3A%3A-%3E"->:-></A-> b</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Awhen"->when</A-> :: (a -> [a]) -> (a -> [a]) -> a -> [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AwhenNot"->whenNot</A-> :: (a -> [a]) -> (a -> [a]) -> a -> [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aguards"->guards</A-> :: (a -> [b]) -> (a -> [b]) -> a -> [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aneg"->neg</A-> :: (a -> [c]) -> a -> [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Acontaining"->containing</A-> :: (a -> [b]) -> (b -> [c]) -> a -> [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AnotContaining"->notContaining</A-> :: (a -> [b]) -> (b -> [c]) -> a -> [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3A%2F%3E"->(/>)</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3A%3C%2F"->(</)</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Adeep"->deep</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Adeepest"->deepest</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Amulti"->multi</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessBottomUp"->processBottomUp</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessBottomUpIfNot"->processBottomUpIfNot</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessTopDown"->processTopDown</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessTopDownUntil"->processTopDownUntil</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AinsertChildrenAt"->insertChildrenAt</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AinsertChildrenAfter"->insertChildrenAfter</A-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AthisM"->thisM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => a -> m [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AnoneM"->noneM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => a -> m [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3A.%3E%3E"->(.>>)</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [b]) -> (b -> m [c]) -> a -> m [c]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AseqM"->seqM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => [a -> m [a]] -> a -> m [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3A%2B%2B%2B%3E%3E"->(+++>>)</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [b]) -> (a -> m [b]) -> a -> m [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcatM"->catM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => [a -> m [b]] -> a -> m [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AifM"->ifM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> [b]) -> (a -> m [c]) -> (a -> m [c]) -> a -> m [c]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AchoiceM"->choiceM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => [<A HREF="Data-Tree-NTree-Filter.html#t%3AIfThen"->IfThen</A-> (a -> [c]) (a -> m [b])] -> a -> m [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AwhenM"->whenM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [a]) -> (a -> [b]) -> a -> m [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AwhenNotM"->whenNotM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [a]) -> (a -> [b]) -> a -> m [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AguardsM"->guardsM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> [b]) -> (a -> m [c]) -> a -> m [c]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcontainingM"->containingM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [b]) -> (b -> [c]) -> a -> m [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessChildrenM"->processChildrenM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessTopDownM"->processTopDownM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessBottomUpM"->processBottomUpM</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AliftMf"->liftMf</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> [b]) -> a -> m [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3A%24%24"->($$)</A-> :: (a -> [b]) -> [a] -> [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3A%24%24%3C"->($$<)</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [b]) -> [a] -> m [b]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AperformAction"->performAction</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m b) -> a -> m [a]</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ATFilter"-></A-><B->TFilter</B-> node = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#TFilter"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->tree filter type: a function mapping a tree onto a list of trees-</P-><P->filter can be used in various ways, as predicates, selectors, transformers, ...-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ATSFilter"-></A-><B->TSFilter</B-> node = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#TSFilter"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->a filter for sequences-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Asatisfies"-></A-><B->satisfies</B-> :: (a -> [b]) -> a -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#satisfies"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->satisfies converts a result of a predicate filter into a boolean-</P-><P->is a shortcut for not . null-</P-><P->typical use in guards or ifs: <TT->if (satisfies f) t then ... else ... </TT->-</P-><UL-><LI-> 1.parameter f : the predicate filter-</LI-><LI-> 2.parameter t : the tree to be tested-</LI-><LI-> returns : <TT->b = not (null (f t))</TT->-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="1"->Filter-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Anone"-></A-><B->none</B-> :: a -> [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#none"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->the null filter, returns the empty list-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Athis"-></A-><B->this</B-> :: a -> [a]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#this"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->the unit filter, returns the single element list containing the argument-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisOf"-></A-><B->isOf</B-> :: (a -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> a -> [a]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#isOf"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->conversion from predicate function to filter-</P-><UL-><LI-> 1.parameter p : the predicate for testing the tree-</LI-><LI-> returns : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Athis"->this</A-></TT-> or <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Anone"->none</A-></TT-> depending on the predicate-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisOfNode"-></A-><B->isOfNode</B-> :: (node -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#isOfNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->select filter, selects trees with node values with a specific property-</P-><UL-><LI-> 1.parameter p : the predicate for testing the node value-</LI-><LI-> returns : <TT->[]</TT-> or <TT->[t]</TT-> depending on <TT->p t</TT->-</LI-></UL-><P->a special case of <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AisOf"->isOf</A-></TT-> filter-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkNTree"-></A-><B->mkNTree</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#mkNTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for substituting an arbitray tree by a constant-</P-><UL-><LI-> 1.parameter t : the result tree, the input tree is ignored-</LI-><LI-> returns : the filter-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AreplaceNode"-></A-><B->replaceNode</B-> :: node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#replaceNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for replacing the node-</P-><UL-><LI-> 1.parameter n : the new node-</LI-><LI-> returns : the editing filter-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AreplaceChildren"-></A-><B->replaceChildren</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#replaceChildren"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for replacing the children-</P-><UL-><LI-> 1.parameter cs : cs the list of children-</LI-><LI-> returns : the filter-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmodifyNode"-></A-><B->modifyNode</B-> :: (node -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Maybe.html#t%3AMaybe"->Maybe</A-> node) -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#modifyNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmodifyNode0"-></A-><B->modifyNode0</B-> :: (node -> node) -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#modifyNode0"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for editing the node-</P-><UL-><LI-> 1.parameter nf : the XNode editing funtion-</LI-><LI-> returns : the filter-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmodifyChildren"-></A-><B->modifyChildren</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATSFilter"->TSFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#modifyChildren"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for editing the children-</P-><P->all children are processed with a filter mapping lists to lists,- this enables not only elementwise editing by lifting a normal- filter to a list filter with <TT->(f $$)</TT-> (see '($$)') but also manipulation- of the order of the elements, e.g. <A HREF="reverse.html"->reverse</A-> is an appropriate childen- editing function.-</P-><UL-><LI-> 1.parameter csf : the children editing function-</LI-><LI-> returns : the filter-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessChildren"->processChildren</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsubstChildren"-></A-><B->substChildren</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#substChildren"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->filter for substituting the children of a tree by- a new list of childen computed by applying a filter to the input tree.- <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AmodifyChildren"->modifyChildren</A-></TT-> can be expressed by <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AsubstChildren"->substChildren</A-></TT->:- <TT->modifyChildren f t</TT-> is equal to <TT->substChildren (f . getChildren)</TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessChildren"-></A-><B->processChildren</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#processChildren"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Filter for editing the children of a tree element wise-</P-><UL-><LI-> 1.parameter cf : the filter applied to the children-</LI-><LI-> returns : the editing filter-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AmodifyChildren"->modifyChildren</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Ao"-></A-><B->o</B-> :: (a -> [b]) -> (c -> [a]) -> c -> [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#o"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->sequential composition of filters, usually written in infix notation f2 <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Ao"->o</A-></TT-> f1.-</P-><P->for predicate filter the logical AND-</P-><UL-><LI-> 1.parameter f2 : the 2. filter-</LI-><LI-> 2.parameter f1 : the 1. filter-</LI-><LI-> returns : the fiter applying first f1 to n and then f2 to the result (like function composition)-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3A.%3E"-></A-><B->(.>)</B-> :: (a -> [b]) -> (b -> [c]) -> a -> [c]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#.%3E"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->pronounced "followed by", defined as: <TT->f .> g = g `o` f</TT->.-</P-><P->allows filter composition in a more readable way from left to right-</P-><UL-><LI-> 1.parameter f1 : the 1. filter-</LI-><LI-> 2.parameter f2 : the 2. filter-</LI-><LI-> returns : the composition of f1 and f2-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Ao"->o</A-></TT->, '(..>)'-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AseqF"-></A-><B->seqF</B-> :: [a -> [a]] -> a -> [a]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#seqF"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->apply a list of filters sequentially with '(.>)', for predicate filters the generalized AND-</P-><P->see also : '(.>)'-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3A..%3E"-></A-><B->(..>)</B-> :: (a -> [b]) -> (a -> b -> [d]) -> a -> [d]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#..%3E"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->special sequential composition.-</P-><P->filter f is applied to an argument t.- then filter g is applied to all elements of the result list,- but the argument t is also passed as extra parameter to g.-</P-><P->This allows for step by step transformations of a tree- with access to the original tree in every- transformation step.-</P-><P->see also : '(.>)', <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Ao"->o</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3A%2B%2B%2B"-></A-><B->(+++)</B-> :: (a -> [b]) -> (a -> [b]) -> a -> [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#%2B%2B%2B"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->binary parallel composition, the logical OR for predicate filter-</P-><UL-><LI-> 1.parameter f1 : the 1. filter-</LI-><LI-> 2.parameter f2 : the 2. filter-</LI-><LI-> returns : the filter for applying f1 and f2 both to an argument tree and concatenating the results-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Acat"-></A-><B->cat</B-> :: [a -> [b]] -> a -> [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#cat"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->apply a list of filters, a "union" for lists, for predicate filters the generalized OR-</P-><UL-><LI-> 1.parameter fs : the list of filters-</LI-><LI-> returns : the composing filter-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AorElse"-></A-><B->orElse</B-> :: (a -> [b]) -> (a -> [b]) -> a -> [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#orElse"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->directional choice, usually written in infix notation as f <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AorElse"->orElse</A-></TT-> g-</P-><UL-><LI-> 1.parameter f : the 1. filter-</LI-><LI-> 2.parameter g : the 2. filter-</LI-><LI-> 3.parameter t : the tree-</LI-><LI-> returns : the filter, that applies f to t, if the result is not the empty list, the result is found, else g t is the result-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aiff"-></A-><B->iff</B-> :: (a -> [c]) -> (a -> [b]) -> (a -> [b]) -> a -> [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#iff"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->if then else lifted to filters-</P-><UL-><LI-> 1.parameter p : the predicate filter-</LI-><LI-> 2.parameter t : the "then" filter-</LI-><LI-> 3.parameter e : the "else" filter-</LI-><LI-> returns : the resulting conditional filter-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Achoice"-></A-><B->choice</B-> :: [<A HREF="Data-Tree-NTree-Filter.html#t%3AIfThen"->IfThen</A-> (a -> [c]) (a -> [b])] -> a -> [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#choice"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->multiway branch. The list of cases <TT->f :-> g</TT-> is processed sequentially,- in the first case for that f holds g is applied, if no case matches, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Anone"->none</A-></TT-> is- applied.- This filter can be used like a case expression: <TT->choice [ p1 :-> f1, p2 :-> f2, ... , this :-> defaultFilter]</TT->-</P-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Aiff"->iff</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AchoiceM"->choiceM</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AIfThen"-></A-><B->IfThen</B-> a b </TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#IfThen"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->auxiliary datatype for cases within choice filter-</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 <A NAME="v%3A%3A-%3E"-></A-><B->:-></B-> b</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Awhen"-></A-><B->when</B-> :: (a -> [a]) -> (a -> [a]) -> a -> [a]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#when"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->when the predicate p holds, f is applied, else the identity filter this-</P-><UL-><LI-> 1.parameter f : the conditinally applied filter-</LI-><LI-> 2.parameter p : the predicate-</LI-><LI-> returns : the conditional filter-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Aiff"->iff</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AwhenNot"->whenNot</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Aguards"->guards</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AwhenM"->whenM</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AwhenNot"-></A-><B->whenNot</B-> :: (a -> [a]) -> (a -> [a]) -> a -> [a]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#whenNot"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->the complementary filter of when-</P-><P->shortcut for f <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Awhen"->when</A-></TT-> neg g-</P-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Aiff"->iff</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Awhen"->when</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AwhenNotM"->whenNotM</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Aneg"->neg</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aguards"-></A-><B->guards</B-> :: (a -> [b]) -> (a -> [b]) -> a -> [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#guards"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->when the predicate p holds, f is applied, else the null filter none-</P-><UL-><LI-> 1.parameter p : the predicate filter-</LI-><LI-> 2.parameter f : the conditionally applied filter-</LI-><LI-> returns : the conditional filter-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Aiff"->iff</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Awhen"->when</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AguardsM"->guardsM</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aneg"-></A-><B->neg</B-> :: (a -> [c]) -> a -> [a]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#neg"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->negation lifted to filters-</P-><UL-><LI-> 1.parameter f : the predicate filter-</LI-><LI-> returns : the filter, that succeeds, when f failed-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Acontaining"-></A-><B->containing</B-> :: (a -> [b]) -> (b -> [c]) -> a -> [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#containing"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->pruning: keep only those results from f for which g holds, usually written in infix notation as f <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Acontaining"->containing</A-></TT-> g-</P-><UL-><LI-> 1.parameter f : the processing filter-</LI-><LI-> 2.parameter g : the predicate filter-</LI-><LI-> 3.parameter t : the tree-</LI-><LI-> returns : all trees r from f t, for which g r holds (is not the empty list)-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AnotContaining"->notContaining</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnotContaining"-></A-><B->notContaining</B-> :: (a -> [b]) -> (b -> [c]) -> a -> [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#notContaining"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->pruning: keep only those results from f for which g does not hold-</P-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Acontaining"->containing</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3A%2F%3E"-></A-><B->(/>)</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#%2F%3E"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->pronounced "slash", meaning g inside f-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3A%3C%2F"-></A-><B->(</)</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#%3C%2F"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->pronounced "outside" meaning f containing g-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Adeep"-></A-><B->deep</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#deep"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->top down search.-</P-><P->search terminates, when filter f succeeds- can e.g. be used for finding all outermost tag node of a specific kind-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Adeepest"-></A-><B->deepest</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#deepest"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->bottom up search.-</P-><P->first the children are processed,- if this does not succeed, the node itself is processed- can e.g. be used for finding all innermost tag nodes of a specific kind-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Amulti"-></A-><B->multi</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#multi"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->process all nodes of the whole tree.-</P-><P->can e.g. be used for finding all nodes of a specific kind-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessBottomUp"-></A-><B->processBottomUp</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#processBottomUp"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->bottom up transformation-</P-><UL-><LI-> 1.parameter f : the <EM->simple</EM-> transforming filter-</LI-><LI-> returns : the filter that applies f to all subtrees and the tree itself in a deepth first left to right manner-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessTopDown"->processTopDown</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessBottomUpIfNot"->processBottomUpIfNot</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessBottomUpIfNot"-></A-><B->processBottomUpIfNot</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#processBottomUpIfNot"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->guarded bottom up transformation, stops at subtrees for which a predicate p holds-</P-><UL-><LI-> 1.parameter f : the transforming filter-</LI-><LI-> 2.parameter p : the predicate filter for the guard-</LI-><LI-> returns : the filter for processing all (sub-)trees-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessBottomUp"->processBottomUp</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessTopDown"-></A-><B->processTopDown</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#processTopDown"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->top down transformation-</P-><UL-><LI-> 1.parameter f : the <EM->simple</EM-> transforming filter-</LI-><LI-> returns : the filter that applies f first to the tree and then recursively to all subtrees of the result-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessBottomUp"->processBottomUp</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessTopDownUntil"-></A-><B->processTopDownUntil</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#processTopDownUntil"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->top down transformation until a node to be transformed is found-</P-><UL-><LI-> 1.parameter f : the <EM->simple</EM-> transforming filter-</LI-><LI-> returns : the filter that applies f first to the tree and, if the filter does not succeed,- recursively to all children of the input tree.-</LI-></UL-><P->Example:-</P-><PRE->processTopDownUntil none</PRE-><P->is the identity filter (maybe a bit more inefficient).-</P-><P->Example:-</P-><PRE->processTopDownUntil (add1Attr "border" "2" `containing` isTag "table")</PRE-><P->is a filter for adding an attribute border="2" in all top level table tags.- The content of table tags will remain unchanged.-</P-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessTopDown"->processTopDown</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessBottomUp"->processBottomUp</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AinsertChildrenAt"-></A-><B->insertChildrenAt</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#insertChildrenAt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->insertion of trees into the list of children at a given position-</P-><P->useful for inserting something into the list of children at a given position- the list of children is split with the <TT->splitAt</TT-> function- the nodes are inserted between these two sublists.-</P-><P->examples: <TT->insertChildrenAt 0 ins t</TT-> inserts all elements computed with <TT->ins t</TT-> in front- of the childen of <TT->t</TT->, <TT->insertChildrenAt 1 ins t</TT-> behind the first child-</P-><P->see also: <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AinsertChildrenAfter"->insertChildrenAfter</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AinsertChildrenAfter"-></A-><B->insertChildrenAfter</B-> :: <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node -> <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#insertChildrenAfter"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->insertion of trees into the list of children after specific elements-</P-><P->useful for inserting something into the list of children of a node- the list of children is split with the <TT->span</TT-> function and the filter p as predicate- the nodes are inserted between these two sublists-</P-><P->examples: <TT->insertChildrenAfter none ins t</TT-> inserts all elements computed with <TT->ins t</TT-> in front- of the childen of <TT->t</TT->, <TT->insertChildrenAfter this ins t</TT-> appends the elements to the children-</P-><P->see also: <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AinsertChildrenAt"->insertChildrenAt</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"-><A NAME="2"->Monadic Filter-</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AthisM"-></A-><B->thisM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => a -> m [a]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#thisM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->the monadic version of the identity filter this.-</P-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Athis"->this</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnoneM"-></A-><B->noneM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => a -> m [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#noneM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->the monadic version of the null filter none.-</P-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Anone"->none</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3A.%3E%3E"-></A-><B->(.>>)</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [b]) -> (b -> m [c]) -> a -> m [c]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#.%3E%3E"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->sequential composition of monadic filters, monadic version of ".>".-</P-><UL-><LI-> 1.parameter f1 : the 1. monadic filter-</LI-><LI-> 2.parameter f2 : the 2. monadic filter-</LI-><LI-> returns : the monadic fiter applying first f1 to n and then f2 to the result (like function composition)-</LI-></UL-><P->see also : '(.>)'-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AseqM"-></A-><B->seqM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => [a -> m [a]] -> a -> m [a]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#seqM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->generalized sequential composition of monadic filters-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3A%2B%2B%2B%3E%3E"-></A-><B->(+++>>)</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [b]) -> (a -> m [b]) -> a -> m [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#%2B%2B%2B%3E%3E"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->binary parallel composition, the logical OR for predicate filter-</P-><UL-><LI-> 1.parameter f1 : the 1. filter-</LI-><LI-> 2.parameter f2 : the 2. filter-</LI-><LI-> returns : the filter for applying f1 and f2 both to an argument tree and concatenating the results- see also: <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Acat"->cat</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3A%2B%2B%2B"->+++</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AcatM"->catM</A-></TT->-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcatM"-></A-><B->catM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => [a -> m [b]] -> a -> m [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#catM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->apply a list of monadic filters-</P-><UL-><LI-> 1.parameter fs : the list of filters-</LI-><LI-> returns : the composing filter- see also: <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Acat"->cat</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3A%2B%2B%2B"->+++</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3A%2B%2B%2B%3E%3E"->+++>></A-></TT->-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AifM"-></A-><B->ifM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> [b]) -> (a -> m [c]) -> (a -> m [c]) -> a -> m [c]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#ifM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->monadic if-then-else.-</P-><UL-><LI-> 1.parameter p : the predicate-</LI-><LI-> 2.parameter thenP : the then part: the monadic filter, that is applied if p holds for the input tree-</LI-><LI-> 3.parameter elseP : the else part-</LI-><LI-> returns : the monadic filter for the conditional-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AchoiceM"-></A-><B->choiceM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => [<A HREF="Data-Tree-NTree-Filter.html#t%3AIfThen"->IfThen</A-> (a -> [c]) (a -> m [b])] -> a -> m [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#choiceM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->monadic version of multiway branch. The list of cases <TT->f :-> g</TT-> is processed sequentially,- in the first case for that f holds g is applied, if no case matches, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AnoneM"->noneM</A-></TT-> is- applied.- This filter can be used like a case expression: <TT->choiceM [ p1 :-> f1, p2 :-> f2, ... , thisM :-> defaultFilter]</TT->-</P-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Achoice"->choice</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AifM"->ifM</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AwhenM"-></A-><B->whenM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [a]) -> (a -> [b]) -> a -> m [a]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#whenM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->when the predicate p holds, the monadic filter f is applied, else the identity filter.-</P-><UL-><LI-> 1.parameter f : the conditinally applied monadic filter-</LI-><LI-> 2.parameter p : the simple predicate-</LI-><LI-> returns : the conditional filter-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AifM"->ifM</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Awhen"->when</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AguardsM"->guardsM</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AwhenNotM"->whenNotM</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AwhenNotM"-></A-><B->whenNotM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [a]) -> (a -> [b]) -> a -> m [a]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#whenNotM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->the complementary filter of whenM.-</P-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AifM"->ifM</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AwhenM"->whenM</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AwhenNot"->whenNot</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AguardsM"-></A-><B->guardsM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> [b]) -> (a -> m [c]) -> a -> m [c]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#guardsM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->when the predicate p holds, the monadic filter f is applied, else the null filter.-</P-><UL-><LI-> 1.parameter p : the simple predicate filter-</LI-><LI-> 2.parameter f : the conditionally applied monadic filter-</LI-><LI-> returns : the conditional filter-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AifM"->ifM</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Aguards"->guards</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AwhenM"->whenM</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcontainingM"-></A-><B->containingM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [b]) -> (b -> [c]) -> a -> m [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#containingM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->pruning: monadic version of containing, usually written in infix notation as f <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AcontainingM"->containingM</A-></TT-> g-</P-><UL-><LI-> 1.parameter f : the monadic processing filter-</LI-><LI-> 2.parameter g : the predicate filter-</LI-><LI-> 3.parameter t : the tree-</LI-><LI-> returns : all trees r from f t, for which g r holds (is not the empty list)-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AnotContaining"->notContaining</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessChildrenM"-></A-><B->processChildrenM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#processChildrenM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Filter for editing the children of a tree with a monadic filter-</P-><UL-><LI-> 1.parameter cf : the monadic filter applied to the children-</LI-><LI-> returns : the monadic editing filter-</LI-></UL-><P->see also : <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessChildren"->processChildren</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessTopDownM"-></A-><B->processTopDownM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#processTopDownM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->monadic variant of <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessTopDown"->processTopDown</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessBottomUpM"-></A-><B->processBottomUpM</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#processBottomUpM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->monadic variant of <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessBottomUp"->processBottomUp</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AliftMf"-></A-><B->liftMf</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> [b]) -> a -> m [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#liftMf"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->lift a filter to a monadic filter-</P-><UL-><LI-> 1.parameter f : the <EM->simple</EM-> filter-</LI-><LI-> returns : the lifted monadic version-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3A%24%24"-></A-><B->($$)</B-> :: (a -> [b]) -> [a] -> [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#%24%24"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->infix operator for applying a filter to a list of trees-</P-><UL-><LI-> 1.parameter f : the filter-</LI-><LI-> 2.parameter ts : the list of trees-</LI-><LI-> returns : the concatenated list of results-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3A%24%24%3C"-></A-><B->($$<)</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m [b]) -> [a] -> m [b]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#%24%24%3C"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->infix operator for applying a monadic filter to a list of trees,- typically used in do-notation for processing of intermediate results.-</P-><UL-><LI-> 1.parameter f : the monadic filter-</LI-><LI-> 2.parameter ts : the list of trees-</LI-><LI-> returns : the concatenated list of results-</LI-></UL-><P->see also : '($$)'-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AperformAction"-></A-><B->performAction</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"->Monad</A-> m => (a -> m b) -> a -> m [a]</TD-><TD CLASS="declbut"-><A HREF="src/Data-Tree-NTree-Filter.html#performAction"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->run an arbitray command on a tree t and return the tree,- used for inserting arbitray commands in a filter pipeline-</P-><UL-><LI-> 1.parameter cmd : the command-</LI-><LI-> 2.parameter t : the argument tree-</LI-><LI-> returns : the unchanged tree as a single element list-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/System-PipeOpen.html
@@ -1,190 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->System.PipeOpen</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/System-PipeOpen.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->System.PipeOpen</FONT-></TD-><TD ALIGN="right"-><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="infohead"->Portability</TD-><TD CLASS="infoval"->none portable</TD-></TR-><TR-><TD CLASS="infohead"->Stability</TD-><TD CLASS="infoval"->experimental</TD-></TR-><TR-><TD CLASS="infohead"->Maintainer</TD-><TD CLASS="infoval"->Uwe Schmidt (uwe\@fh-wedel.de)</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->Version : $Id: PipeOpen.hs,v 1.2 2005<EM->09</EM->02 17:09:39 hxml Exp $-</P-><P->pipe open implemented with System.Process functions-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3Apopen"->popen</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> [<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->] -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->, <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->, <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A->)</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Apopen"-></A-><B->popen</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> [<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->] -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->, <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->, <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A->)</TD-><TD CLASS="declbut"-><A HREF="src/System-PipeOpen.html#popen"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->call an external program with a list of command line arguments- and return content of stdout, content of stderr and return code-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-DOM-EditFilters.html
@@ -1,1463 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.DOM.EditFilters</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.DOM.EditFilters</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->XML editing filters-</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%3AcanonicalizeTree"->canonicalizeTree</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcanonicalizeAllNodes"->canonicalizeAllNodes</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcanonicalizeForXPath"->canonicalizeForXPath</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcollapseXText"->collapseXText</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcollapseAllXText"->collapseAllXText</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AindentDoc"->indentDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AremoveWhiteSpace"->removeWhiteSpace</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AremoveAllWhiteSpace"->removeAllWhiteSpace</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AremoveDocWhiteSpace"->removeDocWhiteSpace</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AremoveComment"->removeComment</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AremoveAllComment"->removeAllComment</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtransfCdata"->transfCdata</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtransfAllCdata"->transfAllCdata</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtransfCdataEscaped"->transfCdataEscaped</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtransfAllCdataEscaped"->transfAllCdataEscaped</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtransfCharRef"->transfCharRef</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtransfAllCharRef"->transfAllCharRef</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AescapeXmlDoc"->escapeXmlDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AescapeXmlText"->escapeXmlText</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AescapeXmlAttrValue"->escapeXmlAttrValue</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AunparseXmlDoc"->unparseXmlDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AnumberLinesInXmlDoc"->numberLinesInXmlDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AnumberLines"->numberLines</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtreeRepOfXmlDoc"->treeRepOfXmlDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhaskellRepOfXmlDoc"->haskellRepOfXmlDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AaddHeadlineToXmlDoc"->addHeadlineToXmlDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AaddXmlPiToDoc"->addXmlPiToDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcanonicalizeTree"-></A-><B->canonicalizeTree</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#canonicalizeTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Applies some <A HREF="Canonical XML.html"->Canonical XML</A-> rules to the nodes of a tree.-</P-><P->The rule differ slightly for canonical XML and XPath in handling of comments-</P-><P->Note: This is not the whole canonicalization as it is specified by the W3C- Recommendation. Adding attribute defaults or sorting attributes in lexicographic- order is done by the <TT->transform</TT-> function of module <TT->Text.XML.HXT.Validator.Validation</TT->.- Replacing entities or line feed normalization is done by the parser.-</P-><P->Not implemented yet:-</P-><UL-><LI-> Whitespace within start and end tags is normalized-</LI-><LI-> Special characters in attribute values and character content are replaced by character references-</LI-></UL-><P->see <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AcanonicalizeAllNodes"->canonicalizeAllNodes</A-></TT-> and <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AcanonicalizeForXPath"->canonicalizeForXPath</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcanonicalizeAllNodes"-></A-><B->canonicalizeAllNodes</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#canonicalizeAllNodes"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->canonicalize tree and remove comments and <?xml ... ?> declarations-</P-><P->see <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AcanonicalizeTree"->canonicalizeTree</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcanonicalizeForXPath"-></A-><B->canonicalizeForXPath</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#canonicalizeForXPath"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Canonicalize a tree for XPath- Comment nodes are not removed-</P-><P->see <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AcanonicalizeTree"->canonicalizeTree</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcollapseXText"-></A-><B->collapseXText</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#collapseXText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Collects sequences of child XText nodes into one XText node.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcollapseAllXText"-></A-><B->collapseAllXText</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#collapseAllXText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Applies collapseXText recursively.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AcollapseXText"->collapseXText</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AindentDoc"-></A-><B->indentDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#indentDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for indenting a document tree for pretty printing.-</P-><P->the tree is traversed for inserting whitespace for tag indentation.-</P-><P->whitespace is only inserted or changed at places, where it isn't significant,- is's not inserted between tags and text containing non whitespace chars.-</P-><P->whitespace is only inserted or changed at places, where it's not significant.- preserving whitespace may be controlled in a document tree- by a tag attribute <TT->xml:space</TT->-</P-><P->allowed values for this attribute are <TT->default | preserve</TT->.-</P-><P->input is a complete document tree.- result the semantically equivalent formatted tree.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AremoveDocWhiteSpace"->removeDocWhiteSpace</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AremoveWhiteSpace"-></A-><B->removeWhiteSpace</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#removeWhiteSpace"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->simple filter for removing whitespace.-</P-><P->no check on sigificant whitespace is done.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AremoveAllWhiteSpace"->removeAllWhiteSpace</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AremoveDocWhiteSpace"->removeDocWhiteSpace</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AremoveAllWhiteSpace"-></A-><B->removeAllWhiteSpace</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#removeAllWhiteSpace"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->simple recursive filter for removing all whitespace.-</P-><P->removes all text nodes in a tree that consist only of whitespace.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AremoveWhiteSpace"->removeWhiteSpace</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AremoveDocWhiteSpace"->removeDocWhiteSpace</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AremoveDocWhiteSpace"-></A-><B->removeDocWhiteSpace</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#removeDocWhiteSpace"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for removing all not significant whitespace.-</P-><P->the tree traversed for removing whitespace between tags,- that was inserted for indentation and readability.- whitespace is only removed at places, where it's not significat- preserving whitespace may be controlled in a document tree- by a tag attribute <TT->xml:space</TT->-</P-><P->allowed values for this attribute are <TT->default | preserve</TT->-</P-><P->input is root node of the document to be cleaned up- output the semantically equivalent simplified tree-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AindentDoc"->indentDoc</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AremoveAllWhiteSpace"->removeAllWhiteSpace</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AremoveComment"-></A-><B->removeComment</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#removeComment"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->remove Comments-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AremoveAllComment"-></A-><B->removeAllComment</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#removeAllComment"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->remove all Comments recursively-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtransfCdata"-></A-><B->transfCdata</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#transfCdata"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->converts CDATA section in normal text sections-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtransfAllCdata"-></A-><B->transfAllCdata</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#transfAllCdata"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->converts CDATA sections in whole document tree-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtransfCdataEscaped"-></A-><B->transfCdataEscaped</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#transfCdataEscaped"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->converts CDATA section in normal text nodes-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtransfAllCdataEscaped"-></A-><B->transfAllCdataEscaped</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#transfAllCdataEscaped"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->converts CDATA sections in whole document tree into normal text nodes-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtransfCharRef"-></A-><B->transfCharRef</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#transfCharRef"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->converts character references to normal text-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtransfAllCharRef"-></A-><B->transfAllCharRef</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#transfAllCharRef"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->recursively converts all character references to normal text-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AescapeXmlDoc"-></A-><B->escapeXmlDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#escapeXmlDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->convert the special XML chars ", <, >, & and ' in a document to char references,- attribute values are converted with <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AescapeXmlAttrValue"->escapeXmlAttrValue</A-></TT->-</P-><P->see also: <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AescapeXmlText"->escapeXmlText</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AescapeXmlAttrValue"->escapeXmlAttrValue</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AescapeXmlText"-></A-><B->escapeXmlText</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#escapeXmlText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->convert the special XML chars in a text or comment node- into character references-</P-><P->see also <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AescapeXmlDoc"->escapeXmlDoc</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AescapeXmlAttrValue"-></A-><B->escapeXmlAttrValue</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#escapeXmlAttrValue"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->convert the special XML chars in an attribute value into- charachter references. Not only the XML specials but also \n, \r and \t are converted-</P-><P->see also: <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AescapeXmlDoc"->escapeXmlDoc</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AescapeXmlText"->escapeXmlText</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AunparseXmlDoc"-></A-><B->unparseXmlDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#unparseXmlDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->convert a document tree into an output string representation- with respect to the output encoding.-</P-><P->The children of the document root are stubstituted by- a single text node for the text representation of the document.-</P-><P->Encoding of the document is performed with respect- to the <TT->output-encoding</TT-> attribute in the root node, or if not present,- of the <TT->encoding</TT-> attribute for the original input encoding.- If the encoding is not specified or not supported, UTF-8 is taken.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnumberLinesInXmlDoc"-></A-><B->numberLinesInXmlDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#numberLinesInXmlDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->convert a document into a text and add line numbers to the text representation.-</P-><P->Result is a root node with a single text node as child.- Useful for debugging and trace output.- see also : <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AhaskellRepOfXmlDoc"->haskellRepOfXmlDoc</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AtreeRepOfXmlDoc"->treeRepOfXmlDoc</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnumberLines"-></A-><B->numberLines</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#numberLines"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtreeRepOfXmlDoc"-></A-><B->treeRepOfXmlDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#treeRepOfXmlDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->convert a document into a text representation in tree form.-</P-><P->Useful for debugging and trace output.- see also : <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AhaskellRepOfXmlDoc"->haskellRepOfXmlDoc</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AnumberLinesInXmlDoc"->numberLinesInXmlDoc</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhaskellRepOfXmlDoc"-></A-><B->haskellRepOfXmlDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#haskellRepOfXmlDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->convert a document into a Haskell representation (with show).-</P-><P->Useful for debugging and trace output.- see also : <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AtreeRepOfXmlDoc"->treeRepOfXmlDoc</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AnumberLinesInXmlDoc"->numberLinesInXmlDoc</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AaddHeadlineToXmlDoc"-></A-><B->addHeadlineToXmlDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#addHeadlineToXmlDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AaddXmlPiToDoc"-></A-><B->addXmlPiToDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-EditFilters.html#addXmlPiToDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-DOM-Namespace.html
@@ -1,174 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.DOM.Namespace</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM-Namespace.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.DOM.Namespace</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->main namespace filter for propagation, checking, tracing and error handling-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3ApropagateAndValidateNamespaces"->propagateAndValidateNamespaces</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-DOM-NamespaceFilter.html"->Text.XML.HXT.DOM.NamespaceFilter</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3ApropagateAndValidateNamespaces"-></A-><B->propagateAndValidateNamespaces</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-Namespace.html#propagateAndValidateNamespaces"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->propagate all namespace declarations, check namespace constraints and issue errors.- If no error was found, result is the unchanged input tree, else the root node "/" with an empty document is returned.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaces"->propagateNamespaces</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3AvalidateNamespaces"->validateNamespaces</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-DOM-NamespaceFilter.html"->Text.XML.HXT.DOM.NamespaceFilter</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-DOM-NamespaceFilter.html
@@ -1,434 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.DOM.NamespaceFilter</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.DOM.NamespaceFilter</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->Namespace filter-</P-><P->Namespaces are processed with two main filter, <TT-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaces"->propagateNamespaces</A-></TT->- and <TT-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3AvalidateNamespaces"->validateNamespaces</A-></TT->.-</P-><P-><TT-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaces"->propagateNamespaces</A-></TT-> takes a XML tree and- attaches extra namespace info at every tag name and attribute name.- So after processing a tree with <TT-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaces"->propagateNamespaces</A-></TT->, the access functions- <A HREF="namespaceOf.html"->namespaceOf</A-> and <A HREF="universalNameOf.html"->universalNameOf</A-> deliver the associated namespace (or "")- for tag names and attribute names.-</P-><P-><TT-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3AvalidateNamespaces"->validateNamespaces</A-></TT-> checks whether names are wellformed related to the XML namespace definition.- whether a legal namespace is declared for all prefixes, and whether attribute names are unique- related to universal names.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ANamespaceTable"->NamespaceTable</A-> = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv"->NsEnv</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3ApropagateNamespaces"->propagateNamespaces</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3ApropagateNamespaceEnv"->propagateNamespaceEnv</A-> :: <A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#t%3ANamespaceTable"->NamespaceTable</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AvalidateNamespaces"->validateNamespaces</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Avalidate1Namespaces"->validate1Namespaces</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisNamespaceDecl"->isNamespaceDecl</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ANamespaceTable"-></A-><B->NamespaceTable</B-> = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv"->NsEnv</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#NamespaceTable"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Type for the namespace association list, used when propagating namespaces by- modifying the <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TT-> values in a tree-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3ApropagateNamespaces"-></A-><B->propagateNamespaces</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#propagateNamespaces"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->propagate all namespace declarations "xmlns:ns=..." to all- tag and attribute nodes of a document.-</P-><P->This filter does not check for illegal use of namespaces.- The real work is done by <TT-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaceEnv"->propagateNamespaceEnv</A-></TT->.-</P-><P->The filter may be applied repeatedly if neccessary.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3ApropagateNamespaceEnv"-></A-><B->propagateNamespaceEnv</B-> :: <A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#t%3ANamespaceTable"->NamespaceTable</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#propagateNamespaceEnv"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->attaches the namespace info given by the namespace table- to a tag node and its attributes and children.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AvalidateNamespaces"-></A-><B->validateNamespaces</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#validateNamespaces"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->validate the namespace constraints in a whole tree.- result is the list of errors concerning namespaces.- Work is done by applying <TT-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3Avalidate1Namespaces"->validate1Namespaces</A-></TT-> to all nodes.- Predicates <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedQName"->isWellformedQName</A-></TT->, <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedQualifiedName"->isWellformedQualifiedName</A-></TT->, <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#v%3AisDeclaredNamespace"->isDeclaredNamespace</A-></TT->- and <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedNSDecl"->isWellformedNSDecl</A-></TT-> are applied to the appropriate tags and attributes.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Avalidate1Namespaces"-></A-><B->validate1Namespaces</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#validate1Namespaces"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->a single node for namespace constrains.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisNamespaceDecl"-></A-><B->isNamespaceDecl</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-NamespaceFilter.html#isNamespaceDecl"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-DOM-XmlState.html
@@ -1,3126 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.DOM.XmlState</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.DOM.XmlState</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->This module provides a Monad for an internal state and IO commands.- The state consists of two parts, the user state and the system state- user state ist a type parameter, the system state is a list- name-value pair. If the user state is not needed, the type parameter- can be instantiated with <TT->()</TT->.-</P-><P->Furthermore there are types for Xml filter working on this monad- and functions for manipulating the state components- and for lifting i/o commands and XmlFilter to monad filters.-</P-><P->Error reporting functions are also located in this module.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ASysState"->SysState</A-> = <A HREF="#v%3ASysState"->SysState</A-> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="recfield"-><A HREF="#v%3AsysStateAttrs"->sysStateAttrs</A-> :: !<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"->SysStateAttrs</A-></TD-></TR-><TR-><TD CLASS="recfield"-><A HREF="#v%3AsysStateErrorHandler"->sysStateErrorHandler</A-> :: !(<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> ())</TD-></TR-></TABLE->}</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ASysStateAttrs"->SysStateAttrs</A-> = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-AssocList.html#t%3AAssocList"->AssocList</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3AXmlState"->XmlState</A-> state = <A HREF="#v%3AXmlState"->XmlState</A-> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="recfield"-><A HREF="#v%3AsysState"->sysState</A-> :: !<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-></TR-><TR-><TD CLASS="recfield"-><A HREF="#v%3AuserState"->userState</A-> :: !state</TD-></TR-></TABLE->}</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AXState"->XState</A-> state res = <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"->XmlState</A-> state) res</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AXmlStateFilter"->XmlStateFilter</A-> state = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AchangeState"->changeState</A-> :: (state -> state) -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetState"->setState</A-> :: state -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetState"->getState</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AchangeSysState"->changeSysState</A-> :: (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A->) -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetSysState"->setSysState</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetSysState"->getSysState</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AinitialSysState"->initialSysState</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AchangeSysStateAttrs"->changeSysStateAttrs</A-> :: (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"->SysStateAttrs</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"->SysStateAttrs</A->) -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetSysErrorHandler"->setSysErrorHandler</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> () -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetSysErrorHandler"->getSysErrorHandler</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> ())</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetSysParamTree"->setSysParamTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetSysParam"->setSysParam</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetSysParamInt"->setSysParamInt</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetSystemParams"->setSystemParams</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetSysParamTree"->getSysParamTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetSysParam"->getSysParam</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetSysParamWithDefault"->getSysParamWithDefault</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetSysParamInt"->getSysParamInt</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Arun0"->run0</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"->XmlState</A-> state -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state res -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> (res, <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"->XmlState</A-> state)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Arun"->run</A-> :: state -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state res -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> res</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Arun%27"->run'</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> () res -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> res</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Achain%27"->chain'</A-> :: state1 -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state1 res -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state0 (res, state1)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Achain"->chain</A-> :: state1 -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state1 res -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state0 res</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AliftF"->liftF</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aio"->io</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetTraceLevel"->setTraceLevel</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetTraceLevel"->getTraceLevel</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtraceCmd"->traceCmd</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Atrace"->trace</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtraceState"->traceState</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> (state -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->) -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AclearStatus"->clearStatus</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AissueError"->issueError</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AerrorMsgHandler"->errorMsgHandler</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetErrorMsgLevel"->setErrorMsgLevel</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AerrorMsgToStderr"->errorMsgToStderr</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AerrorMsgLogging"->errorMsgLogging</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AerrorMsgLoggingAndToStderr"->errorMsgLoggingAndToStderr</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetErrorMsg"->getErrorMsg</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AerrClass"->errClass</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AissueWarn"->issueWarn</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AissueErr"->issueErr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AissueFatal"->issueFatal</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AaddFatal"->addFatal</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcheckStatus"->checkStatus</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetStatus"->setStatus</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AstatusOk"->statusOk</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcheckResult"->checkResult</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessAttrM"->processAttrM</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ASysState"-></A-><B->SysState</B-> </TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#SysState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The internal system state consists of a list of name-value pairs- of type <TT->(String, XmlTrees)</TT->, so arbitrary lists of trees can be stored.- For options, often only strings are used as values, so a set of access- functions with string values is available- The error handling method can be controlled by an error handler filter,- the default filter issues the errors on stderr-</TD-></TR-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ASysState"-></A-><B->SysState</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="body" COLSPAN="2"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AsysStateAttrs"-></A-><B->sysStateAttrs</B-> :: !<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"->SysStateAttrs</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AsysStateErrorHandler"-></A-><B->sysStateErrorHandler</B-> :: !(<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> ())</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ASysStateAttrs"-></A-><B->SysStateAttrs</B-> = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-AssocList.html#t%3AAssocList"->AssocList</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#SysStateAttrs"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AXmlState"-></A-><B->XmlState</B-> state </TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#XmlState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->The State has a system and a user part- the user state is a type parameter-</TD-></TR-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AXmlState"-></A-><B->XmlState</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="body" COLSPAN="2"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3AsysState"-></A-><B->sysState</B-> :: !<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AuserState"-></A-><B->userState</B-> :: !state</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AXState"-></A-><B->XState</B-> state res = <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->StateIO</A-> (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"->XmlState</A-> state) res</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#XState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->The monad type for commands. It is an instance of <A HREF="StateIO.html"->StateIO</A-> from the- general module <A HREF="Control-Monad-MonadStateIO.html"->Control.Monad.MonadStateIO</A->.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AXmlStateFilter"-></A-><B->XmlStateFilter</B-> state = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#XmlStateFilter"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->The <A HREF="XmlFilter.html"->XmlFilter</A-> type for filters working on a state-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AchangeState"-></A-><B->changeState</B-> :: (state -> state) -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#changeState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->change the user state-</P-><UL-><LI-> 1.parameter fct : the user state change function-</LI-><LI-> returns : the new state-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetState"-></A-><B->setState</B-> :: state -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->set the user state.-</P-><UL-><LI-> 1.parameter s : the new state-</LI-><LI-> returns : the new state-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetState"-></A-><B->getState</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->read the user state-</P-><UL-><LI-> returns : the current state-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AchangeSysState"-></A-><B->changeSysState</B-> :: (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A->) -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#changeSysState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->change the system part of the state.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AchangeState"->changeState</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetSysState"-></A-><B->setSysState</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSysState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->set the system part of the state.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetState"->setState</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetSysState"-></A-><B->getSysState</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->read the system part of the state.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetState"->getState</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AinitialSysState"-></A-><B->initialSysState</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#initialSysState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->the initial system state-</P-><P->an empty list of attribute value pairs-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AchangeSysStateAttrs"-></A-><B->changeSysStateAttrs</B-> :: (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"->SysStateAttrs</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"->SysStateAttrs</A->) -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->SysState</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#changeSysStateAttrs"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->change the attributes in the system state-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetSysErrorHandler"-></A-><B->setSysErrorHandler</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> () -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSysErrorHandler"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->set the error message handler-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetSysErrorHandler"-></A-><B->getSysErrorHandler</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state (<A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> ())</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysErrorHandler"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->get the error handler-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetSysParamTree"-></A-><B->setSysParamTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSysParamTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->set or change a single system parameter.-</P-><UL-><LI-> 1.parameter name : the name of the parameter-</LI-><LI-> 2.parameter value : the list of associated trees-</LI-><LI-> returns : nothing-</LI-></UL-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysParam"->setSysParam</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysParamInt"->setSysParamInt</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetSysParam"-></A-><B->setSysParam</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSysParam"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->set or change a single system parameter of type string.-</P-><UL-><LI-> 1.parameter name : the name of the parameter-</LI-><LI-> 2.parameter value : the (new) string value-</LI-><LI-> returns : nothing-</LI-></UL-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysParamTree"->setSysParamTree</A-></TT->, setSysParamInt-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetSysParamInt"-></A-><B->setSysParamInt</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSysParamInt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->set or change a single integer type system parameter-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysParam"->setSysParam</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetSystemParams"-></A-><B->setSystemParams</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setSystemParams"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->add (or change) all attributes of the document root to the system state- - returns : this-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetSysParamTree"-></A-><B->getSysParamTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysParamTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->read a system parameter-</P-><UL-><LI-> 1.parameter name : the name of the parameter-</LI-><LI-> returns : the list of tres associated with the key, or the empty list for unknown parameters-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetSysParam"-></A-><B->getSysParam</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysParam"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->read a system string parameter-</P-><UL-><LI-> 1.parameter name : the name of the parameter-</LI-><LI-> returns : the value, or the empty string for unknown parameters-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetSysParamWithDefault"-></A-><B->getSysParamWithDefault</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysParamWithDefault"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->read a system parameter or return a default value-</P-><UL-><LI-> 1.parameter name : the name of the parameter-</LI-><LI-> 2.parameter default : the default value-</LI-><LI-> returns : the value if found, else the default-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetSysParamInt"-></A-><B->getSysParamInt</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getSysParamInt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->read an integer system parameter-</P-><UL-><LI-> 1.parameter name : -</LI-><LI-> 2.parameter default : -</LI-></UL-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetSysParamWithDefault"->getSysParamWithDefault</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Arun0"-></A-><B->run0</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"->XmlState</A-> state -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state res -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> (res, <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"->XmlState</A-> state)</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#run0"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->exec a XState command with initial state.-</P-><UL-><LI-> 1.parameter initalState : the inital user state-</LI-><LI-> 2.parameter cmd : the command-</LI-><LI-> returns : the i/o command with result and user state-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Arun"-></A-><B->run</B-> :: state -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state res -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> res</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#run"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->exec a XState command with initial user state.- ignore final user state.- like run0, but ignore the resulting user state-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Arun%27"-></A-><B->run'</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> () res -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> res</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#run%27"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->exec a XState command in th IO monad.- like run with the empty state ().-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Achain%27"-></A-><B->chain'</B-> :: state1 -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state1 res -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state0 (res, state1)</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#chain%27"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->run a command in a new user state.- chain the system state part,- init new system state with the current one, run the command and- update the old system state with the resulting new system state-</P-><UL-><LI-> 1.parameter initialUserState : the initial user state-</LI-><LI-> 2.parameter cmd : the command-</LI-><LI-> returns : the result of executing cmd and the final state-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Achain"-></A-><B->chain</B-> :: state1 -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state1 res -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state0 res</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#chain"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->like chain' but forget the final user state-</P-><UL-><LI-> 1.parameter initialUserState : the initial user state-</LI-><LI-> 2.parameter cmd : the command-</LI-><LI-> returns : only the result of executing cmd-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AliftF"-></A-><B->liftF</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#liftF"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->lift a XmlFilter to a XmlStateFilter filter- issue all error nodes as error messages- and remove the error nodes from the result-</P-><UL-><LI-> 1.parameter f : the filter-</LI-><LI-> returns : the filter running in the state monad-</LI-></UL-><P->all errors are filtered from the result and issued on stderr-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aio"-></A-><B->io</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#io"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->lift an I/O command-</P-><UL-><LI-> 1.parameter cmd : the i/o command-</LI-><LI-> returns : the i/o command lifted to the XML state monad-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetTraceLevel"-></A-><B->setTraceLevel</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setTraceLevel"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->set the trace level.-</P-><P->convention:-</P-><P->0: no trace output (default)-</P-><P->1: trace important computation steps, e.g. accessing a document-</P-><P->2: trace small computation steps-</P-><P->3: output an intermediate result XmlTree in XML source format-</P-><P->4: output an intermediate result XmlTree in tree representation-</P-><UL-><LI-> 1.parameter level : the trace level-</LI-><LI-> returns : nothing-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetTraceLevel"-></A-><B->getTraceLevel</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getTraceLevel"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->get the current trace level.-</P-><UL-><LI-> returns : the current trace level-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtraceCmd"-></A-><B->traceCmd</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#traceCmd"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->trace output for arbitray commands.-</P-><UL-><LI-> 1.parameter level : the trace level,- for which the command will be execuded- if level <= current trace level-</LI-><LI-> 2.parameter cmd : the command to be executed-</LI-><LI-> returns : nothing-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Atrace"-></A-><B->trace</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#trace"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->trace output function for simple text.-</P-><UL-><LI-> 1.parameter level : like in traceCmd-</LI-><LI-> 2.parameter str : the test-</LI-><LI-> returns : nothing-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtraceState"-></A-><B->traceState</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> (state -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->) -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#traceState"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->trace output of the user part of the program state.-</P-><UL-><LI-> 1.parameter level : like in traceCmd-</LI-><LI-> 2.parameter showFct : the toString function-</LI-><LI-> returns : nothing-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AclearStatus"-></A-><B->clearStatus</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#clearStatus"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->filter to reset the state attribute <TT->a_status</TT->- - returns : this-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AissueError"-></A-><B->issueError</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#issueError"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->report an error message.-</P-><UL-><LI-> returns : if the input tree n represents an error, <TT->res = []</TT->- and the error is processed by the errror handler filter (default: error is issued on stderr)- else <TT->res = [n]</TT->-</LI-></UL-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueErr"->issueErr</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AerrorMsgHandler"-></A-><B->errorMsgHandler</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#errorMsgHandler"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetErrorMsgLevel"-></A-><B->setErrorMsgLevel</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setErrorMsgLevel"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->set the error level in system state-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AerrorMsgToStderr"-></A-><B->errorMsgToStderr</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#errorMsgToStderr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->default error handler for writing errors to stderr-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AerrorMsgLogging"-></A-><B->errorMsgLogging</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#errorMsgLogging"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->error message handler for collecting all error messages- all messages are stored under attribute <TT->a_error_log</TT->- they can be read with <TT->getSysParamTree a_error_log</TT-> or by- applying the filter <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetErrorMsg"->getErrorMsg</A-></TT-> to the root node-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AerrorMsgLoggingAndToStderr"-></A-><B->errorMsgLoggingAndToStderr</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#errorMsgLoggingAndToStderr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetErrorMsg"-></A-><B->getErrorMsg</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#getErrorMsg"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->the filter for reading all collected error mesages-</P-><P->result is the list of error messages, the input tree is ignored-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AerrClass"-></A-><B->errClass</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#errClass"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->error level translation- <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_warn"->c_warn</A-></TT-> (1) : warning,- <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_err"->c_err</A-></TT-> (2): error (e.g. parse error, validation error, ...),- <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_fatal"->c_fatal</A-></TT-> (3) : fatal error (document access error, internal error, ...)-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AissueWarn"-></A-><B->issueWarn</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#issueWarn"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->short cut for issuing a warning-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueError"->issueError</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueErr"->issueErr</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AissueErr"-></A-><B->issueErr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#issueErr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->short cut for issuing an error-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueError"->issueError</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AissueFatal"-></A-><B->issueFatal</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#issueFatal"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->short cut for issuing a fatal error-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueError"->issueError</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueErr"->issueErr</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AaddFatal"-></A-><B->addFatal</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#addFatal"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcheckStatus"-></A-><B->checkStatus</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#checkStatus"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->checks the value of the attribute <TT->a_status</TT-> in a document root.- if it contains a value greater or equal to <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_err"->c_err</A-></TT->, an error with error message- stored in attribute <TT->a_module</TT-> is issued and the filter acts as the <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AnoneM"->noneM</A-></TT-> filter- else its the <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AthisM"->thisM</A-></TT-> filter-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetStatus"-></A-><B->setStatus</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#setStatus"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->add the error level and the module where the error occured- to the attributes of a document root node and remove the children when level is greater or equal to <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_err"->c_err</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AstatusOk"-></A-><B->statusOk</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#statusOk"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->check whether tree is a document root and the status attribute has a value less than <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_err"->c_err</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcheckResult"-></A-><B->checkResult</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#checkResult"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->check whether the error level attribute in the system state- is set to error, in this case the children of the document root are- removed and error info is added as attributes with <TT-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetStatus"->setStatus</A-></TT->- else nothing is changed-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessAttrM"-></A-><B->processAttrM</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlState.html#processAttrM"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->monadic filter for processing the attribute list of a tag.- for other trees this filter acts like <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AnoneM"->noneM</A-></TT->-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AprocessAttr"->processAttr</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AprocessAttrl"->processAttrl</A-></TT->-</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 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-DOM-XmlTree.html
@@ -1,120 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.DOM.XmlTree</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTree.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.DOM.XmlTree</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->This helper module exports elements from the basic libraries:- XmlTreeTypes, XmlKeywords, XNodeFunctions, XmlTreeFunctions and XmlTreeFilter-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html"->Text.XML.HXT.DOM.XmlTreeTypes</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html"->Text.XML.HXT.DOM.XmlTreeFunctions</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html"->Text.XML.HXT.DOM.XmlTreeFilter</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 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-DOM-XmlTreeFilter.html
@@ -1,5758 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.DOM.XmlTreeFilter</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.DOM.XmlTreeFilter</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->basic XmlTree filter-</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%3AisRoot"->isRoot</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisTag"->isTag</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisNsTag"->isNsTag</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhasLocalPart"->hasLocalPart</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhasPrefix"->hasPrefix</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhasNamespace"->hasNamespace</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisOfTag"->isOfTag</A-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhasAttr"->hasAttr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhasNsAttr"->hasNsAttr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhasValue"->hasValue</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisPi"->isPi</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXmlPi"->isXmlPi</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisOfPi"->isOfPi</A-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXCdata"->isXCdata</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXCharRef"->isXCharRef</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXCmt"->isXCmt</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXDTD"->isXDTD</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXEntityRef"->isXEntityRef</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXError"->isXError</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXPi"->isXPi</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXTag"->isXTag</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXAttr"->isXAttr</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisAttr"->isAttr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisNsAttr"->isNsAttr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisOfAttr"->isOfAttr</A-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AAttrName"->AttrName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXText"->isXText</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisText"->isText</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisOfText"->isOfText</A-> :: (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisWhiteSpace"->isWhiteSpace</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisDoctype"->isDoctype</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisAttlist"->isAttlist</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisElement"->isElement</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisEntity"->isEntity</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisPeRef"->isPeRef</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisDTDName"->isDTDName</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisCondSect"->isCondSect</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisParameterEntity"->isParameterEntity</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisNotation"->isNotation</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisDefaultAttrKind"->isDefaultAttrKind</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisEnumAttrType"->isEnumAttrType</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisFixedAttrKind"->isFixedAttrKind</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisIdAttrType"->isIdAttrType</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisIdRefAttrType"->isIdRefAttrType</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisNotationAttrType"->isNotationAttrType</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisRequiredAttrKind"->isRequiredAttrKind</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisAttlistParameterEntity"->isAttlistParameterEntity</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisEmptyElement"->isEmptyElement</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisMixedContentElement"->isMixedContentElement</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisElemWithContent"->isElemWithContent</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisAttlistOfElement"->isAttlistOfElement</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisElemContentParamEntity"->isElemContentParamEntity</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisUnparsedEntity"->isUnparsedEntity</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisExternalParameterEntity"->isExternalParameterEntity</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisInternalParameterEntity"->isInternalParameterEntity</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisWarning"->isWarning</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisError"->isError</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisFatalError"->isFatalError</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXTag"->mkXTag</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkQTag"->mkQTag</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXNsTag"->mkXNsTag</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXAttr"->mkXAttr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkQAttr"->mkQAttr</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXNsAttr"->mkXNsAttr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXText"->mkXText</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXCharRef"->mkXCharRef</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXEntityRef"->mkXEntityRef</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXCmt"->mkXCmt</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXDTD"->mkXDTD</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3ADTDElem"->DTDElem</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXCdata"->mkXCdata</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXPi"->mkXPi</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXError"->mkXError</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetName"->getName</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetAttrl"->getAttrl</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetValue"->getValue</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetNsValue"->getNsValue</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetDTDValue"->getDTDValue</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetXCmt"->getXCmt</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetXCdata"->getXCdata</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AreplaceQName"->replaceQName</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmodifyText"->modifyText</A-> :: (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmodifyQName"->modifyQName</A-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessAttrl"->processAttrl</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlSFilter"->XmlSFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessAttr"->processAttr</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AreplaceAttrl"->replaceAttrl</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Adel1Attr"->del1Attr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aadd1Attr"->add1Attr</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AaddAttrl"->addAttrl</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AaddAttr"->addAttr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AaddAttrInt"->addAttrInt</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmodifyAttr"->modifyAttr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AaddDTDAttr"->addDTDAttr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3A%2B%3D"->(+=)</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3A%2B%2B%3D"->(++=)</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AvalueOf"->valueOf</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AintValueOf"->intValueOf</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Atag"->tag</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Astag"->stag</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aatag"->atag</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aetag"->etag</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aqetag"->qetag</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aqtag"->qtag</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3ArootTag"->rootTag</A-> :: [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aattr"->attr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aqattr"->qattr</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Asattr"->sattr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Atxt"->txt</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Acmt"->cmt</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aspi"->spi</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Acdata"->cdata</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Adtd"->dtd</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3ADTDElem"->DTDElem</A-> -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Awarn"->warn</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Aerr"->err</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Afatal"->fatal</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhasOption"->hasOption</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisRoot"-></A-><B->isRoot</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isRoot"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a document root node.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisTag"-></A-><B->isTag</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isTag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->test whether the root of a tree contains a tag node.-</P-><P->see also: <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisNsTag"->isNsTag</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisNsTag"-></A-><B->isNsTag</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isNsTag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->namespace aware test whether the root of a tree contains a tag node. Parameters are the local part and namespace.- Only usable after namespace propagation.-</P-><P->see also: <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisTag"->isTag</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhasLocalPart"-></A-><B->hasLocalPart</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#hasLocalPart"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree has a given local name- see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasNamespace"->hasNamespace</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasPrefix"->hasPrefix</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisTag"->isTag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisAttr"->isAttr</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhasPrefix"-></A-><B->hasPrefix</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#hasPrefix"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree has a given prefix name- see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasNamespace"->hasNamespace</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasLocalPart"->hasLocalPart</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisTag"->isTag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisAttr"->isAttr</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhasNamespace"-></A-><B->hasNamespace</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#hasNamespace"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree belongs to a given namespace- see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisTag"->isTag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisAttr"->isAttr</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasLocalPart"->hasLocalPart</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasPrefix"->hasPrefix</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisOfTag"-></A-><B->isOfTag</B-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isOfTag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a tag node with a special name.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhasAttr"-></A-><B->hasAttr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#hasAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->test whether the node of a tree is a XTag node or a XPi node with an attibute of a specific name-</P-><P->see also: <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisAttr"->isAttr</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasNsAttr"->hasNsAttr</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhasNsAttr"-></A-><B->hasNsAttr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#hasNsAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->test whether the tree is a XTag node with an attibute of a specific local name and namespace uri-</P-><P->see also: <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasAttr"->hasAttr</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisNsAttr"->isNsAttr</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhasValue"-></A-><B->hasValue</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#hasValue"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->test whether the given node is a XTag node or a XPI node with an attribute with a value with a specific property.- In case of a match, the attribute value represented by a text node is returned as single element list,- else the empty list is the result.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetValue"->getValue</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisPi"-></A-><B->isPi</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isPi"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the tree is a processing instruction with a given name.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXmlPi"-></A-><B->isXmlPi</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isXmlPi"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the tree is a <?xml ... ?> declaration-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisOfPi"-></A-><B->isOfPi</B-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isOfPi"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a processing instruction of a special name.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXCdata"-></A-><B->isXCdata</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isXCdata"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a CDATA node.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXCharRef"-></A-><B->isXCharRef</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isXCharRef"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a character reference node.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXCmt"-></A-><B->isXCmt</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isXCmt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a comment node.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXDTD"-></A-><B->isXDTD</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isXDTD"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a DTD part.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXEntityRef"-></A-><B->isXEntityRef</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isXEntityRef"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains an entity reference node.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXError"-></A-><B->isXError</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isXError"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains an error node.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXPi"-></A-><B->isXPi</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isXPi"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a processing instruction node.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXTag"-></A-><B->isXTag</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isXTag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a tag node.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXAttr"-></A-><B->isXAttr</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isXAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains an attribute node.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisAttr"-></A-><B->isAttr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree is an attribute node for a given attribute name-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisNsAttr"-></A-><B->isNsAttr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isNsAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->namespace aware test whether the tree contains an attribute node. Parameters are the local part of the atribute name and the namespace.- Only usable after namespace propagation.-</P-><P->see also: <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisNsTag"->isNsTag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisAttr"->isAttr</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasNsAttr"->hasNsAttr</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisOfAttr"-></A-><B->isOfAttr</B-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AAttrName"->AttrName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isOfAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->general test for an attribute name-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXText"-></A-><B->isXText</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isXText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a text node.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisText"-></A-><B->isText</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a special text.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisOfText"-></A-><B->isOfText</B-> :: (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isOfText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a text node with a special property-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisWhiteSpace"-></A-><B->isWhiteSpace</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isWhiteSpace"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a text node only with whitespace.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisDoctype"-></A-><B->isDoctype</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isDoctype"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a DOCTYPE DTD part.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisAttlist"-></A-><B->isAttlist</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isAttlist"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains an ATTLIST DTD part.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisElement"-></A-><B->isElement</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isElement"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains an ELEMENT DTD part.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisEntity"-></A-><B->isEntity</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isEntity"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains an ENTITY DTD part.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisPeRef"-></A-><B->isPeRef</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isPeRef"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a parameter ENTITY reference.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisDTDName"-></A-><B->isDTDName</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isDTDName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a DTD name part.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisCondSect"-></A-><B->isCondSect</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isCondSect"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a conditional section DTD part.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisParameterEntity"-></A-><B->isParameterEntity</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isParameterEntity"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a parameter entity declaration.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisNotation"-></A-><B->isNotation</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isNotation"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains a NOTATION DTD part.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisDefaultAttrKind"-></A-><B->isDefaultAttrKind</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isDefaultAttrKind"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisEnumAttrType"-></A-><B->isEnumAttrType</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isEnumAttrType"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisFixedAttrKind"-></A-><B->isFixedAttrKind</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isFixedAttrKind"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisIdAttrType"-></A-><B->isIdAttrType</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isIdAttrType"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisIdRefAttrType"-></A-><B->isIdRefAttrType</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isIdRefAttrType"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisNotationAttrType"-></A-><B->isNotationAttrType</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isNotationAttrType"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisRequiredAttrKind"-></A-><B->isRequiredAttrKind</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isRequiredAttrKind"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisAttlistParameterEntity"-></A-><B->isAttlistParameterEntity</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isAttlistParameterEntity"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisEmptyElement"-></A-><B->isEmptyElement</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isEmptyElement"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisMixedContentElement"-></A-><B->isMixedContentElement</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isMixedContentElement"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisElemWithContent"-></A-><B->isElemWithContent</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isElemWithContent"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisAttlistOfElement"-></A-><B->isAttlistOfElement</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isAttlistOfElement"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisElemContentParamEntity"-></A-><B->isElemContentParamEntity</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isElemContentParamEntity"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisUnparsedEntity"-></A-><B->isUnparsedEntity</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isUnparsedEntity"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisExternalParameterEntity"-></A-><B->isExternalParameterEntity</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isExternalParameterEntity"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisInternalParameterEntity"-></A-><B->isInternalParameterEntity</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isInternalParameterEntity"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisWarning"-></A-><B->isWarning</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isWarning"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains an error node for a warning.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisError"-></A-><B->isError</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isError"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains an error node for an error.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisFatalError"-></A-><B->isFatalError</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#isFatalError"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test whether the root of a tree contains an error node for a fatal error.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXTag"-></A-><B->mkXTag</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXTag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->constructor filter for a tag node.- a new tree is constructed.- the attributes and the children are computed by applying the aproprate filter to the input tree-</P-><UL-><LI-> 1.parameter n : the tag name-</LI-><LI-> 2.parameter af : the filter for the attribute list-</LI-><LI-> 3.parameter cf : the filter for the children-</LI-><LI-> returns : the constructor filter-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkQTag"-></A-><B->mkQTag</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkQTag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Version with qualified names of <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXTag"->mkXTag</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXNsTag"-></A-><B->mkXNsTag</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXNsTag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->constructor filter for a tag node.- a new tree is constructed.- the attributes and the children are computed by applying the aproprate filter to the input tree-</P-><UL-><LI-> 1.parameter n : the tag name in form of prefix:localpart-</LI-><LI-> 2.parameter ns: the namespace uri-</LI-><LI-> 3.parameter af : the filter for the attribute list-</LI-><LI-> 4.parameter cf : the filter for the children-</LI-><LI-> returns : the constructor filter-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXAttr"-></A-><B->mkXAttr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->filter for attribute construction.- a new tree with attribute name and a value computed by a filter- is build.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkQAttr"-></A-><B->mkQAttr</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkQAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Qualified version <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXAttr"->mkXAttr</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXNsAttr"-></A-><B->mkXNsAttr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXNsAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->filter for attribute construction.- a new tree with attribute name and namespace and a value computed by a filter- is build.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXText"-></A-><B->mkXText</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->constructor filter for a text node.- a new tree is constructed.- the input tree is ignored.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXCharRef"-></A-><B->mkXCharRef</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXCharRef"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->constructor filter for a character reference node.- a new tree is constructed.- the input tree is ignored.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXEntityRef"-></A-><B->mkXEntityRef</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXEntityRef"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->constructor filter for an entity reference node.- a new tree is constructed.- the input tree is ignored.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXCmt"-></A-><B->mkXCmt</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXCmt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->constructor filter for a comment node.- a new tree is constructed.- the xml string representation of the filter result- forms the comment-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXDTD"-></A-><B->mkXDTD</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3ADTDElem"->DTDElem</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXDTD"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->constructor filter for a DTD part.- a new tree is constructed.- the input tree is ignored.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXCdata"-></A-><B->mkXCdata</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXCdata"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->constructor filter for a CDATA section node.- a new tree is constructed.- the input tree is ignored.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXPi"-></A-><B->mkXPi</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXPi"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->constructor filter for a processing instruction- a new tree is constructed from the text representation- of the input tree-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXError"-></A-><B->mkXError</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#mkXError"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->constructor filter for an error message node.- a new tree is constructed.- the input tree is ignored.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetName"-></A-><B->getName</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#getName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->filter for selecting the name of a tag node, an attribute node or a pi node.- Result of the filter is a single element list with a text node or the empty list-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetAttrl"-></A-><B->getAttrl</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#getAttrl"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->filter for selecting the attibute list-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetValue"-></A-><B->getValue</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#getValue"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for selecting the value of an attribute in a tag node.- Result of the filter is a single element list with a text node or the empty list-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasValue"->hasValue</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetNsValue"->getNsValue</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetNsValue"-></A-><B->getNsValue</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#getNsValue"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for selecting the value of an attribute with namespace in a tag node.- Result of the filter is a single element list with a text node or the empty list-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetValue"->getValue</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisNsAttr"->isNsAttr</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetDTDValue"-></A-><B->getDTDValue</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#getDTDValue"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->filter for selecting an attribute of a DTD node.- Result of the filter is a single element list with a text node or the empty list-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetXCmt"-></A-><B->getXCmt</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#getXCmt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->filter for selecting content of a comment.- Result of the filter is a single element list with a text node or the empty list-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetXCdata"-></A-><B->getXCdata</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#getXCdata"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->filter for selecting the CDATA content.- Result of the filter is a single element list with a text node or the empty list-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AreplaceQName"-></A-><B->replaceQName</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#replaceQName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->edit filter for changing the name of a tag node, an attribute or a pi.- result of the filter is a single element list with a tag node or the empty list-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmodifyText"-></A-><B->modifyText</B-> :: (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#modifyText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->edit filter for changing the text of a text node.- result of the filter is a single element list with a text node or the empty list-</P-><P->example for editing all text nodes of a tree with an edit function <TT->f</TT->:-</P-><PRE->processBottomUp (modifyText f `when` isXText)</PRE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmodifyQName"-></A-><B->modifyQName</B-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#modifyQName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->edit filter for changing the name of a tag node.- result of the filter is a single element list with a text node or the empty list-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessAttrl"-></A-><B->processAttrl</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlSFilter"->XmlSFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#processAttrl"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->process the attribute list of a tag node with a tree list filter.- for other trees this filter acts like <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Anone"->none</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessAttr"-></A-><B->processAttr</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#processAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->elementwise processing of the attributes of a tag.- for other trees this filter acts like <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Anone"->none</A-></TT->-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AprocessAttrl"->processAttrl</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AreplaceAttrl"-></A-><B->replaceAttrl</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#replaceAttrl"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->replace an attribute list- to be renamed when replaceAttrl is eliminated-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Adel1Attr"-></A-><B->del1Attr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#del1Attr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->delete an attribute from the attribute list of a tag tree-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aadd1Attr"-></A-><B->add1Attr</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#add1Attr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->add an attribute to the attribute list of a tag.- If the attribute already exists, it's substituted,-</P-><P->see also: <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Asattr"->sattr</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3A%2B%3D"->+=</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AaddAttrl"-></A-><B->addAttrl</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#addAttrl"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->adds an attribute list computed by a filter, uses <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aadd1Attr"->add1Attr</A-></TT->.-</P-><P->see also: <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3A%2B%3D"->+=</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AaddAttr"-></A-><B->addAttr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#addAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->add or change an attribute with a given string as value for a XTag or XPi tree,- uses <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aadd1Attr"->add1Attr</A-></TT->.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AaddAttrInt"-></A-><B->addAttrInt</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#addAttrInt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->add or change an attribute with an Int value.- uses <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AaddAttr"->addAttr</A-></TT->.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmodifyAttr"-></A-><B->modifyAttr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->) -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#modifyAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->edit filter for changing the value of an attribute in a tag node.- result of the filter is a single element list with the tag node or the empty list.-</P-><UL-><LI-> 1.parameter n : the name of the attribute-</LI-><LI-> 2.parameter f : the edit function for the attribute value-</LI-><LI-> returns : the edit filter-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AaddDTDAttr"-></A-><B->addDTDAttr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#addDTDAttr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->add or change an attribute of a DTD tree-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3A%2B%3D"-></A-><B->(+=)</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#%2B%3D"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->convenient function for tag node tree construction-</P-><P->infixl 7-</P-><P->filter combinator for tag tree constrcution- take a 1. filter for computing a tag node tree (or a whole list of tag node trees)- then add all trees computed by the 2. filter to the attribute list when they represent attributes- else append them to the list of children.-</P-><P->if the 1. filter computes a list of tag nodes, the results of the 2. filter are added to all trees-</P-><P->example: <TT-> etag "a" += sattr "href" "#42" += txt "the answer" </TT->- gives the tree <TT-> <a href="#42">the answer</a> </TT->-</P-><P->example: <TT-> ( etag "a" +++ etag "b" ) += sattr "x" "42" </TT->- gives the tree <TT-> <a x="42"/><b x="42"/> </TT->-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aetag"->etag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Atag"->tag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aadd1Attr"->add1Attr</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3AmodifyChildren"->modifyChildren</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3A%2B%2B%3D"->++=</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3A%2B%2B%3D"-></A-><B->(++=)</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#%2B%2B%3D"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->convenient filter function adding a whole list of trees, just for not writing to many ( ... ).-</P-><P->infixl 7-</P-><PRE-> f ++= gl == f += cat gl</PRE-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3A%2B%3D"->+=</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AvalueOf"-></A-><B->valueOf</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#valueOf"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->combination of <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetValue"->getValue</A-></TT-> and conversion into a String-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AintValueOf"-></A-><B->intValueOf</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#intValueOf"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->combination of <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetValue"->getValue</A-></TT-> and conversion to a Int-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Atag"-></A-><B->tag</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#tag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->variant of mkXTag with a list of filters for the attributes and a list of filters for the children.- this variant leads to a more readable source for a complicated construction filter- than the simple solution with a combination of <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXTag"->mkXTag</A-></TT-> and <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Acat"->cat</A-></TT->.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXTag"->mkXTag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Astag"->stag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aetag"->etag</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Acat"->cat</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3A%2B%3D"->+=</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Astag"-></A-><B->stag</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#stag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->variant of tag, useful for tags without attributes and with a list of filters for- constructing the children-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXTag"->mkXTag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Atag"->tag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aetag"->etag</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Acat"->cat</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3A%2B%3D"->+=</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aatag"-></A-><B->atag</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#atag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->variant of tag, useful for tags with attributes but without children-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXTag"->mkXTag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Atag"->tag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Astag"->stag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aetag"->etag</A-></TT->, <TT-><A HREF="Data-Tree-NTree-Filter.html#v%3Acat"->cat</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aetag"-></A-><B->etag</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#etag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Short cut for empty tags without attributes-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Atag"->tag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aatag"->atag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Astag"->stag</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXTag"->mkXTag</A-></TT-> and <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3A%2B%3D"->+=</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aqetag"-></A-><B->qetag</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#qetag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Qualified version of etag-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aqtag"-></A-><B->qtag</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#qtag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Alias for mkQTag-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3ArootTag"-></A-><B->rootTag</B-> :: [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#rootTag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for creating a document root node with a list of filters for the attributes and a list of filters for the document.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Atag"->tag</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aattr"-></A-><B->attr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#attr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Alias for <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXAttr"->mkXAttr</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aqattr"-></A-><B->qattr</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#qattr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Alias for mkQAttr-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Asattr"-></A-><B->sattr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#sattr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->short cut for attribute construction with string constants-</P-><P->set also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aattr"->attr</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXAttr"->mkXAttr</A-></TT-> and <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXText"->mkXText</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Atxt"-></A-><B->txt</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#txt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->short cut for <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXText"->mkXText</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Acmt"-></A-><B->cmt</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#cmt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->short cut for simple comment- the input tree is ignored-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXCmt"->mkXCmt</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aspi"-></A-><B->spi</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#spi"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->short cut for generating simple processing instructions (spi)- the input tree is ignored-</P-><P-><TT->spi "xyz" "abc"</TT-> is equal to <TT->mkXPi "xyz" (txt "abc")</TT->- (the name pi is already used in prelude)-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Acdata"-></A-><B->cdata</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#cdata"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->short cut for generating simple cdata sections,- the input tree is ignored-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Adtd"-></A-><B->dtd</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3ADTDElem"->DTDElem</A-> -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> [<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A->] -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#dtd"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->DTD part generation with filter for attributes and children- see also: <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXDTDTree"->mkXDTDTree</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Awarn"-></A-><B->warn</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#warn"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->short cut for mkXError c_warn.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXError"->mkXError</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Aerr"-></A-><B->err</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#err"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->short cut for mkXError c_fatal.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXError"->mkXError</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Afatal"-></A-><B->fatal</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#fatal"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->short cut for mkXError c_fatal.-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXError"->mkXError</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhasOption"-></A-><B->hasOption</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFilter.html#hasOption"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->check whether an option is set-</P-><P->reads the value of an attribute, usually applied to a document root node,- and checks if the value represents True. The following strings are interpreted- as true: "1", "True", "true", "yes", "Yes".-</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 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-DOM-XmlTreeFunctions.html
@@ -1,3474 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.DOM.XmlTreeFunctions</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.DOM.XmlTreeFunctions</FONT-></TD-><TD ALIGN="right"-><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="infohead"->Portability</TD-><TD CLASS="infoval"->portable</TD-></TR-><TR-><TD CLASS="infohead"->Stability</TD-><TD CLASS="infoval"->stable</TD-></TR-><TR-><TD CLASS="infohead"->Maintainer</TD-><TD CLASS="infoval"->Uwe Schmidt (uwe@fh-wedel.de)</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->Basic XmlTree functions-</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%3AisXCdataNode"->isXCdataNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXCharRefNode"->isXCharRefNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXCmtNode"->isXCmtNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXDTDNode"->isXDTDNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXAttrNode"->isXAttrNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXEntityRefNode"->isXEntityRefNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXErrorNode"->isXErrorNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXPiNode"->isXPiNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXTagNode"->isXTagNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisXTextNode"->isXTextNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisRootNode"->isRootNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisTagNode"->isTagNode</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisOfTagNode"->isOfTagNode</A-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisAttrNode"->isAttrNode</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisOfAttrNode"->isOfAttrNode</A-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AAttrName"->AttrName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisTextNode"->isTextNode</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisOfTextNode"->isOfTextNode</A-> :: (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisPiNode"->isPiNode</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisOfPiNode"->isOfPiNode</A-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisDTDElemNode"->isDTDElemNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3ADTDElem"->DTDElem</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisErrorNode"->isErrorNode</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtextOfXNode"->textOfXNode</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXTagTree"->mkXTagTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkQTagTree"->mkQTagTree</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXNsTagTree"->mkXNsTagTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AnewRoot"->newRoot</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AemptyRoot"->emptyRoot</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AnewDocument"->newDocument</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AnewDocument%27"->newDocument'</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkRootTree"->mkRootTree</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXTextTree"->mkXTextTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXCharRefTree"->mkXCharRefTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXEntityRefTree"->mkXEntityRefTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXCmtTree"->mkXCmtTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXDTDTree"->mkXDTDTree</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3ADTDElem"->DTDElem</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXAttrTree"->mkXAttrTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkQAttrTree"->mkQAttrTree</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXNsAttrTree"->mkXNsAttrTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXPERefTree"->mkXPERefTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXPiTree"->mkXPiTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXmlDeclTree"->mkXmlDeclTree</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXCdataTree"->mkXCdataTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkXErrorTree"->mkXErrorTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmaybeString2XText"->maybeString2XText</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Maybe.html#t%3AMaybe"->Maybe</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AshowXText"->showXText</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AshowXCharRef"->showXCharRef</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AshowXEntityRef"->showXEntityRef</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AshowXErrors"->showXErrors</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AxmlTreesToString"->xmlTreesToString</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AxmlTreesToText"->xmlTreesToText</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlSFilter"->XmlSFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AxmlContentModelToString"->xmlContentModelToString</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AnameOf"->nameOf</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AlocalPartOf"->localPartOf</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AnamespaceOf"->namespaceOf</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprefixOf"->prefixOf</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AuniversalNameOf"->universalNameOf</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AattrlOfDTD"->attrlOfDTD</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AvalueOfDTD"->valueOfDTD</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AofDTDequals"->ofDTDequals</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Axcmt"->xcmt</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Axerr"->xerr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Axwarn"->xwarn</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Axtext"->xtext</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Axtag"->xtag</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Axattr"->xattr</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoTreel"->toTreel</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-AssocList.html#t%3AAssocList"->AssocList</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtoAttrl"->toAttrl</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromTreel"->fromTreel</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-AssocList.html#t%3AAssocList"->AssocList</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfromAttrl"->fromAttrl</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXCdataNode"-></A-><B->isXCdataNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isXCdataNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXCharRefNode"-></A-><B->isXCharRefNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isXCharRefNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXCmtNode"-></A-><B->isXCmtNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isXCmtNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXDTDNode"-></A-><B->isXDTDNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isXDTDNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXAttrNode"-></A-><B->isXAttrNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isXAttrNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXEntityRefNode"-></A-><B->isXEntityRefNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isXEntityRefNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXErrorNode"-></A-><B->isXErrorNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isXErrorNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXPiNode"-></A-><B->isXPiNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isXPiNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXTagNode"-></A-><B->isXTagNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isXTagNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisXTextNode"-></A-><B->isXTextNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isXTextNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisRootNode"-></A-><B->isRootNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isRootNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisTagNode"-></A-><B->isTagNode</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isTagNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisOfTagNode"-></A-><B->isOfTagNode</B-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isOfTagNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisAttrNode"-></A-><B->isAttrNode</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isAttrNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisOfAttrNode"-></A-><B->isOfAttrNode</B-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AAttrName"->AttrName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isOfAttrNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisTextNode"-></A-><B->isTextNode</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isTextNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisOfTextNode"-></A-><B->isOfTextNode</B-> :: (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isOfTextNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisPiNode"-></A-><B->isPiNode</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isPiNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisOfPiNode"-></A-><B->isOfPiNode</B-> :: (<A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->TagName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A->) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isOfPiNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisDTDElemNode"-></A-><B->isDTDElemNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3ADTDElem"->DTDElem</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isDTDElemNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisErrorNode"-></A-><B->isErrorNode</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#isErrorNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtextOfXNode"-></A-><B->textOfXNode</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#textOfXNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXTagTree"-></A-><B->mkXTagTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXTagTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Create a tree with a tag node.-</P-><UL-><LI-> 1.parameter n : the name of the tag-</LI-><LI-> 2.parameter al : the tag attribte list-</LI-><LI-> 3.parameter cs : the list of children-</LI-><LI-> returns : the new tree-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkQTagTree"-></A-><B->mkQTagTree</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkQTagTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Version with qualified name of <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXTagTree"->mkXTagTree</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXNsTagTree"-></A-><B->mkXNsTagTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXNsTagTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create a tree with a namespace aware tag node.-</P-><UL-><LI-> 1.parameter n : the prefix:localpart of the tag-</LI-><LI-> 2.parameter ns: the namespace uri-</LI-><LI-> 3.parameter al : the tag attribte list-</LI-><LI-> 4.parameter cs : the list of children-</LI-><LI-> returns : the new tree-</LI-></UL-><P->see also: <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXTagTree"->mkXTagTree</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnewRoot"-></A-><B->newRoot</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#newRoot"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->creates a new document tree with empty contents.-</P-><UL-><LI-> 1.parameter al : the attribute list for the root node-</LI-></UL-><P->returns a single node tree with tag name "/" indicating a root and- with empty list of children-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AemptyRoot"->emptyRoot</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AemptyRoot"-></A-><B->emptyRoot</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#emptyRoot"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->the empty document tree-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AnewRoot"->newRoot</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnewDocument"-></A-><B->newDocument</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#newDocument"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->create a new empty document with source name as parameter-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnewDocument%27"-></A-><B->newDocument'</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#newDocument%27"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create a new empty document with a list of attributes for source location and options-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AnewDocument"->newDocument</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkRootTree"-></A-><B->mkRootTree</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkRootTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create a document root tree.-</P-><UL-><LI-> 1.parameter al : the attribute list for the root. This list must contain at- least an attribute "source" that contains the URI of the document to be processed-</LI-><LI-> 2.parameter cs : the list for the document content-</LI-><LI-> returns : the document root-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXTextTree"-></A-><B->mkXTextTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXTextTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create a leaf for a text element.-</P-><UL-><LI-> 1.parameter txt : the text-</LI-><LI-> returns : the tree with the single node containing the text-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXCharRefTree"-></A-><B->mkXCharRefTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXCharRefTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create a leaf for a char reference.-</P-><UL-><LI-> 1.parameter i : the integer representing the Unicode char-</LI-><LI-> returns : the tree with the single node containing the char reference-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXEntityRefTree"-></A-><B->mkXEntityRefTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXEntityRefTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create a leaf for an entity reference.-</P-><UL-><LI-> 1.parameter n : the name of the entity reference-</LI-><LI-> returns : the tree with the single node containing the entity reference-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXCmtTree"-></A-><B->mkXCmtTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXCmtTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create a leaf for a comment,-</P-><UL-><LI-> 1.parameter c : the comment text-</LI-><LI-> returns : the tree with the single node containing the comment-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXDTDTree"-></A-><B->mkXDTDTree</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3ADTDElem"->DTDElem</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXDTDTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create a tree for a part of a DTD-</P-><UL-><LI-> 1.parameter d : the type of the DTD part-</LI-><LI-> 2.parameter al : the attribute list for the DTD part-</LI-><LI-> 3.parameter ds : the possibly empty list of components for the DTD part-</LI-><LI-> returns : the tree with the composed DTD part-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXAttrTree"-></A-><B->mkXAttrTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXAttrTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create an attribute tree as part of a tag attribute list of tag nodes-</P-><UL-><LI-> 1.parameter al : the attribute name-</LI-><LI-> 2.parameter av : the attribute value as tree list, usually containing a single text node-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkQAttrTree"-></A-><B->mkQAttrTree</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkQAttrTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Qualified version of <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXAttrTree"->mkXAttrTree</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXNsAttrTree"-></A-><B->mkXNsAttrTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXNsAttrTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create an attribute tree with a namespace-</P-><UL-><LI-> 1.parameter al : the attribute name-</LI-><LI-> 2.parameter ns : namespace uri-</LI-><LI-> 3.parameter av : the attribute value as tree list, usually containing a single text node-</LI-></UL-><P->see also: <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXAttrTree"->mkXAttrTree</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXNsTagTree"->mkXNsTagTree</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXPERefTree"-></A-><B->mkXPERefTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXPERefTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create a parameter entity reference DTD part.-</P-><UL-><LI-> 1.parameter ref : the name of the reference-</LI-><LI-> returns : the DTD part for a PERef-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXPiTree"-></A-><B->mkXPiTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXPiTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create a processing instruction tree.-</P-><UL-><LI-> 1.parameter n : the name of the PI-</LI-><LI-> 2.parameter str : the content of a PI-</LI-><LI-> returns : the processing instruction tree with a single attribute "value"- with the str parameter as attribute value, with <TT->valueOf a_value</TT-> applied to the result tree- the content of the PI can be selected-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXmlDeclTree"-></A-><B->mkXmlDeclTree</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXmlDeclTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->create xml declaration-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXCdataTree"-></A-><B->mkXCdataTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXCdataTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create a CDATA section tree.-</P-><UL-><LI-> 1.parameter s : the content of the CDATA section-</LI-><LI-> returns : the tree for the CDATA section-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkXErrorTree"-></A-><B->mkXErrorTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#mkXErrorTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->create an error tree.-</P-><UL-><LI-> 1.parameter l : the level of the error (warning, error fatal)-</LI-><LI-> 2.parameter msg : the error message-</LI-><LI-> 3.parameter cs : the context, where the error was detected-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmaybeString2XText"-></A-><B->maybeString2XText</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Maybe.html#t%3AMaybe"->Maybe</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#maybeString2XText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AshowXText"-></A-><B->showXText</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#showXText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AshowXCharRef"-></A-><B->showXCharRef</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#showXCharRef"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AshowXEntityRef"-></A-><B->showXEntityRef</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#showXEntityRef"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AshowXErrors"-></A-><B->showXErrors</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#showXErrors"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AxmlTreesToString"-></A-><B->xmlTreesToString</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#xmlTreesToString"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->old name for <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-ShowXml.html#v%3Axshow"->xshow</A-></TT-> (deprecated)-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AxmlTreesToText"-></A-><B->xmlTreesToText</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlSFilter"->XmlSFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#xmlTreesToText"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->conversion of a filter result into a text node-</P-><P->see also : <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-ShowXml.html#v%3Axshow"->xshow</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AxmlContentModelToString"-></A-><B->xmlContentModelToString</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#xmlContentModelToString"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnameOf"-></A-><B->nameOf</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#nameOf"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->select the name of a node. For tags, attributes and pi's the name string- is returned, else the empty string.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AlocalPartOf"-></A-><B->localPartOf</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#localPartOf"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->select the local part of a name of a node. For tags, attributes the name string- is returned, for pi's the whole name, else the empty string.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnamespaceOf"-></A-><B->namespaceOf</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#namespaceOf"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->select the namespace URI of a tag or an attribute tree, else the empty string is returned- see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AnameOf"->nameOf</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprefixOf"-></A-><B->prefixOf</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#prefixOf"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->select the namespace prefix of a tag or an attribute tree, else the empty string is returned- see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AnameOf"->nameOf</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AlocalPartOf"->localPartOf</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AuniversalNameOf"-></A-><B->universalNameOf</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#universalNameOf"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->select the universal name (namespace uri ++ localPart) of a tag or an attribute tree, else the empty string is returned- see also : <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AnameOf"->nameOf</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AnamespaceOf"->namespaceOf</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AattrlOfDTD"-></A-><B->attrlOfDTD</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#attrlOfDTD"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->select the attributes of a dtd tree-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AvalueOfDTD"-></A-><B->valueOfDTD</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#valueOfDTD"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->select a special attribute of a DTD part-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AofDTDequals"-></A-><B->ofDTDequals</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#ofDTDequals"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test an attribute of a DTD part-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Axcmt"-></A-><B->xcmt</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#xcmt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Axerr"-></A-><B->xerr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#xerr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Axwarn"-></A-><B->xwarn</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#xwarn"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Axtext"-></A-><B->xtext</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#xtext"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Axtag"-></A-><B->xtag</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#xtag"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Axattr"-></A-><B->xattr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#xattr"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtoTreel"-></A-><B->toTreel</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-AssocList.html#t%3AAssocList"->AssocList</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#toTreel"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtoAttrl"-></A-><B->toAttrl</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#toAttrl"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfromTreel"-></A-><B->fromTreel</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-AssocList.html#t%3AAssocList"->AssocList</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#fromTreel"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfromAttrl"-></A-><B->fromAttrl</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeFunctions.html#fromAttrl"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-DOM-XmlTreeTypes.html
@@ -1,690 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.DOM.XmlTreeTypes</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.DOM.XmlTreeTypes</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->exports the core data types- and some additional types and functions- for compatibility with none arrow modules-</P-><P->Version : $Id: XmlTreeTypes.hs,v 1.6 2006<EM->05</EM->09 15:30:43 hxml Exp $-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->module <A HREF="Data-Tree-NTree-Filter.html"->Data.Tree.NTree.Filter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkNode"->mkNode</A-> :: node -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AformatNTree"->formatNTree</A-> :: (node -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AfoldNTree"->foldNTree</A-> :: (a -> [b] -> b) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> b</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmapNTree"->mapNTree</A-> :: (a -> b) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> b</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AnTreeToList"->nTreeToList</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> [a]</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AdepthNTree"->depthNTree</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcardNTree"->cardNTree</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AXmlFilter"->XmlFilter</A-> = <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AXmlSFilter"->XmlSFilter</A-> = <A HREF="Data-Tree-NTree-Filter.html#t%3ATSFilter"->TSFilter</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ATagName"->TagName</A-> = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3AAttrName"->AttrName</A-> = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtName"->tName</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AaName"->aName</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</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"->module <A HREF="Data-Tree-NTree-Filter.html"->Data.Tree.NTree.Filter</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkNode"-></A-><B->mkNode</B-> :: node -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#mkNode"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AformatNTree"-></A-><B->formatNTree</B-> :: (node -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A->) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#formatNTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AfoldNTree"-></A-><B->foldNTree</B-> :: (a -> [b] -> b) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> b</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#foldNTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmapNTree"-></A-><B->mapNTree</B-> :: (a -> b) -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> b</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#mapNTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnTreeToList"-></A-><B->nTreeToList</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> [a]</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#nTreeToList"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AdepthNTree"-></A-><B->depthNTree</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#depthNTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcardNTree"-></A-><B->cardNTree</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#cardNTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AXmlFilter"-></A-><B->XmlFilter</B-> = <A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->TFilter</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#XmlFilter"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->A functions that takes a node and returns a list of nodes-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AXmlSFilter"-></A-><B->XmlSFilter</B-> = <A HREF="Data-Tree-NTree-Filter.html#t%3ATSFilter"->TSFilter</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->XNode</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#XmlSFilter"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->A function that takes a list of nodes and returns a list of nodes-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3ATagName"-></A-><B->TagName</B-> = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#TagName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Tag name-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->type</SPAN-> <A NAME="t%3AAttrName"-></A-><B->AttrName</B-> = <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#AttrName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Attribute name-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtName"-></A-><B->tName</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#tName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->shortcut for <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#v%3AqualifiedName"->qualifiedName</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AaName"-></A-><B->aName</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html#aName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->shortcut for <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-QualifiedName.html#v%3AqualifiedName"->qualifiedName</A-></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 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-DOM.html
@@ -1,134 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.DOM</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.DOM</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->DOM data types and functions-</P-><P->export of all basic datatypes and functions of the toolbox DOM.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-DOM-XmlTree.html"->Text.XML.HXT.DOM.XmlTree</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-DOM-XmlState.html"->Text.XML.HXT.DOM.XmlState</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-DOM-EditFilters.html"->Text.XML.HXT.DOM.EditFilters</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-DOM-Namespace.html"->Text.XML.HXT.DOM.Namespace</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-DTDProcessing.html
@@ -1,347 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.DTDProcessing</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-DTDProcessing.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.DTDProcessing</FONT-></TD-><TD ALIGN="right"-><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="infohead"->Portability</TD-><TD CLASS="infoval"->portable</TD-></TR-><TR-><TD CLASS="infohead"->Stability</TD-><TD CLASS="infoval"->experimental</TD-></TR-><TR-><TD CLASS="infohead"->Maintainer</TD-><TD CLASS="infoval"->Uwe Schmidt (uwe@fh-wedel.de)</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->DTD processing function for- including external parts of a DTD- parameter entity substitution and general entity substitution-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetWellformedDoc"->getWellformedDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcheckWellformedDoc"->checkWellformedDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessDTD"->processDTD</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprocessGeneralEntities"->processGeneralEntities</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetWellformedDoc"-></A-><B->getWellformedDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-DTDProcessing.html#getWellformedDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->monadic filter for reading, parsing and checking a wellformed document.- the input tree must consist of a root node with a source attribute- in its attribute list.-</P-><P->All attributes from the document root are copied into the system state,- and may be queried by the monadic filters, e.g. trace options.-</P-><P->Result is the single element list containing the well-formed document tree- or, in case of errors, the document root with an empty list as children- and attributes <TT->a_status</TT-> and <TT->a_module</TT-> for error level and the module,- where the error occured.-</P-><P->this is a shortcut for <TT-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetXmlContents"->getXmlContents</A-></TT-> .>> <TT-><A HREF="Text-XML-HXT-Parser-DTDProcessing.html#v%3AcheckWellformedDoc"->checkWellformedDoc</A-></TT->-</P-><P->example for a main program:-</P-><PRE->- main =- run' $- do- res <- getWellformedDoc $ newDocument "myfile.xml"- ...-</PRE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcheckWellformedDoc"-></A-><B->checkWellformedDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-DTDProcessing.html#checkWellformedDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->parses a text node with <TT-><A HREF="Text-XML-HXT-Parser-XmlParser.html#v%3AparseXmlDoc"->parseXmlDoc</A-></TT->, processes the DTD and general entities- and transforms all char references into characters-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessDTD"-></A-><B->processDTD</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-DTDProcessing.html#processDTD"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->a filter for DTD processing-</P-><P->inclusion of external parts of DTD,- parameter entity substitution- conditional section evaluation-</P-><P->input tree must represent a complete document including root node-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprocessGeneralEntities"-></A-><B->processGeneralEntities</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-DTDProcessing.html#processGeneralEntities"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->substitution of general entities-</P-><P->input: a complete document tree including root node-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-DefaultURI.html
@@ -1,104 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.DefaultURI</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-DefaultURI.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.DefaultURI</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetDefaultURI"-></A-><B->setDefaultURI</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-DefaultURI.html#setDefaultURI"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-HtmlParser.html
@@ -1,338 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.HtmlParser</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-HtmlParser.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.HtmlParser</FONT-></TD-><TD ALIGN="right"-><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="infohead"->Portability</TD-><TD CLASS="infoval"->portable</TD-></TR-><TR-><TD CLASS="infohead"->Stability</TD-><TD CLASS="infoval"->stable</TD-></TR-><TR-><TD CLASS="infohead"->Maintainer</TD-><TD CLASS="infoval"->Uwe Schmidt (uwe@fh-wedel.de)</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->This parser tries to interprete everything as HTML- no errors are emitted during parsing. If something looks- weired, warning messages are inserted in the document tree.-</P-><P->Module contains state filter for easy parsing and error handling- real work is done in Text.XML.HXT.Parser.HtmlParsec-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetHtmlDoc"->getHtmlDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AparseHtmlDoc"->parseHtmlDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3ArunHtmlParser"->runHtmlParser</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsubstHtmlEntities"->substHtmlEntities</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetHtmlDoc"-></A-><B->getHtmlDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-HtmlParser.html#getHtmlDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->read a document and parse it with <TT-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3AparseHtmlDoc"->parseHtmlDoc</A-></TT->. The main entry point of this module-</P-><P->The input tree must be a root tree like in ' Text.XML.HXT.Parser.MainFunctions.getXmlDoc'. The content is read with <TT-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetXmlContents"->getXmlContents</A-></TT->,- is parsed with <TT-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3AparseHtmlDoc"->parseHtmlDoc</A-></TT-> and canonicalized (char refs are substituted in content and attributes,- but comment is preserved)-</P-><P->see also : Text.XML.HXT.Parser.DTDProcessing.getWellformedDoc-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AparseHtmlDoc"-></A-><B->parseHtmlDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-HtmlParser.html#parseHtmlDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->The HTML parsing filter-</P-><P->The input is parsed with <TT-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3ArunHtmlParser"->runHtmlParser</A-></TT->, everything is interpreted as HTML,- if errors ocuur, the parser will try to do some meaningfull action and continues- parsing. Afterwards the entitiy references for defined for XHTML are resovled,- any unresolved reference is transformed into plain text.-</P-><P->Error messages- during parsing and entity resolving are added as warning nodes into the resulting tree.-</P-><P->The warnings are issued, if the 1. parameter noWarnings is set to True,- afterwards all are removed from the resulting tree.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3ArunHtmlParser"-></A-><B->runHtmlParser</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-HtmlParser.html#runHtmlParser"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->The pure HTML parser, usually called via <TT-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3AparseHtmlDoc"->parseHtmlDoc</A-></TT->.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsubstHtmlEntities"-></A-><B->substHtmlEntities</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-HtmlParser.html#substHtmlEntities"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-MainFunctions.html
@@ -1,694 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.MainFunctions</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-MainFunctions.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.MainFunctions</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->Simple parse functions.-</P-><P->the main building blocks for an application.- this module exports complex filters and functions for- common tasks for input and parsing, output and option handling.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetXmlDocument"->getXmlDocument</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> (<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A->, <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A->, <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AputXmlDocument"->putXmlDocument</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> (<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A->, <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A->)</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AparseDocument"->parseDocument</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AwriteDocument"->writeDocument</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetXmlDocument"-></A-><B->getXmlDocument</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> (<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A->, <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A->, <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A->)</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-MainFunctions.html#getXmlDocument"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->convenient function for reading a XML document without- dealing with state monads, error messages collection and other details-</P-><P->getXmlDocument calls <TT-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AparseDocument"->parseDocument</A-></TT-> with the list of parsing options- and an url or filename as document source.-</P-><P->result is a triple-</P-><UL-><LI-> the resulting document tree with a root node containing all- meta info about the document (options, status info, http header, ...)-</LI-><LI-> the list of errors and warnings-</LI-><LI-> the error level: one of <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_ok"->c_ok</A-></TT->, <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_warn"->c_warn</A-></TT->, <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_err"->c_err</A-></TT->, <TT-><A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_fatal"->c_fatal</A-></TT->-</LI-></UL-><P->example for input (see also example in <TT-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AputXmlDocument"->putXmlDocument</A-></TT-> and example in <TT-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AwriteDocument"->writeDocument</A-></TT->)-</P-><PRE-> main :: IO ()- main- = do- (res, errs, rc) <- getXmlDocument [] "test.xml"- if rc >= c_err- then issueErrors errs- else processTree res-- issueErrors :: XmlTrees -> IO ()-- processTree :: XmlTree -> IO ()-</PRE-><P->for options see <TT-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AparseDocument"->parseDocument</A-></TT->, <TT->a_collect_errors</TT-> is set implicitly-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AputXmlDocument"-></A-><B->putXmlDocument</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"->IO</A-> (<A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A->, <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A->)</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-MainFunctions.html#putXmlDocument"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->the inverse operation to <TT-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AgetXmlDocument"->getXmlDocument</A-></TT->-</P-><P->writes a complete document tree to a file, writing can be- controlled by options, the real work is done with filter <TT-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AwriteDocument"->writeDocument</A-></TT->.- useful options are the options of <TT-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AwriteDocument"->writeDocument</A-></TT->.-</P-><P->result is a pair: 1.part is a list of error messages, 2. part is the return code,- the status info of the write filter-</P-><P->this filter is useful, when processing XML in an arbitray context in the IO monad-</P-><P->an example main program for such an application is:-</P-><PRE-> main :: IO ()- main- = do- (input, readErrs, rc) <- getXmlDocument [...] "test.xml"- if rc >= c_err- then issueErrors readErrs- else processTree input-- processTree :: XmlTree -> IO ()- processTree t- = let res = computeNewTree input- in do- (writeErrs, rc2) <- putXmlDocument [...] "out.xml" res- if rc2 >= c_err- then issueErrors writeErrs- else return ()-- issueErrors :: XmlTrees -> IO ()-- computeNewTree :: XmlTree -> XmlTree-</PRE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AparseDocument"-></A-><B->parseDocument</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-MainFunctions.html#parseDocument"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->the main parsing filter-</P-><P->this filter can be configured by an option list, a list of- option name, option value pairs.- the input tree must be a possibly empty document root tree.- all the options are stored as attributes in this root node to control processing.-</P-><P->available options:-</P-><UL-><LI-> <TT->a_parse_html</TT->: use HTML parser, else use XML parser (default)-</LI-><LI-> <TT->a_validate</TT-> : validate document (default), else skip validation-</LI-><LI-> <TT->a_check_namespaces</TT-> : check namespaces, else skip namespace processing (default)-</LI-><LI-> <TT->a_canonicalize</TT-> : canonicalize document (default), else skip canonicalization-</LI-><LI-> <TT->a_preserve_comment</TT-> : preserve comments during canonicalization, else remove comments (default)-</LI-><LI-> <TT->a_remove_whitespace</TT-> : remove all whitespace, used for document indentation, else skip this step (default)-</LI-><LI-> <TT->a_indent</TT-> : indent document by inserting whitespace, else skip this step (default)-</LI-><LI-> <TT->a_issue_warnings</TT-> : issue warnings, when parsing HTML (default), else ignore HTML parser warnings-</LI-><LI-> <TT->a_issue_errors</TT-> : issue all error messages on stderr (default), or ignore all error messages-</LI-><LI-> <TT->a_collect_errors</TT-> : all error messages are collected during processing and appended to the result document- for further processing within the calling modules-</LI-><LI-> <TT->a_trace</TT-> : trace level: values: 0 -4-</LI-><LI-> <TT->a_proxy</TT-> : proxy for http access, e.g. www-cache:3128-</LI-><LI-> <TT->a_use_curl</TT-> : for http access via external programm curl, default is native HTTP access-</LI-><LI-> <TT->a_options_curl</TT-> : more options for external program curl-</LI-><LI-> <TT->a_source</TT-> : the document source url-</LI-><LI-> <TT->a_encoding</TT-> : default document encoding (<TT->utf8</TT->, <TT->isoLatin1</TT->, <TT->usAscii</TT->, ...)-</LI-></UL-><P->examples:-</P-><PRE-> parseDocument [ (a_source, "test.xml")- , (a_validate, "0")- , (a_encoding, isoLatin1)- ] emptyRoot-</PRE-><P->reads document "test.xml" without validation and default encoding <TT->isoLatin1</TT->-</P-><PRE-> parseDocument [ (a_source, "http://www.haskell.org/")- , (a_parse_html, "1")- , (a_proxy, "www-cache:3128")- , (a_curl, "1")- , (a_issue_warnings, "0")- ] emptyRoot-</PRE-><P->reads Haskell homepage with HTML parser ignoring any warnings and with http access via external program curl and proxy "www-cache" at port 3128-</P-><PRE-> parseDocument [ (a_source, "http://www.w3c.org/")- , (a_parse_html, "0") -- default- , (a_validate, "1") -- default- , (a_check_namespace, "1")- , (a_remove_whitespace, "1")- , (a_trace, "2")- ] emptyRoot-</PRE-><P->read w3c home page, validate and chech namespaces, remove whitespace between tags, trace activities with level 2-</P-><PRE-> parseDocument [ (a_source, "test.xml")- , (a_validate, "1")- , (a_check_namespace, "1")- , (a_collect_errors, "1")- , (a_issue_errors, "0")- ] emptyRoot-</PRE-><P->reads file "test.xml", validates it, checks namespaces, does not issue any erros- but collects errors and appends the list of errors to the single element list for the document.- this enables the calling application to define own error handlers.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AwriteDocument"-></A-><B->writeDocument</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Attributes</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-MainFunctions.html#writeDocument"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->the main filter for writing documents-</P-><P->this filter can be configured by an option list like <TT-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AgetXmlDocument"->getXmlDocument</A-></TT->-</P-><P->available options are-</P-><UL-><LI-> <TT->a_indent</TT-> : indent document for readability, (default: no indentation)-</LI-><LI-> <TT->a_remove_whitespace</TT-> : remove all redundant whitespace for shorten text (default: no removal)-</LI-><LI-> <TT->a_output_file</TT-> : destination file for document, default is "-" for stdout-</LI-><LI-> <TT->a_output_encoding</TT-> : encoding of document, default is <TT->a_encoding</TT-> or <TT->utf8</TT->-</LI-><LI-> <TT->a_output_xml</TT-> : (default) issue XML: quote special XML chars >,<,",',&- add XML processing instruction- and encode document with respect to <TT->a_output_encoding</TT->,- if explizitly switched of, the plain text is issued, this is useful- for non XML output, e.g. generated Haskell code, LaTex, Java, ...-</LI-><LI-> <TT->a_show_tree</TT-> : show tree representation of document (for debugging)-</LI-><LI-> <TT->a_show_haskell</TT-> : show Haskell representaion of document (for debugging)-</LI-><LI-> <TT->a_issue_errors</TT->, <TT->a_collect_errors</TT-> : see <TT-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AparseDocument"->parseDocument</A-></TT->-</LI-></UL-><P->a typical main program running in the XmlState monad- has the following structure:-</P-><PRE->- main :: IO ()- main- = do- argv <- getArgs -- get the commandline arguments- (inp, outp, options) <- cmdlineOpts argv -- and evaluate them, return a key-value list- -- and input and output- res <- run' $ application inp outp options $ emptyRoot -- run the application- - exitWith (if null res- then ExitFailure (-1)- else exitSuccess- )-- application :: String -> String -> Attributes -> XmlStateFilter ()- application inp outp al- = parseDocument (al ++ [(a_source, inp)]) -- set options and source- .>> -- and parse document- processDocument -- the hard work- .>>- writeDocument [(a_output_file, outp)] -- issue results- .>>- checkStatus -- check errors--</PRE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-ProtocolHandler.html
@@ -1,108 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.ProtocolHandler</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandler.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.ProtocolHandler</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetProtocolHandler"-></A-><B->getProtocolHandler</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/network/Network-URI.html#t%3AURI"->URI</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandler.html#getProtocolHandler"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-ProtocolHandlerFile.html
@@ -1,106 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.ProtocolHandlerFile</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerFile.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.ProtocolHandlerFile</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetFileContents"-></A-><B->getFileContents</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/network/Network-URI.html#t%3AURI"->URI</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerFile.html#getFileContents"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html
@@ -1,106 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.ProtocolHandlerHttpCurl</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.ProtocolHandlerHttpCurl</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetHttpContentsWithCurl"-></A-><B->getHttpContentsWithCurl</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/network/Network-URI.html#t%3AURI"->URI</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html#getHttpContentsWithCurl"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html
@@ -1,106 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.ProtocolHandlerHttpNative</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.ProtocolHandlerHttpNative</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetHttpContentsWithHttp"-></A-><B->getHttpContentsWithHttp</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/network/Network-URI.html#t%3AURI"->URI</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html#getHttpContentsWithHttp"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html
@@ -1,106 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.ProtocolHandlerHttpNativeOrCurl</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.ProtocolHandlerHttpNativeOrCurl</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetHttpContentsNativeOrWithCurl"-></A-><B->getHttpContentsNativeOrWithCurl</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/network/Network-URI.html#t%3AURI"->URI</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html#getHttpContentsNativeOrWithCurl"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-XmlInput.html
@@ -1,658 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.XmlInput</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.XmlInput</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetXmlContents"->getXmlContents</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetXmlEntityContents"->getXmlEntityContents</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetUrlContents"->getUrlContents</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetContentLength"->getContentLength</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AguessDocEncoding"->guessDocEncoding</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3ArunInLocalURIContext"->runInLocalURIContext</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3ArunInNewURIContext"->runInNewURIContext</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetBaseURI"->getBaseURI</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetBaseURI"->setBaseURI</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetAbsolutURI"->getAbsolutURI</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisStandaloneDocument"->isStandaloneDocument</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetXmlContents"-></A-><B->getXmlContents</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getXmlContents"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for reading the content of a XML document-</P-><P->input is a root node with the source as an attibute- the text is read, the encoding scheme is parsed and selected- and the input is translated into the internal UTF-8 string representation-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetXmlEntityContents"-></A-><B->getXmlEntityContents</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getXmlEntityContents"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for reading the content of an external XML entity-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetXmlContents"->getXmlContents</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetUrlContents"-></A-><B->getUrlContents</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getUrlContents"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->the hard io operations-</P-><P->for reading a file or accessing a document via http- input must be a root node with a <TT->source</TT-> attribute specifying the URI-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetContentLength"-></A-><B->getContentLength</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getContentLength"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->compute the length of the data for a document read previously- by a call of 'getUrlContents. The result is stored as an attribute- value in the document root node. the attribute name is <TT->a_contentLength</TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AguessDocEncoding"-></A-><B->guessDocEncoding</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#guessDocEncoding"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->guessEncoding uses encoding attribute and content- to determine the encoding scheme.-</P-><P->it's assumed that an encoding spec has been tried to parse before guessing the encoding.-</P-><P->UTF-8 is the default encoding-</P-><P->other supported encodings are ISO-8859-1 (also known as ISO-Latin-1),- US-ASCII, UTF-16 or ISO-10646-UCS-2, UTF-16BE, UTF-16LE-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3ArunInLocalURIContext"-></A-><B->runInLocalURIContext</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#runInLocalURIContext"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter command for saving and restoring- the base URI-</P-><UL-><LI-> 1.parameter f : the filter that possible changes the base URI-</LI-><LI-> returns : a filter with the same effect as f, that restores the base URI after application of f-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3ArunInNewURIContext"-></A-><B->runInNewURIContext</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#runInNewURIContext"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->filter command for running an action in a new URI context-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetBaseURI"-></A-><B->getBaseURI</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getBaseURI"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->read the current base URI-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AsetBaseURI"->setBaseURI</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsetBaseURI"-></A-><B->setBaseURI</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state ()</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#setBaseURI"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->set the base URI, all other URIs are handled relative to this base URI-</P-><P->the default base URI is <TT->file:///<current-working-dir>/</TT->-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetBaseURI"->getBaseURI</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetAbsolutURI"-></A-><B->getAbsolutURI</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#getAbsolutURI"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->transform an URI into an absolut URI using the current base URI-</P-><UL-><LI-> 1.parameter uri : the URI as string-</LI-><LI-> returns : the absolut URI as string or "" in case of an error-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisStandaloneDocument"-></A-><B->isStandaloneDocument</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->XState</A-> state <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlInput.html#isStandaloneDocument"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->predicate for testing the standalone document attribute-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-XmlOutput.html
@@ -1,583 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.XmlOutput</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.XmlOutput</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->output functions- implemented as filer-</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%3AputXmlDoc"->putXmlDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AputXmlDocToFile"->putXmlDocToFile</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AputXmlTree"->putXmlTree</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AputXmlSource"->putXmlSource</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhPutXmlDoc"->hPutXmlDoc</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AHandle"->Handle</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhPutXmlTree"->hPutXmlTree</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AHandle"->Handle</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhPutXmlSource"->hPutXmlSource</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AHandle"->Handle</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtraceF"->traceF</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtraceMsg"->traceMsg</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtraceTree"->traceTree</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AtraceSource"->traceSource</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AputXmlDoc"-></A-><B->putXmlDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html#putXmlDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->document output for standard output-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AhPutXmlDoc"->hPutXmlDoc</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AputXmlDocToFile"-></A-><B->putXmlDocToFile</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html#putXmlDocToFile"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->document output on a given file name-</P-><P->Result is the input document-</P-><P->see also : <TT-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AhPutXmlDoc"->hPutXmlDoc</A-></TT->, <TT-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AputXmlDoc"->putXmlDoc</A-></TT->-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AputXmlTree"-></A-><B->putXmlTree</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html#putXmlTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AputXmlSource"-></A-><B->putXmlSource</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html#putXmlSource"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhPutXmlDoc"-></A-><B->hPutXmlDoc</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AHandle"->Handle</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html#hPutXmlDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->document output for arbitrary files.-</P-><P->Result is the input document-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhPutXmlTree"-></A-><B->hPutXmlTree</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AHandle"->Handle</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html#hPutXmlTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->output of tree representation for trace-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhPutXmlSource"-></A-><B->hPutXmlSource</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AHandle"->Handle</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html#hPutXmlSource"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->output of text representation for trace-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtraceF"-></A-><B->traceF</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html#traceF"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtraceMsg"-></A-><B->traceMsg</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"->Int</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html#traceMsg"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtraceTree"-></A-><B->traceTree</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html#traceTree"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AtraceSource"-></A-><B->traceSource</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlOutput.html#traceSource"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser-XmlParser.html
@@ -1,184 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser.XmlParser</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser-XmlParser.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser.XmlParser</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->Xml Parser: the main parse filter -</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%3AparseXmlDoc"->parseXmlDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AsubstXmlEntities"->substXmlEntities</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AparseXmlDoc"-></A-><B->parseXmlDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlParser.html#parseXmlDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->The monadic parser for a whole document.- input must be a root node with a single text child.- Error messages are issued and global error state is set.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AsubstXmlEntities"-></A-><B->substXmlEntities</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Parser-XmlParser.html#substXmlEntities"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Filter for substitution of all occurences of the predefined XML entites quot, amp, lt, gt, apos- by equivalent character references-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Parser.html
@@ -1,178 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Parser</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Parser.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Parser</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->Simple parse functions.-</P-><P->the <A HREF="main.html"->main</A-> building blocks for an application.- this module exports all important functions for parsing, validating and transforming XML.- it also exports all basic datatypes and functions of the toolbox.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-DOM.html"->Text.XML.HXT.DOM</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-Parser-XmlParser.html"->Text.XML.HXT.Parser.XmlParser</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-Parser-HtmlParser.html"->Text.XML.HXT.Parser.HtmlParser</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-Parser-XmlInput.html"->Text.XML.HXT.Parser.XmlInput</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-Parser-XmlOutput.html"->Text.XML.HXT.Parser.XmlOutput</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-Parser-DTDProcessing.html"->Text.XML.HXT.Parser.DTDProcessing</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-Parser-MainFunctions.html"->Text.XML.HXT.Parser.MainFunctions</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-Validator-Validation.html"->Text.XML.HXT.Validator.Validation</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Validator-AttributeValueValidation.html
@@ -1,232 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Validator.AttributeValueValidation</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Validator-AttributeValueValidation.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Validator.AttributeValueValidation</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->This module provides functions for validating attributes.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AcheckAttributeValue"->checkAttributeValue</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AnormalizeAttributeValue"->normalizeAttributeValue</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Maybe.html#t%3AMaybe"->Maybe</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcheckAttributeValue"-></A-><B->checkAttributeValue</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-AttributeValueValidation.html#checkAttributeValue"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Checks if the attribute value meets the lexical constraints of its type.-</P-><UL-><LI-> 1.parameter dtdPart : the children of the <TT->DOCTYPE</TT-> node-</LI-><LI-> 2.parameter attrDecl : the declaration of the attribute from the DTD-</LI-><LI-> returns : a function which takes an element (XTag or XDTD ATTLIST),- checks if the attribute value meets the lexical constraints- of its type and returns a list of errors-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnormalizeAttributeValue"-></A-><B->normalizeAttributeValue</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Maybe.html#t%3AMaybe"->Maybe</A-> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-AttributeValueValidation.html#normalizeAttributeValue"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Normalizes an attribute value with respect to its type. (3.3.3 / p.29 in Spec)-</P-><UL-><LI-> 1.parameter attrDecl : the declaration of the attribute from the DTD. Expected- is a list. If the list is empty, no declaration exists.-</LI-><LI-> 2.parameter value : the attribute value to be normalized-</LI-><LI-> returns : the normalized value-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Validator-DTDValidation.html
@@ -1,199 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Validator.DTDValidation</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Validator-DTDValidation.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Validator.DTDValidation</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->This module provides functions for validating the DTD of XML documents- represented as XmlTree.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AremoveDoublicateDefs"->removeDoublicateDefs</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AvalidateDTD"->validateDTD</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AremoveDoublicateDefs"-></A-><B->removeDoublicateDefs</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-DTDValidation.html#removeDoublicateDefs"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Removes doublicate declarations from the DTD, which first declaration is- binding. This is the case for ATTLIST and ENTITY declarations.-</P-><UL-><LI-> returns : A function that replaces the children of DOCTYPE nodes by a list- where all multiple declarations are removed.-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AvalidateDTD"-></A-><B->validateDTD</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-DTDValidation.html#validateDTD"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Validate a DTD.-</P-><UL-><LI-> returns : a functions which takes the DTD subset of the XmlTree, checks- if the DTD is valid and returns a list of errors-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Validator-DocTransformation.html
@@ -1,164 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Validator.DocTransformation</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Validator-DocTransformation.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Validator.DocTransformation</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->This module provides functions for transforming XML documents represented as- XmlTree with respect to its DTD.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3Atransform"->transform</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Atransform"-></A-><B->transform</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-DocTransformation.html#transform"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for transforming the document.-</P-><UL-><LI-> 1.parameter dtdPart : the DTD subset (Node <TT->DOCTYPE</TT->) of the XmlTree-</LI-><LI-> 2.parameter doc : the document subset of the XmlTree-</LI-><LI-> returns : a list of errors-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Validator-DocValidation.html
@@ -1,164 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Validator.DocValidation</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Validator-DocValidation.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Validator.DocValidation</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->This module provides functions for validating XML Documents represented as- XmlTree.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AvalidateDoc"->validateDoc</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AvalidateDoc"-></A-><B->validateDoc</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-DocValidation.html#validateDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Validate a document.-</P-><UL-><LI-> 1.parameter dtdPart : the DTD subset (Node <TT->DOCTYPE</TT->) of the XmlTree-</LI-><LI-> 2.parameter doc : the document subset of the XmlTree-</LI-><LI-> returns : a list of errors-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Validator-IdValidation.html
@@ -1,167 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Validator.IdValidation</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Validator-IdValidation.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Validator.IdValidation</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->This module provides functions for checking special ID<EM->IDREF</EM->IDREFS constraints.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AvalidateIds"->validateIds</A-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AvalidateIds"-></A-><B->validateIds</B-> :: <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->XmlTree</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-IdValidation.html#validateIds"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Perform the validation of the ID<EM->IDREF</EM->IDREFS constraints.-</P-><UL-><LI-> 1.parameter dtdPart : the DTD subset (Node <TT->DOCTYPE</TT->) of the XmlTree-</LI-><LI-> 2.parameter doc : the document subset of the XmlTree-</LI-><LI-> returns : a list of errors-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Validator-RE.html
@@ -1,1152 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Validator.RE</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Validator.RE</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->A module for regular expression matching based on derivatives of regular expressions.-</P-><P->The code was taken from Joe English (<A HREF="http://www.flightlab.com/~joe/sgml/validate.html"->http://www.flightlab.com/~joe/sgml/validate.html</A->).- Tested and extended by Martin Schmidt.-</P-><P->Further references for the algorithm:-</P-><P->Janusz A. Brzozowski.-</P-><P->Derivatives of Regular Expressions. Journal of the ACM, Volume 11, Issue 4, 1964. -</P-><P->Mark Hopkins.-</P-><P->Regular Expression Package. Posted to comp.compilers, 1994.- Available per FTP at <A HREF="ftp://iecc.com/pub/file/regex.tar.gz"->ftp://iecc.com/pub/file/regex.tar.gz</A->.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ARE"->RE</A-> a </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ARE_ZERO"->RE_ZERO</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ARE_UNIT"->RE_UNIT</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ARE_SYM"->RE_SYM</A-> a</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ARE_DOT"->RE_DOT</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ARE_REP"->RE_REP</A-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ARE_PLUS"->RE_PLUS</A-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ARE_OPT"->RE_OPT</A-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ARE_SEQ"->RE_SEQ</A-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ARE_ALT"->RE_ALT</A-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_unit"->re_unit</A-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_zero"->re_zero</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_sym"->re_sym</A-> :: a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_rep"->re_rep</A-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_plus"->re_plus</A-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_opt"->re_opt</A-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_seq"->re_seq</A-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_alt"->re_alt</A-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_dot"->re_dot</A-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcheckRE"->checkRE</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Amatches"->matches</A-> :: (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Eq.html#t%3AEq"->Eq</A-> a, <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a) => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> [a] -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Anullable"->nullable</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprintRE"->printRE</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ARE"-></A-><B->RE</B-> a </TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#RE"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->Data type for regular expressions.-</TD-></TR-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ARE_ZERO"-></A-><B->RE_ZERO</B-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ARE_UNIT"-></A-><B->RE_UNIT</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ARE_SYM"-></A-><B->RE_SYM</B-> a</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ARE_DOT"-></A-><B->RE_DOT</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ARE_REP"-></A-><B->RE_REP</B-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ARE_PLUS"-></A-><B->RE_PLUS</B-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ARE_OPT"-></A-><B->RE_OPT</B-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ARE_SEQ"-></A-><B->RE_SEQ</B-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ARE_ALT"-></A-><B->RE_ALT</B-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a) (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:RE')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:RE" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Eq.html#t%3AEq"->Eq</A-> a => <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Eq.html#t%3AEq"->Eq</A-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> (<A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_unit"-></A-><B->re_unit</B-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_unit"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a regular expression for an empty sequence.-</P-><UL-><LI-> returns : regular expression for an empty sequence-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_zero"-></A-><B->re_zero</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_zero"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a regular expression for an empty set.-</P-><UL-><LI-> 1.parameter errMsg : error message-</LI-><LI-> returns : regular expression for an empty set-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_sym"-></A-><B->re_sym</B-> :: a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_sym"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a regular expression for accepting a symbol-</P-><UL-><LI-> 1.parameter sym : the symbol to be accepted-</LI-><LI-> returns : regular expression for accepting a symbol-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_rep"-></A-><B->re_rep</B-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_rep"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs an optional repetition (*) of a regular expression-</P-><UL-><LI-> 1.parameter re_a : regular expression to be repeted-</LI-><LI-> returns : new regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_plus"-></A-><B->re_plus</B-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_plus"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a repetition (+) of a regular expression-</P-><UL-><LI-> 1.parameter re_a : regular expression to be repeted-</LI-><LI-> returns : new regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_opt"-></A-><B->re_opt</B-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_opt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs an option (?) of a regular expression-</P-><UL-><LI-> 1.parameter re_a : regular expression to be optional-</LI-><LI-> returns : new regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_seq"-></A-><B->re_seq</B-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_seq"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a sequence (,) of two regular expressions-</P-><UL-><LI-> 1.parameter re_a : first regular expression in sequence-</LI-><LI-> 2.parameter re_b : second regular expression in sequence-</LI-><LI-> returns : new regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_alt"-></A-><B->re_alt</B-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_alt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs an alternative (|) of two regular expressions-</P-><UL-><LI-> 1.parameter re_a : first regular expression of alternative-</LI-><LI-> 2.parameter re_b : second regular expression of alternative-</LI-><LI-> returns : new regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_dot"-></A-><B->re_dot</B-> :: <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_dot"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a regular expression for accepting any singel symbol-</P-><UL-><LI-> returns : regular expression for accepting any singel symbol-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcheckRE"-></A-><B->checkRE</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#checkRE"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Checks if an input matched a regular expression. The function should be- called after matches.-</P-><P->Was the sentence used in <TT->matches</TT-> in the language of the regular expression?- -> matches e s == s `in` L(e)?-</P-><UL-><LI-> 1.parameter re : the derived regular expression-</LI-><LI-> returns : empty String if input matched the regular expression, otherwise- an error message is returned-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Amatches"-></A-><B->matches</B-> :: (<A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Eq.html#t%3AEq"->Eq</A-> a, <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a) => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> [a] -> <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#matches"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Derives a regular expression with respect to a sentence.-</P-><UL-><LI-> 1.parameter re : regular expression-</LI-><LI-> 2.parameter s : sentence to which the regular expression is applied-</LI-><LI-> returns : the derived regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Anullable"-></A-><B->nullable</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"->Bool</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#nullable"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Checks if a regular expression matches the empty sequence.-</P-><P->nullable e == [] `in` L(e)-</P-><P->This check indicates if a regular expression fits to a sentence or not.-</P-><UL-><LI-> 1.parameter re : regular expression to be checked-</LI-><LI-> returns : true if regular expression matches the empty sequence,- otherwise false-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprintRE"-></A-><B->printRE</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->RE</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#printRE"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a string representation of a regular expression.-</P-><UL-><LI-> 1.parameter re : a regular expression-</LI-><LI-> returns : the string representation of the regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Validator-Validation.html
@@ -1,180 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Validator.Validation</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Validator-Validation.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Validator.Validation</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->This module provides a state filter as a main function for validating XML documents.-</P-><P->The real validation is done with pure filters from module Text.XML.HXT.Validator.ValidationFilter-</P-><P->Author : .\artin Schmidt-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetValidatedDoc"->getValidatedDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-Validator-ValidationFilter.html"->Text.XML.HXT.Validator.ValidationFilter</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetValidatedDoc"-></A-><B->getValidatedDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->XmlStateFilter</A-> state</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-Validation.html#getValidatedDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->monadic filter for validating and transforming a wellformed document.-</P-><P->the <A HREF="main.html"->main</A-> function for validation.-</P-><P->the input tree must consist of a root node with a complete document and DTD.- Result is the single element list containing same tree but tranformed with respect to the DTD,- or, in case of errors, the root with an empty list of children-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-Validator-ValidationFilter.html"->Text.XML.HXT.Validator.ValidationFilter</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Validator-ValidationFilter.html
@@ -1,387 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Validator.ValidationFilter</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Validator.ValidationFilter</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"->This module provides functions for validating XML documents represented as- XmlTree.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AgetDTDSubset"->getDTDSubset</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Avalidate"->validate</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AvalidateDTD"->validateDTD</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AvalidateDoc"->validateDoc</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AremoveDoublicateDefs"->removeDoublicateDefs</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Atransform"->transform</A-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AgetDTDSubset"-></A-><B->getDTDSubset</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#getDTDSubset"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Avalidate"-></A-><B->validate</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#validate"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Main validation filter. Check if the DTD and the document are valid.-</P-><UL-><LI-> returns : a function which expects a complete document as XmlTree input- and returns a list of all errors found.-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AvalidateDTD"-></A-><B->validateDTD</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#validateDTD"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Check if the DTD is valid.-</P-><UL-><LI-> returns : a function which expects an XmlTree from the parser as input- and returns a list of all errors found in the DTD.-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AvalidateDoc"-></A-><B->validateDoc</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#validateDoc"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Check if the document corresponds to the given DTD.-</P-><UL-><LI-> returns : a function which expects a complete document as XmlTree input- and returns a list of all errors found in the content part.-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AremoveDoublicateDefs"-></A-><B->removeDoublicateDefs</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#removeDoublicateDefs"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Removes doublicate declarations from the DTD which first declaration is- binding. This is the case for ATTLIST and ENTITY declarations.-</P-><UL-><LI-> returns : A function that replaces the children of DOCTYPE nodes by a list- where all multiple declarations are removed.-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Atransform"-></A-><B->transform</B-> :: <A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->XmlFilter</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-ValidationFilter.html#transform"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->filter for transforming a document with respect to the given DTD.-</P-><P->Validating parsers- are expected to normalize attribute values and add default values.- This function should be called after a successful validation.-</P-><UL-><LI-> returns : a function which expects a complete XML document tree- and returns the transformed XmlTree-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/Text-XML-HXT-Validator-XmlRE.html
@@ -1,874 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->Text.XML.HXT.Validator.XmlRE</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html"->Source code</A-></TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="modulebar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><FONT SIZE="6"->Text.XML.HXT.Validator.XmlRE</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->A module for regular expression matching, adapted for XML DTDs.-</P-><P->This module is based on the module RE.-</P-><P->Author .\artin Schmidt-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AcheckRE"->checkRE</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Amatches"->matches</A-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AprintRE"->printRE</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_unit"->re_unit</A-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_zero"->re_zero</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_sym"->re_sym</A-> :: a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_rep"->re_rep</A-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_plus"->re_plus</A-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_opt"->re_opt</A-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_seq"->re_seq</A-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_alt"->re_alt</A-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3Are_dot"->re_dot</A-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Documentation</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ARE"-></A-><B->RE</B-> a </TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#RE"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"->Data type for regular expressions.-</TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:RE')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:RE" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Eq.html#t%3AEq"->Eq</A-> a => <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Eq.html#t%3AEq"->Eq</A-> (<A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a)</TD-></TR-><TR-><TD CLASS="decl"-><A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> (<A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a)</TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AcheckRE"-></A-><B->checkRE</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#checkRE"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Checks if an input matched a regular expression. The function should be- called after matches.-</P-><P->Was the sentence used in <TT->matches</TT-> in the language of the regular expression?- -> matches e s == s `in` L(e)?-</P-><UL-><LI-> 1.parameter re : the derived regular expression-</LI-><LI-> returns : empty String if input matched the regular expression, otherwise- an error message is returned-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Amatches"-></A-><B->matches</B-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="/usr/local/share/doc/hxt-8.3.0/html/Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->XmlTrees</A-> -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-XmlRE.html#matches"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Derives a regular expression with respect to a list of elements.-</P-><UL-><LI-> 1.parameter re : regular expression-</LI-><LI-> 2.parameter list : list of elements to which the regular expression is applied-</LI-><LI-> returns : the derived regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AprintRE"-></A-><B->printRE</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> a => <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#printRE"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a string representation of a regular expression.-</P-><UL-><LI-> 1.parameter re : a regular expression-</LI-><LI-> returns : the string representation of the regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_unit"-></A-><B->re_unit</B-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_unit"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a regular expression for an empty sequence.-</P-><UL-><LI-> returns : regular expression for an empty sequence-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_zero"-></A-><B->re_zero</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_zero"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a regular expression for an empty set.-</P-><UL-><LI-> 1.parameter errMsg : error message-</LI-><LI-> returns : regular expression for an empty set-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_sym"-></A-><B->re_sym</B-> :: a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_sym"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a regular expression for accepting a symbol-</P-><UL-><LI-> 1.parameter sym : the symbol to be accepted-</LI-><LI-> returns : regular expression for accepting a symbol-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_rep"-></A-><B->re_rep</B-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_rep"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs an optional repetition (*) of a regular expression-</P-><UL-><LI-> 1.parameter re_a : regular expression to be repeted-</LI-><LI-> returns : new regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_plus"-></A-><B->re_plus</B-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_plus"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a repetition (+) of a regular expression-</P-><UL-><LI-> 1.parameter re_a : regular expression to be repeted-</LI-><LI-> returns : new regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_opt"-></A-><B->re_opt</B-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_opt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs an option (?) of a regular expression-</P-><UL-><LI-> 1.parameter re_a : regular expression to be optional-</LI-><LI-> returns : new regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_seq"-></A-><B->re_seq</B-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_seq"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a sequence (,) of two regular expressions-</P-><UL-><LI-> 1.parameter re_a : first regular expression in sequence-</LI-><LI-> 2.parameter re_b : second regular expression in sequence-</LI-><LI-> returns : new regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_alt"-></A-><B->re_alt</B-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a -> <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_alt"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs an alternative (|) of two regular expressions-</P-><UL-><LI-> 1.parameter re_a : first regular expression of alternative-</LI-><LI-> 2.parameter re_b : second regular expression of alternative-</LI-><LI-> returns : new regular expression-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3Are_dot"-></A-><B->re_dot</B-> :: <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->RE</A-> a</TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Validator-RE.html#re_dot"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Constructs a regular expression for accepting any singel symbol-</P-><UL-><LI-> returns : regular expression for accepting any singel symbol-</LI-></UL-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="botbar"->Produced by <A HREF="http://www.haskell.org/haddock/"->Haddock</A-> version 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/doc-index.html
@@ -1,5830 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant). (Index)</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><A HREF="index.html"->Contents</A-></TD-><TD CLASS="topbut"-><A HREF="doc-index.html"->Index</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD COLSPAN="2" STYLE="padding-top:5px;"-><FORM onsubmit="full_search(); return false;" ACTION=""->Search: <INPUT ID="searchbox" onkeyup="quick_search()"-> <INPUT VALUE="Search" TYPE="submit"-> <SPAN ID="searchmsg"-> </SPAN-></FORM-></TD-></TR-><TR-><TD-><TABLE ID="indexlist" CELLPADDING="0" CELLSPACING="5"-><TR CLASS="indexrow"-><TD CLASS="indexentry"->$$</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3A%24%24"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->$$<</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3A%24%24%3C"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->+++</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3A%2B%2B%2B"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->+++>></TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3A%2B%2B%2B%3E%3E"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->++=</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3A%2B%2B%3D"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->+=</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3A%2B%3D"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->..></TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3A..%3E"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->.></TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3A.%3E"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->.>></TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3A.%3E%3E"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->/></TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3A%2F%3E"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->:-></TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3A%3A-%3E"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"-></</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3A%3C%2F"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->add1Attr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aadd1Attr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AaddAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addAttrInt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AaddAttrInt"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AaddAttrl"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addDTDAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AaddDTDAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addEntries</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addEntry</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addFatal</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AaddFatal"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addHeadlineToXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AaddHeadlineToXmlDoc"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addXmlPiToDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AaddXmlPiToDoc"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->allBut</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->allBut1</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->aName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#v%3AaName"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->asciiLetter</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->AssocList</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->atag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aatag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ATTLIST</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aattr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Attributes</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attrlOfDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AattrlOfDTD"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->AttrName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AAttrName"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attrNodes</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attrValue</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attrValueT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attrValueT'</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_canonicalize</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_check_namespaces</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_check_restrictions</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_collect_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_column</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_contentLength</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_default</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_default_baseuri</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_canonicalize</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_check_namespaces</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_check_restrictions</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_collect_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_issue_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_issue_warnings</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_preserve_comment</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_remove_whitespace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_use_curl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_validate</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_validate_externalRef</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_validate_include</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_encoding</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_error</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_error_log</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_help</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_ignore_encoding_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_ignore_none_xml_contents</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_indent</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_issue_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_issue_warnings</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_kind</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_line</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_mime_types</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_modifier</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_module</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_name</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_no_empty_elements</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_no_xml_pi</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_options_curl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_output_changes</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_output_encoding</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_output_file</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_output_html</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_output_xml</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_parse_by_mimetype</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_parse_html</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_parse_xml</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_peref</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_preserve_comment</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_propagate_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_proxy</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_relax_schema</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_remove_whitespace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_show_haskell</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_show_tree</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_source</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_standalone</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_status</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_strict_input</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_tagsoup</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_trace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_type</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_url</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_use_curl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_validate</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_validate_externalRef</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_validate_include</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_value</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_verbose</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_version</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_xml</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_xmlns</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->bar</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->buildUniversalName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->canonicalizeAllNodes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AcanonicalizeAllNodes"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->canonicalizeForXPath</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AcanonicalizeForXPath"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->canonicalizeTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AcanonicalizeTree"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->cardNTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#v%3AcardNTree"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->cardTree</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->cat</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Acat"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->catM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AcatM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->cdata</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Acdata"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->cDSect</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->chain</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3Achain"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->chain'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3Achain%27"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeChildren</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeNode</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->changeState</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Monad-MonadStateIO.html#v%3AchangeState"->Control.Monad.MonadStateIO</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AchangeState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeSysState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AchangeSysState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeSysStateAttrs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AchangeSysStateAttrs"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->charData</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->charData'</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->charRef</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->charRefT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkAttributeValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-AttributeValueValidation.html#v%3AcheckAttributeValue"->Text.XML.HXT.Validator.AttributeValueValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkRE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3AcheckRE"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3AcheckRE"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkResult</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AcheckResult"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkStatus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AcheckStatus"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkWellformedDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-DTDProcessing.html#v%3AcheckWellformedDoc"->Text.XML.HXT.Parser.DTDProcessing</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ChildNodes</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->childNodes</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->choice</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Achoice"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->choiceM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AchoiceM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->clearStatus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AclearStatus"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->closesHtmlTag</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.HtmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->cmt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Acmt"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->collapseAllXText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AcollapseAllXText"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->collapseXText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AcollapseXText"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->comma</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->comment</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->concRes</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CONDSECT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->containing</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Acontaining"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->containingM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AcontainingM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CONTENT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->content</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->contentWithTextDecl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->c_err</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->c_fatal</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->c_ok</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->c_warn</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->deep</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Adeep"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->deepest</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Adeepest"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->del1Attr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Adel1Attr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->delEntries</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->delEntry</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->depthNTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#v%3AdepthNTree"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->depthTree</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DOCTYPE</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->doctypedecl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->document</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->document'</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dq</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtd</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Adtd"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DTDElem</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ELEMENT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->element</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->emptyHtmlTags</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.HtmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->emptyRoot</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AemptyRoot"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->encName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->encodingDecl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ENTITY</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityCharT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityRef</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityRefT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityTokensT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityValue</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityValueT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->eq</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->equalQNameBy</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->equivQName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->equivUri</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->err</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aerr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errClass</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AerrClass"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgHandler</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AerrorMsgHandler"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgLogging</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AerrorMsgLogging"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgLoggingAndToStderr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AerrorMsgLoggingAndToStderr"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgToStderr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AerrorMsgToStderr"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->escapeXmlAttrValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AescapeXmlAttrValue"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->escapeXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AescapeXmlDoc"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->escapeXmlText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AescapeXmlText"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->etag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aetag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->fatal</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Afatal"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->foldNTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#v%3AfoldNTree"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->foldTree</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatNTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#v%3AformatNTree"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatNTreeF</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatTree</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatXmlContents</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatXmlTree</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->fromAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AfromAttrl"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->fromTreel</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AfromTreel"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->generalOptions</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getAbsolutURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetAbsolutURI"->Text.XML.HXT.Parser.XmlInput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetAttrl"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getBaseURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetBaseURI"->Text.XML.HXT.Parser.XmlInput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getChildren</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getContentLength</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetContentLength"->Text.XML.HXT.Parser.XmlInput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getDTDSubset</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-ValidationFilter.html#v%3AgetDTDSubset"->Text.XML.HXT.Validator.ValidationFilter</A->, Text.XML.HXT.Validator.Validation, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getDTDValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetDTDValue"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getErrorMsg</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetErrorMsg"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getFileContents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-ProtocolHandlerFile.html#v%3AgetFileContents"->Text.XML.HXT.Parser.ProtocolHandlerFile</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getHtmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3AgetHtmlDoc"->Text.XML.HXT.Parser.HtmlParser</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getHttpContentsNativeOrWithCurl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html#v%3AgetHttpContentsNativeOrWithCurl"->Text.XML.HXT.Parser.ProtocolHandlerHttpNativeOrCurl</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getHttpContentsWithCurl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html#v%3AgetHttpContentsWithCurl"->Text.XML.HXT.Parser.ProtocolHandlerHttpCurl</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getHttpContentsWithHttp</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html#v%3AgetHttpContentsWithHttp"->Text.XML.HXT.Parser.ProtocolHandlerHttpNative</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetName"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getNode</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getNsValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetNsValue"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getProtocolHandler</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-ProtocolHandler.html#v%3AgetProtocolHandler"->Text.XML.HXT.Parser.ProtocolHandler</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getState</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Monad-MonadStateIO.html#v%3AgetState"->Control.Monad.MonadStateIO</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getSysErrorHandler</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetSysErrorHandler"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getSysParam</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetSysParam"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getSysParamInt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetSysParamInt"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getSysParamTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetSysParamTree"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getSysParamWithDefault</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetSysParamWithDefault"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getSysState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetSysState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getTraceLevel</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AgetTraceLevel"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getUrlContents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetUrlContents"->Text.XML.HXT.Parser.XmlInput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getValidatedDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-Validation.html#v%3AgetValidatedDoc"->Text.XML.HXT.Validator.Validation</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetValue"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getWellformedDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-DTDProcessing.html#v%3AgetWellformedDoc"->Text.XML.HXT.Parser.DTDProcessing</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXCdata</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetXCdata"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXCmt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AgetXCmt"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXmlContents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetXmlContents"->Text.XML.HXT.Parser.XmlInput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXmlDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AgetXmlDocument"->Text.XML.HXT.Parser.MainFunctions</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXmlEntityContents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AgetXmlEntityContents"->Text.XML.HXT.Parser.XmlInput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->gt</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->guards</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Aguards"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->guardsM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AguardsM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->guessDocEncoding</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AguessDocEncoding"->Text.XML.HXT.Parser.XmlInput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasEntry</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->haskellRepOfXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AhaskellRepOfXmlDoc"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasLocalPart</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasLocalPart"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasNamespace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasNamespace"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasNsAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasNsAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasOption</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasOption"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasPrefix</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasPrefix"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AhasValue"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hPutXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AhPutXmlDoc"->Text.XML.HXT.Parser.XmlOutput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hPutXmlSource</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AhPutXmlSource"->Text.XML.HXT.Parser.XmlOutput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hPutXmlTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AhPutXmlTree"->Text.XML.HXT.Parser.XmlOutput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->httpPrefix</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iff</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Aiff"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ifM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AifM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->IfThen</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#t%3AIfThen"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->indentDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AindentDoc"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->initialSysState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AinitialSysState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->inputOptions</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->insertChildrenAfter</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AinsertChildrenAfter"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->insertChildrenAt</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AinsertChildrenAt"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->intValueOf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AintValueOf"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->io</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Monad-MonadStateIO.html#v%3Aio"->Control.Monad.MonadStateIO</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3Aio"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isAttlist</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisAttlist"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isAttlistOfElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisAttlistOfElement"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isAttlistParameterEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisAttlistParameterEntity"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isAttrNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisAttrNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isCondSect</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisCondSect"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDeclaredNamespace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDefaultAttrKind</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisDefaultAttrKind"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDoctype</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisDoctype"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDElemNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisDTDElemNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisDTDName"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isElemContentParamEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisElemContentParamEntity"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisElement"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isElemWithContent</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisElemWithContent"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isEmptyElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisEmptyElement"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isEmptyHtmlTag</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.HtmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisEntity"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isEnumAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisEnumAttrType"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isError</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisError"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isErrorNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisErrorNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isExternalParameterEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisExternalParameterEntity"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isFatalError</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisFatalError"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isFixedAttrKind</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisFixedAttrKind"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isIdAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisIdAttrType"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isIdRefAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisIdRefAttrType"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isInner</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isInnerHtmlTagOf</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.HtmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isInternalParameterEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisInternalParameterEntity"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isLeaf</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isMixedContentElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisMixedContentElement"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNamespaceDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3AisNamespaceDecl"->Text.XML.HXT.DOM.NamespaceFilter</A->, Text.XML.HXT.DOM.Namespace, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNameSpaceName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNCName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNotation</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisNotation"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNotationAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisNotationAttrType"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNsAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisNsAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNsTag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisNsTag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNullXName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_1</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_10</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_11</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_13</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_14</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_15</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_16</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_2</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_3</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_4</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_5</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_6</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_7</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_8</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_9</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isOf</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AisOf"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isOfAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisOfAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isOfAttrNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisOfAttrNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isOfNode</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AisOfNode"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isOfPi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisOfPi"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isOfPiNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisOfPiNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isOfTag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisOfTag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isOfTagNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisOfTagNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isOfText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisOfText"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isOfTextNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisOfTextNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isoLatin1</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isParameterEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisParameterEntity"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isPeRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisPeRef"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isPi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisPi"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isPiNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisPiNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRequiredAttrKind</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisRequiredAttrKind"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRoot</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisRoot"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRootNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisRootNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isStandaloneDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AisStandaloneDocument"->Text.XML.HXT.Parser.XmlInput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->issueErr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueErr"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->issueError</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueError"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->issueFatal</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueFatal"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->issueWarn</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AissueWarn"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isTag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisTag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isTagNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisTagNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisText"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isTextNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisTextNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isTrueValue</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnparsedEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisUnparsedEntity"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isWarning</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisWarning"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isWellformedNameSpaceName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isWellformedNSDecl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isWellformedQName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isWellformedQualifiedName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isWhiteSpace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisWhiteSpace"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisXAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXAttrNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisXAttrNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXCdata</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisXCdata"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXCdataNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisXCdataNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXCharRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisXCharRef"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXCharRefNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisXCharRefNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXCmt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisXCmt"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXCmtNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisXCmtNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisXDTD"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXDTDNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisXDTDNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXEntityRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisXEntityRef"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXEntityRefNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisXEntityRefNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXError</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisXError"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXErrorNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisXErrorNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlPi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisXmlPi"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXPi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisXPi"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXPiNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisXPiNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXTag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisXTag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXTagNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisXTagNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AisXText"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXTextNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AisXTextNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->keyword</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->keywords</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_any</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_cdata</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_default</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_empty</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_entities</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_entity</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_enumeration</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_fixed</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_id</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_idref</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_idrefs</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_ignore</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_implied</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_include</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_ndata</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_nmtoken</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_nmtokens</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_notation</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_pcdata</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_peref</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_public</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_required</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_system</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->liftF</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AliftF"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->liftMf</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AliftMf"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->localPart</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->localPart'</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->localPartOf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AlocalPartOf"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lookup1</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lookupDef</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lpar</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lt</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mapNTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#v%3AmapNTree"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->markupdecl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->matches</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3Amatches"->Text.XML.HXT.Validator.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3Amatches"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->maybeString2XText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmaybeString2XText"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->misc</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkLeaf</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkList</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#v%3AmkNode"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkNsName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkNTree</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AmkNTree"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkPrefixLocalPart</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkQAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkQAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkQAttrTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkQAttrTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkQName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkQName'</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkQTag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkQTag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkQTagTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkQTagTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRootTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkRootTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkSNsName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkTree</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXAttrTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXAttrTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXCdata</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXCdata"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXCdataTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXCdataTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXCharRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXCharRef"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXCharRefTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXCharRefTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXCmt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXCmt"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXCmtTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXCmtTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXDTD"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXDTDTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXDTDTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXEntityRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXEntityRef"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXEntityRefTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXEntityRefTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXError</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXError"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXErrorTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXErrorTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXmlDeclTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXmlDeclTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXNsAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXNsAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXNsAttrTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXNsAttrTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXNsTag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXNsTag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXNsTagTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXNsTagTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXPERefTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXPERefTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXPi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXPi"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXPiTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXPiTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXTag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXTag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXTagTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXTagTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmkXText"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXTextTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AmkXTextTree"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->modifyAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmodifyAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->modifyChildren</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AmodifyChildren"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->modifyNode</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AmodifyNode"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->modifyNode0</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AmodifyNode0"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->modifyQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmodifyQName"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->modifyText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AmodifyText"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->multi</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Amulti"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NAME</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->name</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nameOf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AnameOf"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->namePrefix</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->namePrefix'</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->names</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->namespaceOf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AnamespaceOf"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NamespaceTable</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#t%3ANamespaceTable"->Text.XML.HXT.DOM.NamespaceFilter</A->, Text.XML.HXT.DOM.Namespace, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->namespaceUri</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->namespaceUri'</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nameT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ncName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->neg</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Aneg"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->newDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AnewDocument"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->newDocument'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AnewDocument%27"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->newRoot</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AnewRoot"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->newXName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nmtoken</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nmtokens</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nmtokenT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nodesTree</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->none</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Anone"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->noneM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AnoneM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->normalizeAttributeValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-AttributeValueValidation.html#v%3AnormalizeAttributeValue"->Text.XML.HXT.Validator.AttributeValueValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->normalizeNsUri</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NOTATION</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->notContaining</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AnotContaining"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NsEnv</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->NTree</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Data Constructor)</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Type/Class)</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NTrees</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nTreeToList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#v%3AnTreeToList"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nullable</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3Anullable"->Text.XML.HXT.Validator.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nullXName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->numberLines</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AnumberLines"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->numberLinesInXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AnumberLinesInXmlDoc"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->o</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Ao"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ofDTDequals</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AofDTDequals"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->optionIsSet</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->orElse</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AorElse"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->outputOptions</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AparseDocument"->Text.XML.HXT.Parser.MainFunctions</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseHtmlContent</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.HtmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseHtmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3AparseHtmlDoc"->Text.XML.HXT.Parser.HtmlParser</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseHtmlDocument</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.HtmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseHtmlText</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.HtmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseNMToken</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlAttrValue</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlContent</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParser.html#v%3AparseXmlDoc"->Text.XML.HXT.Parser.XmlParser</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlDocEncodingSpec</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlDocument</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlDTDPart</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlEncodingSpec</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlEntityEncodingSpec</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlGeneralEntityValue</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlPart</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlText</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->PENTITY</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->PEREF</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->peReference</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->peReferenceT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->performAction</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AperformAction"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->pI</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->popen</TD-><TD CLASS="indexlinks"-><A HREF="System-PipeOpen.html#v%3Apopen"->System.PipeOpen</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->prefixOf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AprefixOf"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->printRE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3AprintRE"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3AprintRE"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AprocessAttr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AprocessAttrl"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processAttrM</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AprocessAttrM"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processBottomUp</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessBottomUp"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processBottomUpIfNot</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessBottomUpIfNot"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processBottomUpM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessBottomUpM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processChildren</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessChildren"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processChildrenM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessChildrenM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-DTDProcessing.html#v%3AprocessDTD"->Text.XML.HXT.Parser.DTDProcessing</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processGeneralEntities</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-DTDProcessing.html#v%3AprocessGeneralEntities"->Text.XML.HXT.Parser.DTDProcessing</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processTopDown</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessTopDown"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processTopDownM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessTopDownM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processTopDownUntil</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessTopDownUntil"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->prolog</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->propagateAndValidateNamespaces</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Namespace.html#v%3ApropagateAndValidateNamespaces"->Text.XML.HXT.DOM.Namespace</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->propagateNamespaceEnv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaceEnv"->Text.XML.HXT.DOM.NamespaceFilter</A->, Text.XML.HXT.DOM.Namespace, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->propagateNamespaces</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3ApropagateNamespaces"->Text.XML.HXT.DOM.NamespaceFilter</A->, Text.XML.HXT.DOM.Namespace, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->pubidLiteral</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->putXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AputXmlDoc"->Text.XML.HXT.Parser.XmlOutput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->putXmlDocToFile</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AputXmlDocToFile"->Text.XML.HXT.Parser.XmlOutput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->putXmlDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AputXmlDocument"->Text.XML.HXT.Parser.MainFunctions</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->putXmlSource</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AputXmlSource"->Text.XML.HXT.Parser.XmlOutput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->putXmlTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AputXmlTree"->Text.XML.HXT.Parser.XmlOutput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->qattr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aqattr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->qetag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aqetag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->QName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->qName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->qtag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aqtag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->qualifiedName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->quoted</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#t%3ARE"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#t%3ARE"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->reference</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->referenceT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->relaxNamespace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->relaxOptions</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeAllComment</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AremoveAllComment"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeAllWhiteSpace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AremoveAllWhiteSpace"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeComment</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AremoveComment"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeDocWhiteSpace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AremoveDocWhiteSpace"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->removeDoublicateDefs</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-DTDValidation.html#v%3AremoveDoublicateDefs"->Text.XML.HXT.Validator.DTDValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-ValidationFilter.html#v%3AremoveDoublicateDefs"->Text.XML.HXT.Validator.ValidationFilter</A->, Text.XML.HXT.Validator.Validation, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeEncodingSpec</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeOptions</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeWhiteSpace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AremoveWhiteSpace"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->replaceAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AreplaceAttrl"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->replaceChildren</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AreplaceChildren"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->replaceNode</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AreplaceNode"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->replaceQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AreplaceQName"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_ALT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3ARE_ALT"->Text.XML.HXT.Validator.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_alt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3Are_alt"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3Are_alt"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_DOT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3ARE_DOT"->Text.XML.HXT.Validator.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_dot</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3Are_dot"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3Are_dot"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_OPT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3ARE_OPT"->Text.XML.HXT.Validator.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_opt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3Are_opt"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3Are_opt"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_PLUS</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3ARE_PLUS"->Text.XML.HXT.Validator.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_plus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3Are_plus"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3Are_plus"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_REP</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3ARE_REP"->Text.XML.HXT.Validator.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_rep</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3Are_rep"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3Are_rep"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_SEQ</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3ARE_SEQ"->Text.XML.HXT.Validator.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_seq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3Are_seq"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3Are_seq"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_SYM</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3ARE_SYM"->Text.XML.HXT.Validator.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_sym</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3Are_sym"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3Are_sym"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_UNIT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3ARE_UNIT"->Text.XML.HXT.Validator.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_unit</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3Are_unit"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3Are_unit"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_ZERO</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3ARE_ZERO"->Text.XML.HXT.Validator.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_zero</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-RE.html#v%3Are_zero"->Text.XML.HXT.Validator.RE</A->, <A HREF="Text-XML-HXT-Validator-XmlRE.html#v%3Are_zero"->Text.XML.HXT.Validator.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rootTag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3ArootTag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rpar</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->run</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Monad-MonadStateIO.html#v%3Arun"->Control.Monad.MonadStateIO</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3Arun"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->run'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3Arun%27"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->run0</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3Arun0"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->runHtmlParser</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3ArunHtmlParser"->Text.XML.HXT.Parser.HtmlParser</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->runInLocalURIContext</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3ArunInLocalURIContext"->Text.XML.HXT.Parser.XmlInput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->runInNewURIContext</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3ArunInNewURIContext"->Text.XML.HXT.Parser.XmlInput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->satisfies</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Asatisfies"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sattr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Asattr"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sDDecl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->selectOptions</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->semi</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->separator</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->seqF</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AseqF"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->seqM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AseqM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setBaseURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlInput.html#v%3AsetBaseURI"->Text.XML.HXT.Parser.XmlInput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setChildren</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setDefaultURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-DefaultURI.html#v%3AsetDefaultURI"->Text.XML.HXT.Parser.DefaultURI</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setErrorMsgLevel</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetErrorMsgLevel"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setLocalPart'</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setNamePrefix'</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setNamespace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setNamespaceUri'</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setNode</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->setState</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Monad-MonadStateIO.html#v%3AsetState"->Control.Monad.MonadStateIO</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setStatus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetStatus"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setSysErrorHandler</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysErrorHandler"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setSysParam</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysParam"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setSysParamInt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysParamInt"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setSysParamTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysParamTree"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setSysState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSysState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setSystemParams</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetSystemParams"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setTraceLevel</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsetTraceLevel"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->showElemType</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeFunctions, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->showOptions</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->showXCharRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AshowXCharRef"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->showXEntityRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AshowXEntityRef"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->showXErrors</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AshowXErrors"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->showXText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AshowXText"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->singleChar</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->singleChars</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->singleCharsT</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->skipS</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->skipS0</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sPace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sPace0</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->spi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Aspi"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sq</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Astag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->StateIO</TD-><TD CLASS="indexlinks"-><A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"->Control.Monad.MonadStateIO</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->statusOk</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AstatusOk"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->STIO</TD-><TD CLASS="indexlinks"-><A HREF="Control-Monad-MonadStateIO.html#v%3ASTIO"->Control.Monad.MonadStateIO</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stringProtocol</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->substChildren</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AsubstChildren"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->substHtmlEntities</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-HtmlParser.html#v%3AsubstHtmlEntities"->Text.XML.HXT.Parser.HtmlParser</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->substXmlEntities</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParser.html#v%3AsubstXmlEntities"->Text.XML.HXT.Parser.XmlParser</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->SysState</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3ASysState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sysState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsysState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->SysStateAttrs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#t%3ASysStateAttrs"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sysStateAttrs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsysStateAttrs"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sysStateErrorHandler</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AsysStateErrorHandler"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->systemLiteral</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->tag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Atag"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TagName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3ATagName"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->textDecl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->textOfXNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AtextOfXNode"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TFilter</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#t%3ATFilter"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->this</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Athis"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->thisM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AthisM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->thisNode</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->tName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#v%3AtName"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->toAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AtoAttrl"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->toNsEnv</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->toTreel</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AtoTreel"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->trace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3Atrace"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceCmd</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AtraceCmd"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceF</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AtraceF"->Text.XML.HXT.Parser.XmlOutput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceMsg</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AtraceMsg"->Text.XML.HXT.Parser.XmlOutput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceSource</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AtraceSource"->Text.XML.HXT.Parser.XmlOutput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AtraceState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html#v%3AtraceTree"->Text.XML.HXT.Parser.XmlOutput</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->trans</TD-><TD CLASS="indexlinks"-><A HREF="Control-Monad-MonadStateIO.html#v%3Atrans"->Control.Monad.MonadStateIO</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transfAllCdata</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AtransfAllCdata"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transfAllCdataEscaped</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AtransfAllCdataEscaped"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transfAllCharRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AtransfAllCharRef"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transfCdata</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AtransfCdata"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transfCdataEscaped</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AtransfCdataEscaped"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transfCharRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AtransfCharRef"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferDefaultURI</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferEncoding</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferMessage</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferMimeType</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferPrefix</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferProtocol</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferStatus</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferURI</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferVersion</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->transform</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-DocTransformation.html#v%3Atransform"->Text.XML.HXT.Validator.DocTransformation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-ValidationFilter.html#v%3Atransform"->Text.XML.HXT.Validator.ValidationFilter</A->, Text.XML.HXT.Validator.Validation, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->trcState</TD-><TD CLASS="indexlinks"-><A HREF="Control-Monad-MonadStateIO.html#v%3AtrcState"->Control.Monad.MonadStateIO</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Tree</TD-><TD CLASS="indexlinks"->Data.Tree.NTree.Filter, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->treeRepOfXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AtreeRepOfXmlDoc"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TSFilter</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#t%3ATSFilter"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->txt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Atxt"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->t_root</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->t_xml</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ucs2</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unicodeString</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->universalName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->universalNameOf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AuniversalNameOf"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->universalUri</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unparseXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-EditFilters.html#v%3AunparseXmlDoc"->Text.XML.HXT.DOM.EditFilters</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->usAscii</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->userState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AuserState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf16</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf16be</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf16le</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf8</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validate</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-ValidationFilter.html#v%3Avalidate"->Text.XML.HXT.Validator.ValidationFilter</A->, Text.XML.HXT.Validator.Validation, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validate1Namespaces</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3Avalidate1Namespaces"->Text.XML.HXT.DOM.NamespaceFilter</A->, Text.XML.HXT.DOM.Namespace, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->validateDoc</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-DocValidation.html#v%3AvalidateDoc"->Text.XML.HXT.Validator.DocValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-ValidationFilter.html#v%3AvalidateDoc"->Text.XML.HXT.Validator.ValidationFilter</A->, Text.XML.HXT.Validator.Validation, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->validateDTD</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-DTDValidation.html#v%3AvalidateDTD"->Text.XML.HXT.Validator.DTDValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-ValidationFilter.html#v%3AvalidateDTD"->Text.XML.HXT.Validator.ValidationFilter</A->, Text.XML.HXT.Validator.Validation, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateIds</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Validator-IdValidation.html#v%3AvalidateIds"->Text.XML.HXT.Validator.IdValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateNamespaces</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html#v%3AvalidateNamespaces"->Text.XML.HXT.DOM.NamespaceFilter</A->, Text.XML.HXT.DOM.Namespace, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->valueOf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3AvalueOf"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->valueOfDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AvalueOfDTD"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->versionInfo</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->versionNum</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->versionOptions</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_0</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_1</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_any</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_children</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_choice</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_empty</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_mixed</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_no</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_null</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_option</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_pcdata</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_plus</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_seq</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_star</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_yes</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->warn</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html#v%3Awarn"->Text.XML.HXT.DOM.XmlTreeFilter</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->when</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Awhen"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->whenM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AwhenM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->whenNot</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AwhenNot"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->whenNotM</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AwhenNotM"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->writeDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-MainFunctions.html#v%3AwriteDocument"->Text.XML.HXT.Parser.MainFunctions</A->, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XAttr</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xattr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3Axattr"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XCdata</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XCharRef</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XCmt</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xcmt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3Axcmt"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XDTD</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XEntityRef</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xerr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3Axerr"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XError</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlContentModelToString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AxmlContentModelToString"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xMLDecl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xMLDecl'</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlFilter</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlFilter"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlNamespace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlNamespaceXName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlNodeSet</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlnsNamespace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlnsNamespaceXName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlnsQN</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlnsXName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlSFilter</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html#t%3AXmlSFilter"->Text.XML.HXT.DOM.XmlTreeTypes</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->XmlState</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#v%3AXmlState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlStateFilter</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXmlStateFilter"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlTree</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlTrees</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlTreesToString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AxmlTreesToString"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlTreesToText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3AxmlTreesToText"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlXName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XNode</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XNS</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPi</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xread</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Parser.XmlParser, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xshow</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeFunctions, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlState.html#t%3AXState"->Text.XML.HXT.DOM.XmlState</A->, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XTag</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xtag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3Axtag"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XText</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xtext</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3Axtext"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xwarn</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html#v%3Axwarn"->Text.XML.HXT.DOM.XmlTreeFunctions</A->, Text.XML.HXT.DOM.XmlTree, Text.XML.HXT.DOM, Text.XML.HXT.Parser</TD-></TR-></TABLE-></TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/haddock-util.js
@@ -1,133 +0,0 @@-// 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";- }-}---var max_results = 75; // 50 is not enough to search for map in the base libraries-var shown_range = null;-var last_search = null;--function quick_search()-{- perform_search(false);-}--function full_search()-{- perform_search(true);-}---function perform_search(full)-{- var text = document.getElementById("searchbox").value.toLowerCase();- if (text == last_search && !full) return;- last_search = text;- - var table = document.getElementById("indexlist");- var status = document.getElementById("searchmsg");- var children = table.firstChild.childNodes;- - // first figure out the first node with the prefix- var first = bisect(-1);- var last = (first == -1 ? -1 : bisect(1));-- if (first == -1)- {- table.className = "";- status.innerHTML = "No results found, displaying all";- }- else if (first == 0 && last == children.length - 1)- {- table.className = "";- status.innerHTML = "";- }- else if (last - first >= max_results && !full)- {- table.className = "";- status.innerHTML = "More than " + max_results + ", press Search to display";- }- else- {- // decide what you need to clear/show- if (shown_range)- setclass(shown_range[0], shown_range[1], "indexrow");- setclass(first, last, "indexshow");- shown_range = [first, last];- table.className = "indexsearch";- status.innerHTML = "";- }-- - function setclass(first, last, status)- {- for (var i = first; i <= last; i++)- {- children[i].className = status;- }- }- - - // do a binary search, treating 0 as ...- // return either -1 (no 0's found) or location of most far match- function bisect(dir)- {- var first = 0, finish = children.length - 1;- var mid, success = false;-- while (finish - first > 3)- {- mid = Math.floor((finish + first) / 2);-- var i = checkitem(mid);- if (i == 0) i = dir;- if (i == -1)- finish = mid;- else- first = mid;- }- var a = (dir == 1 ? first : finish);- var b = (dir == 1 ? finish : first);- for (var i = b; i != a - dir; i -= dir)- {- if (checkitem(i) == 0) return i;- }- return -1;- } - - - // from an index, decide what the result is- // 0 = match, -1 is lower, 1 is higher- function checkitem(i)- {- var s = getitem(i).toLowerCase().substr(0, text.length);- if (s == text) return 0;- else return (s > text ? -1 : 1);- }- - - // from an index, get its string- // this abstracts over alternates- function getitem(i)- {- for ( ; i >= 0; i--)- {- var s = children[i].firstChild.firstChild.data;- if (s.indexOf(' ') == -1)- return s;- }- return ""; // should never be reached- }-}
− doc/hxt-filter/haddock.css
@@ -1,267 +0,0 @@-/* -------- 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-}--TABLE.indexsearch TR.indexrow {- display: none;-}-TABLE.indexsearch TR.indexshow {- display: table-row;-}--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- }-
− doc/hxt-filter/haskell_icon.gif
binary file changed (911 → absent bytes)
− doc/hxt-filter/hxt-filter.haddock
binary file changed (328870 → absent bytes)
− doc/hxt-filter/index.html
@@ -1,571 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-<!--Rendered using the Haskell Html Library v0.2-->-<HTML-><HEAD-><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"-><TITLE->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-><TD CLASS="topbut"-><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"->hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD-></TR-><TR-><TD CLASS="doc"->The Haskell XML Toolbox bases on the ideas of HaXml and HXML. This package is a compatibitlity package for old software working with the filter approach like in HaXml. For new projects it's recomended to use the arrow based library (hxt).-</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"->Control</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"->Monad</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="Control-Monad-MonadStateIO.html"->Control.Monad.MonadStateIO</A-></TD-><TD-></TD-><TD-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD STYLE="width: 50em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:2')" ALT="show/hide"->Data</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: 48em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:3')" ALT="show/hide"->Tree</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="width: 46em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:4')" ALT="show/hide"->NTree</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: 44em"-><A HREF="Data-Tree-NTree-Filter.html"->Data.Tree.NTree.Filter</A-></TD-><TD-></TD-><TD-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD STYLE="width: 50em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:5')" ALT="show/hide"->System</TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3"-><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:5" STYLE="display:block;"-><TR-><TD STYLE="padding-left: 1.25em;width: 48em"-><A HREF="System-PipeOpen.html"->System.PipeOpen</A-></TD-><TD-></TD-><TD-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD STYLE="width: 50em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:6')" 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:6" STYLE="display:block;"-><TR-><TD STYLE="width: 48em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:7')" 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:7" STYLE="display:block;"-><TR-><TD STYLE="width: 46em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:8')" ALT="show/hide"->HXT</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:8" STYLE="display:block;"-><TR-><TD STYLE="width: 44em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:9')" ALT="show/hide"-><A HREF="Text-XML-HXT-DOM.html"->Text.XML.HXT.DOM</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:9" STYLE="display:block;"-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-DOM-EditFilters.html"->Text.XML.HXT.DOM.EditFilters</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-DOM-Namespace.html"->Text.XML.HXT.DOM.Namespace</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-DOM-NamespaceFilter.html"->Text.XML.HXT.DOM.NamespaceFilter</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-DOM-XmlState.html"->Text.XML.HXT.DOM.XmlState</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-DOM-XmlTree.html"->Text.XML.HXT.DOM.XmlTree</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-DOM-XmlTreeFilter.html"->Text.XML.HXT.DOM.XmlTreeFilter</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-DOM-XmlTreeFunctions.html"->Text.XML.HXT.DOM.XmlTreeFunctions</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-DOM-XmlTreeTypes.html"->Text.XML.HXT.DOM.XmlTreeTypes</A-></TD-><TD-></TD-><TD-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD STYLE="width: 44em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:10')" ALT="show/hide"-><A HREF="Text-XML-HXT-Parser.html"->Text.XML.HXT.Parser</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:10" STYLE="display:block;"-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-DTDProcessing.html"->Text.XML.HXT.Parser.DTDProcessing</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-DefaultURI.html"->Text.XML.HXT.Parser.DefaultURI</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-HtmlParser.html"->Text.XML.HXT.Parser.HtmlParser</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-MainFunctions.html"->Text.XML.HXT.Parser.MainFunctions</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-ProtocolHandler.html"->Text.XML.HXT.Parser.ProtocolHandler</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-ProtocolHandlerFile.html"->Text.XML.HXT.Parser.ProtocolHandlerFile</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html"->Text.XML.HXT.Parser.ProtocolHandlerHttpCurl</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html"->Text.XML.HXT.Parser.ProtocolHandlerHttpNative</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html"->Text.XML.HXT.Parser.ProtocolHandlerHttpNativeOrCurl</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-XmlInput.html"->Text.XML.HXT.Parser.XmlInput</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-XmlOutput.html"->Text.XML.HXT.Parser.XmlOutput</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Parser-XmlParser.html"->Text.XML.HXT.Parser.XmlParser</A-></TD-><TD-></TD-><TD-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD STYLE="width: 44em"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:11')" ALT="show/hide"->Validator</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:11" STYLE="display:block;"-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Validator-AttributeValueValidation.html"->Text.XML.HXT.Validator.AttributeValueValidation</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Validator-DTDValidation.html"->Text.XML.HXT.Validator.DTDValidation</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Validator-DocTransformation.html"->Text.XML.HXT.Validator.DocTransformation</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Validator-DocValidation.html"->Text.XML.HXT.Validator.DocValidation</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Validator-IdValidation.html"->Text.XML.HXT.Validator.IdValidation</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Validator-RE.html"->Text.XML.HXT.Validator.RE</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Validator-Validation.html"->Text.XML.HXT.Validator.Validation</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Validator-ValidationFilter.html"->Text.XML.HXT.Validator.ValidationFilter</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-Validator-XmlRE.html"->Text.XML.HXT.Validator.XmlRE</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 2.3.0</TD-></TR-></TABLE-></BODY-></HTML->
− doc/hxt-filter/minus.gif
binary file changed (56 → absent bytes)
− doc/hxt-filter/plus.gif
binary file changed (59 → absent bytes)
− doc/hxt-filter/src/Control-Monad-MonadStateIO.html
@@ -1,107 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- general usefull state monad for a local state and IO</span>-<a name="line-3"></a><span class='comment'>--</span>-<a name="line-4"></a><span class='comment'>-- This module is used for threading a state and io actions</span>-<a name="line-5"></a><span class='comment'>-- through a computation.</span>-<a name="line-6"></a><span class='comment'>-- Here the monad is constructed by hand.</span>-<a name="line-7"></a><span class='comment'>-- It could easily be refactored with the use of the monad transformer library.</span>-<a name="line-8"></a>-<a name="line-9"></a>-<a name="line-10"></a><span class='keyword'>module</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span><span class='varop'>.</span><span class='conid'>MonadStateIO</span>-<a name="line-11"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span><span class='varop'>.</span><span class='conid'>MonadStateIO</span>-<a name="line-12"></a> <span class='layout'>)</span>-<a name="line-13"></a><span class='keyword'>where</span>-<a name="line-14"></a>-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-18"></a>-<a name="line-19"></a><a name="StateIO"></a><span class='keyword'>newtype</span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>res</span> <span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>{</span> <span class='varid'>trans</span> <span class='keyglyph'>::</span> <span class='varid'>state</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>state</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-20"></a>-<a name="line-21"></a><span class='keyword'>instance</span> <span class='conid'>Monad</span> <span class='layout'>(</span><span class='conid'>StateIO</span> <span class='varid'>state</span><span class='layout'>)</span> <span class='keyword'>where</span>-<a name="line-22"></a> <span class='varid'>return</span> <span class='varid'>v</span>-<a name="line-23"></a> <span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>v</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-24"></a>-<a name="line-25"></a> <span class='conid'>STIO</span> <span class='varid'>cmd</span> <span class='varop'>>>=</span> <span class='varid'>f</span>-<a name="line-26"></a> <span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>s</span> <span class='keyglyph'>-></span>-<a name="line-27"></a> <span class='varid'>cmd</span> <span class='varid'>s</span> <span class='varop'>>>=</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>rl</span><span class='layout'>,</span> <span class='varid'>s'</span><span class='layout'>)</span> <span class='keyglyph'>-></span>-<a name="line-28"></a> <span class='layout'>(</span><span class='varid'>trans</span> <span class='varop'>.</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varid'>rl</span> <span class='varid'>s'</span>-<a name="line-29"></a> <span class='layout'>)</span>-<a name="line-30"></a>-<a name="line-31"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-32"></a><span class='comment'>-- |</span>-<a name="line-33"></a><span class='comment'>-- lift IO command to 'StateIO'</span>-<a name="line-34"></a>-<a name="line-35"></a><a name="io"></a><span class='definition'>io</span> <span class='keyglyph'>::</span> <span class='conid'>IO</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>a</span>-<a name="line-36"></a><span class='definition'>io</span> <span class='varid'>iocmd</span>-<a name="line-37"></a> <span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>s</span> <span class='keyglyph'>-></span>-<a name="line-38"></a> <span class='keyword'>do</span>-<a name="line-39"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>iocmd</span>-<a name="line-40"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-41"></a> <span class='layout'>)</span>-<a name="line-42"></a>-<a name="line-43"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-44"></a>-<a name="line-45"></a><span class='comment'>-- |</span>-<a name="line-46"></a><span class='comment'>-- state inspection command: a \"show\"-like function is applied to the state</span>-<a name="line-47"></a><span class='comment'>-- and the result is written to stderr.</span>-<a name="line-48"></a>-<a name="line-49"></a><a name="trcState"></a><span class='definition'>trcState</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>state</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='conid'>()</span>-<a name="line-50"></a><span class='definition'>trcState</span> <span class='varid'>fct</span>-<a name="line-51"></a> <span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>s</span> <span class='keyglyph'>-></span>-<a name="line-52"></a> <span class='keyword'>do</span>-<a name="line-53"></a> <span class='varid'>hPutStr</span> <span class='varid'>stderr</span> <span class='varop'>$</span> <span class='varid'>fct</span> <span class='varid'>s</span>-<a name="line-54"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>()</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-55"></a> <span class='layout'>)</span>-<a name="line-56"></a>-<a name="line-57"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-58"></a><span class='comment'>--</span>-<a name="line-59"></a><span class='comment'>-- state access commands</span>-<a name="line-60"></a>-<a name="line-61"></a><span class='comment'>-- |</span>-<a name="line-62"></a><span class='comment'>-- change the state with a given function and return the new state</span>-<a name="line-63"></a>-<a name="line-64"></a><a name="changeState"></a><span class='definition'>changeState</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>state</span> <span class='keyglyph'>-></span> <span class='varid'>state</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>state</span>-<a name="line-65"></a><span class='definition'>changeState</span> <span class='varid'>f</span>-<a name="line-66"></a> <span class='keyglyph'>=</span> <span class='conid'>STIO</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>s</span> <span class='keyglyph'>-></span>-<a name="line-67"></a> <span class='keyword'>let</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>s</span>-<a name="line-68"></a> <span class='keyword'>in</span>-<a name="line-69"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='varid'>s'</span><span class='layout'>)</span>-<a name="line-70"></a> <span class='layout'>)</span>-<a name="line-71"></a>-<a name="line-72"></a><span class='comment'>-- |</span>-<a name="line-73"></a><span class='comment'>-- set the state</span>-<a name="line-74"></a>-<a name="line-75"></a><a name="setState"></a><span class='definition'>setState</span> <span class='keyglyph'>::</span> <span class='varid'>state</span> <span class='keyglyph'>-></span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>state</span>-<a name="line-76"></a><span class='definition'>setState</span> <span class='varid'>s</span>-<a name="line-77"></a> <span class='keyglyph'>=</span> <span class='varid'>changeState</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>)</span>-<a name="line-78"></a>-<a name="line-79"></a><span class='comment'>-- |</span>-<a name="line-80"></a><span class='comment'>-- read the state</span>-<a name="line-81"></a>-<a name="line-82"></a><a name="getState"></a><span class='definition'>getState</span> <span class='keyglyph'>::</span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>state</span>-<a name="line-83"></a><span class='definition'>getState</span>-<a name="line-84"></a> <span class='keyglyph'>=</span> <span class='varid'>changeState</span> <span class='varid'>id</span>-<a name="line-85"></a>-<a name="line-86"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-87"></a><span class='comment'>-- |</span>-<a name="line-88"></a><span class='comment'>-- run a 'StateIO' command with an initial state</span>-<a name="line-89"></a>-<a name="line-90"></a><a name="run"></a><span class='definition'>run</span> <span class='keyglyph'>::</span> <span class='varid'>state</span> <span class='keyglyph'>-></span> <span class='conid'>StateIO</span> <span class='varid'>state</span> <span class='varid'>res</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='varid'>res</span>-<a name="line-91"></a><span class='definition'>run</span> <span class='varid'>initialState</span> <span class='layout'>(</span><span class='conid'>STIO</span> <span class='varid'>cmd</span><span class='layout'>)</span>-<a name="line-92"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-93"></a> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='sel'>_finalState</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>cmd</span> <span class='varid'>initialState</span>-<a name="line-94"></a> <span class='varid'>return</span> <span class='varid'>res</span>-<a name="line-95"></a>-<a name="line-96"></a>-<a name="line-97"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Data-Tree-NTree-Filter.html
@@ -1,922 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a>-<a name="line-3"></a><span class='comment'>{- |-<a name="line-4"></a> Module : Data.Tree.NTree.Filter-<a name="line-5"></a> Copyright : Copyright (C) 2005 Uwe Schmidt-<a name="line-6"></a> License : MIT-<a name="line-7"></a>-<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe\@fh-wedel.de)-<a name="line-9"></a> Stability : stable-<a name="line-10"></a> Portability: portable-<a name="line-11"></a>-<a name="line-12"></a> Filter for n-ary tree structure with filter combinators-<a name="line-13"></a> copied and modified from HaXml (<<a href="http://www.cs.york.ac.uk/fp/HaXml/">http://www.cs.york.ac.uk/fp/HaXml/</a>>)-<a name="line-14"></a>-<a name="line-15"></a> Similar but more flexible functions for tree processing are defined in the-<a name="line-16"></a> arrow classes "Control.Arrow.ArrowList", "Control.Arrow.ArrowIf", "Control.Arrow.ArrowTree" and "Control.Arrow.ArrowState".-<a name="line-17"></a> For new applications, especially for XML processing, it's recommended to use the arrow interface-<a name="line-18"></a> "Text.XML.HXT.Arrow" instead of this filter approach as part of the api "Text.XML.HXT.Parser"-<a name="line-19"></a>-<a name="line-20"></a>-}</span>-<a name="line-21"></a>-<a name="line-22"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-23"></a>-<a name="line-24"></a><span class='keyword'>module</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Tree</span><span class='varop'>.</span><span class='conid'>NTree</span><span class='varop'>.</span><span class='conid'>Filter</span>-<a name="line-25"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Tree</span><span class='varop'>.</span><span class='conid'>NTree</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>-<a name="line-26"></a> <span class='layout'>,</span> <span class='conid'>TFilter</span>-<a name="line-27"></a> <span class='layout'>,</span> <span class='conid'>TSFilter</span>-<a name="line-28"></a> <span class='layout'>,</span> <span class='varid'>satisfies</span>-<a name="line-29"></a>-<a name="line-30"></a> <span class='comment'>-- * Filter</span>-<a name="line-31"></a> <span class='layout'>,</span> <span class='varid'>none</span> <span class='comment'>-- simple filter</span>-<a name="line-32"></a> <span class='layout'>,</span> <span class='varid'>this</span>-<a name="line-33"></a>-<a name="line-34"></a> <span class='layout'>,</span> <span class='varid'>isOf</span>-<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>isOfNode</span> <span class='comment'>-- predicate filter</span>-<a name="line-36"></a>-<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>mkNTree</span> <span class='comment'>-- contructor filter</span>-<a name="line-38"></a>-<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>replaceNode</span> <span class='comment'>-- simple editing</span>-<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>replaceChildren</span>-<a name="line-41"></a>-<a name="line-42"></a> <span class='layout'>,</span> <span class='varid'>modifyNode</span>-<a name="line-43"></a> <span class='layout'>,</span> <span class='varid'>modifyNode0</span>-<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>modifyChildren</span>-<a name="line-45"></a> <span class='layout'>,</span> <span class='varid'>substChildren</span>-<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>processChildren</span> <span class='comment'>-- filter combinators</span>-<a name="line-47"></a>-<a name="line-48"></a> <span class='layout'>,</span> <span class='varid'>o</span>-<a name="line-49"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>.></span><span class='layout'>)</span>-<a name="line-50"></a> <span class='layout'>,</span> <span class='varid'>seqF</span>-<a name="line-51"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>..></span><span class='layout'>)</span>-<a name="line-52"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>+++</span><span class='layout'>)</span>-<a name="line-53"></a> <span class='layout'>,</span> <span class='varid'>cat</span>-<a name="line-54"></a>-<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>orElse</span> <span class='comment'>-- choices</span>-<a name="line-56"></a> <span class='layout'>,</span> <span class='varid'>iff</span> <span class='comment'>-- if then else filter</span>-<a name="line-57"></a> <span class='layout'>,</span> <span class='varid'>choice</span>-<a name="line-58"></a> <span class='layout'>,</span> <span class='conid'>IfThen</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-59"></a> <span class='layout'>,</span> <span class='varid'>when</span>-<a name="line-60"></a> <span class='layout'>,</span> <span class='varid'>whenNot</span>-<a name="line-61"></a> <span class='layout'>,</span> <span class='varid'>guards</span>-<a name="line-62"></a> <span class='layout'>,</span> <span class='varid'>neg</span> <span class='comment'>-- negation</span>-<a name="line-63"></a> <span class='layout'>,</span> <span class='varid'>containing</span> <span class='comment'>-- previous: with, but with is keyword in haskell extensions</span>-<a name="line-64"></a> <span class='layout'>,</span> <span class='varid'>notContaining</span> <span class='comment'>-- previous: without</span>-<a name="line-65"></a>-<a name="line-66"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>/></span><span class='layout'>)</span> <span class='comment'>-- selectors</span>-<a name="line-67"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'></</span><span class='layout'>)</span>-<a name="line-68"></a> <span class='layout'>,</span> <span class='varid'>deep</span> <span class='comment'>-- recursive search</span>-<a name="line-69"></a> <span class='layout'>,</span> <span class='varid'>deepest</span>-<a name="line-70"></a> <span class='layout'>,</span> <span class='varid'>multi</span>-<a name="line-71"></a> <span class='layout'>,</span> <span class='varid'>processBottomUp</span> <span class='comment'>-- recursive editing</span>-<a name="line-72"></a> <span class='layout'>,</span> <span class='varid'>processBottomUpIfNot</span>-<a name="line-73"></a> <span class='layout'>,</span> <span class='varid'>processTopDown</span>-<a name="line-74"></a> <span class='layout'>,</span> <span class='varid'>processTopDownUntil</span>-<a name="line-75"></a> <span class='layout'>,</span> <span class='varid'>insertChildrenAt</span>-<a name="line-76"></a> <span class='layout'>,</span> <span class='varid'>insertChildrenAfter</span>-<a name="line-77"></a>-<a name="line-78"></a> <span class='comment'>-- * Monadic Filter</span>-<a name="line-79"></a> <span class='layout'>,</span> <span class='varid'>thisM</span> <span class='comment'>-- monadic filter</span>-<a name="line-80"></a> <span class='layout'>,</span> <span class='varid'>noneM</span>-<a name="line-81"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>.>></span><span class='layout'>)</span> <span class='comment'>-- monadic composition</span>-<a name="line-82"></a> <span class='layout'>,</span> <span class='varid'>seqM</span> <span class='comment'>-- generalisation of .>></span>-<a name="line-83"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>+++>></span><span class='layout'>)</span> <span class='comment'>-- monadic parallel combination, monadic +++</span>-<a name="line-84"></a> <span class='layout'>,</span> <span class='varid'>catM</span> <span class='comment'>-- monadic form of cat</span>-<a name="line-85"></a> <span class='layout'>,</span> <span class='varid'>ifM</span> <span class='comment'>-- monadic if then else</span>-<a name="line-86"></a> <span class='layout'>,</span> <span class='varid'>choiceM</span> <span class='comment'>-- monadic choice</span>-<a name="line-87"></a> <span class='layout'>,</span> <span class='varid'>whenM</span> <span class='comment'>-- special monadic ifs</span>-<a name="line-88"></a> <span class='layout'>,</span> <span class='varid'>whenNotM</span>-<a name="line-89"></a> <span class='layout'>,</span> <span class='varid'>guardsM</span>-<a name="line-90"></a> <span class='layout'>,</span> <span class='varid'>containingM</span>-<a name="line-91"></a> <span class='layout'>,</span> <span class='varid'>processChildrenM</span> <span class='comment'>-- monadic versions of recursive editing</span>-<a name="line-92"></a> <span class='layout'>,</span> <span class='varid'>processTopDownM</span>-<a name="line-93"></a> <span class='layout'>,</span> <span class='varid'>processBottomUpM</span>-<a name="line-94"></a> <span class='layout'>,</span> <span class='varid'>liftMf</span> <span class='comment'>-- lift a normal filter to a monadic filter</span>-<a name="line-95"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>$$</span><span class='layout'>)</span> <span class='comment'>-- apply a filter to a list</span>-<a name="line-96"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>$$<</span><span class='layout'>)</span> <span class='comment'>-- apply a monad filter to a list</span>-<a name="line-97"></a> <span class='layout'>,</span> <span class='varid'>performAction</span> <span class='comment'>-- run a command within a filter</span>-<a name="line-98"></a> <span class='layout'>)</span>-<a name="line-99"></a>-<a name="line-100"></a><span class='keyword'>where</span>-<a name="line-101"></a>-<a name="line-102"></a>-<a name="line-103"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Tree</span><span class='varop'>.</span><span class='conid'>NTree</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>-<a name="line-104"></a>-<a name="line-105"></a><span class='keyword'>infixl</span> <span class='num'>6</span> <span class='varop'>`containing`</span><span class='layout'>,</span> <span class='varop'>`notContaining`</span><span class='layout'>,</span> <span class='varop'>`containingM`</span>-<a name="line-106"></a><span class='keyword'>infixr</span> <span class='num'>5</span> <span class='varop'>`o`</span><span class='layout'>,</span> <span class='varop'>+++</span><span class='layout'>,</span> <span class='varop'>+++>></span>-<a name="line-107"></a><span class='keyword'>infixl</span> <span class='num'>5</span> <span class='varop'>/></span><span class='layout'>,</span> <span class='varop'></</span><span class='layout'>,</span> <span class='varop'>`orElse`</span><span class='layout'>,</span> <span class='varop'>.></span><span class='layout'>,</span> <span class='varop'>..></span><span class='layout'>,</span> <span class='varop'>.>></span>-<a name="line-108"></a><span class='keyword'>infixr</span> <span class='num'>4</span> <span class='varop'>`when`</span><span class='layout'>,</span> <span class='varop'>`whenNot`</span><span class='layout'>,</span> <span class='varop'>`guards`</span><span class='layout'>,</span> <span class='varop'>`whenM`</span><span class='layout'>,</span> <span class='varop'>`whenNotM`</span><span class='layout'>,</span> <span class='varop'>`guardsM`</span>-<a name="line-109"></a><span class='keyword'>infixr</span> <span class='num'>3</span> <span class='conop'>:-></span>-<a name="line-110"></a><span class='keyword'>infixr</span> <span class='num'>0</span> <span class='varop'>$$</span><span class='layout'>,</span> <span class='varop'>$$<</span>-<a name="line-111"></a>-<a name="line-112"></a><span class='comment'>-- |</span>-<a name="line-113"></a><span class='comment'>-- tree filter type: a function mapping a tree onto a list of trees</span>-<a name="line-114"></a><span class='comment'>--</span>-<a name="line-115"></a><span class='comment'>-- filter can be used in various ways, as predicates, selectors, transformers, ...</span>-<a name="line-116"></a>-<a name="line-117"></a><a name="TFilter"></a><span class='keyword'>type</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>NTree</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>NTrees</span> <span class='varid'>node</span>-<a name="line-118"></a>-<a name="line-119"></a><span class='comment'>-- |</span>-<a name="line-120"></a><span class='comment'>-- a filter for sequences</span>-<a name="line-121"></a>-<a name="line-122"></a><a name="TSFilter"></a><span class='keyword'>type</span> <span class='conid'>TSFilter</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>NTrees</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>NTrees</span> <span class='varid'>node</span>-<a name="line-123"></a>-<a name="line-124"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-125"></a>-<a name="line-126"></a><span class='comment'>-- |</span>-<a name="line-127"></a><span class='comment'>-- satisfies converts a result of a predicate filter into a boolean</span>-<a name="line-128"></a><span class='comment'>--</span>-<a name="line-129"></a><span class='comment'>-- is a shortcut for not . null</span>-<a name="line-130"></a><span class='comment'>--</span>-<a name="line-131"></a><span class='comment'>-- typical use in guards or ifs: @if (satisfies f) t then ... else ... @</span>-<a name="line-132"></a><span class='comment'>--</span>-<a name="line-133"></a><span class='comment'>-- * 1.parameter f : the predicate filter</span>-<a name="line-134"></a><span class='comment'>--</span>-<a name="line-135"></a><span class='comment'>-- - 2.parameter t : the tree to be tested</span>-<a name="line-136"></a><span class='comment'>--</span>-<a name="line-137"></a><span class='comment'>-- - returns : @b = not (null (f t))@</span>-<a name="line-138"></a>-<a name="line-139"></a><a name="satisfies"></a><span class='definition'>satisfies</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-140"></a><span class='definition'>satisfies</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>f</span>-<a name="line-141"></a>-<a name="line-142"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-143"></a><span class='comment'>--</span>-<a name="line-144"></a><span class='comment'>-- simple filter</span>-<a name="line-145"></a>-<a name="line-146"></a><span class='comment'>-- |</span>-<a name="line-147"></a><span class='comment'>-- the null filter, returns the empty list</span>-<a name="line-148"></a>-<a name="line-149"></a><a name="none"></a><span class='definition'>none</span> <span class='keyglyph'>::</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span>-<a name="line-150"></a><span class='definition'>none</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-151"></a>-<a name="line-152"></a><span class='comment'>-- |</span>-<a name="line-153"></a><span class='comment'>-- the unit filter, returns the single element list containing the argument</span>-<a name="line-154"></a>-<a name="line-155"></a><a name="this"></a><span class='definition'>this</span> <span class='keyglyph'>::</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>-<a name="line-156"></a><span class='definition'>this</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>-<a name="line-157"></a>-<a name="line-158"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-159"></a><span class='comment'>--</span>-<a name="line-160"></a><span class='comment'>-- selecting filter</span>-<a name="line-161"></a>-<a name="line-162"></a><span class='comment'>-- |</span>-<a name="line-163"></a><span class='comment'>-- conversion from predicate function to filter</span>-<a name="line-164"></a><span class='comment'>--</span>-<a name="line-165"></a><span class='comment'>-- * 1.parameter p : the predicate for testing the tree</span>-<a name="line-166"></a><span class='comment'>--</span>-<a name="line-167"></a><span class='comment'>-- - returns : 'this' or 'none' depending on the predicate</span>-<a name="line-168"></a>-<a name="line-169"></a><a name="isOf"></a><span class='definition'>isOf</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-170"></a><span class='definition'>isOf</span> <span class='varid'>p</span> <span class='varid'>t</span>-<a name="line-171"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>p</span> <span class='varid'>t</span> <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span> <span class='keyword'>else</span> <span class='conid'>[]</span>-<a name="line-172"></a>-<a name="line-173"></a><span class='comment'>-- |</span>-<a name="line-174"></a><span class='comment'>-- select filter, selects trees with node values with a specific property</span>-<a name="line-175"></a><span class='comment'>--</span>-<a name="line-176"></a><span class='comment'>-- * 1.parameter p : the predicate for testing the node value</span>-<a name="line-177"></a><span class='comment'>--</span>-<a name="line-178"></a><span class='comment'>-- - returns : @[]@ or @[t]@ depending on @p t@</span>-<a name="line-179"></a><span class='comment'>--</span>-<a name="line-180"></a><span class='comment'>-- a special case of 'isOf' filter</span>-<a name="line-181"></a>-<a name="line-182"></a><a name="isOfNode"></a><span class='definition'>isOfNode</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-183"></a><span class='definition'>isOfNode</span> <span class='varid'>p</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>p</span> <span class='varop'>.</span> <span class='varid'>getNode</span><span class='layout'>)</span>-<a name="line-184"></a>-<a name="line-185"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-186"></a><span class='comment'>--</span>-<a name="line-187"></a><span class='comment'>-- simple editing filters</span>-<a name="line-188"></a>-<a name="line-189"></a><span class='comment'>-- |</span>-<a name="line-190"></a><span class='comment'>-- filter for substituting an arbitray tree by a constant</span>-<a name="line-191"></a><span class='comment'>--</span>-<a name="line-192"></a><span class='comment'>-- * 1.parameter t : the result tree, the input tree is ignored</span>-<a name="line-193"></a><span class='comment'>--</span>-<a name="line-194"></a><span class='comment'>-- - returns : the filter</span>-<a name="line-195"></a>-<a name="line-196"></a><a name="mkNTree"></a><span class='definition'>mkNTree</span> <span class='keyglyph'>::</span> <span class='conid'>NTree</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-197"></a><span class='definition'>mkNTree</span> <span class='varid'>t</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span>-<a name="line-198"></a>-<a name="line-199"></a><span class='comment'>-- |</span>-<a name="line-200"></a><span class='comment'>-- filter for replacing the node</span>-<a name="line-201"></a><span class='comment'>--</span>-<a name="line-202"></a><span class='comment'>-- * 1.parameter n : the new node</span>-<a name="line-203"></a><span class='comment'>--</span>-<a name="line-204"></a><span class='comment'>-- - returns : the editing filter</span>-<a name="line-205"></a>-<a name="line-206"></a><a name="replaceNode"></a><span class='definition'>replaceNode</span> <span class='keyglyph'>::</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-207"></a><span class='definition'>replaceNode</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='keyword'>_</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-208"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='varid'>cs</span><span class='keyglyph'>]</span>-<a name="line-209"></a>-<a name="line-210"></a><span class='comment'>-- |</span>-<a name="line-211"></a><span class='comment'>-- filter for replacing the children</span>-<a name="line-212"></a><span class='comment'>--</span>-<a name="line-213"></a><span class='comment'>-- * 1.parameter cs : cs the list of children</span>-<a name="line-214"></a><span class='comment'>--</span>-<a name="line-215"></a><span class='comment'>-- - returns : the filter</span>-<a name="line-216"></a>-<a name="line-217"></a><a name="replaceChildren"></a><span class='definition'>replaceChildren</span> <span class='keyglyph'>::</span> <span class='conid'>NTrees</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-218"></a><span class='definition'>replaceChildren</span> <span class='varid'>cs</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-219"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='varid'>cs</span><span class='keyglyph'>]</span>-<a name="line-220"></a>-<a name="line-221"></a><a name="modifyNode"></a><span class='definition'>modifyNode</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-222"></a><span class='definition'>modifyNode</span> <span class='varid'>tf</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-223"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='conid'>[]</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n'</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>n'</span> <span class='varid'>cs</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>tf</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-224"></a>-<a name="line-225"></a><span class='comment'>-- |</span>-<a name="line-226"></a><span class='comment'>-- filter for editing the node</span>-<a name="line-227"></a><span class='comment'>--</span>-<a name="line-228"></a><span class='comment'>-- * 1.parameter nf : the XNode editing funtion</span>-<a name="line-229"></a><span class='comment'>--</span>-<a name="line-230"></a><span class='comment'>-- - returns : the filter</span>-<a name="line-231"></a>-<a name="line-232"></a><a name="modifyNode0"></a><span class='definition'>modifyNode0</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='varid'>node</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-233"></a><span class='definition'>modifyNode0</span> <span class='varid'>tf</span> <span class='keyglyph'>=</span> <span class='varid'>modifyNode</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varop'>.</span> <span class='varid'>tf</span><span class='layout'>)</span>-<a name="line-234"></a>-<a name="line-235"></a><span class='comment'>-- |</span>-<a name="line-236"></a><span class='comment'>-- filter for editing the children</span>-<a name="line-237"></a><span class='comment'>--</span>-<a name="line-238"></a><span class='comment'>-- all children are processed with a filter mapping lists to lists,</span>-<a name="line-239"></a><span class='comment'>-- this enables not only elementwise editing by lifting a normal</span>-<a name="line-240"></a><span class='comment'>-- filter to a list filter with @(f $$)@ (see '($$)') but also manipulation</span>-<a name="line-241"></a><span class='comment'>-- of the order of the elements, e.g. "reverse" is an appropriate childen</span>-<a name="line-242"></a><span class='comment'>-- editing function.</span>-<a name="line-243"></a><span class='comment'>--</span>-<a name="line-244"></a><span class='comment'>-- * 1.parameter csf : the children editing function</span>-<a name="line-245"></a><span class='comment'>--</span>-<a name="line-246"></a><span class='comment'>-- - returns : the filter</span>-<a name="line-247"></a><span class='comment'>--</span>-<a name="line-248"></a><span class='comment'>-- see also : 'processChildren'</span>-<a name="line-249"></a>-<a name="line-250"></a><a name="modifyChildren"></a><span class='definition'>modifyChildren</span> <span class='keyglyph'>::</span> <span class='conid'>TSFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-251"></a><span class='definition'>modifyChildren</span> <span class='varid'>f</span> <span class='comment'>-- (NTree n cs)</span>-<a name="line-252"></a> <span class='comment'>-- = [NTree n (f cs)]</span>-<a name="line-253"></a> <span class='keyglyph'>=</span> <span class='varid'>substChildren</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varop'>.</span> <span class='varid'>getChildren</span><span class='layout'>)</span>-<a name="line-254"></a>-<a name="line-255"></a><span class='comment'>-- |</span>-<a name="line-256"></a><span class='comment'>-- filter for substituting the children of a tree by</span>-<a name="line-257"></a><span class='comment'>-- a new list of childen computed by applying a filter to the input tree.</span>-<a name="line-258"></a><span class='comment'>-- 'modifyChildren' can be expressed by 'substChildren':</span>-<a name="line-259"></a><span class='comment'>-- @modifyChildren f t@ is equal to @substChildren (f . getChildren)@</span>-<a name="line-260"></a>-<a name="line-261"></a><a name="substChildren"></a><span class='definition'>substChildren</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-262"></a><span class='definition'>substChildren</span> <span class='varid'>f</span> <span class='varid'>t</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='sel'>_cs</span><span class='layout'>)</span>-<a name="line-263"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>t</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-264"></a>-<a name="line-265"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-266"></a><span class='comment'>--</span>-<a name="line-267"></a><span class='comment'>-- combinators (copied from HaXml)</span>-<a name="line-268"></a><span class='comment'>--</span>-<a name="line-269"></a>-<a name="line-270"></a><span class='comment'>-- |</span>-<a name="line-271"></a><span class='comment'>-- sequential composition of filters, usually written in infix notation f2 `o` f1.</span>-<a name="line-272"></a><span class='comment'>--</span>-<a name="line-273"></a><span class='comment'>-- for predicate filter the logical AND</span>-<a name="line-274"></a><span class='comment'>--</span>-<a name="line-275"></a><span class='comment'>-- * 1.parameter f2 : the 2. filter</span>-<a name="line-276"></a><span class='comment'>--</span>-<a name="line-277"></a><span class='comment'>-- - 2.parameter f1 : the 1. filter</span>-<a name="line-278"></a><span class='comment'>--</span>-<a name="line-279"></a><span class='comment'>-- - returns : the fiter applying first f1 to n and then f2 to the result (like function composition)</span>-<a name="line-280"></a>-<a name="line-281"></a><a name="o"></a><span class='definition'>o</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-282"></a><a name="o"></a><span class='definition'>f</span> <span class='varop'>`o`</span> <span class='varid'>g</span> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>f</span> <span class='varop'>.</span> <span class='varid'>g</span>-<a name="line-283"></a>-<a name="line-284"></a><span class='comment'>-- |</span>-<a name="line-285"></a><span class='comment'>-- pronounced \"followed by\", defined as: @f .> g = g \`o\` f@.</span>-<a name="line-286"></a><span class='comment'>--</span>-<a name="line-287"></a><span class='comment'>-- allows filter composition in a more readable way from left to right</span>-<a name="line-288"></a><span class='comment'>--</span>-<a name="line-289"></a><span class='comment'>-- * 1.parameter f1 : the 1. filter</span>-<a name="line-290"></a><span class='comment'>--</span>-<a name="line-291"></a><span class='comment'>-- - 2.parameter f2 : the 2. filter</span>-<a name="line-292"></a><span class='comment'>--</span>-<a name="line-293"></a><span class='comment'>-- - returns : the composition of f1 and f2</span>-<a name="line-294"></a><span class='comment'>--</span>-<a name="line-295"></a><span class='comment'>-- see also : 'o', '(..>)'</span>-<a name="line-296"></a>-<a name="line-297"></a><a name=".>"></a><span class='layout'>(</span><span class='varop'>.></span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-298"></a><a name="f"></a><span class='definition'>f</span> <span class='varop'>.></span> <span class='varid'>g</span> <span class='keyglyph'>=</span> <span class='varid'>g</span> <span class='varop'>`o`</span> <span class='varid'>f</span>-<a name="line-299"></a>-<a name="line-300"></a><span class='comment'>-- |</span>-<a name="line-301"></a><span class='comment'>-- apply a list of filters sequentially with '(.>)', for predicate filters the generalized AND</span>-<a name="line-302"></a><span class='comment'>--</span>-<a name="line-303"></a><span class='comment'>-- see also : '(.>)'</span>-<a name="line-304"></a>-<a name="line-305"></a><a name="seqF"></a><span class='definition'>seqF</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-306"></a><span class='definition'>seqF</span> <span class='keyglyph'>=</span> <span class='varid'>foldl</span> <span class='layout'>(</span><span class='varop'>.></span><span class='layout'>)</span> <span class='varid'>this</span>-<a name="line-307"></a>-<a name="line-308"></a><span class='comment'>-- |</span>-<a name="line-309"></a><span class='comment'>-- binary parallel composition, the logical OR for predicate filter</span>-<a name="line-310"></a><span class='comment'>--</span>-<a name="line-311"></a><span class='comment'>-- * 1.parameter f1 : the 1. filter</span>-<a name="line-312"></a><span class='comment'>--</span>-<a name="line-313"></a><span class='comment'>-- - 2.parameter f2 : the 2. filter</span>-<a name="line-314"></a><span class='comment'>--</span>-<a name="line-315"></a><span class='comment'>-- - returns : the filter for applying f1 and f2 both to an argument tree and concatenating the results</span>-<a name="line-316"></a>-<a name="line-317"></a><a name="+++"></a><span class='layout'>(</span><span class='varop'>+++</span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-318"></a><span class='definition'>f</span> <span class='varop'>+++</span> <span class='varid'>g</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='varid'>f</span> <span class='varid'>t</span> <span class='varop'>++</span> <span class='varid'>g</span> <span class='varid'>t</span>-<a name="line-319"></a>-<a name="line-320"></a><span class='comment'>-- |</span>-<a name="line-321"></a><span class='comment'>-- special sequential composition.</span>-<a name="line-322"></a><span class='comment'>--</span>-<a name="line-323"></a><span class='comment'>-- filter f is applied to an argument t.</span>-<a name="line-324"></a><span class='comment'>-- then filter g is applied to all elements of the result list,</span>-<a name="line-325"></a><span class='comment'>-- but the argument t is also passed as extra parameter to g.</span>-<a name="line-326"></a><span class='comment'>--</span>-<a name="line-327"></a><span class='comment'>-- This allows for step by step transformations of a tree</span>-<a name="line-328"></a><span class='comment'>-- with access to the original tree in every</span>-<a name="line-329"></a><span class='comment'>-- transformation step.</span>-<a name="line-330"></a><span class='comment'>--</span>-<a name="line-331"></a><span class='comment'>-- see also : '(.>)', 'o'</span>-<a name="line-332"></a>-<a name="line-333"></a><a name="..>"></a><span class='layout'>(</span><span class='varop'>..></span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>d</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>d</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-334"></a><span class='definition'>f</span> <span class='varop'>..></span> <span class='varid'>g</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>g</span> <span class='varid'>t</span> <span class='varop'>`o`</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-335"></a>-<a name="line-336"></a><span class='comment'>-- |</span>-<a name="line-337"></a><span class='comment'>-- apply a list of filters, a \"union\" for lists, for predicate filters the generalized OR</span>-<a name="line-338"></a><span class='comment'>--</span>-<a name="line-339"></a><span class='comment'>-- * 1.parameter fs : the list of filters</span>-<a name="line-340"></a><span class='comment'>--</span>-<a name="line-341"></a><span class='comment'>-- - returns : the composing filter</span>-<a name="line-342"></a>-<a name="line-343"></a><a name="cat"></a><span class='definition'>cat</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-344"></a><span class='definition'>cat</span> <span class='varid'>fs</span> <span class='varid'>t</span>-<a name="line-345"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='keyglyph'>[</span> <span class='varid'>f</span> <span class='varid'>t</span> <span class='keyglyph'>|</span> <span class='varid'>f</span> <span class='keyglyph'><-</span> <span class='varid'>fs</span> <span class='keyglyph'>]</span>-<a name="line-346"></a>-<a name="line-347"></a><span class='comment'>-- |</span>-<a name="line-348"></a><span class='comment'>-- Filter for editing the children of a tree element wise</span>-<a name="line-349"></a><span class='comment'>--</span>-<a name="line-350"></a><span class='comment'>-- * 1.parameter cf : the filter applied to the children</span>-<a name="line-351"></a><span class='comment'>--</span>-<a name="line-352"></a><span class='comment'>-- - returns : the editing filter</span>-<a name="line-353"></a><span class='comment'>--</span>-<a name="line-354"></a><span class='comment'>-- see also : 'modifyChildren'</span>-<a name="line-355"></a>-<a name="line-356"></a><a name="processChildren"></a><span class='definition'>processChildren</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-357"></a><span class='definition'>processChildren</span> <span class='varid'>ft</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-358"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>ft</span> <span class='varop'>$$</span> <span class='varid'>cs</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-359"></a>-<a name="line-360"></a><span class='comment'>-- |</span>-<a name="line-361"></a><span class='comment'>-- infix operator for applying a filter to a list of trees</span>-<a name="line-362"></a><span class='comment'>--</span>-<a name="line-363"></a><span class='comment'>-- * 1.parameter f : the filter</span>-<a name="line-364"></a><span class='comment'>--</span>-<a name="line-365"></a><span class='comment'>-- - 2.parameter ts : the list of trees</span>-<a name="line-366"></a><span class='comment'>--</span>-<a name="line-367"></a><span class='comment'>-- - returns : the concatenated list of results</span>-<a name="line-368"></a>-<a name="line-369"></a><a name="$$"></a><span class='layout'>(</span><span class='varop'>$$</span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span>-<a name="line-370"></a><span class='definition'>f</span> <span class='varop'>$$</span> <span class='varid'>l</span>-<a name="line-371"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>f</span> <span class='varid'>l</span>-<a name="line-372"></a>-<a name="line-373"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-374"></a><span class='comment'>--</span>-<a name="line-375"></a><span class='comment'>-- choices</span>-<a name="line-376"></a><span class='comment'>--</span>-<a name="line-377"></a>-<a name="line-378"></a><span class='comment'>-- |</span>-<a name="line-379"></a><span class='comment'>-- directional choice, usually written in infix notation as f `orElse` g</span>-<a name="line-380"></a><span class='comment'>--</span>-<a name="line-381"></a><span class='comment'>-- * 1.parameter f : the 1. filter</span>-<a name="line-382"></a><span class='comment'>--</span>-<a name="line-383"></a><span class='comment'>-- - 2.parameter g : the 2. filter</span>-<a name="line-384"></a><span class='comment'>--</span>-<a name="line-385"></a><span class='comment'>-- - 3.parameter t : the tree</span>-<a name="line-386"></a><span class='comment'>--</span>-<a name="line-387"></a><span class='comment'>-- - returns : the filter, that applies f to t, if the result is not the empty list, the result is found, else g t is the result</span>-<a name="line-388"></a>-<a name="line-389"></a><a name="orElse"></a><span class='definition'>orElse</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-390"></a><a name="orElse"></a><span class='definition'>f</span> <span class='varop'>`orElse`</span> <span class='varid'>g</span>-<a name="line-391"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span><span class='keyglyph'>-></span> <span class='keyword'>let</span>-<a name="line-392"></a> <span class='varid'>res</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-393"></a> <span class='keyword'>in</span>-<a name="line-394"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>res</span>-<a name="line-395"></a> <span class='keyword'>then</span> <span class='varid'>g</span> <span class='varid'>t</span>-<a name="line-396"></a> <span class='keyword'>else</span> <span class='varid'>res</span>-<a name="line-397"></a>-<a name="line-398"></a><span class='comment'>-- |</span>-<a name="line-399"></a><span class='comment'>-- if then else lifted to filters</span>-<a name="line-400"></a><span class='comment'>--</span>-<a name="line-401"></a><span class='comment'>-- * 1.parameter p : the predicate filter</span>-<a name="line-402"></a><span class='comment'>--</span>-<a name="line-403"></a><span class='comment'>-- - 2.parameter t : the \"then\" filter</span>-<a name="line-404"></a><span class='comment'>--</span>-<a name="line-405"></a><span class='comment'>-- - 3.parameter e : the \"else\" filter</span>-<a name="line-406"></a><span class='comment'>--</span>-<a name="line-407"></a><span class='comment'>-- - returns : the resulting conditional filter</span>-<a name="line-408"></a>-<a name="line-409"></a><a name="iff"></a><span class='definition'>iff</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-410"></a><span class='definition'>iff</span> <span class='varid'>p</span> <span class='varid'>f</span> <span class='varid'>g</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>satisfies</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyword'>then</span> <span class='varid'>f</span> <span class='varid'>c</span> <span class='keyword'>else</span> <span class='varid'>g</span> <span class='varid'>c</span>-<a name="line-411"></a>-<a name="line-412"></a><span class='comment'>-- |</span>-<a name="line-413"></a><span class='comment'>-- when the predicate p holds, f is applied, else the identity filter this</span>-<a name="line-414"></a><span class='comment'>--</span>-<a name="line-415"></a><span class='comment'>-- * 1.parameter f : the conditinally applied filter</span>-<a name="line-416"></a><span class='comment'>--</span>-<a name="line-417"></a><span class='comment'>-- - 2.parameter p : the predicate</span>-<a name="line-418"></a><span class='comment'>--</span>-<a name="line-419"></a><span class='comment'>-- - returns : the conditional filter</span>-<a name="line-420"></a><span class='comment'>--</span>-<a name="line-421"></a><span class='comment'>-- see also : 'iff', 'whenNot', 'guards', 'whenM'</span>-<a name="line-422"></a>-<a name="line-423"></a><a name="when"></a><span class='definition'>when</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-424"></a><a name="when"></a><span class='definition'>f</span> <span class='varop'>`when`</span> <span class='varid'>g</span> <span class='keyglyph'>=</span> <span class='varid'>iff</span> <span class='varid'>g</span> <span class='varid'>f</span> <span class='varid'>this</span>-<a name="line-425"></a>-<a name="line-426"></a><span class='comment'>-- |</span>-<a name="line-427"></a><span class='comment'>-- the complementary filter of when</span>-<a name="line-428"></a><span class='comment'>--</span>-<a name="line-429"></a><span class='comment'>-- shortcut for f `when` neg g</span>-<a name="line-430"></a><span class='comment'>--</span>-<a name="line-431"></a><span class='comment'>-- see also : 'iff', 'when', 'whenNotM', 'neg'</span>-<a name="line-432"></a>-<a name="line-433"></a><a name="whenNot"></a><span class='definition'>whenNot</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-434"></a><a name="whenNot"></a><span class='definition'>f</span> <span class='varop'>`whenNot`</span> <span class='varid'>g</span> <span class='keyglyph'>=</span> <span class='varid'>iff</span> <span class='varid'>g</span> <span class='varid'>this</span> <span class='varid'>f</span>-<a name="line-435"></a>-<a name="line-436"></a><span class='comment'>-- |</span>-<a name="line-437"></a><span class='comment'>-- when the predicate p holds, f is applied, else the null filter none</span>-<a name="line-438"></a><span class='comment'>--</span>-<a name="line-439"></a><span class='comment'>-- * 1.parameter p : the predicate filter</span>-<a name="line-440"></a><span class='comment'>--</span>-<a name="line-441"></a><span class='comment'>-- - 2.parameter f : the conditionally applied filter</span>-<a name="line-442"></a><span class='comment'>--</span>-<a name="line-443"></a><span class='comment'>-- - returns : the conditional filter</span>-<a name="line-444"></a><span class='comment'>--</span>-<a name="line-445"></a><span class='comment'>-- see also : 'iff', 'when', 'guardsM'</span>-<a name="line-446"></a>-<a name="line-447"></a><a name="guards"></a><span class='definition'>guards</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-448"></a><a name="guards"></a><span class='definition'>g</span> <span class='varop'>`guards`</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>iff</span> <span class='varid'>g</span> <span class='varid'>f</span> <span class='varid'>none</span>-<a name="line-449"></a>-<a name="line-450"></a>-<a name="line-451"></a><span class='comment'>-- |</span>-<a name="line-452"></a><span class='comment'>-- negation lifted to filters</span>-<a name="line-453"></a><span class='comment'>--</span>-<a name="line-454"></a><span class='comment'>-- * 1.parameter f : the predicate filter</span>-<a name="line-455"></a><span class='comment'>--</span>-<a name="line-456"></a><span class='comment'>-- - returns : the filter, that succeeds, when f failed</span>-<a name="line-457"></a>-<a name="line-458"></a><a name="neg"></a><span class='definition'>neg</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>-<a name="line-459"></a><span class='definition'>neg</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>iff</span> <span class='varid'>f</span> <span class='varid'>none</span> <span class='varid'>this</span>-<a name="line-460"></a>-<a name="line-461"></a><span class='comment'>-- |</span>-<a name="line-462"></a><span class='comment'>-- auxiliary datatype for cases within choice filter</span>-<a name="line-463"></a>-<a name="line-464"></a><a name="IfThen"></a><span class='keyword'>data</span> <span class='conid'>IfThen</span> <span class='varid'>a</span> <span class='varid'>b</span> <span class='keyglyph'>=</span> <span class='varid'>a</span> <span class='conop'>:-></span> <span class='varid'>b</span>-<a name="line-465"></a>-<a name="line-466"></a><span class='comment'>-- |</span>-<a name="line-467"></a><span class='comment'>-- multiway branch. The list of cases @f :-> g@ is processed sequentially,</span>-<a name="line-468"></a><span class='comment'>-- in the first case for that f holds g is applied, if no case matches, 'none' is</span>-<a name="line-469"></a><span class='comment'>-- applied.</span>-<a name="line-470"></a><span class='comment'>-- This filter can be used like a case expression: @choice [ p1 :-> f1, p2 :-> f2, ... , this :-> defaultFilter]@</span>-<a name="line-471"></a><span class='comment'>--</span>-<a name="line-472"></a><span class='comment'>-- see also : 'iff', 'choiceM'</span>-<a name="line-473"></a>-<a name="line-474"></a><a name="choice"></a><span class='definition'>choice</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>IfThen</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-475"></a><span class='definition'>choice</span> <span class='conid'>[]</span>-<a name="line-476"></a> <span class='keyglyph'>=</span> <span class='varid'>none</span>-<a name="line-477"></a>-<a name="line-478"></a><span class='definition'>choice</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>g</span> <span class='conop'>:-></span> <span class='varid'>f</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-479"></a> <span class='keyglyph'>=</span> <span class='varid'>iff</span> <span class='varid'>g</span> <span class='varid'>f</span> <span class='layout'>(</span><span class='varid'>choice</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-480"></a>-<a name="line-481"></a><span class='comment'>-- |</span>-<a name="line-482"></a><span class='comment'>-- pruning: keep only those results from f for which g holds, usually written in infix notation as f `containing` g</span>-<a name="line-483"></a><span class='comment'>--</span>-<a name="line-484"></a><span class='comment'>-- * 1.parameter f : the processing filter</span>-<a name="line-485"></a><span class='comment'>--</span>-<a name="line-486"></a><span class='comment'>-- - 2.parameter g : the predicate filter</span>-<a name="line-487"></a><span class='comment'>--</span>-<a name="line-488"></a><span class='comment'>-- - 3.parameter t : the tree</span>-<a name="line-489"></a><span class='comment'>--</span>-<a name="line-490"></a><span class='comment'>-- - returns : all trees r from f t, for which g r holds (is not the empty list)</span>-<a name="line-491"></a><span class='comment'>--</span>-<a name="line-492"></a><span class='comment'>-- see also : 'notContaining'</span>-<a name="line-493"></a>-<a name="line-494"></a><a name="containing"></a><span class='definition'>containing</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span>-<a name="line-495"></a><a name="containing"></a><span class='definition'>f</span> <span class='varop'>`containing`</span> <span class='varid'>g</span>-<a name="line-496"></a> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>satisfies</span> <span class='varid'>g</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>f</span>-<a name="line-497"></a>-<a name="line-498"></a><span class='comment'>-- |</span>-<a name="line-499"></a><span class='comment'>-- pruning: keep only those results from f for which g does not hold</span>-<a name="line-500"></a><span class='comment'>--</span>-<a name="line-501"></a><span class='comment'>-- see also : 'containing'</span>-<a name="line-502"></a>-<a name="line-503"></a><a name="notContaining"></a><span class='definition'>notContaining</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span>-<a name="line-504"></a><a name="notContaining"></a><span class='definition'>f</span> <span class='varop'>`notContaining`</span> <span class='varid'>g</span>-<a name="line-505"></a> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>g</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>f</span>-<a name="line-506"></a>-<a name="line-507"></a><span class='comment'>-- |</span>-<a name="line-508"></a><span class='comment'>-- pruning: monadic version of containing, usually written in infix notation as f `containingM` g</span>-<a name="line-509"></a><span class='comment'>--</span>-<a name="line-510"></a><span class='comment'>-- * 1.parameter f : the monadic processing filter</span>-<a name="line-511"></a><span class='comment'>--</span>-<a name="line-512"></a><span class='comment'>-- - 2.parameter g : the predicate filter</span>-<a name="line-513"></a><span class='comment'>--</span>-<a name="line-514"></a><span class='comment'>-- - 3.parameter t : the tree</span>-<a name="line-515"></a><span class='comment'>--</span>-<a name="line-516"></a><span class='comment'>-- - returns : all trees r from f t, for which g r holds (is not the empty list)</span>-<a name="line-517"></a><span class='comment'>--</span>-<a name="line-518"></a><span class='comment'>-- see also : 'notContaining'</span>-<a name="line-519"></a>-<a name="line-520"></a><a name="containingM"></a><span class='definition'>containingM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span>-<a name="line-521"></a><a name="containingM"></a><span class='definition'>f</span> <span class='varop'>`containingM`</span> <span class='varid'>g</span>-<a name="line-522"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='keyword'>do</span>-<a name="line-523"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-524"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>satisfies</span> <span class='varid'>g</span><span class='layout'>)</span> <span class='varid'>res</span>-<a name="line-525"></a>-<a name="line-526"></a><span class='comment'>-- |</span>-<a name="line-527"></a><span class='comment'>-- pronounced \"slash\", meaning g inside f</span>-<a name="line-528"></a>-<a name="line-529"></a><a name="/>"></a><span class='layout'>(</span><span class='varop'>/></span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-530"></a><span class='definition'>f</span> <span class='varop'>/></span> <span class='varid'>g</span>-<a name="line-531"></a> <span class='keyglyph'>=</span> <span class='varid'>g</span> <span class='varop'>`o`</span> <span class='varid'>getChildren</span> <span class='varop'>`o`</span> <span class='varid'>f</span>-<a name="line-532"></a>-<a name="line-533"></a><span class='comment'>-- |</span>-<a name="line-534"></a><span class='comment'>-- pronounced \"outside\" meaning f containing g</span>-<a name="line-535"></a>-<a name="line-536"></a><a name="</"></a><span class='layout'>(</span><span class='varop'></</span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-537"></a><span class='definition'>f</span> <span class='varop'></</span> <span class='varid'>g</span>-<a name="line-538"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>`containing`</span> <span class='layout'>(</span><span class='varid'>g</span> <span class='varop'>`o`</span> <span class='varid'>getChildren</span><span class='layout'>)</span>-<a name="line-539"></a>-<a name="line-540"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-541"></a><span class='comment'>--</span>-<a name="line-542"></a><span class='comment'>-- recursive search filters</span>-<a name="line-543"></a>-<a name="line-544"></a><span class='comment'>-- |</span>-<a name="line-545"></a><span class='comment'>-- top down search.</span>-<a name="line-546"></a><span class='comment'>--</span>-<a name="line-547"></a><span class='comment'>-- search terminates, when filter f succeeds</span>-<a name="line-548"></a><span class='comment'>-- can e.g. be used for finding all outermost tag node of a specific kind</span>-<a name="line-549"></a>-<a name="line-550"></a><a name="deep"></a><span class='definition'>deep</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-551"></a><span class='definition'>deep</span> <span class='varid'>f</span>-<a name="line-552"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>`orElse`</span> <span class='layout'>(</span><span class='varid'>deep</span> <span class='varid'>f</span> <span class='varop'>`o`</span> <span class='varid'>getChildren</span><span class='layout'>)</span>-<a name="line-553"></a>-<a name="line-554"></a><span class='comment'>-- |</span>-<a name="line-555"></a><span class='comment'>-- bottom up search.</span>-<a name="line-556"></a><span class='comment'>--</span>-<a name="line-557"></a><span class='comment'>-- first the children are processed,</span>-<a name="line-558"></a><span class='comment'>-- if this does not succeed, the node itself is processed</span>-<a name="line-559"></a><span class='comment'>-- can e.g. be used for finding all innermost tag nodes of a specific kind</span>-<a name="line-560"></a>-<a name="line-561"></a><a name="deepest"></a><span class='definition'>deepest</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-562"></a><span class='definition'>deepest</span> <span class='varid'>f</span>-<a name="line-563"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>.></span> <span class='varid'>deepest</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varop'>`orElse`</span> <span class='varid'>f</span>-<a name="line-564"></a>-<a name="line-565"></a><span class='comment'>-- |</span>-<a name="line-566"></a><span class='comment'>-- process all nodes of the whole tree.</span>-<a name="line-567"></a><span class='comment'>--</span>-<a name="line-568"></a><span class='comment'>-- can e.g. be used for finding all nodes of a specific kind</span>-<a name="line-569"></a>-<a name="line-570"></a><a name="multi"></a><span class='definition'>multi</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-571"></a><span class='definition'>multi</span> <span class='varid'>f</span>-<a name="line-572"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>+++</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>.></span> <span class='varid'>multi</span> <span class='varid'>f</span><span class='layout'>)</span>-<a name="line-573"></a>-<a name="line-574"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-575"></a><span class='comment'>--</span>-<a name="line-576"></a><span class='comment'>-- recursive transformation filters</span>-<a name="line-577"></a><span class='comment'>--</span>-<a name="line-578"></a>-<a name="line-579"></a><span class='comment'>-- |</span>-<a name="line-580"></a><span class='comment'>-- bottom up transformation</span>-<a name="line-581"></a><span class='comment'>--</span>-<a name="line-582"></a><span class='comment'>-- * 1.parameter f : the /simple/ transforming filter</span>-<a name="line-583"></a><span class='comment'>--</span>-<a name="line-584"></a><span class='comment'>-- - returns : the filter that applies f to all subtrees and the tree itself in a deepth first left to right manner</span>-<a name="line-585"></a><span class='comment'>--</span>-<a name="line-586"></a><span class='comment'>-- see also : 'processTopDown', 'processBottomUpIfNot'</span>-<a name="line-587"></a>-<a name="line-588"></a><a name="processBottomUp"></a><span class='definition'>processBottomUp</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-589"></a><span class='definition'>processBottomUp</span> <span class='varid'>f</span>-<a name="line-590"></a> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processBottomUp</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varop'>.></span> <span class='varid'>f</span>-<a name="line-591"></a>-<a name="line-592"></a><span class='comment'>-- |</span>-<a name="line-593"></a><span class='comment'>-- top down transformation</span>-<a name="line-594"></a><span class='comment'>--</span>-<a name="line-595"></a><span class='comment'>-- * 1.parameter f : the /simple/ transforming filter</span>-<a name="line-596"></a><span class='comment'>--</span>-<a name="line-597"></a><span class='comment'>-- - returns : the filter that applies f first to the tree and then recursively to all subtrees of the result</span>-<a name="line-598"></a><span class='comment'>--</span>-<a name="line-599"></a><span class='comment'>-- see also : 'processBottomUp'</span>-<a name="line-600"></a>-<a name="line-601"></a><a name="processTopDown"></a><span class='definition'>processTopDown</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-602"></a><span class='definition'>processTopDown</span> <span class='varid'>f</span>-<a name="line-603"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>.></span> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processTopDown</span> <span class='varid'>f</span><span class='layout'>)</span>-<a name="line-604"></a>-<a name="line-605"></a><span class='comment'>-- |</span>-<a name="line-606"></a><span class='comment'>-- guarded bottom up transformation, stops at subtrees for which a predicate p holds</span>-<a name="line-607"></a><span class='comment'>--</span>-<a name="line-608"></a><span class='comment'>-- * 1.parameter f : the transforming filter</span>-<a name="line-609"></a><span class='comment'>--</span>-<a name="line-610"></a><span class='comment'>-- - 2.parameter p : the predicate filter for the guard</span>-<a name="line-611"></a><span class='comment'>--</span>-<a name="line-612"></a><span class='comment'>-- - returns : the filter for processing all (sub-)trees</span>-<a name="line-613"></a><span class='comment'>--</span>-<a name="line-614"></a><span class='comment'>-- see also : 'processBottomUp'</span>-<a name="line-615"></a>-<a name="line-616"></a><a name="processBottomUpIfNot"></a><span class='definition'>processBottomUpIfNot</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-617"></a><span class='definition'>processBottomUpIfNot</span> <span class='varid'>f</span> <span class='varid'>p</span>-<a name="line-618"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processBottomUpIfNot</span> <span class='varid'>f</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='varop'>.></span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varop'>`whenNot`</span> <span class='varid'>p</span>-<a name="line-619"></a>-<a name="line-620"></a><span class='comment'>-- |</span>-<a name="line-621"></a><span class='comment'>-- top down transformation until a node to be transformed is found</span>-<a name="line-622"></a><span class='comment'>--</span>-<a name="line-623"></a><span class='comment'>-- * 1.parameter f : the /simple/ transforming filter</span>-<a name="line-624"></a><span class='comment'>--</span>-<a name="line-625"></a><span class='comment'>-- - returns : the filter that applies f first to the tree and, if the filter does not succeed,</span>-<a name="line-626"></a><span class='comment'>-- recursively to all children of the input tree.</span>-<a name="line-627"></a><span class='comment'>--</span>-<a name="line-628"></a><span class='comment'>-- Example:</span>-<a name="line-629"></a><span class='comment'>--</span>-<a name="line-630"></a><span class='comment'>-- @processTopDownUntil none@</span>-<a name="line-631"></a><span class='comment'>--</span>-<a name="line-632"></a><span class='comment'>-- is the identity filter (maybe a bit more inefficient).</span>-<a name="line-633"></a><span class='comment'>--</span>-<a name="line-634"></a><span class='comment'>-- Example:</span>-<a name="line-635"></a><span class='comment'>--</span>-<a name="line-636"></a><span class='comment'>-- @processTopDownUntil (add1Attr \"border\" \"2\" \`containing\` isTag \"table\")@</span>-<a name="line-637"></a><span class='comment'>--</span>-<a name="line-638"></a><span class='comment'>-- is a filter for adding an attribute border=\"2\" in all top level table tags.</span>-<a name="line-639"></a><span class='comment'>-- The content of table tags will remain unchanged.</span>-<a name="line-640"></a><span class='comment'>--</span>-<a name="line-641"></a><span class='comment'>-- see also : 'processTopDown', 'processBottomUp'</span>-<a name="line-642"></a>-<a name="line-643"></a><a name="processTopDownUntil"></a><span class='definition'>processTopDownUntil</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-644"></a><span class='definition'>processTopDownUntil</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-645"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>res</span>-<a name="line-646"></a> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processTopDownUntil</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-647"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-648"></a> <span class='keyglyph'>=</span> <span class='varid'>res</span>-<a name="line-649"></a> <span class='keyword'>where</span>-<a name="line-650"></a> <span class='varid'>res</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-651"></a>-<a name="line-652"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-653"></a><span class='comment'>--</span>-<a name="line-654"></a>-<a name="line-655"></a><span class='comment'>-- |</span>-<a name="line-656"></a><span class='comment'>-- insertion of trees into the list of children at a given position</span>-<a name="line-657"></a><span class='comment'>--</span>-<a name="line-658"></a><span class='comment'>-- useful for inserting something into the list of children at a given position</span>-<a name="line-659"></a><span class='comment'>-- the list of children is split with the @splitAt@ function</span>-<a name="line-660"></a><span class='comment'>-- the nodes are inserted between these two sublists.</span>-<a name="line-661"></a><span class='comment'>--</span>-<a name="line-662"></a><span class='comment'>-- examples: @insertChildrenAt 0 ins t@ inserts all elements computed with @ins t@ in front</span>-<a name="line-663"></a><span class='comment'>-- of the childen of @t@, @insertChildrenAt 1 ins t@ behind the first child</span>-<a name="line-664"></a><span class='comment'>--</span>-<a name="line-665"></a><span class='comment'>-- see also: 'insertChildrenAfter'</span>-<a name="line-666"></a>-<a name="line-667"></a>-<a name="line-668"></a><a name="insertChildrenAt"></a><span class='definition'>insertChildrenAt</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-669"></a><span class='definition'>insertChildrenAt</span> <span class='varid'>i</span> <span class='varid'>ins</span> <span class='varid'>t</span>-<a name="line-670"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>cl1</span> <span class='varop'>++</span> <span class='varid'>ins</span> <span class='varid'>t</span> <span class='varop'>++</span> <span class='varid'>cl2</span><span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-671"></a> <span class='keyword'>where</span>-<a name="line-672"></a> <span class='layout'>(</span><span class='varid'>cl1</span><span class='layout'>,</span> <span class='varid'>cl2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>splitAt</span> <span class='varid'>i</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>t</span>-<a name="line-673"></a>-<a name="line-674"></a><span class='comment'>-- |</span>-<a name="line-675"></a><span class='comment'>-- insertion of trees into the list of children after specific elements</span>-<a name="line-676"></a><span class='comment'>--</span>-<a name="line-677"></a><span class='comment'>-- useful for inserting something into the list of children of a node</span>-<a name="line-678"></a><span class='comment'>-- the list of children is split with the @span@ function and the filter p as predicate</span>-<a name="line-679"></a><span class='comment'>-- the nodes are inserted between these two sublists</span>-<a name="line-680"></a><span class='comment'>--</span>-<a name="line-681"></a><span class='comment'>-- examples: @insertChildrenAfter none ins t@ inserts all elements computed with @ins t@ in front</span>-<a name="line-682"></a><span class='comment'>-- of the childen of @t@, @insertChildrenAfter this ins t@ appends the elements to the children</span>-<a name="line-683"></a><span class='comment'>--</span>-<a name="line-684"></a><span class='comment'>-- see also: 'insertChildrenAt'</span>-<a name="line-685"></a>-<a name="line-686"></a><a name="insertChildrenAfter"></a><span class='definition'>insertChildrenAfter</span> <span class='keyglyph'>::</span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>TFilter</span> <span class='varid'>node</span>-<a name="line-687"></a><span class='definition'>insertChildrenAfter</span> <span class='varid'>p</span> <span class='varid'>ins</span> <span class='varid'>t</span>-<a name="line-688"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>cl1</span> <span class='varop'>++</span> <span class='varid'>ins</span> <span class='varid'>t</span> <span class='varop'>++</span> <span class='varid'>cl2</span><span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-689"></a> <span class='keyword'>where</span>-<a name="line-690"></a> <span class='layout'>(</span><span class='varid'>cl1</span><span class='layout'>,</span> <span class='varid'>cl2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>t</span>-<a name="line-691"></a>-<a name="line-692"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-693"></a><span class='comment'>--</span>-<a name="line-694"></a><span class='comment'>-- monadic filter</span>-<a name="line-695"></a>-<a name="line-696"></a><span class='comment'>-- |</span>-<a name="line-697"></a><span class='comment'>-- the monadic version of the identity filter this.</span>-<a name="line-698"></a><span class='comment'>--</span>-<a name="line-699"></a><span class='comment'>-- see also : 'this'</span>-<a name="line-700"></a>-<a name="line-701"></a><a name="thisM"></a><span class='definition'>thisM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-702"></a><span class='definition'>thisM</span> <span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='varid'>this</span>-<a name="line-703"></a>-<a name="line-704"></a><span class='comment'>-- |</span>-<a name="line-705"></a><span class='comment'>-- the monadic version of the null filter none.</span>-<a name="line-706"></a><span class='comment'>--</span>-<a name="line-707"></a><span class='comment'>-- see also : 'none'</span>-<a name="line-708"></a>-<a name="line-709"></a><a name="noneM"></a><span class='definition'>noneM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-710"></a><span class='definition'>noneM</span> <span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='varid'>none</span>-<a name="line-711"></a>-<a name="line-712"></a><span class='comment'>-- |</span>-<a name="line-713"></a><span class='comment'>-- sequential composition of monadic filters, monadic version of \".>\".</span>-<a name="line-714"></a><span class='comment'>--</span>-<a name="line-715"></a><span class='comment'>-- * 1.parameter f1 : the 1. monadic filter</span>-<a name="line-716"></a><span class='comment'>--</span>-<a name="line-717"></a><span class='comment'>-- - 2.parameter f2 : the 2. monadic filter</span>-<a name="line-718"></a><span class='comment'>--</span>-<a name="line-719"></a><span class='comment'>-- - returns : the monadic fiter applying first f1 to n and then f2 to the result (like function composition)</span>-<a name="line-720"></a><span class='comment'>--</span>-<a name="line-721"></a><span class='comment'>-- see also : '(.>)'</span>-<a name="line-722"></a>-<a name="line-723"></a><a name=".>>"></a><span class='layout'>(</span><span class='varop'>.>></span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span><span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span><span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-724"></a><a name="cmd1"></a><span class='definition'>cmd1</span> <span class='varop'>.>></span> <span class='varid'>cmd2</span>-<a name="line-725"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span>-<a name="line-726"></a> <span class='keyword'>do</span>-<a name="line-727"></a> <span class='varid'>r1</span> <span class='keyglyph'><-</span> <span class='varid'>cmd1</span> <span class='varid'>t</span>-<a name="line-728"></a> <span class='varid'>r2</span> <span class='keyglyph'><-</span> <span class='varid'>mapM</span> <span class='varid'>cmd2</span> <span class='varid'>r1</span>-<a name="line-729"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>concat</span> <span class='varid'>r2</span><span class='layout'>)</span>-<a name="line-730"></a>-<a name="line-731"></a><span class='comment'>-- |</span>-<a name="line-732"></a><span class='comment'>-- generalized sequential composition of monadic filters</span>-<a name="line-733"></a>-<a name="line-734"></a><a name="seqM"></a><span class='definition'>seqM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span><span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span><span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-735"></a><span class='definition'>seqM</span>-<a name="line-736"></a> <span class='keyglyph'>=</span> <span class='varid'>foldr</span> <span class='layout'>(</span><span class='varop'>.>></span><span class='layout'>)</span> <span class='varid'>thisM</span>-<a name="line-737"></a>-<a name="line-738"></a><span class='comment'>-- |</span>-<a name="line-739"></a><span class='comment'>-- binary parallel composition, the logical OR for predicate filter</span>-<a name="line-740"></a><span class='comment'>--</span>-<a name="line-741"></a><span class='comment'>-- * 1.parameter f1 : the 1. filter</span>-<a name="line-742"></a><span class='comment'>--</span>-<a name="line-743"></a><span class='comment'>-- - 2.parameter f2 : the 2. filter</span>-<a name="line-744"></a><span class='comment'>--</span>-<a name="line-745"></a><span class='comment'>-- - returns : the filter for applying f1 and f2 both to an argument tree and concatenating the results</span>-<a name="line-746"></a><span class='comment'>-- see also: 'cat', '+++', 'catM'</span>-<a name="line-747"></a>-<a name="line-748"></a><a name="+++>>"></a><span class='layout'>(</span><span class='varop'>+++>></span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-749"></a><span class='definition'>f</span> <span class='varop'>+++>></span> <span class='varid'>g</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='keyword'>do</span>-<a name="line-750"></a> <span class='varid'>r1</span> <span class='keyglyph'><-</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-751"></a> <span class='varid'>r2</span> <span class='keyglyph'><-</span> <span class='varid'>g</span> <span class='varid'>t</span>-<a name="line-752"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>r1</span> <span class='varop'>++</span> <span class='varid'>r2</span><span class='layout'>)</span>-<a name="line-753"></a>-<a name="line-754"></a><span class='comment'>-- |</span>-<a name="line-755"></a><span class='comment'>-- apply a list of monadic filters</span>-<a name="line-756"></a><span class='comment'>--</span>-<a name="line-757"></a><span class='comment'>-- * 1.parameter fs : the list of filters</span>-<a name="line-758"></a><span class='comment'>--</span>-<a name="line-759"></a><span class='comment'>-- - returns : the composing filter</span>-<a name="line-760"></a><span class='comment'>-- see also: 'cat', '+++', '+++>>'</span>-<a name="line-761"></a>-<a name="line-762"></a><a name="catM"></a><span class='definition'>catM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-763"></a><span class='definition'>catM</span> <span class='varid'>fs</span> <span class='varid'>t</span>-<a name="line-764"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-765"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>sequence</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varop'>$</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='varid'>fs</span><span class='layout'>)</span>-<a name="line-766"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>concat</span> <span class='varid'>res</span>-<a name="line-767"></a>-<a name="line-768"></a><span class='comment'>-- |</span>-<a name="line-769"></a><span class='comment'>-- monadic if-then-else.</span>-<a name="line-770"></a><span class='comment'>--</span>-<a name="line-771"></a><span class='comment'>-- * 1.parameter p : the predicate</span>-<a name="line-772"></a><span class='comment'>--</span>-<a name="line-773"></a><span class='comment'>-- - 2.parameter thenP : the then part: the monadic filter, that is applied if p holds for the input tree</span>-<a name="line-774"></a><span class='comment'>--</span>-<a name="line-775"></a><span class='comment'>-- - 3.parameter elseP : the else part</span>-<a name="line-776"></a><span class='comment'>--</span>-<a name="line-777"></a><span class='comment'>-- - returns : the monadic filter for the conditional</span>-<a name="line-778"></a>-<a name="line-779"></a><a name="ifM"></a><span class='definition'>ifM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-780"></a><span class='definition'>ifM</span> <span class='varid'>p</span> <span class='varid'>thenPart</span> <span class='varid'>elsePart</span>-<a name="line-781"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span>-<a name="line-782"></a> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>satisfies</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-783"></a> <span class='keyword'>then</span> <span class='varid'>thenPart</span> <span class='varid'>t</span>-<a name="line-784"></a> <span class='keyword'>else</span> <span class='varid'>elsePart</span> <span class='varid'>t</span>-<a name="line-785"></a>-<a name="line-786"></a><span class='comment'>-- |</span>-<a name="line-787"></a><span class='comment'>-- monadic version of multiway branch. The list of cases @f :-> g@ is processed sequentially,</span>-<a name="line-788"></a><span class='comment'>-- in the first case for that f holds g is applied, if no case matches, 'noneM' is</span>-<a name="line-789"></a><span class='comment'>-- applied.</span>-<a name="line-790"></a><span class='comment'>-- This filter can be used like a case expression: @choiceM [ p1 :-> f1, p2 :-> f2, ... , thisM :-> defaultFilter]@</span>-<a name="line-791"></a><span class='comment'>--</span>-<a name="line-792"></a><span class='comment'>-- see also : 'choice', 'ifM'</span>-<a name="line-793"></a>-<a name="line-794"></a><a name="choiceM"></a><span class='definition'>choiceM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='keyglyph'>[</span><span class='conid'>IfThen</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-795"></a><span class='definition'>choiceM</span> <span class='conid'>[]</span>-<a name="line-796"></a> <span class='keyglyph'>=</span> <span class='varid'>noneM</span>-<a name="line-797"></a>-<a name="line-798"></a><span class='definition'>choiceM</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>g</span> <span class='conop'>:-></span> <span class='varid'>f</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-799"></a> <span class='keyglyph'>=</span> <span class='varid'>ifM</span> <span class='varid'>g</span> <span class='varid'>f</span> <span class='layout'>(</span><span class='varid'>choiceM</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-800"></a>-<a name="line-801"></a>-<a name="line-802"></a><span class='comment'>-- |</span>-<a name="line-803"></a><span class='comment'>-- when the predicate p holds, the monadic filter f is applied, else the identity filter.</span>-<a name="line-804"></a><span class='comment'>--</span>-<a name="line-805"></a><span class='comment'>-- * 1.parameter f : the conditinally applied monadic filter</span>-<a name="line-806"></a><span class='comment'>--</span>-<a name="line-807"></a><span class='comment'>-- - 2.parameter p : the simple predicate</span>-<a name="line-808"></a><span class='comment'>--</span>-<a name="line-809"></a><span class='comment'>-- - returns : the conditional filter</span>-<a name="line-810"></a><span class='comment'>--</span>-<a name="line-811"></a><span class='comment'>-- see also : 'ifM', 'when', 'guardsM', 'whenNotM'</span>-<a name="line-812"></a>-<a name="line-813"></a><a name="whenM"></a><span class='definition'>whenM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-814"></a><a name="whenM"></a><span class='definition'>f</span> <span class='varop'>`whenM`</span> <span class='varid'>g</span> <span class='keyglyph'>=</span> <span class='varid'>ifM</span> <span class='varid'>g</span> <span class='varid'>f</span> <span class='varid'>thisM</span>-<a name="line-815"></a>-<a name="line-816"></a><span class='comment'>-- |</span>-<a name="line-817"></a><span class='comment'>-- the complementary filter of whenM.</span>-<a name="line-818"></a><span class='comment'>--</span>-<a name="line-819"></a><span class='comment'>-- see also : 'ifM', 'whenM', 'whenNot'</span>-<a name="line-820"></a>-<a name="line-821"></a><a name="whenNotM"></a><span class='definition'>whenNotM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-822"></a><a name="whenNotM"></a><span class='definition'>f</span> <span class='varop'>`whenNotM`</span> <span class='varid'>g</span> <span class='keyglyph'>=</span> <span class='varid'>ifM</span> <span class='varid'>g</span> <span class='varid'>thisM</span> <span class='varid'>f</span>-<a name="line-823"></a>-<a name="line-824"></a><span class='comment'>-- |</span>-<a name="line-825"></a><span class='comment'>-- when the predicate p holds, the monadic filter f is applied, else the null filter.</span>-<a name="line-826"></a><span class='comment'>--</span>-<a name="line-827"></a><span class='comment'>-- * 1.parameter p : the simple predicate filter</span>-<a name="line-828"></a><span class='comment'>--</span>-<a name="line-829"></a><span class='comment'>-- - 2.parameter f : the conditionally applied monadic filter</span>-<a name="line-830"></a><span class='comment'>--</span>-<a name="line-831"></a><span class='comment'>-- - returns : the conditional filter</span>-<a name="line-832"></a><span class='comment'>--</span>-<a name="line-833"></a><span class='comment'>-- see also : 'ifM', 'guards', 'whenM'</span>-<a name="line-834"></a>-<a name="line-835"></a><a name="guardsM"></a><span class='definition'>guardsM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-836"></a><a name="guardsM"></a><span class='definition'>g</span> <span class='varop'>`guardsM`</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>ifM</span> <span class='varid'>g</span> <span class='varid'>f</span> <span class='varid'>noneM</span>-<a name="line-837"></a>-<a name="line-838"></a><span class='comment'>-- |</span>-<a name="line-839"></a><span class='comment'>-- Filter for editing the children of a tree with a monadic filter</span>-<a name="line-840"></a><span class='comment'>--</span>-<a name="line-841"></a><span class='comment'>-- * 1.parameter cf : the monadic filter applied to the children</span>-<a name="line-842"></a><span class='comment'>--</span>-<a name="line-843"></a><span class='comment'>-- - returns : the monadic editing filter</span>-<a name="line-844"></a><span class='comment'>--</span>-<a name="line-845"></a><span class='comment'>-- see also : 'processChildren'</span>-<a name="line-846"></a>-<a name="line-847"></a><a name="processChildrenM"></a><span class='definition'>processChildrenM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>node</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>node</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-848"></a><span class='definition'>processChildrenM</span> <span class='varid'>ft</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-849"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-850"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>ft</span> <span class='varop'>$$<</span> <span class='varid'>cs</span>-<a name="line-851"></a> <span class='varid'>return</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='varid'>res</span><span class='keyglyph'>]</span>-<a name="line-852"></a>-<a name="line-853"></a><span class='comment'>-- |</span>-<a name="line-854"></a><span class='comment'>-- monadic variant of 'processTopDown'</span>-<a name="line-855"></a>-<a name="line-856"></a><a name="processTopDownM"></a><span class='definition'>processTopDownM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>node</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>node</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-857"></a><span class='definition'>processTopDownM</span> <span class='varid'>f</span>-<a name="line-858"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>.>></span> <span class='varid'>processChildrenM</span> <span class='layout'>(</span><span class='varid'>processTopDownM</span> <span class='varid'>f</span><span class='layout'>)</span>-<a name="line-859"></a>-<a name="line-860"></a><span class='comment'>-- |</span>-<a name="line-861"></a><span class='comment'>-- monadic variant of 'processBottomUp'</span>-<a name="line-862"></a>-<a name="line-863"></a><a name="processBottomUpM"></a><span class='definition'>processBottomUpM</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>node</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='varid'>node</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-864"></a><span class='definition'>processBottomUpM</span> <span class='varid'>f</span>-<a name="line-865"></a> <span class='keyglyph'>=</span> <span class='varid'>processChildrenM</span> <span class='layout'>(</span><span class='varid'>processBottomUpM</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varop'>.>></span> <span class='varid'>f</span>-<a name="line-866"></a>-<a name="line-867"></a><span class='comment'>-- |</span>-<a name="line-868"></a><span class='comment'>-- infix operator for applying a monadic filter to a list of trees,</span>-<a name="line-869"></a><span class='comment'>-- typically used in do-notation for processing of intermediate results.</span>-<a name="line-870"></a><span class='comment'>--</span>-<a name="line-871"></a><span class='comment'>-- * 1.parameter f : the monadic filter</span>-<a name="line-872"></a><span class='comment'>--</span>-<a name="line-873"></a><span class='comment'>-- - 2.parameter ts : the list of trees</span>-<a name="line-874"></a><span class='comment'>--</span>-<a name="line-875"></a><span class='comment'>-- - returns : the concatenated list of results</span>-<a name="line-876"></a><span class='comment'>--</span>-<a name="line-877"></a><span class='comment'>-- see also : '($$)'</span>-<a name="line-878"></a>-<a name="line-879"></a><a name="$$<"></a><span class='layout'>(</span><span class='varop'>$$<</span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span>-<a name="line-880"></a><a name="cmd"></a><span class='definition'>cmd</span> <span class='varop'>$$<</span> <span class='varid'>l</span>-<a name="line-881"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-882"></a> <span class='varid'>r</span> <span class='keyglyph'><-</span> <span class='varid'>mapM</span> <span class='varid'>cmd</span> <span class='varid'>l</span>-<a name="line-883"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>concat</span> <span class='varid'>r</span><span class='layout'>)</span>-<a name="line-884"></a>-<a name="line-885"></a><span class='comment'>-- |</span>-<a name="line-886"></a><span class='comment'>-- lift a filter to a monadic filter</span>-<a name="line-887"></a><span class='comment'>--</span>-<a name="line-888"></a><span class='comment'>-- * 1.parameter f : the /simple/ filter</span>-<a name="line-889"></a><span class='comment'>--</span>-<a name="line-890"></a><span class='comment'>-- - returns : the lifted monadic version</span>-<a name="line-891"></a>-<a name="line-892"></a><a name="liftMf"></a><span class='definition'>liftMf</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span>-<a name="line-893"></a><span class='definition'>liftMf</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-894"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>t</span><span class='layout'>)</span>-<a name="line-895"></a>-<a name="line-896"></a><span class='comment'>-- |</span>-<a name="line-897"></a><span class='comment'>-- run an arbitray command on a tree t and return the tree,</span>-<a name="line-898"></a><span class='comment'>-- used for inserting arbitray commands in a filter pipeline</span>-<a name="line-899"></a><span class='comment'>--</span>-<a name="line-900"></a><span class='comment'>-- * 1.parameter cmd : the command</span>-<a name="line-901"></a><span class='comment'>--</span>-<a name="line-902"></a><span class='comment'>-- - 2.parameter t : the argument tree</span>-<a name="line-903"></a><span class='comment'>--</span>-<a name="line-904"></a><span class='comment'>-- - returns : the unchanged tree as a single element list</span>-<a name="line-905"></a>-<a name="line-906"></a><a name="performAction"></a><span class='definition'>performAction</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>-<a name="line-907"></a><span class='definition'>performAction</span> <span class='varid'>cmd</span> <span class='varid'>t</span>-<a name="line-908"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-909"></a> <span class='varid'>cmd</span> <span class='varid'>t</span>-<a name="line-910"></a> <span class='varid'>return</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span>-<a name="line-911"></a>-<a name="line-912"></a><span class='comment'>-- eof ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/System-PipeOpen.html
@@ -1,70 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a>-<a name="line-3"></a><span class='comment'>{- |-<a name="line-4"></a> Module : System.PipeOpen-<a name="line-5"></a> Copyright : Copyright (C) 2005 Uwe Schmidt-<a name="line-6"></a> License : MIT-<a name="line-7"></a>-<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe\@fh-wedel.de)-<a name="line-9"></a> Stability : experimental-<a name="line-10"></a> Portability: none portable-<a name="line-11"></a> Version : $Id: PipeOpen.hs,v 1.2 2005/09/02 17:09:39 hxml Exp $-<a name="line-12"></a>-<a name="line-13"></a>pipe open implemented with System.Process functions-<a name="line-14"></a>-<a name="line-15"></a>-}</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='keyword'>module</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>PipeOpen</span>-<a name="line-20"></a> <span class='layout'>(</span> <span class='varid'>popen</span> <span class='layout'>)</span>-<a name="line-21"></a><span class='keyword'>where</span>-<a name="line-22"></a>-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>IO</span>-<a name="line-24"></a> <span class='layout'>(</span> <span class='varid'>hGetContents</span>-<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>hClose</span>-<a name="line-26"></a> <span class='layout'>)</span>-<a name="line-27"></a>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Exit</span>-<a name="line-29"></a> <span class='layout'>(</span> <span class='conid'>ExitCode</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-30"></a> <span class='layout'>)</span>-<a name="line-31"></a>-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Process</span>-<a name="line-33"></a> <span class='layout'>(</span> <span class='varid'>runInteractiveProcess</span>-<a name="line-34"></a> <span class='layout'>,</span> <span class='varid'>waitForProcess</span>-<a name="line-35"></a> <span class='layout'>)</span>-<a name="line-36"></a>-<a name="line-37"></a><span class='comment'>-- | call an external program with a list of command line arguments</span>-<a name="line-38"></a><span class='comment'>-- and return content of stdout, content of stderr and return code</span>-<a name="line-39"></a>-<a name="line-40"></a><a name="popen"></a><span class='definition'>popen</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span>-<a name="line-41"></a><span class='definition'>popen</span> <span class='varid'>prg</span> <span class='varid'>argl</span>-<a name="line-42"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-43"></a> <span class='layout'>(</span><span class='varid'>inpH</span><span class='layout'>,</span> <span class='varid'>outH</span><span class='layout'>,</span> <span class='varid'>errH</span><span class='layout'>,</span> <span class='varid'>pH</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>runInteractiveProcess</span> <span class='varid'>prg</span> <span class='varid'>argl</span> <span class='conid'>Nothing</span> <span class='conid'>Nothing</span>-<a name="line-44"></a> <span class='varid'>hClose</span> <span class='varid'>inpH</span>-<a name="line-45"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>hGetContents</span> <span class='varid'>outH</span>-<a name="line-46"></a> <span class='varid'>errs</span> <span class='keyglyph'><-</span> <span class='varid'>hGetContents</span> <span class='varid'>errH</span>-<a name="line-47"></a>-<a name="line-48"></a> <span class='comment'>-- hack: stdout and stderr must be read completely, otherwise waitForProcess blocks</span>-<a name="line-49"></a> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>length</span> <span class='varid'>res</span> <span class='varop'>==</span> <span class='num'>0</span><span class='layout'>)</span> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='conid'>()</span> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='conid'>()</span>-<a name="line-50"></a> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>length</span> <span class='varid'>errs</span> <span class='varop'>==</span> <span class='num'>0</span><span class='layout'>)</span> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='conid'>()</span> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='conid'>()</span>-<a name="line-51"></a>-<a name="line-52"></a> <span class='varid'>rc</span> <span class='keyglyph'><-</span> <span class='varid'>waitForProcess</span> <span class='varid'>pH</span>-<a name="line-53"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>res</span>-<a name="line-54"></a> <span class='layout'>,</span> <span class='varid'>errs</span>-<a name="line-55"></a> <span class='layout'>,</span> <span class='keyword'>case</span> <span class='varid'>rc</span> <span class='keyword'>of</span>-<a name="line-56"></a> <span class='conid'>ExitSuccess</span> <span class='keyglyph'>-></span> <span class='num'>0</span>-<a name="line-57"></a> <span class='conid'>ExitFailure</span> <span class='varid'>i</span> <span class='keyglyph'>-></span> <span class='varid'>i</span>-<a name="line-58"></a> <span class='layout'>)</span>-<a name="line-59"></a>-<a name="line-60"></a><span class='comment'>-- eof ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-DOM-EditFilters.html
@@ -1,577 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- XML editing filters</span>-<a name="line-3"></a>-<a name="line-4"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span>-<a name="line-5"></a> <span class='layout'>(</span> <span class='varid'>canonicalizeTree</span>-<a name="line-6"></a> <span class='layout'>,</span> <span class='varid'>canonicalizeAllNodes</span>-<a name="line-7"></a> <span class='layout'>,</span> <span class='varid'>canonicalizeForXPath</span>-<a name="line-8"></a>-<a name="line-9"></a> <span class='layout'>,</span> <span class='varid'>collapseXText</span>-<a name="line-10"></a> <span class='layout'>,</span> <span class='varid'>collapseAllXText</span>-<a name="line-11"></a>-<a name="line-12"></a> <span class='layout'>,</span> <span class='varid'>indentDoc</span>-<a name="line-13"></a>-<a name="line-14"></a> <span class='layout'>,</span> <span class='varid'>removeWhiteSpace</span>-<a name="line-15"></a> <span class='layout'>,</span> <span class='varid'>removeAllWhiteSpace</span>-<a name="line-16"></a> <span class='layout'>,</span> <span class='varid'>removeDocWhiteSpace</span>-<a name="line-17"></a>-<a name="line-18"></a> <span class='layout'>,</span> <span class='varid'>removeComment</span>-<a name="line-19"></a> <span class='layout'>,</span> <span class='varid'>removeAllComment</span>-<a name="line-20"></a>-<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>transfCdata</span> <span class='layout'>,</span> <span class='varid'>transfAllCdata</span> <span class='comment'>-- CDATA to text</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>transfCdataEscaped</span> <span class='layout'>,</span> <span class='varid'>transfAllCdataEscaped</span> <span class='comment'>-- CDATA to text</span>-<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>transfCharRef</span> <span class='layout'>,</span> <span class='varid'>transfAllCharRef</span> <span class='comment'>-- &#nnn; to text</span>-<a name="line-24"></a>-<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>escapeXmlDoc</span>-<a name="line-26"></a> <span class='layout'>,</span> <span class='varid'>escapeXmlText</span>-<a name="line-27"></a> <span class='layout'>,</span> <span class='varid'>escapeXmlAttrValue</span>-<a name="line-28"></a>-<a name="line-29"></a> <span class='layout'>,</span> <span class='varid'>unparseXmlDoc</span>-<a name="line-30"></a> <span class='layout'>,</span> <span class='varid'>numberLinesInXmlDoc</span> <span class='layout'>,</span> <span class='varid'>numberLines</span>-<a name="line-31"></a> <span class='layout'>,</span> <span class='varid'>treeRepOfXmlDoc</span>-<a name="line-32"></a> <span class='layout'>,</span> <span class='varid'>haskellRepOfXmlDoc</span>-<a name="line-33"></a> <span class='layout'>,</span> <span class='varid'>addHeadlineToXmlDoc</span>-<a name="line-34"></a> <span class='layout'>,</span> <span class='varid'>addXmlPiToDoc</span>-<a name="line-35"></a> <span class='layout'>)</span>-<a name="line-36"></a><span class='keyword'>where</span>-<a name="line-37"></a>-<a name="line-38"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-39"></a>-<a name="line-40"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span>-<a name="line-41"></a> <span class='layout'>(</span> <span class='varid'>getOutputEncodingFct</span><span class='layout'>)</span>-<a name="line-42"></a>-<a name="line-43"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>FormatXmlTree</span>-<a name="line-44"></a> <span class='layout'>(</span> <span class='varid'>formatXmlContents</span> <span class='layout'>)</span>-<a name="line-45"></a>-<a name="line-46"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-47"></a>-<a name="line-48"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-49"></a>-<a name="line-50"></a><span class='comment'>-- |</span>-<a name="line-51"></a><span class='comment'>-- remove Comments</span>-<a name="line-52"></a>-<a name="line-53"></a><a name="removeComment"></a><span class='definition'>removeComment</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-54"></a><span class='definition'>removeComment</span> <span class='keyglyph'>=</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isXCmt</span>-<a name="line-55"></a>-<a name="line-56"></a><span class='comment'>-- |</span>-<a name="line-57"></a><span class='comment'>-- remove all Comments recursively</span>-<a name="line-58"></a>-<a name="line-59"></a><a name="removeAllComment"></a><span class='definition'>removeAllComment</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-60"></a><span class='definition'>removeAllComment</span> <span class='keyglyph'>=</span> <span class='varid'>processBottomUp</span> <span class='varid'>removeComment</span>-<a name="line-61"></a>-<a name="line-62"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-63"></a>-<a name="line-64"></a><span class='comment'>-- |</span>-<a name="line-65"></a><span class='comment'>-- simple filter for removing whitespace.</span>-<a name="line-66"></a><span class='comment'>--</span>-<a name="line-67"></a><span class='comment'>-- no check on sigificant whitespace is done.</span>-<a name="line-68"></a><span class='comment'>--</span>-<a name="line-69"></a><span class='comment'>--</span>-<a name="line-70"></a><span class='comment'>-- see also : 'removeAllWhiteSpace', 'removeDocWhiteSpace'</span>-<a name="line-71"></a>-<a name="line-72"></a><a name="removeWhiteSpace"></a><span class='definition'>removeWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-73"></a><span class='definition'>removeWhiteSpace</span> <span class='keyglyph'>=</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isWhiteSpace</span>-<a name="line-74"></a>-<a name="line-75"></a><span class='comment'>-- |</span>-<a name="line-76"></a><span class='comment'>-- simple recursive filter for removing all whitespace.</span>-<a name="line-77"></a><span class='comment'>--</span>-<a name="line-78"></a><span class='comment'>-- removes all text nodes in a tree that consist only of whitespace.</span>-<a name="line-79"></a><span class='comment'>--</span>-<a name="line-80"></a><span class='comment'>--</span>-<a name="line-81"></a><span class='comment'>-- see also : 'removeWhiteSpace', 'removeDocWhiteSpace'</span>-<a name="line-82"></a>-<a name="line-83"></a><a name="removeAllWhiteSpace"></a><span class='definition'>removeAllWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-84"></a><span class='definition'>removeAllWhiteSpace</span> <span class='keyglyph'>=</span> <span class='varid'>processBottomUp</span> <span class='varid'>removeWhiteSpace</span>-<a name="line-85"></a>-<a name="line-86"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-87"></a><span class='comment'>-- |</span>-<a name="line-88"></a><span class='comment'>-- converts CDATA sections in whole document tree into normal text nodes</span>-<a name="line-89"></a>-<a name="line-90"></a><a name="transfAllCdataEscaped"></a><span class='definition'>transfAllCdataEscaped</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-91"></a><span class='definition'>transfAllCdataEscaped</span> <span class='keyglyph'>=</span> <span class='varid'>processBottomUp</span> <span class='varid'>transfCdataEscaped</span>-<a name="line-92"></a>-<a name="line-93"></a><span class='comment'>-- |</span>-<a name="line-94"></a><span class='comment'>-- converts CDATA section in normal text nodes</span>-<a name="line-95"></a>-<a name="line-96"></a><a name="transfCdataEscaped"></a><span class='definition'>transfCdataEscaped</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-97"></a><span class='definition'>transfCdataEscaped</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XCdata</span> <span class='varid'>str</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-98"></a> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='varid'>str</span>-<a name="line-99"></a>-<a name="line-100"></a><span class='definition'>transfCdataEscaped</span> <span class='varid'>n</span>-<a name="line-101"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>-<a name="line-102"></a>-<a name="line-103"></a>-<a name="line-104"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-105"></a><span class='comment'>-- |</span>-<a name="line-106"></a><span class='comment'>-- converts CDATA sections in whole document tree</span>-<a name="line-107"></a>-<a name="line-108"></a><a name="transfAllCdata"></a><span class='definition'>transfAllCdata</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-109"></a><span class='definition'>transfAllCdata</span> <span class='keyglyph'>=</span> <span class='varid'>processBottomUp</span> <span class='varid'>transfCdata</span>-<a name="line-110"></a>-<a name="line-111"></a><span class='comment'>-- |</span>-<a name="line-112"></a><span class='comment'>-- converts CDATA section in normal text sections</span>-<a name="line-113"></a>-<a name="line-114"></a><a name="transfCdata"></a><span class='definition'>transfCdata</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-115"></a><span class='definition'>transfCdata</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XCdata</span> <span class='varid'>str</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-116"></a> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='varid'>str</span>-<a name="line-117"></a>-<a name="line-118"></a><span class='definition'>transfCdata</span> <span class='varid'>n</span>-<a name="line-119"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>-<a name="line-120"></a>-<a name="line-121"></a>-<a name="line-122"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-123"></a><span class='comment'>-- |</span>-<a name="line-124"></a><span class='comment'>-- converts character references to normal text</span>-<a name="line-125"></a>-<a name="line-126"></a><a name="transfCharRef"></a><span class='definition'>transfCharRef</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-127"></a><span class='definition'>transfCharRef</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XCharRef</span> <span class='varid'>i</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-128"></a> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='varop'>$</span> <span class='keyglyph'>[</span><span class='varid'>toEnum</span> <span class='varid'>i</span><span class='keyglyph'>]</span>-<a name="line-129"></a>-<a name="line-130"></a><span class='definition'>transfCharRef</span> <span class='varid'>n</span>-<a name="line-131"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>-<a name="line-132"></a>-<a name="line-133"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-134"></a><span class='comment'>-- |</span>-<a name="line-135"></a><span class='comment'>-- recursively converts all character references to normal text</span>-<a name="line-136"></a>-<a name="line-137"></a><a name="transfAllCharRef"></a><span class='definition'>transfAllCharRef</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-138"></a><span class='definition'>transfAllCharRef</span> <span class='keyglyph'>=</span> <span class='varid'>processBottomUp</span> <span class='varid'>transfCharRef</span>-<a name="line-139"></a>-<a name="line-140"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-141"></a>-<a name="line-142"></a><span class='comment'>-- |</span>-<a name="line-143"></a><span class='comment'>-- Applies some "Canonical XML" rules to the nodes of a tree.</span>-<a name="line-144"></a><span class='comment'>--</span>-<a name="line-145"></a><span class='comment'>-- The rule differ slightly for canonical XML and XPath in handling of comments</span>-<a name="line-146"></a><span class='comment'>--</span>-<a name="line-147"></a><span class='comment'>-- Note: This is not the whole canonicalization as it is specified by the W3C</span>-<a name="line-148"></a><span class='comment'>-- Recommendation. Adding attribute defaults or sorting attributes in lexicographic</span>-<a name="line-149"></a><span class='comment'>-- order is done by the @transform@ function of module @Text.XML.HXT.Validator.Validation@.</span>-<a name="line-150"></a><span class='comment'>-- Replacing entities or line feed normalization is done by the parser.</span>-<a name="line-151"></a><span class='comment'>--</span>-<a name="line-152"></a><span class='comment'>--</span>-<a name="line-153"></a><span class='comment'>-- Not implemented yet:</span>-<a name="line-154"></a><span class='comment'>--</span>-<a name="line-155"></a><span class='comment'>-- - Whitespace within start and end tags is normalized</span>-<a name="line-156"></a><span class='comment'>--</span>-<a name="line-157"></a><span class='comment'>-- - Special characters in attribute values and character content are replaced by character references</span>-<a name="line-158"></a><span class='comment'>--</span>-<a name="line-159"></a><span class='comment'>-- see 'canonicalizeAllNodes' and 'canonicalizeForXPath'</span>-<a name="line-160"></a>-<a name="line-161"></a><a name="canonicalizeTree"></a><span class='definition'>canonicalizeTree</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-162"></a><span class='definition'>canonicalizeTree</span> <span class='varid'>toBeRemoved</span>-<a name="line-163"></a> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isXText</span><span class='layout'>)</span>-<a name="line-164"></a> <span class='varop'>.></span>-<a name="line-165"></a> <span class='varid'>processBottomUp</span> <span class='varid'>canonicalize1Node</span>-<a name="line-166"></a> <span class='keyword'>where</span>-<a name="line-167"></a> <span class='varid'>canonicalize1Node</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-168"></a> <span class='varid'>canonicalize1Node</span>-<a name="line-169"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>deep</span> <span class='varid'>isXPi</span> <span class='varop'>`when`</span> <span class='varid'>isXDTD</span><span class='layout'>)</span> <span class='comment'>-- remove DTD parts, except PIs</span>-<a name="line-170"></a> <span class='varop'>.></span>-<a name="line-171"></a> <span class='layout'>(</span><span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>toBeRemoved</span><span class='layout'>)</span> <span class='comment'>-- remove unintersting nodes</span>-<a name="line-172"></a> <span class='varop'>.></span>-<a name="line-173"></a> <span class='layout'>(</span> <span class='varid'>processAttr</span> <span class='layout'>(</span> <span class='varid'>processChildren</span> <span class='varid'>transfCharRef</span>-<a name="line-174"></a> <span class='varop'>.></span>-<a name="line-175"></a> <span class='varid'>collapseXText</span>-<a name="line-176"></a> <span class='layout'>)</span> <span class='varop'>`when`</span> <span class='varid'>isXTag</span><span class='layout'>)</span>-<a name="line-177"></a> <span class='varop'>.></span>-<a name="line-178"></a> <span class='varid'>transfCdata</span> <span class='comment'>-- CDATA -> text</span>-<a name="line-179"></a> <span class='varop'>.></span>-<a name="line-180"></a> <span class='varid'>transfCharRef</span> <span class='comment'>-- Char refs -> text</span>-<a name="line-181"></a> <span class='varop'>.></span>-<a name="line-182"></a> <span class='varid'>collapseXText</span> <span class='comment'>-- combine text</span>-<a name="line-183"></a>-<a name="line-184"></a>-<a name="line-185"></a><span class='comment'>-- |</span>-<a name="line-186"></a><span class='comment'>-- canonicalize tree and remove comments and \<?xml ... ?> declarations</span>-<a name="line-187"></a><span class='comment'>--</span>-<a name="line-188"></a><span class='comment'>-- see 'canonicalizeTree'</span>-<a name="line-189"></a>-<a name="line-190"></a><a name="canonicalizeAllNodes"></a><span class='definition'>canonicalizeAllNodes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-191"></a><span class='definition'>canonicalizeAllNodes</span>-<a name="line-192"></a> <span class='keyglyph'>=</span> <span class='varid'>canonicalizeTree</span> <span class='layout'>(</span><span class='varid'>isXCmt</span> <span class='comment'>-- remove comment</span>-<a name="line-193"></a> <span class='varop'>+++</span>-<a name="line-194"></a> <span class='varid'>isPi</span> <span class='varid'>t_xml</span> <span class='comment'>-- remove xml declaration</span>-<a name="line-195"></a> <span class='layout'>)</span>-<a name="line-196"></a>-<a name="line-197"></a><span class='comment'>-- |</span>-<a name="line-198"></a><span class='comment'>-- Canonicalize a tree for XPath</span>-<a name="line-199"></a><span class='comment'>-- Comment nodes are not removed</span>-<a name="line-200"></a><span class='comment'>--</span>-<a name="line-201"></a><span class='comment'>-- see 'canonicalizeTree'</span>-<a name="line-202"></a>-<a name="line-203"></a><a name="canonicalizeForXPath"></a><span class='definition'>canonicalizeForXPath</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-204"></a><span class='definition'>canonicalizeForXPath</span>-<a name="line-205"></a> <span class='keyglyph'>=</span> <span class='varid'>canonicalizeTree</span> <span class='layout'>(</span><span class='varid'>isPi</span> <span class='varid'>t_xml</span><span class='layout'>)</span>-<a name="line-206"></a>-<a name="line-207"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-208"></a>-<a name="line-209"></a><span class='comment'>-- |</span>-<a name="line-210"></a><span class='comment'>-- Collects sequences of child XText nodes into one XText node.</span>-<a name="line-211"></a>-<a name="line-212"></a><a name="collapseXText"></a><span class='definition'>collapseXText</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-213"></a><span class='definition'>collapseXText</span> <span class='varid'>n</span>-<a name="line-214"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>collapseXText'</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-215"></a> <span class='keyword'>where</span>-<a name="line-216"></a> <span class='varid'>collapseXText'</span> <span class='keyglyph'>::</span> <span class='conid'>XmlSFilter</span>-<a name="line-217"></a> <span class='varid'>collapseXText'</span> <span class='layout'>(</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n1</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n2</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>zs</span><span class='layout'>)</span>-<a name="line-218"></a> <span class='keyglyph'>|</span> <span class='varid'>isXTextNode</span> <span class='varid'>n1</span> <span class='varop'>&&</span> <span class='varid'>isXTextNode</span> <span class='varid'>n2</span>-<a name="line-219"></a> <span class='keyglyph'>=</span> <span class='varid'>collapseXText'</span> <span class='varop'>$</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='layout'>(</span><span class='varid'>t1</span> <span class='varop'>++</span> <span class='varid'>t2</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='varid'>zs</span>-<a name="line-220"></a> <span class='keyword'>where</span>-<a name="line-221"></a> <span class='varid'>t1</span> <span class='keyglyph'>=</span> <span class='varid'>textOfXNode</span> <span class='varid'>n1</span>-<a name="line-222"></a> <span class='varid'>t2</span> <span class='keyglyph'>=</span> <span class='varid'>textOfXNode</span> <span class='varid'>n2</span>-<a name="line-223"></a>-<a name="line-224"></a> <span class='varid'>collapseXText'</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span>-<a name="line-225"></a> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='layout'>(</span><span class='varid'>collapseXText'</span> <span class='varid'>xs</span><span class='layout'>)</span>-<a name="line-226"></a>-<a name="line-227"></a> <span class='varid'>collapseXText'</span> <span class='conid'>[]</span>-<a name="line-228"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-229"></a>-<a name="line-230"></a>-<a name="line-231"></a><span class='comment'>-- |</span>-<a name="line-232"></a><span class='comment'>-- Applies collapseXText recursively.</span>-<a name="line-233"></a><span class='comment'>--</span>-<a name="line-234"></a><span class='comment'>--</span>-<a name="line-235"></a><span class='comment'>-- see also : 'collapseXText'</span>-<a name="line-236"></a>-<a name="line-237"></a><a name="collapseAllXText"></a><span class='definition'>collapseAllXText</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-238"></a><span class='definition'>collapseAllXText</span> <span class='keyglyph'>=</span> <span class='varid'>processBottomUp</span> <span class='varid'>collapseXText</span>-<a name="line-239"></a>-<a name="line-240"></a>-<a name="line-241"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-242"></a><span class='comment'>--</span>-<a name="line-243"></a>-<a name="line-244"></a><span class='comment'>-- |</span>-<a name="line-245"></a><span class='comment'>-- filter for indenting a document tree for pretty printing.</span>-<a name="line-246"></a><span class='comment'>--</span>-<a name="line-247"></a><span class='comment'>-- the tree is traversed for inserting whitespace for tag indentation.</span>-<a name="line-248"></a><span class='comment'>--</span>-<a name="line-249"></a><span class='comment'>-- whitespace is only inserted or changed at places, where it isn't significant,</span>-<a name="line-250"></a><span class='comment'>-- is's not inserted between tags and text containing non whitespace chars.</span>-<a name="line-251"></a><span class='comment'>--</span>-<a name="line-252"></a><span class='comment'>-- whitespace is only inserted or changed at places, where it's not significant.</span>-<a name="line-253"></a><span class='comment'>-- preserving whitespace may be controlled in a document tree</span>-<a name="line-254"></a><span class='comment'>-- by a tag attribute @xml:space@</span>-<a name="line-255"></a><span class='comment'>--</span>-<a name="line-256"></a><span class='comment'>-- allowed values for this attribute are @default | preserve@.</span>-<a name="line-257"></a><span class='comment'>--</span>-<a name="line-258"></a><span class='comment'>-- input is a complete document tree.</span>-<a name="line-259"></a><span class='comment'>-- result the semantically equivalent formatted tree.</span>-<a name="line-260"></a><span class='comment'>--</span>-<a name="line-261"></a><span class='comment'>--</span>-<a name="line-262"></a><span class='comment'>-- see also : 'removeDocWhiteSpace'</span>-<a name="line-263"></a>-<a name="line-264"></a><a name="indentDoc"></a><span class='definition'>indentDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-265"></a><span class='definition'>indentDoc</span> -<a name="line-266"></a> <span class='keyglyph'>=</span> <span class='varid'>modifyChildren</span> <span class='layout'>(</span><span class='varid'>indentRootChildren</span> <span class='varop'>$$</span><span class='layout'>)</span>-<a name="line-267"></a> <span class='varop'>`when`</span>-<a name="line-268"></a> <span class='varid'>isRoot</span>-<a name="line-269"></a> <span class='keyword'>where</span>-<a name="line-270"></a> <span class='varid'>indentRootChildren</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-271"></a> <span class='varid'>indentRootChildren</span>-<a name="line-272"></a> <span class='keyglyph'>=</span> <span class='varid'>insertNL</span> <span class='varop'>`o`</span> <span class='varid'>indentChild</span> <span class='varop'>`o`</span> <span class='varid'>removeText</span>-<a name="line-273"></a> <span class='keyword'>where</span>-<a name="line-274"></a> <span class='varid'>removeText</span>-<a name="line-275"></a> <span class='keyglyph'>=</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isXText</span>-<a name="line-276"></a> <span class='varid'>insertNL</span>-<a name="line-277"></a> <span class='keyglyph'>=</span> <span class='varid'>this</span> <span class='varop'>+++</span> <span class='varid'>txt</span> <span class='str'>"\n"</span>-<a name="line-278"></a> <span class='varid'>indentChild</span>-<a name="line-279"></a> <span class='keyglyph'>=</span> <span class='varid'>modifyChildren</span> <span class='layout'>(</span><span class='varid'>indentTrees</span> <span class='layout'>(</span><span class='varid'>insertIndentation</span> <span class='num'>2</span><span class='layout'>)</span> <span class='conid'>False</span> <span class='num'>1</span><span class='layout'>)</span>-<a name="line-280"></a> <span class='varop'>`whenNot`</span>-<a name="line-281"></a> <span class='varid'>isXDTD</span> <span class='comment'>-- DTD elements are not indented</span>-<a name="line-282"></a>-<a name="line-283"></a><span class='comment'>-- |</span>-<a name="line-284"></a><span class='comment'>-- filter for removing all not significant whitespace.</span>-<a name="line-285"></a><span class='comment'>--</span>-<a name="line-286"></a><span class='comment'>-- the tree traversed for removing whitespace between tags,</span>-<a name="line-287"></a><span class='comment'>-- that was inserted for indentation and readability.</span>-<a name="line-288"></a><span class='comment'>-- whitespace is only removed at places, where it's not significat</span>-<a name="line-289"></a><span class='comment'>-- preserving whitespace may be controlled in a document tree</span>-<a name="line-290"></a><span class='comment'>-- by a tag attribute @xml:space@</span>-<a name="line-291"></a><span class='comment'>--</span>-<a name="line-292"></a><span class='comment'>-- allowed values for this attribute are @default | preserve@</span>-<a name="line-293"></a><span class='comment'>--</span>-<a name="line-294"></a><span class='comment'>-- input is root node of the document to be cleaned up</span>-<a name="line-295"></a><span class='comment'>-- output the semantically equivalent simplified tree</span>-<a name="line-296"></a><span class='comment'>--</span>-<a name="line-297"></a><span class='comment'>--</span>-<a name="line-298"></a><span class='comment'>-- see also : 'indentDoc', 'removeAllWhiteSpace'</span>-<a name="line-299"></a>-<a name="line-300"></a><a name="removeDocWhiteSpace"></a><span class='definition'>removeDocWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-301"></a><span class='definition'>removeDocWhiteSpace</span>-<a name="line-302"></a> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='varid'>processRootElement</span>-<a name="line-303"></a> <span class='varop'>`when`</span>-<a name="line-304"></a> <span class='varid'>isRoot</span>-<a name="line-305"></a> <span class='keyword'>where</span>-<a name="line-306"></a> <span class='varid'>processRootElement</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-307"></a> <span class='varid'>processRootElement</span>-<a name="line-308"></a> <span class='keyglyph'>=</span> <span class='varid'>removeText</span> <span class='varop'>.></span> <span class='varid'>processChild</span>-<a name="line-309"></a> <span class='keyword'>where</span>-<a name="line-310"></a> <span class='varid'>removeText</span>-<a name="line-311"></a> <span class='keyglyph'>=</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isWhiteSpace</span>-<a name="line-312"></a> <span class='varid'>processChild</span>-<a name="line-313"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isXDTD</span>-<a name="line-314"></a> <span class='conop'>:-></span> <span class='varid'>removeAllWhiteSpace</span> <span class='comment'>-- whitespace in DTD is redundant</span>-<a name="line-315"></a> <span class='layout'>,</span> <span class='varid'>this</span>-<a name="line-316"></a> <span class='conop'>:-></span> <span class='varid'>modifyChildren</span> <span class='comment'>-- same strategie as for indentation</span>-<a name="line-317"></a> <span class='layout'>(</span><span class='varid'>indentTrees</span> <span class='varid'>insertNothing</span> <span class='conid'>False</span> <span class='num'>1</span><span class='layout'>)</span>-<a name="line-318"></a> <span class='keyglyph'>]</span>-<a name="line-319"></a>-<a name="line-320"></a><a name="indentTrees"></a><span class='definition'>indentTrees</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-321"></a><span class='definition'>indentTrees</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='conid'>[]</span>-<a name="line-322"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-323"></a><span class='definition'>indentTrees</span> <span class='varid'>indentFilter</span> <span class='varid'>preserveSpace</span> <span class='varid'>level</span> <span class='varid'>ts</span>-<a name="line-324"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>lsf</span> <span class='varop'>$$</span> <span class='varid'>ls</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='varid'>indentRest</span> <span class='varid'>rs</span>-<a name="line-325"></a> <span class='keyword'>where</span>-<a name="line-326"></a> <span class='layout'>(</span><span class='varid'>ls</span><span class='layout'>,</span> <span class='varid'>rs</span><span class='layout'>)</span>-<a name="line-327"></a> <span class='keyglyph'>=</span> <span class='varid'>break</span> <span class='layout'>(</span><span class='varid'>satisfies</span> <span class='varid'>isXTag</span><span class='layout'>)</span> <span class='varid'>ts</span>-<a name="line-328"></a>-<a name="line-329"></a> <span class='varid'>isSignificant</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span>-<a name="line-330"></a> <span class='varid'>isSignificant</span>-<a name="line-331"></a> <span class='keyglyph'>=</span> <span class='varid'>preserveSpace</span>-<a name="line-332"></a> <span class='varop'>||</span>-<a name="line-333"></a> <span class='varid'>any</span> <span class='layout'>(</span><span class='varid'>satisfies</span> <span class='varid'>isSignificantPart</span><span class='layout'>)</span> <span class='varid'>ls</span>-<a name="line-334"></a>-<a name="line-335"></a> <span class='varid'>isSignificantPart</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-336"></a> <span class='varid'>isSignificantPart</span>-<a name="line-337"></a> <span class='keyglyph'>=</span> <span class='varid'>cat</span> <span class='keyglyph'>[</span> <span class='varid'>isXText</span> <span class='varop'>`guards`</span> <span class='varid'>neg</span> <span class='varid'>isWhiteSpace</span>-<a name="line-338"></a> <span class='layout'>,</span> <span class='varid'>isXCdata</span>-<a name="line-339"></a> <span class='layout'>,</span> <span class='varid'>isXCharRef</span>-<a name="line-340"></a> <span class='layout'>,</span> <span class='varid'>isXEntityRef</span>-<a name="line-341"></a> <span class='keyglyph'>]</span>-<a name="line-342"></a>-<a name="line-343"></a> <span class='varid'>lsf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-344"></a> <span class='varid'>lsf</span>-<a name="line-345"></a> <span class='keyglyph'>|</span> <span class='varid'>isSignificant</span>-<a name="line-346"></a> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-347"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-348"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isWhiteSpace</span><span class='layout'>)</span>-<a name="line-349"></a> <span class='varop'>.></span>-<a name="line-350"></a> <span class='layout'>(</span><span class='varid'>indentFilter</span> <span class='varid'>level</span> <span class='varop'>+++</span> <span class='varid'>this</span><span class='layout'>)</span>-<a name="line-351"></a>-<a name="line-352"></a> <span class='varid'>indentRest</span> <span class='keyglyph'>::</span> <span class='conid'>XmlSFilter</span>-<a name="line-353"></a>-<a name="line-354"></a> <span class='varid'>indentRest</span> <span class='conid'>[]</span>-<a name="line-355"></a> <span class='keyglyph'>|</span> <span class='varid'>isSignificant</span>-<a name="line-356"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-357"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-358"></a> <span class='keyglyph'>=</span> <span class='varid'>indentFilter</span> <span class='layout'>(</span><span class='varid'>level</span> <span class='comment'>-</span> <span class='num'>1</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>mkXTextTree</span> <span class='str'>""</span><span class='layout'>)</span>-<a name="line-359"></a>-<a name="line-360"></a> <span class='varid'>indentRest</span> <span class='layout'>(</span><span class='varid'>t'</span><span class='conop'>:</span><span class='varid'>ts'</span><span class='layout'>)</span>-<a name="line-361"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>modifyChildren</span> <span class='varid'>indentChildren</span> <span class='varop'>.></span> <span class='varid'>lsf</span><span class='layout'>)</span>-<a name="line-362"></a> <span class='varop'>`when`</span>-<a name="line-363"></a> <span class='varid'>isXTag</span>-<a name="line-364"></a> <span class='varop'>$</span> <span class='varid'>t'</span>-<a name="line-365"></a> <span class='layout'>)</span>-<a name="line-366"></a> <span class='varop'>++</span>-<a name="line-367"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>ts'</span>-<a name="line-368"></a> <span class='keyword'>then</span> <span class='varid'>indentRest</span> <span class='varid'>ts'</span>-<a name="line-369"></a> <span class='keyword'>else</span> <span class='varid'>indentTrees</span> <span class='varid'>indentFilter</span> <span class='varid'>preserveSpace</span> <span class='varid'>level</span> <span class='varid'>ts'</span>-<a name="line-370"></a> <span class='layout'>)</span>-<a name="line-371"></a> <span class='keyword'>where</span>-<a name="line-372"></a> <span class='varid'>xmlSpaceAttrName</span> <span class='keyglyph'>=</span> <span class='str'>"xml:space"</span>-<a name="line-373"></a> <span class='varid'>xmlSpaceAttrValue</span> <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='varid'>xmlSpaceAttrName</span> <span class='varid'>t'</span>-<a name="line-374"></a> <span class='varid'>preserveSpace'</span>-<a name="line-375"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='varid'>preserveSpace</span>-<a name="line-376"></a> <span class='varop'>.</span>-<a name="line-377"></a> <span class='varid'>lookup</span> <span class='varid'>xmlSpaceAttrValue</span>-<a name="line-378"></a> <span class='varop'>$</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='str'>"preserve"</span><span class='layout'>,</span> <span class='conid'>True</span><span class='layout'>)</span>-<a name="line-379"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"default"</span><span class='layout'>,</span> <span class='conid'>False</span><span class='layout'>)</span>-<a name="line-380"></a> <span class='keyglyph'>]</span>-<a name="line-381"></a> <span class='varid'>indentChildren</span>-<a name="line-382"></a> <span class='keyglyph'>|</span> <span class='varid'>all</span> <span class='layout'>(</span><span class='varid'>satisfies</span> <span class='varid'>isWhiteSpace</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>t'</span>-<a name="line-383"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>none</span> <span class='varop'>$$</span><span class='layout'>)</span>-<a name="line-384"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-385"></a> <span class='keyglyph'>=</span> <span class='varid'>indentTrees</span> <span class='varid'>indentFilter</span> <span class='varid'>preserveSpace'</span> <span class='layout'>(</span><span class='varid'>level</span> <span class='varop'>+</span> <span class='num'>1</span><span class='layout'>)</span>-<a name="line-386"></a>-<a name="line-387"></a><span class='comment'>-- filter for indenting tags</span>-<a name="line-388"></a>-<a name="line-389"></a><a name="insertIndentation"></a><span class='definition'>insertIndentation</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-390"></a><span class='definition'>insertIndentation</span> <span class='varid'>indentWidth</span> <span class='varid'>level</span>-<a name="line-391"></a> <span class='keyglyph'>=</span> <span class='varid'>txt</span> <span class='layout'>(</span><span class='chr'>'\n'</span> <span class='conop'>:</span> <span class='varid'>replicate</span> <span class='layout'>(</span><span class='varid'>level</span> <span class='varop'>*</span> <span class='varid'>indentWidth</span><span class='layout'>)</span> <span class='chr'>' '</span><span class='layout'>)</span>-<a name="line-392"></a>-<a name="line-393"></a><span class='comment'>-- filter for removing all whitespace</span>-<a name="line-394"></a>-<a name="line-395"></a><a name="insertNothing"></a><span class='definition'>insertNothing</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-396"></a><span class='definition'>insertNothing</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>none</span>-<a name="line-397"></a>-<a name="line-398"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-399"></a>-<a name="line-400"></a><span class='comment'>-- |</span>-<a name="line-401"></a><span class='comment'>-- escape XmlText,</span>-<a name="line-402"></a><span class='comment'>-- transform all special XML chars into CharRefs</span>-<a name="line-403"></a>-<a name="line-404"></a><a name="escapeString"></a><span class='definition'>escapeString</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-405"></a><span class='definition'>escapeString</span> <span class='sel'>_isEsc</span> <span class='conid'>[]</span>-<a name="line-406"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-407"></a><span class='definition'>escapeString</span> <span class='varid'>isEsc</span> <span class='layout'>(</span><span class='varid'>c</span><span class='conop'>:</span><span class='varid'>s1</span><span class='layout'>)</span>-<a name="line-408"></a> <span class='keyglyph'>|</span> <span class='varid'>isEsc</span> <span class='varid'>c</span>-<a name="line-409"></a> <span class='keyglyph'>=</span> <span class='varid'>mkXCharRefTree</span> <span class='layout'>(</span><span class='varid'>fromEnum</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>escapeString</span> <span class='varid'>isEsc</span> <span class='varid'>s1</span>-<a name="line-410"></a><span class='definition'>escapeString</span> <span class='varid'>isEsc</span> <span class='varid'>s</span>-<a name="line-411"></a> <span class='keyglyph'>=</span> <span class='varid'>mkXTextTree</span> <span class='varid'>s1</span> <span class='conop'>:</span> <span class='varid'>escapeString</span> <span class='varid'>isEsc</span> <span class='varid'>s2</span>-<a name="line-412"></a> <span class='keyword'>where</span>-<a name="line-413"></a> <span class='layout'>(</span><span class='varid'>s1</span><span class='layout'>,</span> <span class='varid'>s2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>break</span> <span class='varid'>isEsc</span> <span class='varid'>s</span>-<a name="line-414"></a>-<a name="line-415"></a><a name="escapeText"></a><span class='definition'>escapeText</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-416"></a><span class='definition'>escapeText</span> <span class='varid'>isEsc</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-417"></a> <span class='keyglyph'>|</span> <span class='varid'>isXTextNode</span> <span class='varid'>n</span>-<a name="line-418"></a> <span class='keyglyph'>=</span> <span class='varid'>escapeString</span> <span class='varid'>isEsc</span> <span class='layout'>(</span><span class='varid'>textOfXNode</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-419"></a>-<a name="line-420"></a><span class='definition'>escapeText</span> <span class='varid'>isEsc</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XCmt</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-421"></a> <span class='keyglyph'>=</span> <span class='varid'>xcmt</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>escapeString</span> <span class='varid'>isEsc</span> <span class='varop'>$</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-422"></a>-<a name="line-423"></a><span class='definition'>escapeText</span> <span class='keyword'>_</span> <span class='varid'>t</span>-<a name="line-424"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span>-<a name="line-425"></a>-<a name="line-426"></a><span class='comment'>-- |</span>-<a name="line-427"></a><span class='comment'>-- convert the special XML chars in a text or comment node</span>-<a name="line-428"></a><span class='comment'>-- into character references</span>-<a name="line-429"></a><span class='comment'>--</span>-<a name="line-430"></a><span class='comment'>-- see also 'escapeXmlDoc'</span>-<a name="line-431"></a> -<a name="line-432"></a><a name="escapeXmlText"></a><span class='definition'>escapeXmlText</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-433"></a><span class='definition'>escapeXmlText</span> <span class='keyglyph'>=</span> <span class='varid'>escapeText</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='str'>"<&"</span><span class='layout'>)</span> <span class='comment'>-- no escape for ", ' and > required: XML standard 2.4</span>-<a name="line-434"></a>-<a name="line-435"></a><span class='comment'>-- |</span>-<a name="line-436"></a><span class='comment'>-- convert the special XML chars in an attribute value into</span>-<a name="line-437"></a><span class='comment'>-- charachter references. Not only the XML specials but also \\n, \\r and \\t are converted</span>-<a name="line-438"></a><span class='comment'>--</span>-<a name="line-439"></a><span class='comment'>-- see also: 'escapeXmlDoc', 'escapeXmlText'</span>-<a name="line-440"></a>-<a name="line-441"></a><a name="escapeXmlAttrValue"></a><span class='definition'>escapeXmlAttrValue</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-442"></a><span class='definition'>escapeXmlAttrValue</span> <span class='keyglyph'>=</span> <span class='varid'>escapeText</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='str'>"<>\"\'&\n\r\t"</span><span class='layout'>)</span>-<a name="line-443"></a>-<a name="line-444"></a><span class='comment'>-- |</span>-<a name="line-445"></a><span class='comment'>-- convert the special XML chars \", \<, \>, & and \' in a document to char references,</span>-<a name="line-446"></a><span class='comment'>-- attribute values are converted with 'escapeXmlAttrValue'</span>-<a name="line-447"></a><span class='comment'>--</span>-<a name="line-448"></a><span class='comment'>-- see also: 'escapeXmlText', 'escapeXmlAttrValue'</span>-<a name="line-449"></a>-<a name="line-450"></a><a name="escapeXmlDoc"></a><span class='definition'>escapeXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-451"></a><span class='definition'>escapeXmlDoc</span>-<a name="line-452"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isXTag</span> <span class='conop'>:-></span> <span class='layout'>(</span><span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>escapeXmlDoc</span><span class='layout'>)</span>-<a name="line-453"></a> <span class='varop'>.></span>-<a name="line-454"></a> <span class='varid'>processAttr</span> <span class='varid'>escVal</span>-<a name="line-455"></a> <span class='layout'>)</span>-<a name="line-456"></a> <span class='layout'>,</span> <span class='varid'>isXText</span> <span class='conop'>:-></span> <span class='varid'>escapeXmlText</span>-<a name="line-457"></a> <span class='comment'>-- , isXCmt :-> escapeXmlText -- no escape in comments reqired: XML standard 2.4</span>-<a name="line-458"></a> <span class='layout'>,</span> <span class='varid'>isXDTD</span> <span class='conop'>:-></span> <span class='varid'>processTopDown</span> <span class='varid'>escDTD</span>-<a name="line-459"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>-<a name="line-460"></a> <span class='keyglyph'>]</span>-<a name="line-461"></a> <span class='keyword'>where</span>-<a name="line-462"></a> <span class='varid'>escVal</span> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='varid'>escapeXmlAttrValue</span>-<a name="line-463"></a> <span class='varid'>escDTD</span> <span class='keyglyph'>=</span> <span class='varid'>escVal</span> <span class='varop'>`when`</span> <span class='layout'>(</span><span class='varid'>isEntity</span> <span class='varop'>+++</span> <span class='varid'>isParameterEntity</span><span class='layout'>)</span>-<a name="line-464"></a>-<a name="line-465"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-466"></a>-<a name="line-467"></a><span class='comment'>-- |</span>-<a name="line-468"></a><span class='comment'>-- convert a document tree into an output string representation</span>-<a name="line-469"></a><span class='comment'>-- with respect to the output encoding.</span>-<a name="line-470"></a><span class='comment'>--</span>-<a name="line-471"></a><span class='comment'>-- The children of the document root are stubstituted by</span>-<a name="line-472"></a><span class='comment'>-- a single text node for the text representation of the document.</span>-<a name="line-473"></a><span class='comment'>--</span>-<a name="line-474"></a><span class='comment'>-- Encoding of the document is performed with respect</span>-<a name="line-475"></a><span class='comment'>-- to the @output-encoding@ attribute in the root node, or if not present,</span>-<a name="line-476"></a><span class='comment'>-- of the @encoding@ attribute for the original input encoding.</span>-<a name="line-477"></a><span class='comment'>-- If the encoding is not specified or not supported, UTF-8 is taken.</span>-<a name="line-478"></a>-<a name="line-479"></a><a name="unparseXmlDoc"></a><span class='definition'>unparseXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-480"></a><span class='definition'>unparseXmlDoc</span> <span class='varid'>n</span>-<a name="line-481"></a> <span class='keyglyph'>=</span> <span class='varid'>modifyChildren</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>modifyText</span> <span class='varid'>encFct</span> <span class='varop'>$$</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>xmlTreesToText</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-482"></a> <span class='keyword'>where</span>-<a name="line-483"></a> <span class='varid'>encFct</span> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='varid'>id</span> <span class='layout'>(</span><span class='varid'>getOutputEncodingFct</span> <span class='layout'>(</span><span class='varid'>encSpec</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-484"></a>-<a name="line-485"></a><a name="encSpec"></a><span class='definition'>encSpec</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-486"></a><span class='definition'>encSpec</span> <span class='varid'>n</span>-<a name="line-487"></a> <span class='keyglyph'>=</span> <span class='varid'>head</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span>-<a name="line-488"></a> <span class='varop'>$</span> <span class='keyglyph'>[</span> <span class='varid'>valueOf</span> <span class='varid'>a_output_encoding</span> <span class='varid'>n</span>-<a name="line-489"></a> <span class='layout'>,</span> <span class='varid'>valueOf</span> <span class='varid'>a_encoding</span> <span class='varid'>n</span>-<a name="line-490"></a> <span class='layout'>,</span> <span class='varid'>utf8</span>-<a name="line-491"></a> <span class='keyglyph'>]</span>-<a name="line-492"></a>-<a name="line-493"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-494"></a><span class='comment'>--</span>-<a name="line-495"></a><span class='comment'>-- add or modify a XML directive for a document</span>-<a name="line-496"></a><span class='comment'>-- for specifying the encoding scheme</span>-<a name="line-497"></a>-<a name="line-498"></a><a name="addXmlPiToDoc"></a><span class='definition'>addXmlPiToDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-499"></a><span class='definition'>addXmlPiToDoc</span> <span class='varid'>n</span>-<a name="line-500"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>modifyChildren</span> <span class='varid'>addX</span> <span class='comment'>-- add <?xml ...>, if neccessary</span>-<a name="line-501"></a> <span class='varop'>`whenNot`</span>-<a name="line-502"></a> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>.></span> <span class='varid'>isPi</span> <span class='varid'>t_xml</span><span class='layout'>)</span>-<a name="line-503"></a> <span class='layout'>)</span>-<a name="line-504"></a> <span class='varop'>.></span>-<a name="line-505"></a> <span class='varid'>processChildren</span> <span class='layout'>(</span> <span class='varid'>addAttr</span> <span class='varid'>a_encoding</span> <span class='varid'>enc</span> <span class='comment'>-- set or replace encoding="..."</span>-<a name="line-506"></a> <span class='varop'>`when`</span>-<a name="line-507"></a> <span class='varid'>isPi</span> <span class='varid'>t_xml</span>-<a name="line-508"></a> <span class='layout'>)</span>-<a name="line-509"></a> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-510"></a> <span class='keyword'>where</span>-<a name="line-511"></a> <span class='varid'>enc</span> <span class='keyglyph'>=</span> <span class='varid'>encSpec</span> <span class='varid'>n</span>-<a name="line-512"></a> <span class='varid'>addX</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>mkXmlDeclTree</span> <span class='layout'>(</span><span class='varid'>xattr</span> <span class='varid'>a_version</span> <span class='str'>"1.0"</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>xtext</span> <span class='str'>"\n"</span> <span class='varop'>++</span> <span class='varid'>cs</span>-<a name="line-513"></a>-<a name="line-514"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-515"></a>-<a name="line-516"></a><span class='comment'>-- |</span>-<a name="line-517"></a><span class='comment'>-- convert a document into a text and add line numbers to the text representation.</span>-<a name="line-518"></a><span class='comment'>-- </span>-<a name="line-519"></a><span class='comment'>-- Result is a root node with a single text node as child.</span>-<a name="line-520"></a><span class='comment'>-- Useful for debugging and trace output.</span>-<a name="line-521"></a><span class='comment'>-- see also : 'haskellRepOfXmlDoc', 'treeRepOfXmlDoc'</span>-<a name="line-522"></a>-<a name="line-523"></a><a name="numberLinesInXmlDoc"></a><span class='definition'>numberLinesInXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-524"></a><span class='definition'>numberLinesInXmlDoc</span>-<a name="line-525"></a> <span class='keyglyph'>=</span> <span class='varid'>modifyChildren</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>modifyText</span> <span class='varid'>numberLines</span> <span class='varop'>$$</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>xmlTreesToText</span><span class='layout'>)</span>-<a name="line-526"></a>-<a name="line-527"></a><a name="numberLines"></a><span class='definition'>numberLines</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-528"></a><span class='definition'>numberLines</span> <span class='varid'>str</span>-<a name="line-529"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>$</span>-<a name="line-530"></a> <span class='varid'>zipWith</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='varid'>l</span> <span class='keyglyph'>-></span> <span class='varid'>lineNr</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='varid'>l</span> <span class='varop'>++</span> <span class='str'>"\n"</span><span class='layout'>)</span> <span class='keyglyph'>[</span><span class='num'>1</span><span class='keyglyph'>..</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='varid'>lines</span> <span class='varid'>str</span><span class='layout'>)</span>-<a name="line-531"></a> <span class='keyword'>where</span>-<a name="line-532"></a> <span class='varid'>lineNr</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-533"></a> <span class='varid'>lineNr</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>reverse</span> <span class='layout'>(</span><span class='varid'>take</span> <span class='num'>6</span><span class='layout'>(</span><span class='varid'>reverse</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='varid'>replicate</span> <span class='num'>6</span> <span class='chr'>' '</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" "</span>-<a name="line-534"></a>-<a name="line-535"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-536"></a>-<a name="line-537"></a><span class='comment'>-- |</span>-<a name="line-538"></a><span class='comment'>-- convert a document into a text representation in tree form.</span>-<a name="line-539"></a><span class='comment'>--</span>-<a name="line-540"></a><span class='comment'>-- Useful for debugging and trace output.</span>-<a name="line-541"></a><span class='comment'>-- see also : 'haskellRepOfXmlDoc', 'numberLinesInXmlDoc'</span>-<a name="line-542"></a>-<a name="line-543"></a><a name="treeRepOfXmlDoc"></a><span class='definition'>treeRepOfXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-544"></a><span class='definition'>treeRepOfXmlDoc</span>-<a name="line-545"></a> <span class='keyglyph'>=</span> <span class='varid'>rootTag</span> <span class='keyglyph'>[</span><span class='varid'>getAttrl</span><span class='keyglyph'>]</span> <span class='keyglyph'>[</span><span class='varid'>formatXmlContents</span><span class='keyglyph'>]</span>-<a name="line-546"></a>-<a name="line-547"></a><span class='comment'>-- |</span>-<a name="line-548"></a><span class='comment'>-- convert a document into a Haskell representation (with show).</span>-<a name="line-549"></a><span class='comment'>--</span>-<a name="line-550"></a><span class='comment'>-- Useful for debugging and trace output.</span>-<a name="line-551"></a><span class='comment'>-- see also : 'treeRepOfXmlDoc', 'numberLinesInXmlDoc'</span>-<a name="line-552"></a>-<a name="line-553"></a><a name="haskellRepOfXmlDoc"></a><span class='definition'>haskellRepOfXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-554"></a><span class='definition'>haskellRepOfXmlDoc</span> <span class='varid'>n</span>-<a name="line-555"></a> <span class='keyglyph'>=</span> <span class='varid'>rootTag</span> <span class='keyglyph'>[</span><span class='varid'>getAttrl</span><span class='keyglyph'>]</span> <span class='keyglyph'>[</span><span class='varid'>txt</span> <span class='varop'>$</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='keyglyph'>]</span> <span class='varid'>n</span>-<a name="line-556"></a>-<a name="line-557"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-558"></a>-<a name="line-559"></a><a name="addHeadlineToXmlDoc"></a><span class='definition'>addHeadlineToXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-560"></a><span class='definition'>addHeadlineToXmlDoc</span> <span class='varid'>n</span>-<a name="line-561"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='varid'>title</span> <span class='varop'>++</span> <span class='varid'>getChildren</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='varid'>xtext</span> <span class='str'>"\n"</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-562"></a> <span class='keyword'>where</span>-<a name="line-563"></a> <span class='varid'>headline</span> <span class='keyglyph'>=</span> <span class='str'>"content of: "</span> <span class='varop'>++</span> <span class='varid'>valueOf</span> <span class='varid'>a_source</span> <span class='varid'>n</span>-<a name="line-564"></a> <span class='varid'>underline</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='chr'>'='</span><span class='layout'>)</span> <span class='varid'>headline</span>-<a name="line-565"></a> <span class='varid'>title</span> <span class='keyglyph'>=</span> <span class='str'>"\n"</span> <span class='varop'>++</span> <span class='varid'>headline</span> <span class='varop'>++</span> <span class='str'>"\n"</span> <span class='varop'>++</span> <span class='varid'>underline</span> <span class='varop'>++</span> <span class='str'>"\n\n"</span>-<a name="line-566"></a>-<a name="line-567"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-DOM-Namespace.html
@@ -1,62 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- main namespace filter for propagation, checking, tracing and error handling</span>-<a name="line-3"></a>-<a name="line-4"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Namespace</span>-<a name="line-5"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Namespace</span>-<a name="line-6"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespaceFilter</span>-<a name="line-7"></a> <span class='layout'>)</span>-<a name="line-8"></a><span class='keyword'>where</span>-<a name="line-9"></a>-<a name="line-10"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-11"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-12"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespaceFilter</span>-<a name="line-13"></a>-<a name="line-14"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>-<a name="line-15"></a> <span class='layout'>(</span> <span class='varid'>traceTree</span>-<a name="line-16"></a> <span class='layout'>,</span> <span class='varid'>traceSource</span>-<a name="line-17"></a> <span class='layout'>,</span> <span class='varid'>traceMsg</span>-<a name="line-18"></a> <span class='layout'>)</span>-<a name="line-19"></a>-<a name="line-20"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-21"></a>-<a name="line-22"></a><span class='comment'>-- |</span>-<a name="line-23"></a><span class='comment'>-- propagate all namespace declarations, check namespace constraints and issue errors.</span>-<a name="line-24"></a><span class='comment'>-- If no error was found, result is the unchanged input tree, else the root node \"\/\" with an empty document is returned.</span>-<a name="line-25"></a><span class='comment'>--</span>-<a name="line-26"></a><span class='comment'>-- see also : 'propagateNamespaces', 'validateNamespaces'</span>-<a name="line-27"></a>-<a name="line-28"></a><a name="propagateAndValidateNamespaces"></a><span class='definition'>propagateAndValidateNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-29"></a><span class='definition'>propagateAndValidateNamespaces</span>-<a name="line-30"></a> <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='str'>"propagating namespaces"</span>-<a name="line-31"></a> <span class='varop'>.>></span>-<a name="line-32"></a> <span class='varid'>liftMf</span> <span class='varid'>propagateNamespaces</span>-<a name="line-33"></a> <span class='varop'>.>></span>-<a name="line-34"></a> <span class='varid'>traceTree</span>-<a name="line-35"></a> <span class='varop'>.>></span>-<a name="line-36"></a> <span class='varid'>traceSource</span>-<a name="line-37"></a> <span class='varop'>.>></span>-<a name="line-38"></a> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='str'>"validating namespaces"</span>-<a name="line-39"></a> <span class='varop'>.>></span>-<a name="line-40"></a> <span class='varid'>validate</span>-<a name="line-41"></a> <span class='keyword'>where</span>-<a name="line-42"></a> <span class='varid'>validate</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-43"></a> <span class='varid'>validate</span> <span class='varid'>t</span>-<a name="line-44"></a> <span class='keyglyph'>=</span> <span class='keyword'>let</span>-<a name="line-45"></a> <span class='varid'>errs</span> <span class='keyglyph'>=</span> <span class='varid'>validateNamespaces</span> <span class='varid'>t</span>-<a name="line-46"></a> <span class='keyword'>in</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>errs</span>-<a name="line-47"></a> <span class='keyword'>then</span> <span class='varid'>thisM</span> <span class='varid'>t</span>-<a name="line-48"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>-<a name="line-49"></a> <span class='varid'>liftF</span> <span class='varid'>this</span> <span class='varop'>$$<</span> <span class='varid'>errs</span>-<a name="line-50"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>setStatus</span> <span class='varid'>c_err</span> <span class='str'>"namespace propagation"</span> <span class='varid'>t</span><span class='layout'>)</span>-<a name="line-51"></a> -<a name="line-52"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-DOM-NamespaceFilter.html
@@ -1,231 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- Namespace filter</span>-<a name="line-3"></a><span class='comment'>--</span>-<a name="line-4"></a><span class='comment'>-- Namespaces are processed with two main filter, 'propagateNamespaces'</span>-<a name="line-5"></a><span class='comment'>-- and 'validateNamespaces'.</span>-<a name="line-6"></a><span class='comment'>--</span>-<a name="line-7"></a><span class='comment'>-- 'propagateNamespaces' takes a XML tree and</span>-<a name="line-8"></a><span class='comment'>-- attaches extra namespace info at every tag name and attribute name.</span>-<a name="line-9"></a><span class='comment'>-- So after processing a tree with 'propagateNamespaces', the access functions</span>-<a name="line-10"></a><span class='comment'>-- "namespaceOf" and "universalNameOf" deliver the associated namespace (or \"\")</span>-<a name="line-11"></a><span class='comment'>-- for tag names and attribute names.</span>-<a name="line-12"></a><span class='comment'>--</span>-<a name="line-13"></a><span class='comment'>-- 'validateNamespaces' checks whether names are wellformed related to the XML namespace definition.</span>-<a name="line-14"></a><span class='comment'>-- whether a legal namespace is declared for all prefixes, and whether attribute names are unique</span>-<a name="line-15"></a><span class='comment'>-- related to universal names.</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespaceFilter</span>-<a name="line-18"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespaceFilter</span>-<a name="line-19"></a> <span class='layout'>)</span>-<a name="line-20"></a><span class='keyword'>where</span>-<a name="line-21"></a>-<a name="line-22"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-23"></a>-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>-<a name="line-25"></a> <span class='layout'>(</span> <span class='varid'>doubles</span> <span class='layout'>)</span>-<a name="line-26"></a>-<a name="line-27"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-28"></a><span class='comment'>--</span>-<a name="line-29"></a>-<a name="line-30"></a><span class='comment'>-- |</span>-<a name="line-31"></a><span class='comment'>-- Type for the namespace association list, used when propagating namespaces by</span>-<a name="line-32"></a><span class='comment'>-- modifying the 'QName' values in a tree</span>-<a name="line-33"></a>-<a name="line-34"></a><a name="NamespaceTable"></a><span class='keyword'>type</span> <span class='conid'>NamespaceTable</span> <span class='keyglyph'>=</span> <span class='conid'>NsEnv</span>-<a name="line-35"></a>-<a name="line-36"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-37"></a>-<a name="line-38"></a><span class='comment'>-- |</span>-<a name="line-39"></a><span class='comment'>-- propagate all namespace declarations \"xmlns:ns=...\" to all</span>-<a name="line-40"></a><span class='comment'>-- tag and attribute nodes of a document.</span>-<a name="line-41"></a><span class='comment'>--</span>-<a name="line-42"></a><span class='comment'>-- This filter does not check for illegal use of namespaces.</span>-<a name="line-43"></a><span class='comment'>-- The real work is done by 'propagateNamespaceEnv'.</span>-<a name="line-44"></a><span class='comment'>--</span>-<a name="line-45"></a><span class='comment'>-- The filter may be applied repeatedly if neccessary.</span>-<a name="line-46"></a>-<a name="line-47"></a><a name="propagateNamespaces"></a><span class='definition'>propagateNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-48"></a><span class='definition'>propagateNamespaces</span> <span class='keyglyph'>=</span> <span class='varid'>propagateNamespaceEnv</span> <span class='varop'>$</span> <span class='varid'>toNsEnv</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_xml</span><span class='layout'>,</span> <span class='varid'>xmlNamespace</span><span class='layout'>)</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_xmlns</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-49"></a>-<a name="line-50"></a><span class='comment'>-- |</span>-<a name="line-51"></a><span class='comment'>-- attaches the namespace info given by the namespace table</span>-<a name="line-52"></a><span class='comment'>-- to a tag node and its attributes and children.</span>-<a name="line-53"></a>-<a name="line-54"></a><a name="propagateNamespaceEnv"></a><span class='definition'>propagateNamespaceEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NamespaceTable</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-55"></a><span class='definition'>propagateNamespaceEnv</span> <span class='varid'>env</span> <span class='varid'>n</span>-<a name="line-56"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>processAttr</span> <span class='layout'>(</span><span class='varid'>attachNamespaceUrisToAttr</span> <span class='varid'>newEnv</span><span class='layout'>)</span>-<a name="line-57"></a> <span class='varop'>.></span>-<a name="line-58"></a> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>propagateNamespaceEnv</span> <span class='varid'>newEnv</span><span class='layout'>)</span>-<a name="line-59"></a> <span class='varop'>.></span>-<a name="line-60"></a> <span class='varid'>modifyQName</span> <span class='layout'>(</span><span class='varid'>setNamespace</span> <span class='varid'>newEnv</span><span class='layout'>)</span>-<a name="line-61"></a> <span class='layout'>)</span>-<a name="line-62"></a> <span class='varop'>`when`</span>-<a name="line-63"></a> <span class='varid'>isXTag</span>-<a name="line-64"></a> <span class='layout'>)</span>-<a name="line-65"></a> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-66"></a> <span class='keyword'>where</span>-<a name="line-67"></a> <span class='varid'>nsAttrs</span> <span class='keyglyph'>=</span> <span class='varid'>getAttrl</span> <span class='comment'>-- scan all attributes</span>-<a name="line-68"></a> <span class='varop'>.></span>-<a name="line-69"></a> <span class='varid'>isOfAttr</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span>-<a name="line-70"></a> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span> <span class='comment'>-- check for prefix or whole name is "xmlns"</span>-<a name="line-71"></a> <span class='varop'>&&</span>-<a name="line-72"></a> <span class='varid'>lp</span> <span class='varop'>/=</span> <span class='str'>":"</span> <span class='comment'>-- check for none empty local part, "xmlns:" is not a legal name</span>-<a name="line-73"></a> <span class='layout'>)</span>-<a name="line-74"></a> <span class='layout'>)</span>-<a name="line-75"></a> <span class='varop'>.</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='comment'>-- break the name into a pair ("prefix", ":localPart")</span>-<a name="line-76"></a> <span class='varop'>.</span> <span class='varid'>qualifiedName</span> <span class='comment'>-- select attribute name</span>-<a name="line-77"></a> <span class='layout'>)</span>-<a name="line-78"></a> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-79"></a> <span class='varid'>nsDecl</span> <span class='keyglyph'>=</span> <span class='varid'>zip</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>drop</span> <span class='num'>1</span> <span class='comment'>-- drop the ":", empty local part represents default name space</span>-<a name="line-80"></a> <span class='varop'>.</span> <span class='varid'>snd</span> <span class='comment'>-- take the local part with leading ":"</span>-<a name="line-81"></a> <span class='varop'>.</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='comment'>-- break it like above</span>-<a name="line-82"></a> <span class='varop'>.</span> <span class='varid'>nameOf</span> <span class='comment'>-- select attribute name</span>-<a name="line-83"></a> <span class='layout'>)</span> <span class='varid'>nsAttrs</span><span class='layout'>)</span>-<a name="line-84"></a> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>xshow</span>-<a name="line-85"></a> <span class='varop'>.</span>-<a name="line-86"></a> <span class='varid'>getChildren</span>-<a name="line-87"></a> <span class='layout'>)</span> <span class='varid'>nsAttrs</span><span class='layout'>)</span>-<a name="line-88"></a> <span class='varid'>newEnv</span> <span class='keyglyph'>=</span> <span class='varid'>addEntries</span> <span class='layout'>(</span><span class='varid'>toNsEnv</span> <span class='varid'>nsDecl</span><span class='layout'>)</span> <span class='varid'>env</span>-<a name="line-89"></a>-<a name="line-90"></a> <span class='varid'>attachNamespaceUrisToAttr</span> <span class='keyglyph'>::</span> <span class='conid'>NamespaceTable</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-91"></a> <span class='varid'>attachNamespaceUrisToAttr</span> <span class='varid'>attrEnv</span>-<a name="line-92"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>isOfAttr</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span>-<a name="line-93"></a> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>drop</span> <span class='num'>1</span><span class='layout'>)</span> <span class='varid'>lp</span> <span class='comment'>-- prefix and local part must not be empty</span>-<a name="line-94"></a> <span class='varop'>&&</span>-<a name="line-95"></a> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span> <span class='varid'>px</span>-<a name="line-96"></a> <span class='layout'>)</span>-<a name="line-97"></a> <span class='layout'>)</span>-<a name="line-98"></a> <span class='varop'>.</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='comment'>-- break the name into a pair ("prefix", ":localPart")</span>-<a name="line-99"></a> <span class='varop'>.</span> <span class='varid'>qualifiedName</span> <span class='comment'>-- select attribute name</span>-<a name="line-100"></a> <span class='layout'>)</span>-<a name="line-101"></a> <span class='varop'>`guards`</span>-<a name="line-102"></a> <span class='varid'>modifyQName</span> <span class='layout'>(</span><span class='varid'>setNamespace</span> <span class='varid'>attrEnv</span><span class='layout'>)</span>-<a name="line-103"></a> <span class='layout'>)</span>-<a name="line-104"></a> <span class='varop'>`orElse`</span>-<a name="line-105"></a> <span class='layout'>(</span> <span class='varid'>modifyQName</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>xmlnsQN</span><span class='layout'>)</span> <span class='comment'>-- "xmlns" ist the only attr name without prefix but with an associated namespace URI</span>-<a name="line-106"></a> <span class='varop'>`when`</span>-<a name="line-107"></a> <span class='varid'>isAttr</span> <span class='varid'>a_xmlns</span>-<a name="line-108"></a> <span class='layout'>)</span>-<a name="line-109"></a>-<a name="line-110"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-111"></a>-<a name="line-112"></a><span class='comment'>-- |</span>-<a name="line-113"></a><span class='comment'>-- validate the namespace constraints in a whole tree.</span>-<a name="line-114"></a><span class='comment'>-- result is the list of errors concerning namespaces.</span>-<a name="line-115"></a><span class='comment'>-- Work is done by applying 'validate1Namespaces' to all nodes.</span>-<a name="line-116"></a><span class='comment'>-- Predicates 'isWellformedQName', 'isWellformedQualifiedName', 'isDeclaredNamespace'</span>-<a name="line-117"></a><span class='comment'>-- and 'isWellformedNSDecl' are applied to the appropriate tags and attributes.</span>-<a name="line-118"></a>-<a name="line-119"></a><a name="validateNamespaces"></a><span class='definition'>validateNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-120"></a><span class='definition'>validateNamespaces</span>-<a name="line-121"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isRoot</span>-<a name="line-122"></a> <span class='conop'>:-></span> <span class='varid'>getChildren</span> <span class='varop'>.></span> <span class='varid'>validateNamespaces</span> <span class='comment'>-- root is correct by definition</span>-<a name="line-123"></a> <span class='layout'>,</span> <span class='varid'>this</span>-<a name="line-124"></a> <span class='conop'>:-></span> <span class='varid'>multi</span> <span class='varid'>validate1Namespaces</span>-<a name="line-125"></a> <span class='keyglyph'>]</span>-<a name="line-126"></a>-<a name="line-127"></a><span class='comment'>-- |</span>-<a name="line-128"></a><span class='comment'>-- a single node for namespace constrains.</span>-<a name="line-129"></a>-<a name="line-130"></a><a name="validate1Namespaces"></a><span class='definition'>validate1Namespaces</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-131"></a><span class='definition'>validate1Namespaces</span>-<a name="line-132"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isXTag</span>-<a name="line-133"></a> <span class='conop'>:-></span>-<a name="line-134"></a> <span class='varid'>cat</span> <span class='keyglyph'>[</span> <span class='varid'>isOfTag</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQName</span> <span class='layout'>)</span>-<a name="line-135"></a> <span class='varop'>`guards`</span>-<a name="line-136"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"tag name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" is not a wellformed qualified name"</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>-<a name="line-137"></a>-<a name="line-138"></a> <span class='layout'>,</span> <span class='varid'>isOfTag</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isDeclaredNamespace</span> <span class='layout'>)</span>-<a name="line-139"></a> <span class='varop'>`guards`</span>-<a name="line-140"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"namespace for prefix in tag name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" is undefined"</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>-<a name="line-141"></a>-<a name="line-142"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='keyword'>let</span>-<a name="line-143"></a> <span class='varid'>dbls</span> <span class='keyglyph'>=</span> <span class='varid'>doubles</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>universalNameOf</span> <span class='varop'>.</span> <span class='varid'>getAttrl</span><span class='layout'>)</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-144"></a> <span class='keyword'>in</span>-<a name="line-145"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>dbls</span>-<a name="line-146"></a> <span class='keyword'>then</span> <span class='varid'>none</span>-<a name="line-147"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span> <span class='str'>"multiple occurences of universal names for attributes of tag "</span>-<a name="line-148"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-149"></a> <span class='varop'>++</span> <span class='str'>" : "</span> <span class='varop'>++</span> <span class='varid'>foldr1</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>-></span> <span class='varid'>x</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>y</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>show</span> <span class='varid'>dbls</span><span class='layout'>)</span>-<a name="line-150"></a> <span class='layout'>)</span>-<a name="line-151"></a> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-152"></a> <span class='layout'>)</span>-<a name="line-153"></a>-<a name="line-154"></a> <span class='layout'>,</span> <span class='varid'>getAttrl</span> <span class='varop'>.></span> <span class='varid'>validate1Namespaces</span>-<a name="line-155"></a> <span class='keyglyph'>]</span>-<a name="line-156"></a>-<a name="line-157"></a> <span class='layout'>,</span> <span class='varid'>isXAttr</span>-<a name="line-158"></a> <span class='conop'>:-></span>-<a name="line-159"></a> <span class='varid'>cat</span> <span class='keyglyph'>[</span> <span class='varid'>isOfAttr</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQName</span> <span class='layout'>)</span>-<a name="line-160"></a> <span class='varop'>`guards`</span>-<a name="line-161"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"attribute name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" is not a wellformed qualified name"</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>-<a name="line-162"></a>-<a name="line-163"></a> <span class='layout'>,</span> <span class='varid'>isOfAttr</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isDeclaredNamespace</span> <span class='layout'>)</span>-<a name="line-164"></a> <span class='varop'>`guards`</span>-<a name="line-165"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"namespace for prefix in attribute name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" is undefined"</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>-<a name="line-166"></a>-<a name="line-167"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>hasPrefix</span> <span class='varid'>a_xmlns</span> <span class='varop'>.></span> <span class='varid'>neg</span> <span class='layout'>(</span><span class='varid'>xmlTreesToText</span> <span class='varop'>.</span> <span class='varid'>getChildren</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-168"></a> <span class='varop'>`guards`</span>-<a name="line-169"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"namespace value of namespace declaration for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" has no value"</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>-<a name="line-170"></a>-<a name="line-171"></a> <span class='layout'>,</span> <span class='varid'>isOfAttr</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedNSDecl</span> <span class='layout'>)</span>-<a name="line-172"></a> <span class='varop'>`guards`</span>-<a name="line-173"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"illegal namespace declaration with reserved prefix "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>localPartOf</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" starting with \"xml\""</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>-<a name="line-174"></a> <span class='keyglyph'>]</span>-<a name="line-175"></a>-<a name="line-176"></a> <span class='layout'>,</span> <span class='varid'>isXDTD</span>-<a name="line-177"></a> <span class='conop'>:-></span>-<a name="line-178"></a> <span class='varid'>cat</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>isDoctype</span> <span class='varop'>+++</span> <span class='varid'>isAttlist</span> <span class='varop'>+++</span> <span class='varid'>isElement</span> <span class='varop'>+++</span> <span class='varid'>isDTDName</span> <span class='layout'>)</span>-<a name="line-179"></a> <span class='varop'>.></span>-<a name="line-180"></a> <span class='varid'>isOf</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQualifiedName</span> <span class='varop'>.</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='layout'>)</span>-<a name="line-181"></a> <span class='layout'>)</span>-<a name="line-182"></a> <span class='varop'>`guards`</span>-<a name="line-183"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"a DTD part contains a not wellformed qualified Name: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>-<a name="line-184"></a>-<a name="line-185"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>isAttlist</span>-<a name="line-186"></a> <span class='varop'>.></span>-<a name="line-187"></a> <span class='varid'>isOf</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQualifiedName</span> <span class='varop'>.</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_value</span> <span class='layout'>)</span>-<a name="line-188"></a> <span class='layout'>)</span>-<a name="line-189"></a> <span class='varop'>`guards`</span>-<a name="line-190"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"an ATTLIST declaration contains as attribute name a not wellformed qualified Name: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>valueOfDTD</span> <span class='varid'>a_value</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>-<a name="line-191"></a>-<a name="line-192"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>isEntity</span> <span class='varop'>+++</span> <span class='varid'>isParameterEntity</span> <span class='varop'>+++</span> <span class='varid'>isNotation</span> <span class='layout'>)</span>-<a name="line-193"></a> <span class='varop'>.></span>-<a name="line-194"></a> <span class='varid'>isOf</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isNCName</span> <span class='varop'>.</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='layout'>)</span>-<a name="line-195"></a> <span class='layout'>)</span>-<a name="line-196"></a> <span class='varop'>`guards`</span>-<a name="line-197"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"an entity or notation declaration contains a not wellformed NCName: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>-<a name="line-198"></a> <span class='keyglyph'>]</span>-<a name="line-199"></a> <span class='layout'>,</span> <span class='varid'>isXPi</span>-<a name="line-200"></a> <span class='conop'>:-></span>-<a name="line-201"></a> <span class='layout'>(</span> <span class='varid'>isOf</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isNCName</span> <span class='varop'>.</span> <span class='varid'>nameOf</span> <span class='layout'>)</span>-<a name="line-202"></a> <span class='varop'>`guards`</span>-<a name="line-203"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"a PI contains a not wellformed NCName: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>nameOf</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>n</span> <span class='layout'>)</span>-<a name="line-204"></a> <span class='layout'>)</span>-<a name="line-205"></a> <span class='keyglyph'>]</span>-<a name="line-206"></a>-<a name="line-207"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-208"></a>-<a name="line-209"></a><a name="isNamespaceDecl"></a><span class='definition'>isNamespaceDecl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-210"></a><span class='definition'>isNamespaceDecl</span>-<a name="line-211"></a> <span class='keyglyph'>=</span> <span class='varid'>isOfAttr</span> <span class='varid'>xmlnsName</span>-<a name="line-212"></a> <span class='keyword'>where</span>-<a name="line-213"></a> <span class='varid'>xmlnsName</span> <span class='keyglyph'>::</span> <span class='conid'>AttrName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-214"></a> <span class='varid'>xmlnsName</span> <span class='varid'>a</span>-<a name="line-215"></a> <span class='keyglyph'>=</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span>-<a name="line-216"></a> <span class='varop'>&&</span>-<a name="line-217"></a> <span class='layout'>(</span> <span class='varid'>null</span> <span class='varid'>ln</span> <span class='varop'>||</span> <span class='varid'>head</span> <span class='varid'>ln</span> <span class='varop'>==</span> <span class='chr'>':'</span><span class='layout'>)</span>-<a name="line-218"></a> <span class='keyword'>where</span>-<a name="line-219"></a> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>ln</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>splitAt</span> <span class='num'>5</span> <span class='varop'>.</span> <span class='varid'>qualifiedName</span> <span class='varop'>$</span> <span class='varid'>a</span>-<a name="line-220"></a>-<a name="line-221"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-DOM-XmlState.html
@@ -1,697 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- This module provides a Monad for an internal state and IO commands.</span>-<a name="line-3"></a><span class='comment'>-- The state consists of two parts, the user state and the system state</span>-<a name="line-4"></a><span class='comment'>-- user state ist a type parameter, the system state is a list</span>-<a name="line-5"></a><span class='comment'>-- name-value pair. If the user state is not needed, the type parameter</span>-<a name="line-6"></a><span class='comment'>-- can be instantiated with @()@.</span>-<a name="line-7"></a><span class='comment'>--</span>-<a name="line-8"></a><span class='comment'>-- Furthermore there are types for Xml filter working on this monad</span>-<a name="line-9"></a><span class='comment'>-- and functions for manipulating the state components</span>-<a name="line-10"></a><span class='comment'>-- and for lifting i\/o commands and XmlFilter to monad filters.</span>-<a name="line-11"></a><span class='comment'>--</span>-<a name="line-12"></a><span class='comment'>-- Error reporting functions are also located in this module.</span>-<a name="line-13"></a>-<a name="line-14"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-15"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-16"></a> <span class='layout'>)</span>-<a name="line-17"></a><span class='keyword'>where</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-20"></a>-<a name="line-21"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span><span class='varop'>.</span><span class='conid'>MonadStateIO</span> <span class='keyword'>as</span> <span class='conid'>MonadStateIO</span>-<a name="line-22"></a>-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-25"></a>-<a name="line-26"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-27"></a>-<a name="line-28"></a><span class='comment'>-- |</span>-<a name="line-29"></a><span class='comment'>-- The internal system state consists of a list of name-value pairs</span>-<a name="line-30"></a><span class='comment'>-- of type @(String, XmlTrees)@, so arbitrary lists of trees can be stored.</span>-<a name="line-31"></a><span class='comment'>-- For options, often only strings are used as values, so a set of access</span>-<a name="line-32"></a><span class='comment'>-- functions with string values is available</span>-<a name="line-33"></a><span class='comment'>-- The error handling method can be controlled by an error handler filter,</span>-<a name="line-34"></a><span class='comment'>-- the default filter issues the errors on stderr</span>-<a name="line-35"></a>-<a name="line-36"></a><a name="SysState"></a><span class='keyword'>data</span> <span class='conid'>SysState</span> <span class='keyglyph'>=</span> <span class='conid'>SysState</span> <span class='layout'>{</span> <span class='varid'>sysStateAttrs</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>SysStateAttrs</span>-<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>sysStateErrorHandler</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='layout'>(</span><span class='conid'>XmlStateFilter</span> <span class='conid'>()</span><span class='layout'>)</span>-<a name="line-38"></a> <span class='layout'>}</span>-<a name="line-39"></a>-<a name="line-40"></a><a name="SysStateAttrs"></a><span class='keyword'>type</span> <span class='conid'>SysStateAttrs</span> <span class='keyglyph'>=</span> <span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span>-<a name="line-41"></a>-<a name="line-42"></a><span class='comment'>-- |</span>-<a name="line-43"></a><span class='comment'>-- The State has a system and a user part</span>-<a name="line-44"></a><span class='comment'>-- the user state is a type parameter</span>-<a name="line-45"></a>-<a name="line-46"></a><a name="XmlState"></a><span class='keyword'>data</span> <span class='conid'>XmlState</span> <span class='varid'>state</span> <span class='keyglyph'>=</span> <span class='conid'>XmlState</span> <span class='layout'>{</span> <span class='varid'>sysState</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>SysState</span>-<a name="line-47"></a> <span class='layout'>,</span> <span class='varid'>userState</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='varid'>state</span>-<a name="line-48"></a> <span class='layout'>}</span>-<a name="line-49"></a>-<a name="line-50"></a><span class='comment'>-- |</span>-<a name="line-51"></a><span class='comment'>-- The monad type for commands. It is an instance of "StateIO" from the</span>-<a name="line-52"></a><span class='comment'>-- general module "Control.Monad.MonadStateIO".</span>-<a name="line-53"></a>-<a name="line-54"></a><a name="XState"></a><span class='keyword'>type</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>res</span> <span class='keyglyph'>=</span> <span class='conid'>MonadStateIO</span><span class='varop'>.</span><span class='conid'>StateIO</span> <span class='layout'>(</span><span class='conid'>XmlState</span> <span class='varid'>state</span><span class='layout'>)</span> <span class='varid'>res</span>-<a name="line-55"></a>-<a name="line-56"></a><span class='comment'>-- |</span>-<a name="line-57"></a><span class='comment'>-- The "XmlFilter" type for filters working on a state</span>-<a name="line-58"></a>-<a name="line-59"></a><a name="XmlStateFilter"></a><span class='keyword'>type</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span> <span class='keyglyph'>=</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>XmlTrees</span>-<a name="line-60"></a>-<a name="line-61"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-62"></a><span class='comment'>--</span>-<a name="line-63"></a><span class='comment'>-- user defined state</span>-<a name="line-64"></a><span class='comment'>-- access functions</span>-<a name="line-65"></a>-<a name="line-66"></a><span class='comment'>-- |</span>-<a name="line-67"></a><span class='comment'>-- change the user state</span>-<a name="line-68"></a><span class='comment'>--</span>-<a name="line-69"></a><span class='comment'>-- * 1.parameter fct : the user state change function</span>-<a name="line-70"></a><span class='comment'>--</span>-<a name="line-71"></a><span class='comment'>-- - returns : the new state</span>-<a name="line-72"></a>-<a name="line-73"></a><a name="changeState"></a><span class='definition'>changeState</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>state</span> <span class='keyglyph'>-></span> <span class='varid'>state</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>state</span>-<a name="line-74"></a><span class='definition'>changeState</span> <span class='varid'>f</span>-<a name="line-75"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-76"></a> <span class='varid'>ns</span> <span class='keyglyph'><-</span> <span class='conid'>MonadStateIO</span><span class='varop'>.</span><span class='varid'>changeState</span> <span class='varid'>f'</span>-<a name="line-77"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>userState</span> <span class='varid'>ns</span><span class='layout'>)</span>-<a name="line-78"></a> <span class='keyword'>where</span>-<a name="line-79"></a> <span class='varid'>f'</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>userState</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='layout'>(</span><span class='varid'>userState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-80"></a>-<a name="line-81"></a><span class='comment'>-- |</span>-<a name="line-82"></a><span class='comment'>-- set the user state.</span>-<a name="line-83"></a><span class='comment'>--</span>-<a name="line-84"></a><span class='comment'>-- * 1.parameter s : the new state</span>-<a name="line-85"></a><span class='comment'>--</span>-<a name="line-86"></a><span class='comment'>-- - returns : the new state</span>-<a name="line-87"></a>-<a name="line-88"></a><a name="setState"></a><span class='definition'>setState</span> <span class='keyglyph'>::</span> <span class='varid'>state</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>state</span>-<a name="line-89"></a><span class='definition'>setState</span> <span class='varid'>s</span>-<a name="line-90"></a> <span class='keyglyph'>=</span> <span class='varid'>changeState</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>)</span>-<a name="line-91"></a>-<a name="line-92"></a><span class='comment'>-- |</span>-<a name="line-93"></a><span class='comment'>-- read the user state</span>-<a name="line-94"></a><span class='comment'>--</span>-<a name="line-95"></a><span class='comment'>-- - returns : the current state</span>-<a name="line-96"></a>-<a name="line-97"></a><a name="getState"></a><span class='definition'>getState</span> <span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>state</span>-<a name="line-98"></a><span class='definition'>getState</span>-<a name="line-99"></a> <span class='keyglyph'>=</span> <span class='varid'>changeState</span> <span class='varid'>id</span>-<a name="line-100"></a>-<a name="line-101"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-102"></a>-<a name="line-103"></a><span class='comment'>-- |</span>-<a name="line-104"></a><span class='comment'>-- change the system part of the state.</span>-<a name="line-105"></a><span class='comment'>--</span>-<a name="line-106"></a><span class='comment'>-- see also : 'changeState'</span>-<a name="line-107"></a>-<a name="line-108"></a><a name="changeSysState"></a><span class='definition'>changeSysState</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>SysState</span> <span class='keyglyph'>-></span> <span class='conid'>SysState</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>SysState</span>-<a name="line-109"></a><span class='definition'>changeSysState</span> <span class='varid'>f</span>-<a name="line-110"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-111"></a> <span class='varid'>ns</span> <span class='keyglyph'><-</span> <span class='conid'>MonadStateIO</span><span class='varop'>.</span><span class='varid'>changeState</span> <span class='varid'>f'</span>-<a name="line-112"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>sysState</span> <span class='varid'>ns</span><span class='layout'>)</span>-<a name="line-113"></a> <span class='keyword'>where</span>-<a name="line-114"></a> <span class='varid'>f'</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>sysState</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='layout'>(</span><span class='varid'>sysState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-115"></a>-<a name="line-116"></a><span class='comment'>-- |</span>-<a name="line-117"></a><span class='comment'>-- set the system part of the state.</span>-<a name="line-118"></a><span class='comment'>--</span>-<a name="line-119"></a><span class='comment'>-- see also : 'setState'</span>-<a name="line-120"></a>-<a name="line-121"></a><a name="setSysState"></a><span class='definition'>setSysState</span> <span class='keyglyph'>::</span> <span class='conid'>SysState</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>SysState</span>-<a name="line-122"></a><span class='definition'>setSysState</span> <span class='varid'>s</span>-<a name="line-123"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysState</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>)</span>-<a name="line-124"></a>-<a name="line-125"></a><span class='comment'>-- |</span>-<a name="line-126"></a><span class='comment'>-- read the system part of the state.</span>-<a name="line-127"></a><span class='comment'>--</span>-<a name="line-128"></a><span class='comment'>-- see also : 'getState'</span>-<a name="line-129"></a>-<a name="line-130"></a><a name="getSysState"></a><span class='definition'>getSysState</span> <span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>SysState</span>-<a name="line-131"></a><span class='definition'>getSysState</span>-<a name="line-132"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysState</span> <span class='varid'>id</span>-<a name="line-133"></a>-<a name="line-134"></a><span class='comment'>-- |</span>-<a name="line-135"></a><span class='comment'>-- the initial system state</span>-<a name="line-136"></a><span class='comment'>--</span>-<a name="line-137"></a><span class='comment'>-- an empty list of attribute value pairs</span>-<a name="line-138"></a>-<a name="line-139"></a><a name="initialSysState"></a><span class='definition'>initialSysState</span> <span class='keyglyph'>::</span> <span class='conid'>SysState</span>-<a name="line-140"></a><span class='definition'>initialSysState</span>-<a name="line-141"></a> <span class='keyglyph'>=</span> <span class='conid'>SysState</span> <span class='layout'>{</span> <span class='varid'>sysStateAttrs</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-142"></a> <span class='layout'>,</span> <span class='varid'>sysStateErrorHandler</span> <span class='keyglyph'>=</span> <span class='varid'>errorMsgToStderr</span>-<a name="line-143"></a> <span class='layout'>}</span>-<a name="line-144"></a>-<a name="line-145"></a><span class='comment'>-- |</span>-<a name="line-146"></a><span class='comment'>-- change the attributes in the system state</span>-<a name="line-147"></a>-<a name="line-148"></a><a name="changeSysStateAttrs"></a><span class='definition'>changeSysStateAttrs</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>SysStateAttrs</span> <span class='keyglyph'>-></span> <span class='conid'>SysStateAttrs</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>SysState</span> <span class='keyglyph'>-></span> <span class='conid'>SysState</span><span class='layout'>)</span>-<a name="line-149"></a><span class='definition'>changeSysStateAttrs</span> <span class='varid'>cf</span> <span class='varid'>sstate</span>-<a name="line-150"></a> <span class='keyglyph'>=</span> <span class='varid'>sstate</span> <span class='layout'>{</span> <span class='varid'>sysStateAttrs</span> <span class='keyglyph'>=</span> <span class='varid'>cf</span> <span class='layout'>(</span><span class='varid'>sysStateAttrs</span> <span class='varid'>sstate</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-151"></a>-<a name="line-152"></a>-<a name="line-153"></a><span class='comment'>-- |</span>-<a name="line-154"></a><span class='comment'>-- set the error message handler</span>-<a name="line-155"></a>-<a name="line-156"></a><a name="setSysErrorHandler"></a><span class='definition'>setSysErrorHandler</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='conid'>()</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>-<a name="line-157"></a><span class='definition'>setSysErrorHandler</span> <span class='varid'>ehf</span>-<a name="line-158"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-159"></a> <span class='varid'>changeSysState</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>sysStateErrorHandler</span> <span class='keyglyph'>=</span> <span class='varid'>ehf</span> <span class='layout'>}</span><span class='layout'>)</span>-<a name="line-160"></a> <span class='varid'>return</span> <span class='conid'>()</span>-<a name="line-161"></a>-<a name="line-162"></a><span class='comment'>-- |</span>-<a name="line-163"></a><span class='comment'>-- get the error handler</span>-<a name="line-164"></a>-<a name="line-165"></a><a name="getSysErrorHandler"></a><span class='definition'>getSysErrorHandler</span> <span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='layout'>(</span><span class='conid'>XmlStateFilter</span> <span class='conid'>()</span><span class='layout'>)</span>-<a name="line-166"></a><span class='definition'>getSysErrorHandler</span>-<a name="line-167"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-168"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>getSysState</span>-<a name="line-169"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>sysStateErrorHandler</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-170"></a>-<a name="line-171"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-172"></a>-<a name="line-173"></a><span class='comment'>-- |</span>-<a name="line-174"></a><span class='comment'>-- set or change a single system parameter.</span>-<a name="line-175"></a><span class='comment'>--</span>-<a name="line-176"></a><span class='comment'>-- * 1.parameter name : the name of the parameter</span>-<a name="line-177"></a><span class='comment'>--</span>-<a name="line-178"></a><span class='comment'>-- - 2.parameter value : the list of associated trees</span>-<a name="line-179"></a><span class='comment'>--</span>-<a name="line-180"></a><span class='comment'>-- - returns : nothing</span>-<a name="line-181"></a><span class='comment'>--</span>-<a name="line-182"></a><span class='comment'>-- see also : 'setSysParam', 'setSysParamInt'</span>-<a name="line-183"></a>-<a name="line-184"></a><a name="setSysParamTree"></a><span class='definition'>setSysParamTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>-<a name="line-185"></a><span class='definition'>setSysParamTree</span> <span class='varid'>name</span> <span class='varid'>val</span>-<a name="line-186"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-187"></a> <span class='varid'>changeSysState</span> <span class='layout'>(</span><span class='varid'>changeSysStateAttrs</span> <span class='layout'>(</span><span class='varid'>addEntry</span> <span class='varid'>name</span> <span class='varid'>val</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-188"></a> <span class='varid'>return</span> <span class='conid'>()</span>-<a name="line-189"></a>-<a name="line-190"></a><span class='comment'>-- |</span>-<a name="line-191"></a><span class='comment'>-- set or change a single system parameter of type string.</span>-<a name="line-192"></a><span class='comment'>--</span>-<a name="line-193"></a><span class='comment'>-- * 1.parameter name : the name of the parameter</span>-<a name="line-194"></a><span class='comment'>--</span>-<a name="line-195"></a><span class='comment'>-- - 2.parameter value : the (new) string value</span>-<a name="line-196"></a><span class='comment'>--</span>-<a name="line-197"></a><span class='comment'>-- - returns : nothing</span>-<a name="line-198"></a><span class='comment'>--</span>-<a name="line-199"></a><span class='comment'>-- see also : 'setSysParamTree', setSysParamInt</span>-<a name="line-200"></a>-<a name="line-201"></a><a name="setSysParam"></a><span class='definition'>setSysParam</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>-<a name="line-202"></a><span class='definition'>setSysParam</span> <span class='varid'>name</span> <span class='varid'>val</span>-<a name="line-203"></a> <span class='keyglyph'>=</span> <span class='varid'>setSysParamTree</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='varid'>val</span><span class='layout'>)</span>-<a name="line-204"></a>-<a name="line-205"></a><span class='comment'>-- |</span>-<a name="line-206"></a><span class='comment'>-- set or change a single integer type system parameter</span>-<a name="line-207"></a><span class='comment'>--</span>-<a name="line-208"></a><span class='comment'>-- see also : 'setSysParam'</span>-<a name="line-209"></a>-<a name="line-210"></a><a name="setSysParamInt"></a><span class='definition'>setSysParamInt</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>-<a name="line-211"></a><span class='definition'>setSysParamInt</span> <span class='varid'>name</span> <span class='varid'>val</span> <span class='keyglyph'>=</span> <span class='varid'>setSysParam</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>val</span><span class='layout'>)</span>-<a name="line-212"></a>-<a name="line-213"></a><span class='comment'>-- |</span>-<a name="line-214"></a><span class='comment'>-- add (or change) all attributes of the document root to the system state</span>-<a name="line-215"></a><span class='comment'>-- - returns : this</span>-<a name="line-216"></a>-<a name="line-217"></a><a name="setSystemParams"></a><span class='definition'>setSystemParams</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-218"></a><span class='definition'>setSystemParams</span> <span class='varid'>t</span>-<a name="line-219"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-220"></a> <span class='varid'>changeSysState</span> <span class='layout'>(</span><span class='varid'>changeSysStateAttrs</span> <span class='layout'>(</span><span class='varid'>addEntries</span> <span class='layout'>(</span><span class='varid'>toTreel</span> <span class='varop'>.</span> <span class='varid'>getAttrl</span> <span class='varop'>$</span> <span class='varid'>t</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-221"></a> <span class='varid'>thisM</span> <span class='varid'>t</span>-<a name="line-222"></a>-<a name="line-223"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-224"></a>-<a name="line-225"></a><span class='comment'>-- |</span>-<a name="line-226"></a><span class='comment'>-- read a system parameter</span>-<a name="line-227"></a><span class='comment'>--</span>-<a name="line-228"></a><span class='comment'>-- * 1.parameter name : the name of the parameter</span>-<a name="line-229"></a><span class='comment'>--</span>-<a name="line-230"></a><span class='comment'>-- - returns : the list of tres associated with the key, or the empty list for unknown parameters</span>-<a name="line-231"></a>-<a name="line-232"></a><a name="getSysParamTree"></a><span class='definition'>getSysParamTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>XmlTrees</span>-<a name="line-233"></a><span class='definition'>getSysParamTree</span> <span class='varid'>name</span>-<a name="line-234"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-235"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>getSysState</span>-<a name="line-236"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>sysStateAttrs</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-237"></a>-<a name="line-238"></a><span class='comment'>-- |</span>-<a name="line-239"></a><span class='comment'>-- read a system string parameter</span>-<a name="line-240"></a><span class='comment'>--</span>-<a name="line-241"></a><span class='comment'>-- * 1.parameter name : the name of the parameter</span>-<a name="line-242"></a><span class='comment'>--</span>-<a name="line-243"></a><span class='comment'>-- - returns : the value, or the empty string for unknown parameters</span>-<a name="line-244"></a>-<a name="line-245"></a><a name="getSysParam"></a><span class='definition'>getSysParam</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>String</span>-<a name="line-246"></a><span class='definition'>getSysParam</span> <span class='varid'>name</span>-<a name="line-247"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-248"></a> <span class='varid'>ts</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParamTree</span> <span class='varid'>name</span>-<a name="line-249"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>ts</span><span class='layout'>)</span>-<a name="line-250"></a>-<a name="line-251"></a><span class='comment'>-- |</span>-<a name="line-252"></a><span class='comment'>-- read a system parameter or return a default value</span>-<a name="line-253"></a><span class='comment'>--</span>-<a name="line-254"></a><span class='comment'>-- * 1.parameter name : the name of the parameter</span>-<a name="line-255"></a><span class='comment'>--</span>-<a name="line-256"></a><span class='comment'>-- - 2.parameter default : the default value</span>-<a name="line-257"></a><span class='comment'>--</span>-<a name="line-258"></a><span class='comment'>-- - returns : the value if found, else the default</span>-<a name="line-259"></a>-<a name="line-260"></a><a name="getSysParamWithDefault"></a><span class='definition'>getSysParamWithDefault</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>String</span>-<a name="line-261"></a><span class='definition'>getSysParamWithDefault</span> <span class='varid'>name</span> <span class='varid'>def</span>-<a name="line-262"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-263"></a> <span class='varid'>val</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParam</span> <span class='varid'>name</span>-<a name="line-264"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>val</span>-<a name="line-265"></a> <span class='keyword'>then</span> <span class='varid'>def</span>-<a name="line-266"></a> <span class='keyword'>else</span> <span class='varid'>val</span>-<a name="line-267"></a> <span class='layout'>)</span>-<a name="line-268"></a>-<a name="line-269"></a><span class='comment'>-- |</span>-<a name="line-270"></a><span class='comment'>-- read an integer system parameter</span>-<a name="line-271"></a><span class='comment'>--</span>-<a name="line-272"></a><span class='comment'>-- * 1.parameter name : </span>-<a name="line-273"></a><span class='comment'>--</span>-<a name="line-274"></a><span class='comment'>-- - 2.parameter default : </span>-<a name="line-275"></a><span class='comment'>--</span>-<a name="line-276"></a><span class='comment'>-- see also : 'getSysParamWithDefault'</span>-<a name="line-277"></a>-<a name="line-278"></a><a name="getSysParamInt"></a><span class='definition'>getSysParamInt</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>Int</span>-<a name="line-279"></a><span class='definition'>getSysParamInt</span> <span class='varid'>var</span> <span class='varid'>def</span>-<a name="line-280"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-281"></a> <span class='varid'>val</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParamWithDefault</span> <span class='varid'>var</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>def</span><span class='layout'>)</span>-<a name="line-282"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>read</span> <span class='varid'>val</span><span class='layout'>)</span>-<a name="line-283"></a>-<a name="line-284"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-285"></a>-<a name="line-286"></a><span class='comment'>-- |</span>-<a name="line-287"></a><span class='comment'>-- exec a XState command with initial state.</span>-<a name="line-288"></a><span class='comment'>--</span>-<a name="line-289"></a><span class='comment'>-- * 1.parameter initalState : the inital user state</span>-<a name="line-290"></a><span class='comment'>--</span>-<a name="line-291"></a><span class='comment'>-- - 2.parameter cmd : the command</span>-<a name="line-292"></a><span class='comment'>--</span>-<a name="line-293"></a><span class='comment'>-- - returns : the i\/o command with result and user state</span>-<a name="line-294"></a>-<a name="line-295"></a><a name="run0"></a><span class='definition'>run0</span> <span class='keyglyph'>::</span> <span class='conid'>XmlState</span> <span class='varid'>state</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>res</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='conid'>XmlState</span> <span class='varid'>state</span><span class='layout'>)</span>-<a name="line-296"></a><span class='definition'>run0</span> <span class='varid'>initialState</span> <span class='layout'>(</span><span class='conid'>MonadStateIO</span><span class='varop'>.</span><span class='conid'>STIO</span> <span class='varid'>cmd</span><span class='layout'>)</span>-<a name="line-297"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-298"></a> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>finalState</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>cmd</span> <span class='varid'>initialState</span>-<a name="line-299"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>finalState</span><span class='layout'>)</span>-<a name="line-300"></a>-<a name="line-301"></a><span class='comment'>-- |</span>-<a name="line-302"></a><span class='comment'>-- exec a XState command with initial user state.</span>-<a name="line-303"></a><span class='comment'>-- ignore final user state.</span>-<a name="line-304"></a><span class='comment'>-- like run0, but ignore the resulting user state</span>-<a name="line-305"></a>-<a name="line-306"></a><a name="run"></a><span class='definition'>run</span> <span class='keyglyph'>::</span> <span class='varid'>state</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>res</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='varid'>res</span>-<a name="line-307"></a><span class='definition'>run</span> <span class='varid'>initialUserState</span> <span class='varid'>cmd</span>-<a name="line-308"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-309"></a> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='sel'>_finalState</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>run0</span> <span class='layout'>(</span><span class='conid'>XmlState</span> <span class='varid'>initialSysState</span> <span class='varid'>initialUserState</span><span class='layout'>)</span> <span class='varid'>cmd</span>-<a name="line-310"></a> <span class='varid'>return</span> <span class='varid'>res</span>-<a name="line-311"></a>-<a name="line-312"></a><span class='comment'>-- |</span>-<a name="line-313"></a><span class='comment'>-- exec a XState command in th IO monad.</span>-<a name="line-314"></a><span class='comment'>-- like run with the empty state ().</span>-<a name="line-315"></a>-<a name="line-316"></a><a name="run'"></a><span class='definition'>run'</span> <span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='conid'>()</span> <span class='varid'>res</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='varid'>res</span>-<a name="line-317"></a><span class='definition'>run'</span> <span class='keyglyph'>=</span> <span class='varid'>run</span> <span class='conid'>()</span>-<a name="line-318"></a>-<a name="line-319"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-320"></a>-<a name="line-321"></a><span class='comment'>-- |</span>-<a name="line-322"></a><span class='comment'>-- run a command in a new user state.</span>-<a name="line-323"></a><span class='comment'>-- chain the system state part,</span>-<a name="line-324"></a><span class='comment'>-- init new system state with the current one, run the command and</span>-<a name="line-325"></a><span class='comment'>-- update the old system state with the resulting new system state</span>-<a name="line-326"></a><span class='comment'>--</span>-<a name="line-327"></a><span class='comment'>-- * 1.parameter initialUserState : the initial user state</span>-<a name="line-328"></a><span class='comment'>--</span>-<a name="line-329"></a><span class='comment'>-- - 2.parameter cmd : the command</span>-<a name="line-330"></a><span class='comment'>--</span>-<a name="line-331"></a><span class='comment'>-- - returns : the result of executing cmd and the final state</span>-<a name="line-332"></a>-<a name="line-333"></a><a name="chain'"></a><span class='definition'>chain'</span> <span class='keyglyph'>::</span> <span class='varid'>state1</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state1</span> <span class='varid'>res</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state0</span> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>state1</span><span class='layout'>)</span>-<a name="line-334"></a><span class='definition'>chain'</span> <span class='varid'>initialUserState1</span> <span class='varid'>cmd1</span>-<a name="line-335"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-336"></a> <span class='varid'>sysState0</span> <span class='keyglyph'><-</span> <span class='varid'>getSysState</span>-<a name="line-337"></a> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>finalState1</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>run0</span> <span class='layout'>(</span><span class='conid'>XmlState</span> <span class='varid'>sysState0</span> <span class='varid'>initialUserState1</span><span class='layout'>)</span> <span class='varid'>cmd1</span>-<a name="line-338"></a> <span class='varid'>setSysState</span> <span class='layout'>(</span><span class='varid'>sysState</span> <span class='varid'>finalState1</span><span class='layout'>)</span>-<a name="line-339"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>userState</span> <span class='varid'>finalState1</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-340"></a>-<a name="line-341"></a><span class='comment'>-- |</span>-<a name="line-342"></a><span class='comment'>-- like chain' but forget the final user state</span>-<a name="line-343"></a><span class='comment'>--</span>-<a name="line-344"></a><span class='comment'>-- * 1.parameter initialUserState : the initial user state</span>-<a name="line-345"></a><span class='comment'>--</span>-<a name="line-346"></a><span class='comment'>-- - 2.parameter cmd : the command</span>-<a name="line-347"></a><span class='comment'>--</span>-<a name="line-348"></a><span class='comment'>-- - returns : only the result of executing cmd</span>-<a name="line-349"></a>-<a name="line-350"></a><a name="chain"></a><span class='definition'>chain</span> <span class='keyglyph'>::</span> <span class='varid'>state1</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state1</span> <span class='varid'>res</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state0</span> <span class='varid'>res</span>-<a name="line-351"></a><span class='definition'>chain</span> <span class='varid'>initialUserState1</span> <span class='varid'>cmd1</span>-<a name="line-352"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-353"></a> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>chain'</span> <span class='varid'>initialUserState1</span> <span class='varid'>cmd1</span>-<a name="line-354"></a> <span class='varid'>return</span> <span class='varid'>res</span>-<a name="line-355"></a>-<a name="line-356"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-357"></a><span class='comment'>--</span>-<a name="line-358"></a><span class='comment'>-- lift functions</span>-<a name="line-359"></a>-<a name="line-360"></a><span class='comment'>-- |</span>-<a name="line-361"></a><span class='comment'>-- lift a XmlFilter to a XmlStateFilter filter</span>-<a name="line-362"></a><span class='comment'>-- issue all error nodes as error messages</span>-<a name="line-363"></a><span class='comment'>-- and remove the error nodes from the result</span>-<a name="line-364"></a><span class='comment'>--</span>-<a name="line-365"></a><span class='comment'>-- * 1.parameter f : the filter</span>-<a name="line-366"></a><span class='comment'>--</span>-<a name="line-367"></a><span class='comment'>-- - returns : the filter running in the state monad</span>-<a name="line-368"></a><span class='comment'>--</span>-<a name="line-369"></a><span class='comment'>-- all errors are filtered from the result and issued on stderr</span>-<a name="line-370"></a>-<a name="line-371"></a><a name="liftF"></a><span class='definition'>liftF</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-372"></a><span class='definition'>liftF</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='varid'>f</span> <span class='varop'>.>></span> <span class='varid'>issueError</span>-<a name="line-373"></a>-<a name="line-374"></a><span class='comment'>-- |</span>-<a name="line-375"></a><span class='comment'>-- lift an I\/O command</span>-<a name="line-376"></a><span class='comment'>--</span>-<a name="line-377"></a><span class='comment'>-- * 1.parameter cmd : the i\/o command</span>-<a name="line-378"></a><span class='comment'>--</span>-<a name="line-379"></a><span class='comment'>-- - returns : the i\/o command lifted to the XML state monad</span>-<a name="line-380"></a>-<a name="line-381"></a><a name="io"></a><span class='definition'>io</span> <span class='keyglyph'>::</span> <span class='conid'>IO</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>a</span>-<a name="line-382"></a><span class='definition'>io</span> <span class='keyglyph'>=</span> <span class='conid'>MonadStateIO</span><span class='varop'>.</span><span class='varid'>io</span>-<a name="line-383"></a>-<a name="line-384"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-385"></a><span class='comment'>--</span>-<a name="line-386"></a>-<a name="line-387"></a><span class='comment'>-- |</span>-<a name="line-388"></a><span class='comment'>-- set the trace level.</span>-<a name="line-389"></a><span class='comment'>--</span>-<a name="line-390"></a><span class='comment'>-- convention:</span>-<a name="line-391"></a><span class='comment'>--</span>-<a name="line-392"></a><span class='comment'>-- 0: no trace output (default)</span>-<a name="line-393"></a><span class='comment'>--</span>-<a name="line-394"></a><span class='comment'>-- 1: trace important computation steps, e.g. accessing a document</span>-<a name="line-395"></a><span class='comment'>--</span>-<a name="line-396"></a><span class='comment'>-- 2: trace small computation steps</span>-<a name="line-397"></a><span class='comment'>--</span>-<a name="line-398"></a><span class='comment'>-- 3: output an intermediate result XmlTree in XML source format</span>-<a name="line-399"></a><span class='comment'>--</span>-<a name="line-400"></a><span class='comment'>-- 4: output an intermediate result XmlTree in tree representation</span>-<a name="line-401"></a><span class='comment'>--</span>-<a name="line-402"></a><span class='comment'>-- * 1.parameter level : the trace level</span>-<a name="line-403"></a><span class='comment'>--</span>-<a name="line-404"></a><span class='comment'>-- - returns : nothing</span>-<a name="line-405"></a>-<a name="line-406"></a><a name="setTraceLevel"></a><span class='definition'>setTraceLevel</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>-<a name="line-407"></a><span class='definition'>setTraceLevel</span> <span class='varid'>l</span> <span class='keyglyph'>=</span> <span class='varid'>setSysParamInt</span> <span class='varid'>a_trace</span> <span class='varid'>l</span>-<a name="line-408"></a>-<a name="line-409"></a><span class='comment'>-- |</span>-<a name="line-410"></a><span class='comment'>-- get the current trace level.</span>-<a name="line-411"></a><span class='comment'>--</span>-<a name="line-412"></a><span class='comment'>-- - returns : the current trace level</span>-<a name="line-413"></a>-<a name="line-414"></a><a name="getTraceLevel"></a><span class='definition'>getTraceLevel</span> <span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>Int</span>-<a name="line-415"></a><span class='definition'>getTraceLevel</span> <span class='keyglyph'>=</span> <span class='varid'>getSysParamInt</span> <span class='varid'>a_trace</span> <span class='num'>0</span>-<a name="line-416"></a>-<a name="line-417"></a><span class='comment'>-- |</span>-<a name="line-418"></a><span class='comment'>-- trace output for arbitray commands.</span>-<a name="line-419"></a><span class='comment'>--</span>-<a name="line-420"></a><span class='comment'>-- * 1.parameter level : the trace level,</span>-<a name="line-421"></a><span class='comment'>-- for which the command will be execuded</span>-<a name="line-422"></a><span class='comment'>-- if level \<= current trace level</span>-<a name="line-423"></a><span class='comment'>--</span>-<a name="line-424"></a><span class='comment'>-- - 2.parameter cmd : the command to be executed</span>-<a name="line-425"></a><span class='comment'>--</span>-<a name="line-426"></a><span class='comment'>-- - returns : nothing</span>-<a name="line-427"></a>-<a name="line-428"></a><a name="traceCmd"></a><span class='definition'>traceCmd</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>-<a name="line-429"></a><span class='definition'>traceCmd</span> <span class='varid'>level</span> <span class='varid'>cmd</span>-<a name="line-430"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-431"></a> <span class='varid'>trcLevel</span> <span class='keyglyph'><-</span> <span class='varid'>getTraceLevel</span>-<a name="line-432"></a> <span class='keyword'>if</span> <span class='varid'>level</span> <span class='varop'><=</span> <span class='varid'>trcLevel</span>-<a name="line-433"></a> <span class='keyword'>then</span> <span class='keyword'>do</span>-<a name="line-434"></a> <span class='keyword'>_</span> <span class='keyglyph'><-</span> <span class='varid'>cmd</span>-<a name="line-435"></a> <span class='varid'>return</span> <span class='conid'>()</span>-<a name="line-436"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='conid'>()</span>-<a name="line-437"></a>-<a name="line-438"></a><span class='comment'>-- |</span>-<a name="line-439"></a><span class='comment'>-- trace output function for simple text.</span>-<a name="line-440"></a><span class='comment'>--</span>-<a name="line-441"></a><span class='comment'>-- * 1.parameter level : like in traceCmd</span>-<a name="line-442"></a><span class='comment'>--</span>-<a name="line-443"></a><span class='comment'>-- - 2.parameter str : the test</span>-<a name="line-444"></a><span class='comment'>--</span>-<a name="line-445"></a><span class='comment'>-- - returns : nothing</span>-<a name="line-446"></a>-<a name="line-447"></a><a name="trace"></a><span class='definition'>trace</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>-<a name="line-448"></a><span class='definition'>trace</span> <span class='varid'>level</span> <span class='varid'>str</span>-<a name="line-449"></a> <span class='keyglyph'>=</span> <span class='varid'>traceCmd</span> <span class='varid'>level</span>-<a name="line-450"></a> <span class='varop'>$</span> <span class='keyword'>do</span>-<a name="line-451"></a> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='layout'>(</span><span class='str'>"-- ("</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>") "</span> <span class='varop'>++</span> <span class='varid'>str</span><span class='layout'>)</span>-<a name="line-452"></a>-<a name="line-453"></a><span class='comment'>-- |</span>-<a name="line-454"></a><span class='comment'>-- trace output of the user part of the program state.</span>-<a name="line-455"></a><span class='comment'>--</span>-<a name="line-456"></a><span class='comment'>-- * 1.parameter level : like in traceCmd</span>-<a name="line-457"></a><span class='comment'>--</span>-<a name="line-458"></a><span class='comment'>-- - 2.parameter showFct : the toString function</span>-<a name="line-459"></a><span class='comment'>--</span>-<a name="line-460"></a><span class='comment'>-- - returns : nothing</span>-<a name="line-461"></a>-<a name="line-462"></a><a name="traceState"></a><span class='definition'>traceState</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>state</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>-<a name="line-463"></a><span class='definition'>traceState</span> <span class='varid'>level</span> <span class='varid'>fct</span>-<a name="line-464"></a> <span class='keyglyph'>=</span> <span class='varid'>traceCmd</span> <span class='varid'>level</span>-<a name="line-465"></a> <span class='varop'>$</span> <span class='keyword'>do</span>-<a name="line-466"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>-<a name="line-467"></a> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='layout'>(</span><span class='varid'>fct</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-468"></a>-<a name="line-469"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-470"></a><span class='comment'>--</span>-<a name="line-471"></a><span class='comment'>-- error functions</span>-<a name="line-472"></a>-<a name="line-473"></a><span class='comment'>-- |</span>-<a name="line-474"></a><span class='comment'>-- filter to reset the state attribute 'a_status'</span>-<a name="line-475"></a><span class='comment'>-- - returns : this</span>-<a name="line-476"></a>-<a name="line-477"></a><a name="clearStatus"></a><span class='definition'>clearStatus</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-478"></a><span class='definition'>clearStatus</span> <span class='varid'>t</span>-<a name="line-479"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-480"></a> <span class='varid'>setSysParamInt</span> <span class='varid'>a_status</span> <span class='varid'>c_ok</span>-<a name="line-481"></a> <span class='varid'>thisM</span> <span class='varid'>t</span>-<a name="line-482"></a>-<a name="line-483"></a><span class='comment'>-- |</span>-<a name="line-484"></a><span class='comment'>-- report an error message.</span>-<a name="line-485"></a><span class='comment'>--</span>-<a name="line-486"></a><span class='comment'>-- - returns : if the input tree n represents an error, @res = []@</span>-<a name="line-487"></a><span class='comment'>-- and the error is processed by the errror handler filter (default: error is issued on stderr)</span>-<a name="line-488"></a><span class='comment'>-- else @res = [n]@</span>-<a name="line-489"></a><span class='comment'>--</span>-<a name="line-490"></a><span class='comment'>-- see also : 'issueErr'</span>-<a name="line-491"></a>-<a name="line-492"></a><a name="issueError"></a><span class='definition'>issueError</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-493"></a><span class='definition'>issueError</span>-<a name="line-494"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>setErrorMsgLevel</span> <span class='varop'>.>></span> <span class='varid'>errorMsgHandler</span> <span class='varop'>.>></span> <span class='varid'>noneM</span><span class='layout'>)</span>-<a name="line-495"></a> <span class='varop'>`whenM`</span>-<a name="line-496"></a> <span class='varid'>isXError</span>-<a name="line-497"></a>-<a name="line-498"></a><a name="errorMsgHandler"></a><span class='definition'>errorMsgHandler</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-499"></a><span class='definition'>errorMsgHandler</span>-<a name="line-500"></a> <span class='keyglyph'>=</span> <span class='varid'>performAction</span>-<a name="line-501"></a> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='varid'>chain'</span> <span class='conid'>()</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-502"></a> <span class='varid'>ehf</span> <span class='keyglyph'><-</span> <span class='varid'>getSysErrorHandler</span>-<a name="line-503"></a> <span class='varid'>ehf</span> <span class='varid'>t</span>-<a name="line-504"></a> <span class='varid'>return</span> <span class='conid'>()</span>-<a name="line-505"></a> <span class='layout'>)</span>-<a name="line-506"></a> <span class='layout'>)</span>-<a name="line-507"></a>-<a name="line-508"></a><span class='comment'>-- |</span>-<a name="line-509"></a><span class='comment'>-- set the error level in system state</span>-<a name="line-510"></a>-<a name="line-511"></a><a name="setErrorMsgLevel"></a><span class='definition'>setErrorMsgLevel</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-512"></a><span class='definition'>setErrorMsgLevel</span>-<a name="line-513"></a> <span class='keyglyph'>=</span> <span class='varid'>performAction</span>-<a name="line-514"></a> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='varid'>level</span> <span class='sel'>_str</span><span class='layout'>)</span> <span class='sel'>_cs</span><span class='layout'>)</span> <span class='keyglyph'>-></span>-<a name="line-515"></a> <span class='keyword'>do</span>-<a name="line-516"></a> <span class='varid'>errLevel</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParamInt</span> <span class='varid'>a_status</span> <span class='num'>0</span>-<a name="line-517"></a> <span class='varid'>setSysParamInt</span> <span class='varid'>a_status</span> <span class='layout'>(</span><span class='varid'>max</span> <span class='varid'>errLevel</span> <span class='varid'>level</span><span class='layout'>)</span>-<a name="line-518"></a> <span class='layout'>)</span>-<a name="line-519"></a>-<a name="line-520"></a><span class='comment'>-- |</span>-<a name="line-521"></a><span class='comment'>-- default error handler for writing errors to stderr</span>-<a name="line-522"></a>-<a name="line-523"></a><a name="errorMsgToStderr"></a><span class='definition'>errorMsgToStderr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-524"></a><span class='definition'>errorMsgToStderr</span>-<a name="line-525"></a> <span class='keyglyph'>=</span> <span class='varid'>performAction</span>-<a name="line-526"></a> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='varid'>level</span> <span class='varid'>str</span><span class='layout'>)</span> <span class='sel'>_cs</span><span class='layout'>)</span> <span class='keyglyph'>-></span>-<a name="line-527"></a> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='layout'>(</span><span class='str'>"\n"</span> <span class='varop'>++</span> <span class='varid'>errClass</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>": "</span> <span class='varop'>++</span> <span class='varid'>str</span><span class='layout'>)</span>-<a name="line-528"></a> <span class='layout'>)</span>-<a name="line-529"></a>-<a name="line-530"></a><span class='comment'>-- |</span>-<a name="line-531"></a><span class='comment'>-- error message handler for collecting all error messages</span>-<a name="line-532"></a><span class='comment'>-- all messages are stored under attribute 'a_error_log'</span>-<a name="line-533"></a><span class='comment'>-- they can be read with @getSysParamTree a_error_log@ or by</span>-<a name="line-534"></a><span class='comment'>-- applying the filter 'getErrorMsg' to the root node</span>-<a name="line-535"></a>-<a name="line-536"></a><a name="errorMsgLogging"></a><span class='definition'>errorMsgLogging</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-537"></a><span class='definition'>errorMsgLogging</span>-<a name="line-538"></a> <span class='keyglyph'>=</span> <span class='varid'>performAction</span>-<a name="line-539"></a> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span>-<a name="line-540"></a> <span class='keyword'>do</span>-<a name="line-541"></a> <span class='varid'>errLog</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParamTree</span> <span class='varid'>a_error_log</span>-<a name="line-542"></a> <span class='varid'>setSysParamTree</span> <span class='varid'>a_error_log</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='conop'>:</span> <span class='varid'>errLog</span><span class='layout'>)</span>-<a name="line-543"></a> <span class='layout'>)</span>-<a name="line-544"></a>-<a name="line-545"></a><a name="errorMsgLoggingAndToStderr"></a><span class='definition'>errorMsgLoggingAndToStderr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-546"></a><span class='definition'>errorMsgLoggingAndToStderr</span> <span class='keyglyph'>=</span> <span class='varid'>errorMsgLogging</span><span class='varop'>.>></span> <span class='varid'>errorMsgToStderr</span>-<a name="line-547"></a>-<a name="line-548"></a><span class='comment'>-- |</span>-<a name="line-549"></a><span class='comment'>-- the filter for reading all collected error mesages</span>-<a name="line-550"></a><span class='comment'>--</span>-<a name="line-551"></a><span class='comment'>-- result is the list of error messages, the input tree is ignored</span>-<a name="line-552"></a>-<a name="line-553"></a><a name="getErrorMsg"></a><span class='definition'>getErrorMsg</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-554"></a><span class='definition'>getErrorMsg</span> <span class='sel'>_t</span>-<a name="line-555"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-556"></a> <span class='varid'>el</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParamTree</span> <span class='varid'>a_error_log</span>-<a name="line-557"></a> <span class='varid'>setSysParamTree</span> <span class='varid'>a_error_log</span> <span class='conid'>[]</span>-<a name="line-558"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>reverse</span> <span class='varid'>el</span><span class='layout'>)</span>-<a name="line-559"></a>-<a name="line-560"></a><span class='comment'>-- |</span>-<a name="line-561"></a><span class='comment'>-- error level translation</span>-<a name="line-562"></a><span class='comment'>-- 'c_warn' (1) : warning,</span>-<a name="line-563"></a><span class='comment'>-- 'c_err' (2): error (e.g. parse error, validation error, ...),</span>-<a name="line-564"></a><span class='comment'>-- 'c_fatal' (3) : fatal error (document access error, internal error, ...)</span>-<a name="line-565"></a>-<a name="line-566"></a><a name="errClass"></a><span class='definition'>errClass</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-567"></a><span class='definition'>errClass</span> <span class='varid'>l</span>-<a name="line-568"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>"fatal error"</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>l</span> <span class='varop'>$</span> <span class='varid'>msgList</span>-<a name="line-569"></a> <span class='keyword'>where</span>-<a name="line-570"></a> <span class='varid'>msgList</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>c_ok</span><span class='layout'>,</span> <span class='str'>"no error"</span><span class='layout'>)</span>-<a name="line-571"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_warn</span><span class='layout'>,</span> <span class='str'>"warning"</span><span class='layout'>)</span>-<a name="line-572"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_err</span><span class='layout'>,</span> <span class='str'>"error"</span><span class='layout'>)</span>-<a name="line-573"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_fatal</span><span class='layout'>,</span> <span class='str'>"fatal error"</span><span class='layout'>)</span>-<a name="line-574"></a> <span class='keyglyph'>]</span>-<a name="line-575"></a>-<a name="line-576"></a><span class='comment'>-- |</span>-<a name="line-577"></a><span class='comment'>-- short cut for issuing a warning</span>-<a name="line-578"></a><span class='comment'>--</span>-<a name="line-579"></a><span class='comment'>-- see also : 'issueError', 'issueErr'</span>-<a name="line-580"></a>-<a name="line-581"></a><a name="issueWarn"></a><span class='definition'>issueWarn</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-582"></a><span class='definition'>issueWarn</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varop'>.>></span> <span class='varid'>issueError</span>-<a name="line-583"></a>-<a name="line-584"></a><span class='comment'>-- |</span>-<a name="line-585"></a><span class='comment'>-- short cut for issuing an error</span>-<a name="line-586"></a><span class='comment'>--</span>-<a name="line-587"></a><span class='comment'>-- see also : 'issueError'</span>-<a name="line-588"></a>-<a name="line-589"></a><a name="issueErr"></a><span class='definition'>issueErr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-590"></a><span class='definition'>issueErr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>err</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varop'>.>></span> <span class='varid'>issueError</span>-<a name="line-591"></a>-<a name="line-592"></a><span class='comment'>-- |</span>-<a name="line-593"></a><span class='comment'>-- short cut for issuing a fatal error</span>-<a name="line-594"></a><span class='comment'>--</span>-<a name="line-595"></a><span class='comment'>-- see also : 'issueError', 'issueErr'</span>-<a name="line-596"></a>-<a name="line-597"></a><a name="issueFatal"></a><span class='definition'>issueFatal</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-598"></a><span class='definition'>issueFatal</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>fatal</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varop'>.>></span> <span class='varid'>issueError</span>-<a name="line-599"></a>-<a name="line-600"></a>-<a name="line-601"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-602"></a><span class='comment'>--</span>-<a name="line-603"></a><span class='comment'>-- issue an error, add the error to the document root tree</span>-<a name="line-604"></a><span class='comment'>-- and return the tree</span>-<a name="line-605"></a>-<a name="line-606"></a><a name="addFatal"></a><span class='definition'>addFatal</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-607"></a><span class='definition'>addFatal</span> <span class='varid'>msg</span>-<a name="line-608"></a> <span class='keyglyph'>=</span> <span class='varid'>liftF</span> <span class='layout'>(</span> <span class='varid'>fatal</span> <span class='varid'>msg</span>-<a name="line-609"></a> <span class='varop'>+++</span>-<a name="line-610"></a> <span class='varid'>setStatus</span> <span class='varid'>c_fatal</span> <span class='str'>"accessing documents"</span>-<a name="line-611"></a> <span class='layout'>)</span>-<a name="line-612"></a>-<a name="line-613"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-614"></a>-<a name="line-615"></a><span class='comment'>-- |</span>-<a name="line-616"></a><span class='comment'>-- checks the value of the attribute 'a_status' in a document root.</span>-<a name="line-617"></a><span class='comment'>-- if it contains a value greater or equal to 'c_err', an error with error message</span>-<a name="line-618"></a><span class='comment'>-- stored in attribute 'a_module' is issued and the filter acts as the 'noneM' filter</span>-<a name="line-619"></a><span class='comment'>-- else its the 'thisM' filter</span>-<a name="line-620"></a>-<a name="line-621"></a><a name="checkStatus"></a><span class='definition'>checkStatus</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-622"></a><span class='definition'>checkStatus</span> <span class='varid'>t</span>-<a name="line-623"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>status</span> <span class='varop'>>=</span> <span class='varid'>c_err</span>-<a name="line-624"></a> <span class='keyword'>then</span> <span class='keyword'>do</span>-<a name="line-625"></a> <span class='varid'>errorMsgHandler</span> <span class='layout'>(</span><span class='varid'>mkXErrorTree</span> <span class='varid'>c_warn</span> <span class='layout'>(</span><span class='varid'>errClass</span> <span class='varid'>status</span> <span class='varop'>++</span> <span class='str'>"s detected in "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-626"></a> <span class='varid'>noneM</span> <span class='varid'>t</span>-<a name="line-627"></a> <span class='keyword'>else</span>-<a name="line-628"></a> <span class='varid'>thisM</span> <span class='varid'>t</span>-<a name="line-629"></a> <span class='keyword'>where</span>-<a name="line-630"></a> <span class='varid'>status</span> <span class='keyglyph'>=</span> <span class='varid'>intValueOf</span> <span class='varid'>a_status</span> <span class='varid'>t</span>-<a name="line-631"></a> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='varid'>a_module</span> <span class='varid'>t</span>-<a name="line-632"></a>-<a name="line-633"></a><span class='comment'>-- |</span>-<a name="line-634"></a><span class='comment'>-- add the error level and the module where the error occured</span>-<a name="line-635"></a><span class='comment'>-- to the attributes of a document root node and remove the children when level is greater or equal to 'c_err'</span>-<a name="line-636"></a>-<a name="line-637"></a><a name="setStatus"></a><span class='definition'>setStatus</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-638"></a><span class='definition'>setStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span>-<a name="line-639"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>addAttrInt</span> <span class='varid'>a_status</span> <span class='varid'>level</span>-<a name="line-640"></a> <span class='varop'>.></span>-<a name="line-641"></a> <span class='varid'>addAttr</span> <span class='varid'>a_module</span> <span class='varid'>msg</span>-<a name="line-642"></a> <span class='varop'>.></span>-<a name="line-643"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>level</span> <span class='varop'>>=</span> <span class='varid'>c_err</span>-<a name="line-644"></a> <span class='keyword'>then</span> <span class='varid'>replaceChildren</span> <span class='conid'>[]</span>-<a name="line-645"></a> <span class='keyword'>else</span> <span class='varid'>this</span>-<a name="line-646"></a> <span class='layout'>)</span>-<a name="line-647"></a> <span class='layout'>)</span>-<a name="line-648"></a> <span class='varop'>`when`</span> <span class='varid'>isRoot</span>-<a name="line-649"></a>-<a name="line-650"></a><span class='comment'>-- |</span>-<a name="line-651"></a><span class='comment'>-- check whether tree is a document root and the status attribute has a value less than 'c_err'</span>-<a name="line-652"></a>-<a name="line-653"></a><a name="statusOk"></a><span class='definition'>statusOk</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-654"></a><span class='definition'>statusOk</span>-<a name="line-655"></a> <span class='keyglyph'>=</span> <span class='varid'>isRoot</span>-<a name="line-656"></a> <span class='varop'>.></span>-<a name="line-657"></a> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>intValueOf</span> <span class='varid'>a_status</span> <span class='varid'>t</span> <span class='varop'>>=</span> <span class='varid'>c_err</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-658"></a><span class='comment'>-- |</span>-<a name="line-659"></a><span class='comment'>-- check whether the error level attribute in the system state</span>-<a name="line-660"></a><span class='comment'>-- is set to error, in this case the children of the document root are</span>-<a name="line-661"></a><span class='comment'>-- removed and error info is added as attributes with 'setStatus'</span>-<a name="line-662"></a><span class='comment'>-- else nothing is changed</span>-<a name="line-663"></a>-<a name="line-664"></a><a name="checkResult"></a><span class='definition'>checkResult</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-665"></a><span class='definition'>checkResult</span> <span class='varid'>msg</span> <span class='varid'>t</span>-<a name="line-666"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-667"></a> <span class='varid'>level</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParamInt</span> <span class='varid'>a_status</span> <span class='num'>0</span>-<a name="line-668"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>level</span> <span class='varop'><=</span> <span class='varid'>c_warn</span>-<a name="line-669"></a> <span class='keyword'>then</span> <span class='varid'>thisM</span>-<a name="line-670"></a> <span class='keyword'>else</span> <span class='varid'>liftMf</span> <span class='layout'>(</span> <span class='varid'>setStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span> <span class='layout'>)</span>-<a name="line-671"></a> <span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-672"></a>-<a name="line-673"></a><span class='comment'>-- |</span>-<a name="line-674"></a><span class='comment'>-- monadic filter for processing the attribute list of a tag.</span>-<a name="line-675"></a><span class='comment'>-- for other trees this filter acts like 'noneM'</span>-<a name="line-676"></a><span class='comment'>--</span>-<a name="line-677"></a><span class='comment'>-- see also : 'processAttr', 'processAttrl'</span>-<a name="line-678"></a>-<a name="line-679"></a><a name="processAttrM"></a><span class='definition'>processAttrM</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-680"></a><span class='definition'>processAttrM</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-681"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-682"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>f</span> <span class='varop'>$$<</span> <span class='varid'>al</span>-<a name="line-683"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>replaceAttrl</span> <span class='varid'>res</span> <span class='varid'>t</span>-<a name="line-684"></a> <span class='keyword'>where</span>-<a name="line-685"></a> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>getAttrl</span> <span class='varid'>t</span>-<a name="line-686"></a>-<a name="line-687"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-DOM-XmlTree.html
@@ -1,29 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- This helper module exports elements from the basic libraries:</span>-<a name="line-3"></a><span class='comment'>-- XmlTreeTypes, XmlKeywords, XNodeFunctions, XmlTreeFunctions and XmlTreeFilter</span>-<a name="line-4"></a>-<a name="line-5"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-6"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeTypes</span>-<a name="line-7"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>-<a name="line-8"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeFunctions</span>-<a name="line-9"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeFilter</span>-<a name="line-10"></a> <span class='layout'>)</span>-<a name="line-11"></a>-<a name="line-12"></a><span class='keyword'>where</span>-<a name="line-13"></a>-<a name="line-14"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeTypes</span> <span class='comment'>-- NTree and XNode types</span>-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span> <span class='comment'>-- keywords for DTD</span>-<a name="line-16"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeFunctions</span> <span class='comment'>-- tree constructors and selector</span>-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeFilter</span> <span class='comment'>-- basic filter</span>-<a name="line-18"></a>-<a name="line-19"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-DOM-XmlTreeFilter.html
@@ -1,965 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- basic XmlTree filter</span>-<a name="line-3"></a>-<a name="line-4"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeFilter</span>-<a name="line-5"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeFilter</span>-<a name="line-6"></a> <span class='layout'>)</span>-<a name="line-7"></a><span class='keyword'>where</span>-<a name="line-8"></a>-<a name="line-9"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeTypes</span>-<a name="line-10"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeFunctions</span>-<a name="line-11"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>-<a name="line-12"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span> <span class='layout'>(</span> <span class='varid'>isXmlSpaceChar</span> <span class='layout'>)</span>-<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span> <span class='layout'>(</span> <span class='varid'>decimalStringToInt</span> <span class='layout'>)</span>-<a name="line-14"></a>-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span> <span class='layout'>(</span> <span class='varid'>partition</span> <span class='layout'>)</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='keyword'>infixl</span> <span class='num'>7</span> <span class='varop'>+=</span> <span class='layout'>,</span> <span class='varop'>++=</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-20"></a><span class='comment'>--</span>-<a name="line-21"></a><span class='comment'>-- filter predicates</span>-<a name="line-22"></a>-<a name="line-23"></a><span class='comment'>-- |</span>-<a name="line-24"></a><span class='comment'>-- test whether the root of a tree contains a document root node.</span>-<a name="line-25"></a>-<a name="line-26"></a><a name="isRoot"></a><span class='definition'>isRoot</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-27"></a><span class='definition'>isRoot</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isTagNode</span> <span class='varid'>t_root</span><span class='layout'>)</span>-<a name="line-28"></a>-<a name="line-29"></a><span class='comment'>-- |</span>-<a name="line-30"></a><span class='comment'>-- test whether the root of a tree contains a tag node.</span>-<a name="line-31"></a><span class='comment'>--</span>-<a name="line-32"></a><span class='comment'>-- see also: 'isNsTag'</span>-<a name="line-33"></a>-<a name="line-34"></a><a name="isTag"></a><span class='definition'>isTag</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-35"></a><span class='definition'>isTag</span> <span class='varid'>tn</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isTagNode</span> <span class='varid'>tn</span><span class='layout'>)</span>-<a name="line-36"></a>-<a name="line-37"></a><span class='comment'>-- |</span>-<a name="line-38"></a><span class='comment'>-- namespace aware test whether the root of a tree contains a tag node. Parameters are the local part and namespace.</span>-<a name="line-39"></a><span class='comment'>-- Only usable after namespace propagation.</span>-<a name="line-40"></a><span class='comment'>--</span>-<a name="line-41"></a><span class='comment'>-- see also: 'isTag'</span>-<a name="line-42"></a>-<a name="line-43"></a><a name="isNsTag"></a><span class='definition'>isNsTag</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-44"></a><span class='definition'>isNsTag</span> <span class='varid'>lp</span> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='varid'>isOfTag</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='varid'>localPart</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>lp</span> <span class='varop'>&&</span> <span class='varid'>namespaceUri</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>ns</span><span class='layout'>)</span>-<a name="line-45"></a>-<a name="line-46"></a><span class='comment'>-- |</span>-<a name="line-47"></a><span class='comment'>-- test whether the root of a tree has a given local name</span>-<a name="line-48"></a><span class='comment'>-- see also : 'hasNamespace', 'hasPrefix', 'isTag', 'isAttr'</span>-<a name="line-49"></a>-<a name="line-50"></a><a name="hasLocalPart"></a><span class='definition'>hasLocalPart</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-51"></a><span class='definition'>hasLocalPart</span> <span class='varid'>lp</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>localPartOf</span><span class='layout'>)</span>-<a name="line-52"></a>-<a name="line-53"></a><span class='comment'>-- |</span>-<a name="line-54"></a><span class='comment'>-- test whether the root of a tree has a given prefix name</span>-<a name="line-55"></a><span class='comment'>-- see also : 'hasNamespace', 'hasLocalPart', 'isTag', 'isAttr'</span>-<a name="line-56"></a>-<a name="line-57"></a><a name="hasPrefix"></a><span class='definition'>hasPrefix</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-58"></a><span class='definition'>hasPrefix</span> <span class='varid'>px</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span> <span class='varid'>px</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>prefixOf</span><span class='layout'>)</span>-<a name="line-59"></a>-<a name="line-60"></a><span class='comment'>-- |</span>-<a name="line-61"></a><span class='comment'>-- test whether the root of a tree belongs to a given namespace</span>-<a name="line-62"></a><span class='comment'>-- see also : 'isTag', 'isAttr', 'hasLocalPart', 'hasPrefix'</span>-<a name="line-63"></a>-<a name="line-64"></a><a name="hasNamespace"></a><span class='definition'>hasNamespace</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-65"></a><span class='definition'>hasNamespace</span> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span> <span class='varid'>ns</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>namespaceOf</span><span class='layout'>)</span>-<a name="line-66"></a>-<a name="line-67"></a><span class='comment'>-- |</span>-<a name="line-68"></a><span class='comment'>-- test whether the root of a tree contains a tag node with a special name.</span>-<a name="line-69"></a>-<a name="line-70"></a><a name="isOfTag"></a><span class='definition'>isOfTag</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>TagName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-71"></a><span class='definition'>isOfTag</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varop'>.</span> <span class='varid'>isOfTagNode</span>-<a name="line-72"></a>-<a name="line-73"></a><span class='comment'>-- |</span>-<a name="line-74"></a><span class='comment'>-- test whether the node of a tree is a XTag node or a XPi node with an attibute of a specific name</span>-<a name="line-75"></a><span class='comment'>--</span>-<a name="line-76"></a><span class='comment'>-- see also: 'isAttr', 'hasNsAttr'</span>-<a name="line-77"></a>-<a name="line-78"></a><a name="hasAttr"></a><span class='definition'>hasAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-79"></a><span class='definition'>hasAttr</span> <span class='varid'>an</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varop'>.></span> <span class='varid'>isAttr</span> <span class='varid'>an</span><span class='layout'>)</span> <span class='varop'>`guards`</span> <span class='varid'>this</span>-<a name="line-80"></a>-<a name="line-81"></a><span class='comment'>-- |</span>-<a name="line-82"></a><span class='comment'>-- test whether the tree is a XTag node with an attibute of a specific local name and namespace uri</span>-<a name="line-83"></a><span class='comment'>--</span>-<a name="line-84"></a><span class='comment'>-- see also: 'hasAttr', 'isNsAttr'</span>-<a name="line-85"></a>-<a name="line-86"></a><a name="hasNsAttr"></a><span class='definition'>hasNsAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-87"></a><span class='definition'>hasNsAttr</span> <span class='varid'>an</span> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varop'>.></span> <span class='varid'>isNsAttr</span> <span class='varid'>an</span> <span class='varid'>ns</span><span class='layout'>)</span> <span class='varop'>`guards`</span> <span class='varid'>this</span>-<a name="line-88"></a>-<a name="line-89"></a><span class='comment'>-- |</span>-<a name="line-90"></a><span class='comment'>-- test whether the given node is a XTag node or a XPI node with an attribute with a value with a specific property.</span>-<a name="line-91"></a><span class='comment'>-- In case of a match, the attribute value represented by a text node is returned as single element list,</span>-<a name="line-92"></a><span class='comment'>-- else the empty list is the result.</span>-<a name="line-93"></a><span class='comment'>--</span>-<a name="line-94"></a><span class='comment'>-- see also : 'getValue'</span>-<a name="line-95"></a>-<a name="line-96"></a><a name="hasValue"></a><span class='definition'>hasValue</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-97"></a><span class='definition'>hasValue</span> <span class='varid'>a</span> <span class='varid'>p</span> <span class='varid'>t</span>-<a name="line-98"></a> <span class='keyglyph'>|</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span> <span class='varid'>att</span>-<a name="line-99"></a> <span class='varop'>&&</span>-<a name="line-100"></a> <span class='varid'>p</span> <span class='varid'>val</span>-<a name="line-101"></a> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='varid'>val</span>-<a name="line-102"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-103"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-104"></a> <span class='keyword'>where</span>-<a name="line-105"></a> <span class='varid'>att</span> <span class='keyglyph'>=</span> <span class='varid'>getAttrl</span> <span class='varop'>.></span> <span class='varid'>isAttr</span> <span class='varid'>a</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-106"></a> <span class='varid'>val</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>getChildren</span> <span class='varop'>$$</span> <span class='varid'>att</span>-<a name="line-107"></a>-<a name="line-108"></a><span class='comment'>-- |</span>-<a name="line-109"></a><span class='comment'>-- test whether the tree is a processing instruction with a given name.</span>-<a name="line-110"></a>-<a name="line-111"></a><a name="isPi"></a><span class='definition'>isPi</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-112"></a><span class='definition'>isPi</span> <span class='varid'>pn</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isPiNode</span> <span class='varid'>pn</span><span class='layout'>)</span>-<a name="line-113"></a>-<a name="line-114"></a><span class='comment'>-- |</span>-<a name="line-115"></a><span class='comment'>-- test whether the tree is a \<?xml ... ?\> declaration</span>-<a name="line-116"></a>-<a name="line-117"></a><a name="isXmlPi"></a><span class='definition'>isXmlPi</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-118"></a><span class='definition'>isXmlPi</span> <span class='keyglyph'>=</span> <span class='varid'>isPi</span> <span class='varid'>t_xml</span>-<a name="line-119"></a>-<a name="line-120"></a><span class='comment'>-- |</span>-<a name="line-121"></a><span class='comment'>-- test whether the root of a tree contains a processing instruction of a special name.</span>-<a name="line-122"></a>-<a name="line-123"></a><a name="isOfPi"></a><span class='definition'>isOfPi</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>TagName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-124"></a><span class='definition'>isOfPi</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varop'>.</span> <span class='varid'>isOfPiNode</span>-<a name="line-125"></a>-<a name="line-126"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-127"></a>-<a name="line-128"></a><span class='comment'>-- simple XNode Filter predicates</span>-<a name="line-129"></a><span class='comment'>--</span>-<a name="line-130"></a>-<a name="line-131"></a><span class='comment'>-- |</span>-<a name="line-132"></a><span class='comment'>-- test whether the root of a tree contains a CDATA node.</span>-<a name="line-133"></a>-<a name="line-134"></a><a name="isXCdata"></a><span class='definition'>isXCdata</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-135"></a><span class='definition'>isXCdata</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varid'>isXCdataNode</span>-<a name="line-136"></a>-<a name="line-137"></a><span class='comment'>-- |</span>-<a name="line-138"></a><span class='comment'>-- test whether the root of a tree contains a character reference node.</span>-<a name="line-139"></a>-<a name="line-140"></a><a name="isXCharRef"></a><span class='definition'>isXCharRef</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-141"></a><span class='definition'>isXCharRef</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varid'>isXCharRefNode</span>-<a name="line-142"></a>-<a name="line-143"></a><span class='comment'>-- |</span>-<a name="line-144"></a><span class='comment'>-- test whether the root of a tree contains a comment node.</span>-<a name="line-145"></a>-<a name="line-146"></a><a name="isXCmt"></a><span class='definition'>isXCmt</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-147"></a><span class='definition'>isXCmt</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varid'>isXCmtNode</span>-<a name="line-148"></a>-<a name="line-149"></a><span class='comment'>-- |</span>-<a name="line-150"></a><span class='comment'>-- test whether the root of a tree contains a DTD part.</span>-<a name="line-151"></a>-<a name="line-152"></a><a name="isXDTD"></a><span class='definition'>isXDTD</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-153"></a><span class='definition'>isXDTD</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varid'>isXDTDNode</span>-<a name="line-154"></a>-<a name="line-155"></a><span class='comment'>-- |</span>-<a name="line-156"></a><span class='comment'>-- test whether the root of a tree contains an entity reference node.</span>-<a name="line-157"></a>-<a name="line-158"></a><a name="isXEntityRef"></a><span class='definition'>isXEntityRef</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-159"></a><span class='definition'>isXEntityRef</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varid'>isXEntityRefNode</span>-<a name="line-160"></a>-<a name="line-161"></a><span class='comment'>-- |</span>-<a name="line-162"></a><span class='comment'>-- test whether the root of a tree contains an error node.</span>-<a name="line-163"></a>-<a name="line-164"></a><a name="isXError"></a><span class='definition'>isXError</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-165"></a><span class='definition'>isXError</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varid'>isXErrorNode</span>-<a name="line-166"></a>-<a name="line-167"></a><span class='comment'>-- |</span>-<a name="line-168"></a><span class='comment'>-- test whether the root of a tree contains a processing instruction node.</span>-<a name="line-169"></a>-<a name="line-170"></a><a name="isXPi"></a><span class='definition'>isXPi</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-171"></a><span class='definition'>isXPi</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varid'>isXPiNode</span>-<a name="line-172"></a>-<a name="line-173"></a><span class='comment'>-- |</span>-<a name="line-174"></a><span class='comment'>-- test whether the root of a tree contains a tag node.</span>-<a name="line-175"></a>-<a name="line-176"></a><a name="isXTag"></a><span class='definition'>isXTag</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-177"></a><span class='definition'>isXTag</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varid'>isXTagNode</span>-<a name="line-178"></a>-<a name="line-179"></a><span class='comment'>-- |</span>-<a name="line-180"></a><span class='comment'>-- test whether the root of a tree contains an attribute node.</span>-<a name="line-181"></a>-<a name="line-182"></a><a name="isXAttr"></a><span class='definition'>isXAttr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-183"></a><span class='definition'>isXAttr</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varid'>isXAttrNode</span>-<a name="line-184"></a>-<a name="line-185"></a><span class='comment'>-- |</span>-<a name="line-186"></a><span class='comment'>-- test whether the root of a tree is an attribute node for a given attribute name</span>-<a name="line-187"></a>-<a name="line-188"></a><a name="isAttr"></a><span class='definition'>isAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-189"></a><span class='definition'>isAttr</span> <span class='varid'>an</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isAttrNode</span> <span class='varid'>an</span><span class='layout'>)</span>-<a name="line-190"></a>-<a name="line-191"></a><span class='comment'>-- |</span>-<a name="line-192"></a><span class='comment'>-- namespace aware test whether the tree contains an attribute node. Parameters are the local part of the atribute name and the namespace.</span>-<a name="line-193"></a><span class='comment'>-- Only usable after namespace propagation.</span>-<a name="line-194"></a><span class='comment'>--</span>-<a name="line-195"></a><span class='comment'>-- see also: 'isNsTag', 'isAttr', 'hasNsAttr'</span>-<a name="line-196"></a>-<a name="line-197"></a><a name="isNsAttr"></a><span class='definition'>isNsAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-198"></a><span class='definition'>isNsAttr</span> <span class='varid'>lp</span> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='varid'>isOfAttr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>localPart</span> <span class='varid'>a</span> <span class='varop'>==</span> <span class='varid'>lp</span> <span class='varop'>&&</span> <span class='varid'>namespaceUri</span> <span class='varid'>a</span> <span class='varop'>==</span> <span class='varid'>ns</span><span class='layout'>)</span>-<a name="line-199"></a>-<a name="line-200"></a><span class='comment'>-- |</span>-<a name="line-201"></a><span class='comment'>-- general test for an attribute name</span>-<a name="line-202"></a>-<a name="line-203"></a><a name="isOfAttr"></a><span class='definition'>isOfAttr</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>AttrName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-204"></a><span class='definition'>isOfAttr</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varop'>.</span> <span class='varid'>isOfAttrNode</span>-<a name="line-205"></a>-<a name="line-206"></a><span class='comment'>-- |</span>-<a name="line-207"></a><span class='comment'>-- test whether the root of a tree contains a text node.</span>-<a name="line-208"></a>-<a name="line-209"></a><a name="isXText"></a><span class='definition'>isXText</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-210"></a><span class='definition'>isXText</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varid'>isXTextNode</span>-<a name="line-211"></a>-<a name="line-212"></a><span class='comment'>-- |</span>-<a name="line-213"></a><span class='comment'>-- test whether the root of a tree contains a special text.</span>-<a name="line-214"></a>-<a name="line-215"></a><a name="isText"></a><span class='definition'>isText</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-216"></a><span class='definition'>isText</span> <span class='varid'>t</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isTextNode</span> <span class='varid'>t</span><span class='layout'>)</span>-<a name="line-217"></a>-<a name="line-218"></a><span class='comment'>-- |</span>-<a name="line-219"></a><span class='comment'>-- test whether the root of a tree contains a text node with a special property</span>-<a name="line-220"></a>-<a name="line-221"></a><a name="isOfText"></a><span class='definition'>isOfText</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-222"></a><span class='definition'>isOfText</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varop'>.</span> <span class='varid'>isOfTextNode</span>-<a name="line-223"></a>-<a name="line-224"></a><span class='comment'>-- |</span>-<a name="line-225"></a><span class='comment'>-- test whether the root of a tree contains a text node only with whitespace.</span>-<a name="line-226"></a>-<a name="line-227"></a><a name="isWhiteSpace"></a><span class='definition'>isWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-228"></a><span class='definition'>isWhiteSpace</span>-<a name="line-229"></a> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varid'>isWS</span>-<a name="line-230"></a> <span class='keyword'>where</span>-<a name="line-231"></a> <span class='varid'>isWS</span> <span class='varid'>n</span>-<a name="line-232"></a> <span class='keyglyph'>=</span> <span class='varid'>isXTextNode</span> <span class='varid'>n</span>-<a name="line-233"></a> <span class='varop'>&&</span> <span class='varid'>all</span> <span class='varid'>isXmlSpaceChar</span> <span class='layout'>(</span><span class='varid'>textOfXNode</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-234"></a>-<a name="line-235"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-236"></a><span class='comment'>--</span>-<a name="line-237"></a><span class='comment'>-- XDTD Predicates</span>-<a name="line-238"></a>-<a name="line-239"></a><span class='comment'>-- |</span>-<a name="line-240"></a><span class='comment'>-- test whether the root of a tree contains a DOCTYPE DTD part.</span>-<a name="line-241"></a>-<a name="line-242"></a><a name="isDoctype"></a><span class='definition'>isDoctype</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-243"></a><span class='definition'>isDoctype</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isDTDElemNode</span> <span class='conid'>DOCTYPE</span><span class='layout'>)</span>-<a name="line-244"></a>-<a name="line-245"></a><span class='comment'>-- |</span>-<a name="line-246"></a><span class='comment'>-- test whether the root of a tree contains an ATTLIST DTD part.</span>-<a name="line-247"></a>-<a name="line-248"></a><a name="isAttlist"></a><span class='definition'>isAttlist</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-249"></a><span class='definition'>isAttlist</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isDTDElemNode</span> <span class='conid'>ATTLIST</span><span class='layout'>)</span>-<a name="line-250"></a>-<a name="line-251"></a><span class='comment'>-- |</span>-<a name="line-252"></a><span class='comment'>-- test whether the root of a tree contains an ELEMENT DTD part.</span>-<a name="line-253"></a>-<a name="line-254"></a><a name="isElement"></a><span class='definition'>isElement</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-255"></a><span class='definition'>isElement</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isDTDElemNode</span> <span class='conid'>ELEMENT</span><span class='layout'>)</span>-<a name="line-256"></a>-<a name="line-257"></a><span class='comment'>-- |</span>-<a name="line-258"></a><span class='comment'>-- test whether the root of a tree contains an ENTITY DTD part.</span>-<a name="line-259"></a>-<a name="line-260"></a><a name="isEntity"></a><span class='definition'>isEntity</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-261"></a><span class='definition'>isEntity</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isDTDElemNode</span> <span class='conid'>ENTITY</span><span class='layout'>)</span>-<a name="line-262"></a>-<a name="line-263"></a><span class='comment'>-- |</span>-<a name="line-264"></a><span class='comment'>-- test whether the root of a tree contains a parameter ENTITY reference.</span>-<a name="line-265"></a>-<a name="line-266"></a><a name="isPeRef"></a><span class='definition'>isPeRef</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-267"></a><span class='definition'>isPeRef</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isDTDElemNode</span> <span class='conid'>PEREF</span><span class='layout'>)</span>-<a name="line-268"></a>-<a name="line-269"></a><span class='comment'>-- |</span>-<a name="line-270"></a><span class='comment'>-- test whether the root of a tree contains a DTD name part.</span>-<a name="line-271"></a>-<a name="line-272"></a><a name="isDTDName"></a><span class='definition'>isDTDName</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-273"></a><span class='definition'>isDTDName</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isDTDElemNode</span> <span class='conid'>NAME</span><span class='layout'>)</span>-<a name="line-274"></a>-<a name="line-275"></a><span class='comment'>-- |</span>-<a name="line-276"></a><span class='comment'>-- test whether the root of a tree contains a conditional section DTD part.</span>-<a name="line-277"></a>-<a name="line-278"></a><a name="isCondSect"></a><span class='definition'>isCondSect</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-279"></a><span class='definition'>isCondSect</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isDTDElemNode</span> <span class='conid'>CONDSECT</span><span class='layout'>)</span>-<a name="line-280"></a>-<a name="line-281"></a><span class='comment'>-- |</span>-<a name="line-282"></a><span class='comment'>-- test whether the root of a tree contains a parameter entity declaration.</span>-<a name="line-283"></a>-<a name="line-284"></a><a name="isParameterEntity"></a><span class='definition'>isParameterEntity</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-285"></a><span class='definition'>isParameterEntity</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isDTDElemNode</span> <span class='conid'>PENTITY</span><span class='layout'>)</span>-<a name="line-286"></a>-<a name="line-287"></a><span class='comment'>-- |</span>-<a name="line-288"></a><span class='comment'>-- test whether the root of a tree contains a NOTATION DTD part.</span>-<a name="line-289"></a>-<a name="line-290"></a><a name="isNotation"></a><span class='definition'>isNotation</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-291"></a><span class='definition'>isNotation</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='layout'>(</span><span class='varid'>isDTDElemNode</span> <span class='conid'>NOTATION</span><span class='layout'>)</span>-<a name="line-292"></a>-<a name="line-293"></a><span class='comment'>-- ATTLIST predicates</span>-<a name="line-294"></a>-<a name="line-295"></a><a name="isDefaultAttrKind"></a><span class='definition'>isDefaultAttrKind</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-296"></a><span class='definition'>isDefaultAttrKind</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>a_kind</span> <span class='varop'>`ofDTDequals`</span> <span class='varid'>k_default</span><span class='layout'>)</span>-<a name="line-297"></a>-<a name="line-298"></a><a name="isEnumAttrType"></a><span class='definition'>isEnumAttrType</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-299"></a><span class='definition'>isEnumAttrType</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>a_type</span> <span class='varop'>`ofDTDequals`</span> <span class='varid'>k_enumeration</span><span class='layout'>)</span>-<a name="line-300"></a>-<a name="line-301"></a><a name="isFixedAttrKind"></a><span class='definition'>isFixedAttrKind</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-302"></a><span class='definition'>isFixedAttrKind</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>a_kind</span> <span class='varop'>`ofDTDequals`</span> <span class='varid'>k_fixed</span><span class='layout'>)</span>-<a name="line-303"></a>-<a name="line-304"></a><a name="isIdAttrType"></a><span class='definition'>isIdAttrType</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-305"></a><span class='definition'>isIdAttrType</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>a_type</span> <span class='varop'>`ofDTDequals`</span> <span class='varid'>k_id</span><span class='layout'>)</span>-<a name="line-306"></a>-<a name="line-307"></a><a name="isIdRefAttrType"></a><span class='definition'>isIdRefAttrType</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-308"></a><span class='definition'>isIdRefAttrType</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='varid'>k_idref</span><span class='layout'>,</span> <span class='varid'>k_idrefs</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_type</span><span class='layout'>)</span>-<a name="line-309"></a>-<a name="line-310"></a><a name="isNotationAttrType"></a><span class='definition'>isNotationAttrType</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-311"></a><span class='definition'>isNotationAttrType</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>a_type</span> <span class='varop'>`ofDTDequals`</span> <span class='varid'>k_notation</span><span class='layout'>)</span>-<a name="line-312"></a>-<a name="line-313"></a><a name="isRequiredAttrKind"></a><span class='definition'>isRequiredAttrKind</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-314"></a><span class='definition'>isRequiredAttrKind</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>a_kind</span> <span class='varop'>`ofDTDequals`</span> <span class='varid'>k_required</span><span class='layout'>)</span>-<a name="line-315"></a>-<a name="line-316"></a><a name="isAttlistParameterEntity"></a><span class='definition'>isAttlistParameterEntity</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-317"></a><span class='definition'>isAttlistParameterEntity</span> <span class='keyglyph'>=</span> <span class='varid'>isAttlist</span> <span class='varop'>.></span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>a_type</span> <span class='varop'>`ofDTDequals`</span> <span class='varid'>k_peref</span><span class='layout'>)</span>-<a name="line-318"></a>-<a name="line-319"></a><span class='comment'>-- ELEMENT predicates</span>-<a name="line-320"></a>-<a name="line-321"></a><a name="isEmptyElement"></a><span class='definition'>isEmptyElement</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-322"></a><span class='definition'>isEmptyElement</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>a_type</span> <span class='varop'>`ofDTDequals`</span> <span class='varid'>k_empty</span><span class='layout'>)</span>-<a name="line-323"></a>-<a name="line-324"></a><a name="isMixedContentElement"></a><span class='definition'>isMixedContentElement</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-325"></a><span class='definition'>isMixedContentElement</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>a_type</span> <span class='varop'>`ofDTDequals`</span> <span class='varid'>v_mixed</span><span class='layout'>)</span>-<a name="line-326"></a>-<a name="line-327"></a><a name="isElemWithContent"></a><span class='definition'>isElemWithContent</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-328"></a><span class='definition'>isElemWithContent</span> <span class='keyglyph'>=</span> <span class='varid'>isElement</span>-<a name="line-329"></a> <span class='varop'>.></span>-<a name="line-330"></a> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='varid'>v_mixed</span><span class='layout'>,</span> <span class='varid'>v_children</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_type</span><span class='layout'>)</span>-<a name="line-331"></a>-<a name="line-332"></a><a name="isAttlistOfElement"></a><span class='definition'>isAttlistOfElement</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-333"></a><span class='definition'>isAttlistOfElement</span> <span class='varid'>el</span> <span class='keyglyph'>=</span> <span class='varid'>isAttlist</span>-<a name="line-334"></a> <span class='varop'>.></span>-<a name="line-335"></a> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>a_name</span> <span class='varop'>`ofDTDequals`</span> <span class='varid'>el</span><span class='layout'>)</span>-<a name="line-336"></a>-<a name="line-337"></a><a name="isElemContentParamEntity"></a><span class='definition'>isElemContentParamEntity</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-338"></a><span class='definition'>isElemContentParamEntity</span> <span class='keyglyph'>=</span> <span class='varid'>isElement</span>-<a name="line-339"></a> <span class='varop'>.></span>-<a name="line-340"></a> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>a_type</span> <span class='varop'>`ofDTDequals`</span> <span class='varid'>k_peref</span><span class='layout'>)</span>-<a name="line-341"></a>-<a name="line-342"></a><span class='comment'>-- ENTITY predicates</span>-<a name="line-343"></a>-<a name="line-344"></a><a name="isUnparsedEntity"></a><span class='definition'>isUnparsedEntity</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-345"></a><span class='definition'>isUnparsedEntity</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>hasEntry</span> <span class='varid'>k_ndata</span> <span class='varop'>.</span> <span class='varid'>attrlOfDTD</span><span class='layout'>)</span>-<a name="line-346"></a>-<a name="line-347"></a><a name="isExternalParameterEntity"></a><span class='definition'>isExternalParameterEntity</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-348"></a><span class='definition'>isExternalParameterEntity</span> <span class='keyglyph'>=</span> <span class='varid'>isParameterEntity</span>-<a name="line-349"></a> <span class='varop'>.></span>-<a name="line-350"></a> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>hasEntry</span> <span class='varid'>k_system</span> <span class='varop'>.</span> <span class='varid'>attrlOfDTD</span><span class='layout'>)</span>-<a name="line-351"></a>-<a name="line-352"></a><a name="isInternalParameterEntity"></a><span class='definition'>isInternalParameterEntity</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-353"></a><span class='definition'>isInternalParameterEntity</span> <span class='keyglyph'>=</span> <span class='varid'>isParameterEntity</span>-<a name="line-354"></a> <span class='varop'>.></span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>hasEntry</span> <span class='varid'>k_system</span> <span class='varop'>.</span> <span class='varid'>attrlOfDTD</span><span class='layout'>)</span>-<a name="line-355"></a>-<a name="line-356"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-357"></a>-<a name="line-358"></a><span class='comment'>-- |</span>-<a name="line-359"></a><span class='comment'>-- test whether the root of a tree contains an error node for a warning.</span>-<a name="line-360"></a>-<a name="line-361"></a><a name="isWarning"></a><span class='definition'>isWarning</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-362"></a><span class='definition'>isWarning</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varop'>$</span> <span class='varid'>isErrorNode</span> <span class='varid'>c_warn</span>-<a name="line-363"></a>-<a name="line-364"></a><span class='comment'>-- |</span>-<a name="line-365"></a><span class='comment'>-- test whether the root of a tree contains an error node for an error.</span>-<a name="line-366"></a>-<a name="line-367"></a><a name="isError"></a><span class='definition'>isError</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-368"></a><span class='definition'>isError</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varop'>$</span> <span class='varid'>isErrorNode</span> <span class='varid'>c_err</span>-<a name="line-369"></a>-<a name="line-370"></a><span class='comment'>-- |</span>-<a name="line-371"></a><span class='comment'>-- test whether the root of a tree contains an error node for a fatal error.</span>-<a name="line-372"></a>-<a name="line-373"></a><a name="isFatalError"></a><span class='definition'>isFatalError</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-374"></a><span class='definition'>isFatalError</span> <span class='keyglyph'>=</span> <span class='varid'>isOfNode</span> <span class='varop'>$</span> <span class='varid'>isErrorNode</span> <span class='varid'>c_fatal</span>-<a name="line-375"></a>-<a name="line-376"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-377"></a><span class='comment'>--</span>-<a name="line-378"></a><span class='comment'>-- constructor filter</span>-<a name="line-379"></a>-<a name="line-380"></a><span class='comment'>-- |</span>-<a name="line-381"></a><span class='comment'>-- constructor filter for a tag node.</span>-<a name="line-382"></a><span class='comment'>-- a new tree is constructed.</span>-<a name="line-383"></a><span class='comment'>-- the attributes and the children are computed by applying the aproprate filter to the input tree</span>-<a name="line-384"></a><span class='comment'>--</span>-<a name="line-385"></a><span class='comment'>-- * 1.parameter n : the tag name</span>-<a name="line-386"></a><span class='comment'>--</span>-<a name="line-387"></a><span class='comment'>-- - 2.parameter af : the filter for the attribute list</span>-<a name="line-388"></a><span class='comment'>--</span>-<a name="line-389"></a><span class='comment'>-- - 3.parameter cf : the filter for the children</span>-<a name="line-390"></a><span class='comment'>--</span>-<a name="line-391"></a><span class='comment'>-- - returns : the constructor filter</span>-<a name="line-392"></a>-<a name="line-393"></a><a name="mkXTag"></a><span class='definition'>mkXTag</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-394"></a><span class='definition'>mkXTag</span> <span class='varid'>n</span> <span class='varid'>af</span> <span class='varid'>cf</span>-<a name="line-395"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='varid'>mkXTagTree</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>af</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>cf</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-396"></a>-<a name="line-397"></a><span class='comment'>-- | Version with qualified names of 'mkXTag'</span>-<a name="line-398"></a>-<a name="line-399"></a><a name="mkQTag"></a><span class='definition'>mkQTag</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-400"></a><span class='definition'>mkQTag</span> <span class='varid'>q</span> <span class='varid'>af</span> <span class='varid'>cf</span>-<a name="line-401"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='varid'>mkQTagTree</span> <span class='varid'>q</span> <span class='layout'>(</span><span class='varid'>af</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>cf</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-402"></a>-<a name="line-403"></a><span class='comment'>-- |</span>-<a name="line-404"></a><span class='comment'>-- constructor filter for a tag node.</span>-<a name="line-405"></a><span class='comment'>-- a new tree is constructed.</span>-<a name="line-406"></a><span class='comment'>-- the attributes and the children are computed by applying the aproprate filter to the input tree</span>-<a name="line-407"></a><span class='comment'>--</span>-<a name="line-408"></a><span class='comment'>-- * 1.parameter n : the tag name in form of prefix:localpart</span>-<a name="line-409"></a><span class='comment'>--</span>-<a name="line-410"></a><span class='comment'>-- - 2.parameter ns: the namespace uri</span>-<a name="line-411"></a><span class='comment'>--</span>-<a name="line-412"></a><span class='comment'>-- - 3.parameter af : the filter for the attribute list</span>-<a name="line-413"></a><span class='comment'>--</span>-<a name="line-414"></a><span class='comment'>-- - 4.parameter cf : the filter for the children</span>-<a name="line-415"></a><span class='comment'>--</span>-<a name="line-416"></a><span class='comment'>-- - returns : the constructor filter</span>-<a name="line-417"></a>-<a name="line-418"></a><a name="mkXNsTag"></a><span class='definition'>mkXNsTag</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-419"></a><span class='definition'>mkXNsTag</span> <span class='varid'>n</span> <span class='varid'>ns</span> <span class='varid'>af</span> <span class='varid'>cf</span>-<a name="line-420"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='varid'>mkXNsTagTree</span> <span class='varid'>n</span> <span class='varid'>ns</span> <span class='layout'>(</span><span class='varid'>af</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>cf</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-421"></a>-<a name="line-422"></a><span class='comment'>-- |</span>-<a name="line-423"></a><span class='comment'>-- filter for attribute construction.</span>-<a name="line-424"></a><span class='comment'>-- a new tree with attribute name and a value computed by a filter</span>-<a name="line-425"></a><span class='comment'>-- is build.</span>-<a name="line-426"></a>-<a name="line-427"></a><a name="mkXAttr"></a><span class='definition'>mkXAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-428"></a><span class='definition'>mkXAttr</span> <span class='varid'>n</span> <span class='varid'>af</span>-<a name="line-429"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='varid'>mkXAttrTree</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>af</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-430"></a>-<a name="line-431"></a><span class='comment'>-- | Qualified version 'mkXAttr'</span>-<a name="line-432"></a>-<a name="line-433"></a><a name="mkQAttr"></a><span class='definition'>mkQAttr</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-434"></a><span class='definition'>mkQAttr</span> <span class='varid'>q</span> <span class='varid'>af</span>-<a name="line-435"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='varid'>mkQAttrTree</span> <span class='varid'>q</span> <span class='layout'>(</span><span class='varid'>af</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-436"></a>-<a name="line-437"></a><span class='comment'>-- |</span>-<a name="line-438"></a><span class='comment'>-- filter for attribute construction.</span>-<a name="line-439"></a><span class='comment'>-- a new tree with attribute name and namespace and a value computed by a filter</span>-<a name="line-440"></a><span class='comment'>-- is build.</span>-<a name="line-441"></a>-<a name="line-442"></a><a name="mkXNsAttr"></a><span class='definition'>mkXNsAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-443"></a><span class='definition'>mkXNsAttr</span> <span class='varid'>n</span> <span class='varid'>ns</span> <span class='varid'>af</span>-<a name="line-444"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='varid'>mkXNsAttrTree</span> <span class='varid'>n</span> <span class='varid'>ns</span> <span class='layout'>(</span><span class='varid'>af</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-445"></a>-<a name="line-446"></a><span class='comment'>-- |</span>-<a name="line-447"></a><span class='comment'>-- constructor filter for a text node.</span>-<a name="line-448"></a><span class='comment'>-- a new tree is constructed.</span>-<a name="line-449"></a><span class='comment'>-- the input tree is ignored.</span>-<a name="line-450"></a>-<a name="line-451"></a><a name="mkXText"></a><span class='definition'>mkXText</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-452"></a><span class='definition'>mkXText</span> <span class='keyglyph'>=</span> <span class='varid'>mkNTree</span> <span class='varop'>.</span> <span class='varid'>mkXTextTree</span>-<a name="line-453"></a>-<a name="line-454"></a><span class='comment'>-- |</span>-<a name="line-455"></a><span class='comment'>-- constructor filter for a character reference node.</span>-<a name="line-456"></a><span class='comment'>-- a new tree is constructed.</span>-<a name="line-457"></a><span class='comment'>-- the input tree is ignored.</span>-<a name="line-458"></a>-<a name="line-459"></a><a name="mkXCharRef"></a><span class='definition'>mkXCharRef</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-460"></a><span class='definition'>mkXCharRef</span> <span class='keyglyph'>=</span> <span class='varid'>mkNTree</span> <span class='varop'>.</span> <span class='varid'>mkXCharRefTree</span>-<a name="line-461"></a>-<a name="line-462"></a><span class='comment'>-- |</span>-<a name="line-463"></a><span class='comment'>-- constructor filter for an entity reference node.</span>-<a name="line-464"></a><span class='comment'>-- a new tree is constructed.</span>-<a name="line-465"></a><span class='comment'>-- the input tree is ignored.</span>-<a name="line-466"></a>-<a name="line-467"></a><a name="mkXEntityRef"></a><span class='definition'>mkXEntityRef</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-468"></a><span class='definition'>mkXEntityRef</span> <span class='keyglyph'>=</span> <span class='varid'>mkNTree</span> <span class='varop'>.</span> <span class='varid'>mkXEntityRefTree</span>-<a name="line-469"></a>-<a name="line-470"></a><span class='comment'>-- |</span>-<a name="line-471"></a><span class='comment'>-- constructor filter for a comment node.</span>-<a name="line-472"></a><span class='comment'>-- a new tree is constructed.</span>-<a name="line-473"></a><span class='comment'>-- the xml string representation of the filter result</span>-<a name="line-474"></a><span class='comment'>-- forms the comment</span>-<a name="line-475"></a>-<a name="line-476"></a><a name="mkXCmt"></a><span class='definition'>mkXCmt</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-477"></a><span class='definition'>mkXCmt</span> <span class='varid'>cf</span>-<a name="line-478"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='varid'>mkXCmtTree</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>cf</span><span class='layout'>)</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-479"></a>-<a name="line-480"></a><span class='comment'>-- |</span>-<a name="line-481"></a><span class='comment'>-- constructor filter for a DTD part.</span>-<a name="line-482"></a><span class='comment'>-- a new tree is constructed.</span>-<a name="line-483"></a><span class='comment'>-- the input tree is ignored.</span>-<a name="line-484"></a>-<a name="line-485"></a><a name="mkXDTD"></a><span class='definition'>mkXDTD</span> <span class='keyglyph'>::</span> <span class='conid'>DTDElem</span> <span class='keyglyph'>-></span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-486"></a><span class='definition'>mkXDTD</span> <span class='varid'>n</span> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>mkNTree</span> <span class='varop'>.</span> <span class='varid'>mkXDTDTree</span> <span class='varid'>n</span> <span class='varid'>al</span>-<a name="line-487"></a>-<a name="line-488"></a><span class='comment'>-- |</span>-<a name="line-489"></a><span class='comment'>-- constructor filter for a CDATA section node.</span>-<a name="line-490"></a><span class='comment'>-- a new tree is constructed.</span>-<a name="line-491"></a><span class='comment'>-- the input tree is ignored.</span>-<a name="line-492"></a>-<a name="line-493"></a><a name="mkXCdata"></a><span class='definition'>mkXCdata</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-494"></a><span class='definition'>mkXCdata</span> <span class='varid'>cf</span>-<a name="line-495"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='varid'>mkXCdataTree</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>cf</span><span class='layout'>)</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-496"></a>-<a name="line-497"></a><span class='comment'>-- |</span>-<a name="line-498"></a><span class='comment'>-- constructor filter for a processing instruction</span>-<a name="line-499"></a><span class='comment'>-- a new tree is constructed from the text representation</span>-<a name="line-500"></a><span class='comment'>-- of the input tree</span>-<a name="line-501"></a>-<a name="line-502"></a><a name="mkXPi"></a><span class='definition'>mkXPi</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-503"></a><span class='definition'>mkXPi</span> <span class='varid'>piName</span> <span class='varid'>cf</span>-<a name="line-504"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='varid'>mkXPiTree</span> <span class='varid'>piName</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>cf</span><span class='layout'>)</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-505"></a>-<a name="line-506"></a><span class='comment'>-- |</span>-<a name="line-507"></a><span class='comment'>-- constructor filter for an error message node.</span>-<a name="line-508"></a><span class='comment'>-- a new tree is constructed.</span>-<a name="line-509"></a><span class='comment'>-- the input tree is ignored.</span>-<a name="line-510"></a>-<a name="line-511"></a><a name="mkXError"></a><span class='definition'>mkXError</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-512"></a><span class='definition'>mkXError</span> <span class='varid'>l</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>this</span> <span class='varop'>.</span> <span class='varid'>mkXErrorTree</span> <span class='varid'>l</span> <span class='varid'>s</span> <span class='varop'>.</span> <span class='varid'>this</span>-<a name="line-513"></a>-<a name="line-514"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-515"></a><span class='comment'>--</span>-<a name="line-516"></a><span class='comment'>-- selector filters</span>-<a name="line-517"></a>-<a name="line-518"></a><span class='comment'>-- |</span>-<a name="line-519"></a><span class='comment'>-- filter for selecting the name of a tag node, an attribute node or a pi node.</span>-<a name="line-520"></a><span class='comment'>-- Result of the filter is a single element list with a text node or the empty list</span>-<a name="line-521"></a>-<a name="line-522"></a><a name="getName"></a><span class='definition'>getName</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-523"></a><span class='definition'>getName</span> <span class='varid'>t</span>-<a name="line-524"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-525"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='varid'>s</span>-<a name="line-526"></a> <span class='keyword'>where</span>-<a name="line-527"></a> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>nameOf</span> <span class='varid'>t</span>-<a name="line-528"></a>-<a name="line-529"></a><span class='comment'>-- |</span>-<a name="line-530"></a><span class='comment'>-- filter for selecting the attibute list</span>-<a name="line-531"></a>-<a name="line-532"></a><a name="getAttrl"></a><span class='definition'>getAttrl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-533"></a><span class='definition'>getAttrl</span>-<a name="line-534"></a> <span class='keyglyph'>=</span> <span class='varid'>selAttrl</span> <span class='varop'>.</span> <span class='varid'>getNode</span>-<a name="line-535"></a> <span class='keyword'>where</span>-<a name="line-536"></a> <span class='varid'>selAttrl</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>al</span>-<a name="line-537"></a> <span class='varid'>selAttrl</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='keyword'>_</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>al</span>-<a name="line-538"></a> <span class='varid'>selAttrl</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-539"></a>-<a name="line-540"></a><span class='comment'>-- |</span>-<a name="line-541"></a><span class='comment'>-- filter for selecting the value of an attribute in a tag node.</span>-<a name="line-542"></a><span class='comment'>-- Result of the filter is a single element list with a text node or the empty list</span>-<a name="line-543"></a><span class='comment'>--</span>-<a name="line-544"></a><span class='comment'>-- see also : 'hasValue', 'getNsValue'</span>-<a name="line-545"></a>-<a name="line-546"></a><a name="getValue"></a><span class='definition'>getValue</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-547"></a><span class='definition'>getValue</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>xmlTreesToText</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varop'>.></span> <span class='varid'>isAttr</span> <span class='varid'>a</span> <span class='varop'>.></span> <span class='varid'>getChildren</span><span class='layout'>)</span>-<a name="line-548"></a>-<a name="line-549"></a><span class='comment'>-- |</span>-<a name="line-550"></a><span class='comment'>-- filter for selecting the value of an attribute with namespace in a tag node.</span>-<a name="line-551"></a><span class='comment'>-- Result of the filter is a single element list with a text node or the empty list</span>-<a name="line-552"></a><span class='comment'>--</span>-<a name="line-553"></a><span class='comment'>-- see also : 'getValue', 'isNsAttr'</span>-<a name="line-554"></a>-<a name="line-555"></a><a name="getNsValue"></a><span class='definition'>getNsValue</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-556"></a><span class='definition'>getNsValue</span> <span class='varid'>lp</span> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='varid'>xmlTreesToText</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varop'>.></span> <span class='varid'>isNsAttr</span> <span class='varid'>lp</span> <span class='varid'>ns</span> <span class='varop'>.></span> <span class='varid'>getChildren</span><span class='layout'>)</span>-<a name="line-557"></a>-<a name="line-558"></a><span class='comment'>-- |</span>-<a name="line-559"></a><span class='comment'>-- filter for selecting an attribute of a DTD node.</span>-<a name="line-560"></a><span class='comment'>-- Result of the filter is a single element list with a text node or the empty list</span>-<a name="line-561"></a>-<a name="line-562"></a><a name="getDTDValue"></a><span class='definition'>getDTDValue</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-563"></a><span class='definition'>getDTDValue</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='varop'>.</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a</span>-<a name="line-564"></a>-<a name="line-565"></a><span class='comment'>-- |</span>-<a name="line-566"></a><span class='comment'>-- filter for selecting content of a comment.</span>-<a name="line-567"></a><span class='comment'>-- Result of the filter is a single element list with a text node or the empty list</span>-<a name="line-568"></a>-<a name="line-569"></a><a name="getXCmt"></a><span class='definition'>getXCmt</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-570"></a><span class='definition'>getXCmt</span>-<a name="line-571"></a> <span class='keyglyph'>=</span> <span class='varid'>selCmt</span> <span class='varop'>.</span> <span class='varid'>getNode</span>-<a name="line-572"></a> <span class='keyword'>where</span>-<a name="line-573"></a> <span class='varid'>selCmt</span> <span class='layout'>(</span><span class='conid'>XCmt</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='varid'>c</span>-<a name="line-574"></a> <span class='varid'>selCmt</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-575"></a>-<a name="line-576"></a><span class='comment'>-- |</span>-<a name="line-577"></a><span class='comment'>-- filter for selecting the CDATA content.</span>-<a name="line-578"></a><span class='comment'>-- Result of the filter is a single element list with a text node or the empty list</span>-<a name="line-579"></a>-<a name="line-580"></a><a name="getXCdata"></a><span class='definition'>getXCdata</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-581"></a><span class='definition'>getXCdata</span>-<a name="line-582"></a> <span class='keyglyph'>=</span> <span class='varid'>selData</span> <span class='varop'>.</span> <span class='varid'>getNode</span>-<a name="line-583"></a> <span class='keyword'>where</span>-<a name="line-584"></a> <span class='varid'>selData</span> <span class='layout'>(</span><span class='conid'>XCdata</span> <span class='varid'>d</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='varid'>d</span>-<a name="line-585"></a> <span class='varid'>selData</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-586"></a>-<a name="line-587"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-588"></a><span class='comment'>--</span>-<a name="line-589"></a><span class='comment'>-- edit filter</span>-<a name="line-590"></a>-<a name="line-591"></a><span class='comment'>-- |</span>-<a name="line-592"></a><span class='comment'>-- edit filter for changing the name of a tag node, an attribute or a pi.</span>-<a name="line-593"></a><span class='comment'>-- result of the filter is a single element list with a tag node or the empty list</span>-<a name="line-594"></a>-<a name="line-595"></a><a name="replaceQName"></a><span class='definition'>replaceQName</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-596"></a><span class='definition'>replaceQName</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>modifyQName</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-597"></a>-<a name="line-598"></a><span class='comment'>-- |</span>-<a name="line-599"></a><span class='comment'>-- edit filter for changing the text of a text node.</span>-<a name="line-600"></a><span class='comment'>-- result of the filter is a single element list with a text node or the empty list</span>-<a name="line-601"></a><span class='comment'>--</span>-<a name="line-602"></a><span class='comment'>-- example for editing all text nodes of a tree with an edit function @f@:</span>-<a name="line-603"></a><span class='comment'>--</span>-<a name="line-604"></a><span class='comment'>-- @processBottomUp (modifyText f \`when\` isXText)@</span>-<a name="line-605"></a>-<a name="line-606"></a><a name="modifyText"></a><span class='definition'>modifyText</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-607"></a><span class='definition'>modifyText</span> <span class='varid'>f</span> <span class='varid'>t</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-608"></a> <span class='keyglyph'>|</span> <span class='varid'>isXTextNode</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>replaceNode</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='layout'>(</span><span class='varid'>textOfXNode</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-609"></a><span class='definition'>modifyText</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-610"></a>-<a name="line-611"></a><span class='comment'>-- |</span>-<a name="line-612"></a><span class='comment'>-- edit filter for changing the name of a tag node.</span>-<a name="line-613"></a><span class='comment'>-- result of the filter is a single element list with a text node or the empty list</span>-<a name="line-614"></a>-<a name="line-615"></a><a name="modifyQName"></a><span class='definition'>modifyQName</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>TagName</span> <span class='keyglyph'>-></span> <span class='conid'>TagName</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-616"></a><span class='definition'>modifyQName</span> <span class='varid'>f</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='keyglyph'>]</span>-<a name="line-617"></a><span class='definition'>modifyQName</span> <span class='varid'>f</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='keyglyph'>]</span>-<a name="line-618"></a><span class='definition'>modifyQName</span> <span class='varid'>f</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='layout'>)</span> <span class='varid'>cs</span><span class='keyglyph'>]</span>-<a name="line-619"></a><span class='definition'>modifyQName</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-620"></a>-<a name="line-621"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-622"></a>-<a name="line-623"></a><span class='comment'>-- |</span>-<a name="line-624"></a><span class='comment'>-- process the attribute list of a tag node with a tree list filter.</span>-<a name="line-625"></a><span class='comment'>-- for other trees this filter acts like 'none'</span>-<a name="line-626"></a>-<a name="line-627"></a><a name="processAttrl"></a><span class='definition'>processAttrl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlSFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-628"></a><span class='definition'>processAttrl</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-629"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceAttrl</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-630"></a> <span class='keyword'>where</span>-<a name="line-631"></a> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>getAttrl</span> <span class='varid'>t</span>-<a name="line-632"></a>-<a name="line-633"></a><a name="processAttr"></a><span class='comment'>-- |</span>-<a name="line-634"></a><span class='comment'>-- elementwise processing of the attributes of a tag.</span>-<a name="line-635"></a><span class='comment'>-- for other trees this filter acts like 'none'</span>-<a name="line-636"></a><span class='comment'>--</span>-<a name="line-637"></a><span class='comment'>-- see also : 'processAttrl'</span>-<a name="line-638"></a><span class='definition'>processAttr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-639"></a><span class='definition'>processAttr</span> <span class='varid'>f</span>-<a name="line-640"></a> <span class='keyglyph'>=</span> <span class='varid'>processAttrl</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varop'>$$</span><span class='layout'>)</span>-<a name="line-641"></a>-<a name="line-642"></a><span class='comment'>-- |</span>-<a name="line-643"></a><span class='comment'>-- replace an attribute list</span>-<a name="line-644"></a><span class='comment'>-- to be renamed when replaceAttrl is eliminated</span>-<a name="line-645"></a>-<a name="line-646"></a><a name="replaceAttrl"></a><span class='definition'>replaceAttrl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-647"></a><span class='definition'>replaceAttrl</span> <span class='varid'>al</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='sel'>_al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span> <span class='keyglyph'>]</span>-<a name="line-648"></a><span class='definition'>replaceAttrl</span> <span class='varid'>al</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='varid'>n</span> <span class='sel'>_al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span> <span class='keyglyph'>]</span>-<a name="line-649"></a><span class='definition'>replaceAttrl</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-650"></a>-<a name="line-651"></a><span class='comment'>-- |</span>-<a name="line-652"></a><span class='comment'>-- delete an attribute from the attribute list of a tag tree</span>-<a name="line-653"></a>-<a name="line-654"></a><a name="del1Attr"></a><span class='definition'>del1Attr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-655"></a><span class='definition'>del1Attr</span> <span class='varid'>an</span> <span class='keyglyph'>=</span> <span class='varid'>processAttr</span> <span class='layout'>(</span><span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isAttr</span> <span class='varid'>an</span><span class='layout'>)</span>-<a name="line-656"></a>-<a name="line-657"></a><span class='comment'>-- |</span>-<a name="line-658"></a><span class='comment'>-- add an attribute to the attribute list of a tag.</span>-<a name="line-659"></a><span class='comment'>-- If the attribute already exists, it\'s substituted,</span>-<a name="line-660"></a><span class='comment'>--</span>-<a name="line-661"></a><span class='comment'>-- see also: 'sattr', '+='</span>-<a name="line-662"></a>-<a name="line-663"></a><a name="add1Attr"></a><span class='definition'>add1Attr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-664"></a><span class='definition'>add1Attr</span> <span class='varid'>a</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>an</span><span class='layout'>)</span> <span class='sel'>_av</span><span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-665"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceAttrl</span> <span class='layout'>(</span><span class='varid'>replace</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-666"></a> <span class='keyword'>where</span>-<a name="line-667"></a> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>getAttrl</span> <span class='varid'>t</span>-<a name="line-668"></a> <span class='varid'>replace</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>-<a name="line-669"></a> <span class='varid'>replace</span> <span class='layout'>(</span><span class='varid'>a1</span> <span class='conop'>:</span> <span class='keyword'>as</span><span class='layout'>)</span>-<a name="line-670"></a> <span class='keyglyph'>|</span> <span class='varid'>satisfies</span> <span class='layout'>(</span><span class='varid'>isAttr</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>an</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>a1</span>-<a name="line-671"></a> <span class='keyglyph'>=</span> <span class='varid'>a</span> <span class='conop'>:</span> <span class='keyword'>as</span>-<a name="line-672"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-673"></a> <span class='keyglyph'>=</span> <span class='varid'>a1</span> <span class='conop'>:</span> <span class='varid'>replace</span> <span class='keyword'>as</span>-<a name="line-674"></a>-<a name="line-675"></a><span class='definition'>add1Attr</span> <span class='keyword'>_</span> <span class='varid'>t</span>-<a name="line-676"></a> <span class='keyglyph'>=</span> <span class='varid'>this</span> <span class='varid'>t</span>-<a name="line-677"></a>-<a name="line-678"></a><span class='comment'>-- |</span>-<a name="line-679"></a><span class='comment'>-- adds an attribute list computed by a filter, uses 'add1Attr'.</span>-<a name="line-680"></a><span class='comment'>--</span>-<a name="line-681"></a><span class='comment'>-- see also: '+='</span>-<a name="line-682"></a>-<a name="line-683"></a><a name="addAttrl"></a><span class='definition'>addAttrl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-684"></a><span class='definition'>addAttrl</span> <span class='varid'>attrFilter</span> <span class='varid'>t</span>-<a name="line-685"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>foldl</span> <span class='layout'>(</span><span class='varop'>.></span><span class='layout'>)</span> <span class='varid'>this</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>add1Attr</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-686"></a> <span class='keyword'>where</span>-<a name="line-687"></a> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>attrFilter</span> <span class='varid'>t</span>-<a name="line-688"></a>-<a name="line-689"></a><span class='comment'>-- |</span>-<a name="line-690"></a><span class='comment'>-- add or change an attribute with a given string as value for a XTag or XPi tree,</span>-<a name="line-691"></a><span class='comment'>-- uses 'add1Attr'.</span>-<a name="line-692"></a>-<a name="line-693"></a><a name="addAttr"></a><span class='definition'>addAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-694"></a><span class='definition'>addAttr</span> <span class='varid'>an</span> <span class='varid'>av</span>-<a name="line-695"></a> <span class='keyglyph'>=</span> <span class='varid'>add1Attr</span> <span class='layout'>(</span><span class='varid'>mkXAttrTree</span> <span class='varid'>an</span> <span class='layout'>(</span><span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>av</span> <span class='keyword'>then</span> <span class='conid'>[]</span> <span class='keyword'>else</span> <span class='varid'>xtext</span> <span class='varid'>av</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-696"></a>-<a name="line-697"></a><span class='comment'>-- |</span>-<a name="line-698"></a><span class='comment'>-- add or change an attribute with an Int value.</span>-<a name="line-699"></a><span class='comment'>-- uses 'addAttr'.</span>-<a name="line-700"></a>-<a name="line-701"></a><a name="addAttrInt"></a><span class='definition'>addAttrInt</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-702"></a><span class='definition'>addAttrInt</span> <span class='varid'>an</span> <span class='varid'>av</span>-<a name="line-703"></a> <span class='keyglyph'>=</span> <span class='varid'>addAttr</span> <span class='varid'>an</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>av</span><span class='layout'>)</span>-<a name="line-704"></a>-<a name="line-705"></a><span class='comment'>-- |</span>-<a name="line-706"></a><span class='comment'>-- edit filter for changing the value of an attribute in a tag node.</span>-<a name="line-707"></a><span class='comment'>-- result of the filter is a single element list with the tag node or the empty list.</span>-<a name="line-708"></a><span class='comment'>--</span>-<a name="line-709"></a><span class='comment'>-- * 1.parameter n : the name of the attribute</span>-<a name="line-710"></a><span class='comment'>--</span>-<a name="line-711"></a><span class='comment'>-- - 2.parameter f : the edit function for the attribute value</span>-<a name="line-712"></a><span class='comment'>--</span>-<a name="line-713"></a><span class='comment'>-- - returns : the edit filter</span>-<a name="line-714"></a>-<a name="line-715"></a><a name="modifyAttr"></a><span class='definition'>modifyAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-716"></a><span class='definition'>modifyAttr</span> <span class='varid'>an</span> <span class='varid'>f</span>-<a name="line-717"></a> <span class='keyglyph'>=</span> <span class='varid'>processAttr</span> <span class='layout'>(</span><span class='varid'>modifyValue</span> <span class='varop'>`when`</span> <span class='varid'>isAttr</span> <span class='varid'>an</span><span class='layout'>)</span>-<a name="line-718"></a> <span class='keyword'>where</span>-<a name="line-719"></a> <span class='varid'>modifyValue</span> <span class='keyglyph'>=</span> <span class='varid'>modifyChildren</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>modifyText</span> <span class='varid'>f</span> <span class='varop'>$$</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>xmlTreesToText</span><span class='layout'>)</span>-<a name="line-720"></a>-<a name="line-721"></a><span class='comment'>-- |</span>-<a name="line-722"></a><span class='comment'>-- add or change an attribute of a DTD tree</span>-<a name="line-723"></a>-<a name="line-724"></a><a name="addDTDAttr"></a><span class='definition'>addDTDAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-725"></a><span class='definition'>addDTDAttr</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>e</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-726"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>e</span> <span class='layout'>(</span><span class='varid'>addEntry</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='varid'>al</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='keyglyph'>]</span>-<a name="line-727"></a>-<a name="line-728"></a><span class='definition'>addDTDAttr</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyword'>_</span>-<a name="line-729"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-730"></a>-<a name="line-731"></a>-<a name="line-732"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-733"></a><span class='comment'>--</span>-<a name="line-734"></a>-<a name="line-735"></a><span class='comment'>-- |</span>-<a name="line-736"></a><span class='comment'>-- convenient function for tag node tree construction</span>-<a name="line-737"></a><span class='comment'>--</span>-<a name="line-738"></a><span class='comment'>-- infixl 7</span>-<a name="line-739"></a><span class='comment'>--</span>-<a name="line-740"></a><span class='comment'>-- filter combinator for tag tree constrcution</span>-<a name="line-741"></a><span class='comment'>-- take a 1. filter for computing a tag node tree (or a whole list of tag node trees)</span>-<a name="line-742"></a><span class='comment'>-- then add all trees computed by the 2. filter to the attribute list when they represent attributes</span>-<a name="line-743"></a><span class='comment'>-- else append them to the list of children.</span>-<a name="line-744"></a><span class='comment'>--</span>-<a name="line-745"></a><span class='comment'>-- if the 1. filter computes a list of tag nodes, the results of the 2. filter are added to all trees</span>-<a name="line-746"></a><span class='comment'>--</span>-<a name="line-747"></a><span class='comment'>-- example: @ etag \"a\" += sattr \"href\" \"\#42\" += txt \"the answer\" @</span>-<a name="line-748"></a><span class='comment'>-- gives the tree @ \<a href=\"\#42\"\>the answer\<\/a\> @</span>-<a name="line-749"></a><span class='comment'>--</span>-<a name="line-750"></a><span class='comment'>-- example: @ ( etag \"a\" +++ etag \"b\" ) += sattr \"x\" \"42\" @</span>-<a name="line-751"></a><span class='comment'>-- gives the tree @ \<a x=\"42\"\/\>\<b x=\"42\"\/\> @</span>-<a name="line-752"></a><span class='comment'>--</span>-<a name="line-753"></a><span class='comment'>-- see also : 'etag', 'tag', 'add1Attr', 'modifyChildren', '++='</span>-<a name="line-754"></a>-<a name="line-755"></a><a name="+="></a><span class='layout'>(</span><span class='varop'>+=</span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-756"></a><span class='layout'>(</span><span class='varop'>+=</span><span class='layout'>)</span> <span class='varid'>tf</span> <span class='varid'>cf</span> <span class='varid'>t</span>-<a name="line-757"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span>-<a name="line-758"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>isXTag</span> <span class='varop'>`guards`</span> <span class='layout'>(</span> <span class='varid'>addaf</span> <span class='varop'>.></span> <span class='varid'>addcf</span> <span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>t'</span>-<a name="line-759"></a> <span class='keyglyph'>|</span> <span class='varid'>t'</span> <span class='keyglyph'><-</span> <span class='varid'>tf</span> <span class='varid'>t</span>-<a name="line-760"></a> <span class='keyglyph'>]</span>-<a name="line-761"></a> <span class='keyword'>where</span>-<a name="line-762"></a> <span class='layout'>(</span><span class='keyword'>as</span><span class='layout'>,</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>satisfies</span> <span class='varid'>isXAttr</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>cf</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-763"></a>-<a name="line-764"></a> <span class='varid'>addaf</span> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='keyword'>as</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-765"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>addAttrl</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='keyword'>as</span><span class='layout'>)</span>-<a name="line-766"></a>-<a name="line-767"></a> <span class='varid'>addcf</span> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-768"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>modifyChildren</span> <span class='layout'>(</span><span class='varop'>++</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-769"></a>-<a name="line-770"></a><span class='comment'>-- |</span>-<a name="line-771"></a><span class='comment'>-- convenient filter function adding a whole list of trees, just for not writing to many ( ... ).</span>-<a name="line-772"></a><span class='comment'>--</span>-<a name="line-773"></a><span class='comment'>-- infixl 7</span>-<a name="line-774"></a><span class='comment'>--</span>-<a name="line-775"></a><span class='comment'>-- @ f ++= gl == f += cat gl @</span>-<a name="line-776"></a><span class='comment'>--</span>-<a name="line-777"></a><span class='comment'>-- see also : '+='</span>-<a name="line-778"></a>-<a name="line-779"></a><a name="++="></a><span class='layout'>(</span><span class='varop'>++=</span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlFilter</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-780"></a><a name="tf"></a><span class='definition'>tf</span> <span class='varop'>++=</span> <span class='varid'>cfs</span>-<a name="line-781"></a> <span class='keyglyph'>=</span> <span class='varid'>tf</span> <span class='varop'>+=</span> <span class='varid'>cat</span> <span class='varid'>cfs</span>-<a name="line-782"></a>-<a name="line-783"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-784"></a><span class='comment'>--</span>-<a name="line-785"></a><span class='comment'>-- string access functions</span>-<a name="line-786"></a>-<a name="line-787"></a><span class='comment'>-- |</span>-<a name="line-788"></a><span class='comment'>-- combination of 'getValue' and conversion into a String</span>-<a name="line-789"></a>-<a name="line-790"></a><a name="valueOf"></a><span class='definition'>valueOf</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-791"></a><span class='definition'>valueOf</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>getValue</span> <span class='varid'>a</span>-<a name="line-792"></a>-<a name="line-793"></a><span class='comment'>-- |</span>-<a name="line-794"></a><span class='comment'>-- combination of 'getValue' and conversion to a Int</span>-<a name="line-795"></a>-<a name="line-796"></a><a name="intValueOf"></a><span class='definition'>intValueOf</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span>-<a name="line-797"></a><span class='definition'>intValueOf</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>decimalStringToInt</span> <span class='varop'>.</span> <span class='varid'>valueOf</span> <span class='varid'>a</span>-<a name="line-798"></a>-<a name="line-799"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-800"></a><span class='comment'>--</span>-<a name="line-801"></a><span class='comment'>-- convenient filter (short cuts)</span>-<a name="line-802"></a>-<a name="line-803"></a><span class='comment'>-- |</span>-<a name="line-804"></a><span class='comment'>-- variant of mkXTag with a list of filters for the attributes and a list of filters for the children.</span>-<a name="line-805"></a><span class='comment'>-- this variant leads to a more readable source for a complicated construction filter</span>-<a name="line-806"></a><span class='comment'>-- than the simple solution with a combination of 'mkXTag' and 'cat'.</span>-<a name="line-807"></a><span class='comment'>--</span>-<a name="line-808"></a><span class='comment'>-- see also : 'mkXTag', 'stag', 'etag', 'cat', '+='</span>-<a name="line-809"></a>-<a name="line-810"></a><a name="tag"></a><span class='definition'>tag</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlFilter</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlFilter</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-811"></a><span class='definition'>tag</span> <span class='varid'>n</span> <span class='varid'>afs</span> <span class='varid'>cfs</span> <span class='keyglyph'>=</span> <span class='varid'>mkXTag</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>cat</span> <span class='varid'>afs</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>cat</span> <span class='varid'>cfs</span><span class='layout'>)</span>-<a name="line-812"></a>-<a name="line-813"></a><span class='comment'>-- |</span>-<a name="line-814"></a><span class='comment'>-- variant of tag, useful for tags without attributes and with a list of filters for</span>-<a name="line-815"></a><span class='comment'>-- constructing the children</span>-<a name="line-816"></a><span class='comment'>--</span>-<a name="line-817"></a><span class='comment'>-- see also : 'mkXTag', 'tag', 'etag', 'cat', '+='</span>-<a name="line-818"></a>-<a name="line-819"></a><a name="stag"></a><span class='definition'>stag</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlFilter</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-820"></a><span class='definition'>stag</span> <span class='varid'>n</span> <span class='varid'>cfs</span> <span class='keyglyph'>=</span> <span class='varid'>mkXTag</span> <span class='varid'>n</span> <span class='varid'>none</span> <span class='layout'>(</span><span class='varid'>cat</span> <span class='varid'>cfs</span><span class='layout'>)</span>-<a name="line-821"></a>-<a name="line-822"></a><span class='comment'>-- |</span>-<a name="line-823"></a><span class='comment'>-- variant of tag, useful for tags with attributes but without children</span>-<a name="line-824"></a><span class='comment'>--</span>-<a name="line-825"></a><span class='comment'>-- see also : 'mkXTag', 'tag', 'stag', 'etag', 'cat'</span>-<a name="line-826"></a>-<a name="line-827"></a><a name="atag"></a><span class='definition'>atag</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlFilter</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-828"></a><span class='definition'>atag</span> <span class='varid'>n</span> <span class='varid'>cfs</span> <span class='keyglyph'>=</span> <span class='varid'>mkXTag</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>cat</span> <span class='varid'>cfs</span><span class='layout'>)</span> <span class='varid'>none</span>-<a name="line-829"></a>-<a name="line-830"></a><span class='comment'>-- |</span>-<a name="line-831"></a><span class='comment'>-- Short cut for empty tags without attributes</span>-<a name="line-832"></a><span class='comment'>--</span>-<a name="line-833"></a><span class='comment'>-- see also : 'tag', 'atag', 'stag', 'mkXTag' and '+='</span>-<a name="line-834"></a>-<a name="line-835"></a><a name="etag"></a><span class='definition'>etag</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-836"></a><span class='definition'>etag</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>mkXTag</span> <span class='varid'>n</span> <span class='varid'>none</span> <span class='varid'>none</span>-<a name="line-837"></a>-<a name="line-838"></a><span class='comment'>-- | Qualified version of etag</span>-<a name="line-839"></a>-<a name="line-840"></a><a name="qetag"></a><span class='definition'>qetag</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-841"></a><span class='definition'>qetag</span> <span class='varid'>q</span> <span class='keyglyph'>=</span> <span class='varid'>mkQTag</span> <span class='varid'>q</span> <span class='varid'>none</span> <span class='varid'>none</span>-<a name="line-842"></a>-<a name="line-843"></a><span class='comment'>-- | Alias for mkQTag</span>-<a name="line-844"></a>-<a name="line-845"></a><a name="qtag"></a><span class='definition'>qtag</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-846"></a><span class='definition'>qtag</span> <span class='keyglyph'>=</span> <span class='varid'>mkQTag</span>-<a name="line-847"></a>-<a name="line-848"></a>-<a name="line-849"></a><span class='comment'>-- |</span>-<a name="line-850"></a><span class='comment'>-- filter for creating a document root node with a list of filters for the attributes and a list of filters for the document.</span>-<a name="line-851"></a><span class='comment'>--</span>-<a name="line-852"></a><span class='comment'>-- see also : 'tag'</span>-<a name="line-853"></a>-<a name="line-854"></a><a name="rootTag"></a><span class='definition'>rootTag</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlFilter</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlFilter</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-855"></a><span class='definition'>rootTag</span> <span class='varid'>afs</span> <span class='varid'>cfs</span> <span class='keyglyph'>=</span> <span class='varid'>mkXTag</span> <span class='varid'>t_root</span> <span class='layout'>(</span><span class='varid'>cat</span> <span class='varid'>afs</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>cat</span> <span class='varid'>cfs</span><span class='layout'>)</span>-<a name="line-856"></a>-<a name="line-857"></a><span class='comment'>-- |</span>-<a name="line-858"></a><span class='comment'>-- Alias for 'mkXAttr'</span>-<a name="line-859"></a>-<a name="line-860"></a><a name="attr"></a><span class='definition'>attr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-861"></a><span class='definition'>attr</span> <span class='keyglyph'>=</span> <span class='varid'>mkXAttr</span>-<a name="line-862"></a>-<a name="line-863"></a><a name="qattr"></a><span class='comment'>-- | Alias for mkQAttr</span>-<a name="line-864"></a><span class='definition'>qattr</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-865"></a><span class='definition'>qattr</span> <span class='keyglyph'>=</span> <span class='varid'>mkQAttr</span>-<a name="line-866"></a>-<a name="line-867"></a><span class='comment'>-- |</span>-<a name="line-868"></a><span class='comment'>-- short cut for attribute construction with string constants</span>-<a name="line-869"></a><span class='comment'>--</span>-<a name="line-870"></a><span class='comment'>-- set also : 'attr', 'mkXAttr' and 'mkXText'</span>-<a name="line-871"></a>-<a name="line-872"></a><a name="sattr"></a><span class='definition'>sattr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-873"></a><span class='definition'>sattr</span> <span class='varid'>a</span> <span class='varid'>v</span> <span class='keyglyph'>=</span> <span class='varid'>mkXAttr</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='varid'>mkXText</span> <span class='varid'>v</span><span class='layout'>)</span>-<a name="line-874"></a>-<a name="line-875"></a><span class='comment'>-- |</span>-<a name="line-876"></a><span class='comment'>-- short cut for 'mkXText'</span>-<a name="line-877"></a>-<a name="line-878"></a><a name="txt"></a><span class='definition'>txt</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-879"></a><span class='definition'>txt</span> <span class='keyglyph'>=</span> <span class='varid'>mkXText</span>-<a name="line-880"></a>-<a name="line-881"></a><span class='comment'>-- |</span>-<a name="line-882"></a><span class='comment'>-- short cut for simple comment</span>-<a name="line-883"></a><span class='comment'>-- the input tree is ignored</span>-<a name="line-884"></a><span class='comment'>--</span>-<a name="line-885"></a><span class='comment'>-- see also : 'mkXCmt'</span>-<a name="line-886"></a>-<a name="line-887"></a><a name="cmt"></a><span class='definition'>cmt</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-888"></a><span class='definition'>cmt</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkXCmt</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-889"></a>-<a name="line-890"></a><span class='comment'>-- |</span>-<a name="line-891"></a><span class='comment'>-- short cut for generating simple processing instructions (spi)</span>-<a name="line-892"></a><span class='comment'>-- the input tree is ignored</span>-<a name="line-893"></a><span class='comment'>--</span>-<a name="line-894"></a><span class='comment'>-- @spi \"xyz\" \"abc\"@ is equal to @mkXPi \"xyz\" (txt \"abc\")@</span>-<a name="line-895"></a><span class='comment'>-- (the name pi is already used in prelude)</span>-<a name="line-896"></a>-<a name="line-897"></a><a name="spi"></a><span class='definition'>spi</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-898"></a><span class='definition'>spi</span> <span class='varid'>n</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkXPi</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-899"></a>-<a name="line-900"></a><span class='comment'>-- |</span>-<a name="line-901"></a><span class='comment'>-- short cut for generating simple cdata sections,</span>-<a name="line-902"></a><span class='comment'>-- the input tree is ignored</span>-<a name="line-903"></a>-<a name="line-904"></a><a name="cdata"></a><span class='definition'>cdata</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-905"></a><span class='definition'>cdata</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>mkXCdata</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-906"></a>-<a name="line-907"></a><span class='comment'>-- |</span>-<a name="line-908"></a><span class='comment'>-- DTD part generation with filter for attributes and children</span>-<a name="line-909"></a><span class='comment'>-- see also: 'mkXDTDTree'</span>-<a name="line-910"></a>-<a name="line-911"></a><a name="dtd"></a><span class='definition'>dtd</span> <span class='keyglyph'>::</span> <span class='conid'>DTDElem</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlFilter</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlFilter</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-912"></a><span class='definition'>dtd</span> <span class='varid'>dtdpart</span> <span class='varid'>afs</span> <span class='varid'>cfs</span> <span class='varid'>t</span>-<a name="line-913"></a> <span class='keyglyph'>=</span> <span class='varid'>mkXDTD</span> <span class='varid'>dtdpart</span> <span class='layout'>(</span><span class='varid'>toAttrl</span> <span class='varop'>.</span> <span class='varid'>cat</span> <span class='varid'>afs</span> <span class='varop'>$</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>cat</span> <span class='varid'>cfs</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-914"></a>-<a name="line-915"></a><span class='comment'>-- |</span>-<a name="line-916"></a><span class='comment'>-- short cut for mkXError c_warn.</span>-<a name="line-917"></a><span class='comment'>--</span>-<a name="line-918"></a><span class='comment'>-- see also : 'mkXError'</span>-<a name="line-919"></a>-<a name="line-920"></a><a name="warn"></a><span class='definition'>warn</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-921"></a><span class='definition'>warn</span> <span class='keyglyph'>=</span> <span class='varid'>mkXError</span> <span class='varid'>c_warn</span>-<a name="line-922"></a>-<a name="line-923"></a><span class='comment'>-- |</span>-<a name="line-924"></a><span class='comment'>-- short cut for mkXError c_fatal.</span>-<a name="line-925"></a><span class='comment'>--</span>-<a name="line-926"></a><span class='comment'>-- see also : 'mkXError'</span>-<a name="line-927"></a>-<a name="line-928"></a><a name="err"></a><span class='definition'>err</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-929"></a><span class='definition'>err</span> <span class='keyglyph'>=</span> <span class='varid'>mkXError</span> <span class='varid'>c_err</span>-<a name="line-930"></a>-<a name="line-931"></a><span class='comment'>-- |</span>-<a name="line-932"></a><span class='comment'>-- short cut for mkXError c_fatal.</span>-<a name="line-933"></a><span class='comment'>--</span>-<a name="line-934"></a><span class='comment'>-- see also : 'mkXError'</span>-<a name="line-935"></a>-<a name="line-936"></a><a name="fatal"></a><span class='definition'>fatal</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-937"></a><span class='definition'>fatal</span> <span class='keyglyph'>=</span> <span class='varid'>mkXError</span> <span class='varid'>c_fatal</span>-<a name="line-938"></a>-<a name="line-939"></a><span class='comment'>-- |</span>-<a name="line-940"></a><span class='comment'>-- check whether an option is set</span>-<a name="line-941"></a><span class='comment'>--</span>-<a name="line-942"></a><span class='comment'>-- reads the value of an attribute, usually applied to a document root node,</span>-<a name="line-943"></a><span class='comment'>-- and checks if the value represents True. The following strings are interpreted</span>-<a name="line-944"></a><span class='comment'>-- as true: \"1\", \"True\", \"true\", \"yes\", \"Yes\".</span>-<a name="line-945"></a>-<a name="line-946"></a><a name="hasOption"></a><span class='definition'>hasOption</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-947"></a><span class='definition'>hasOption</span> <span class='varid'>opt</span>-<a name="line-948"></a> <span class='keyglyph'>=</span> <span class='varid'>getValue</span> <span class='varid'>opt</span> <span class='varop'>.></span> <span class='varid'>isOfText</span> <span class='varid'>isSet</span>-<a name="line-949"></a> <span class='keyword'>where</span>-<a name="line-950"></a> <span class='varid'>isSet</span> <span class='varid'>x</span>-<a name="line-951"></a> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"1"</span><span class='layout'>,</span> <span class='str'>"True"</span><span class='layout'>,</span> <span class='str'>"true"</span><span class='layout'>,</span> <span class='str'>"yes"</span><span class='layout'>,</span> <span class='str'>"Yes"</span><span class='keyglyph'>]</span>-<a name="line-952"></a>-<a name="line-953"></a>-<a name="line-954"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-955"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-DOM-XmlTreeFunctions.html
@@ -1,561 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a>-<a name="line-3"></a><span class='comment'>{- |-<a name="line-4"></a> Module : Text.XML.HXT.DOM.XmlTreeFunctions-<a name="line-5"></a> Copyright : Copyright (C) 2008 Uwe Schmidt-<a name="line-6"></a> License : MIT-<a name="line-7"></a>-<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de)-<a name="line-9"></a> Stability : stable-<a name="line-10"></a> Portability: portable-<a name="line-11"></a>-<a name="line-12"></a> Basic XmlTree functions-<a name="line-13"></a>-<a name="line-14"></a>-}</span>-<a name="line-15"></a>-<a name="line-16"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-17"></a>-<a name="line-18"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeFunctions</span>-<a name="line-19"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeFunctions</span>-<a name="line-20"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>ShowXml</span>-<a name="line-21"></a> <span class='layout'>)</span>-<a name="line-22"></a><span class='keyword'>where</span>-<a name="line-23"></a>-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeTypes</span>-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>ShowXml</span>-<a name="line-27"></a>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-29"></a>-<a name="line-30"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-31"></a><span class='comment'>--</span>-<a name="line-32"></a><span class='comment'>-- XNode Predicates</span>-<a name="line-33"></a><span class='comment'>--</span>-<a name="line-34"></a>-<a name="line-35"></a><a name="isXCdataNode"></a><span class='definition'>isXCdataNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-36"></a><span class='definition'>isXCdataNode</span> <span class='layout'>(</span><span class='conid'>XCdata</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-37"></a><span class='definition'>isXCdataNode</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-38"></a>-<a name="line-39"></a><a name="isXCharRefNode"></a><span class='definition'>isXCharRefNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-40"></a><span class='definition'>isXCharRefNode</span> <span class='layout'>(</span><span class='conid'>XCharRef</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-41"></a><span class='definition'>isXCharRefNode</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-42"></a>-<a name="line-43"></a><a name="isXCmtNode"></a><span class='definition'>isXCmtNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-44"></a><span class='definition'>isXCmtNode</span> <span class='layout'>(</span><span class='conid'>XCmt</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-45"></a><span class='definition'>isXCmtNode</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-46"></a>-<a name="line-47"></a><a name="isXDTDNode"></a><span class='definition'>isXDTDNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-48"></a><span class='definition'>isXDTDNode</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-49"></a><span class='definition'>isXDTDNode</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-50"></a>-<a name="line-51"></a><a name="isXAttrNode"></a><span class='definition'>isXAttrNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-52"></a><span class='definition'>isXAttrNode</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-53"></a><span class='definition'>isXAttrNode</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-54"></a>-<a name="line-55"></a><a name="isXEntityRefNode"></a><span class='definition'>isXEntityRefNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-56"></a><span class='definition'>isXEntityRefNode</span> <span class='layout'>(</span><span class='conid'>XEntityRef</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-57"></a><span class='definition'>isXEntityRefNode</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-58"></a>-<a name="line-59"></a><a name="isXErrorNode"></a><span class='definition'>isXErrorNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-60"></a><span class='definition'>isXErrorNode</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-61"></a><span class='definition'>isXErrorNode</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-62"></a>-<a name="line-63"></a><a name="isXPiNode"></a><span class='definition'>isXPiNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-64"></a><span class='definition'>isXPiNode</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-65"></a><span class='definition'>isXPiNode</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-66"></a>-<a name="line-67"></a><a name="isXTagNode"></a><span class='definition'>isXTagNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-68"></a><span class='definition'>isXTagNode</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-69"></a><span class='definition'>isXTagNode</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-70"></a>-<a name="line-71"></a><a name="isXTextNode"></a><span class='definition'>isXTextNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-72"></a><span class='definition'>isXTextNode</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-73"></a><span class='definition'>isXTextNode</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-74"></a>-<a name="line-75"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-76"></a>-<a name="line-77"></a><a name="isRootNode"></a><span class='definition'>isRootNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-78"></a><span class='definition'>isRootNode</span> <span class='keyglyph'>=</span> <span class='varid'>isTagNode</span> <span class='varid'>t_root</span>-<a name="line-79"></a>-<a name="line-80"></a><a name="isTagNode"></a><span class='definition'>isTagNode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-81"></a><span class='definition'>isTagNode</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>isOfTagNode</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>qualifiedName</span><span class='layout'>)</span>-<a name="line-82"></a>-<a name="line-83"></a><a name="isOfTagNode"></a><span class='definition'>isOfTagNode</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>TagName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-84"></a><span class='definition'>isOfTagNode</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>p</span> <span class='varid'>n</span>-<a name="line-85"></a><span class='definition'>isOfTagNode</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-86"></a>-<a name="line-87"></a><a name="isAttrNode"></a><span class='definition'>isAttrNode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-88"></a><span class='definition'>isAttrNode</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>isOfAttrNode</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>qualifiedName</span><span class='layout'>)</span>-<a name="line-89"></a>-<a name="line-90"></a><a name="isOfAttrNode"></a><span class='definition'>isOfAttrNode</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>AttrName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-91"></a><span class='definition'>isOfAttrNode</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>p</span> <span class='varid'>n</span>-<a name="line-92"></a><span class='definition'>isOfAttrNode</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-93"></a>-<a name="line-94"></a><a name="isTextNode"></a><span class='definition'>isTextNode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-95"></a><span class='definition'>isTextNode</span> <span class='varid'>t</span> <span class='keyglyph'>=</span> <span class='varid'>isOfTextNode</span> <span class='layout'>(</span><span class='varop'>==</span> <span class='varid'>t</span><span class='layout'>)</span>-<a name="line-96"></a>-<a name="line-97"></a><a name="isOfTextNode"></a><span class='definition'>isOfTextNode</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-98"></a><span class='definition'>isOfTextNode</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>p</span> <span class='varid'>t</span>-<a name="line-99"></a><span class='definition'>isOfTextNode</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-100"></a>-<a name="line-101"></a><a name="isPiNode"></a><span class='definition'>isPiNode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-102"></a><span class='definition'>isPiNode</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>isOfPiNode</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>qualifiedName</span><span class='layout'>)</span>-<a name="line-103"></a>-<a name="line-104"></a><a name="isOfPiNode"></a><span class='definition'>isOfPiNode</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>TagName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-105"></a><span class='definition'>isOfPiNode</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>p</span> <span class='varid'>n</span>-<a name="line-106"></a><span class='definition'>isOfPiNode</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-107"></a>-<a name="line-108"></a><a name="isDTDElemNode"></a><span class='definition'>isDTDElemNode</span> <span class='keyglyph'>::</span> <span class='conid'>DTDElem</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-109"></a><span class='definition'>isDTDElemNode</span> <span class='varid'>e</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>n</span> <span class='varop'>==</span> <span class='varid'>e</span>-<a name="line-110"></a><span class='definition'>isDTDElemNode</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-111"></a>-<a name="line-112"></a><a name="isErrorNode"></a><span class='definition'>isErrorNode</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-113"></a><span class='definition'>isErrorNode</span> <span class='varid'>l</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='varid'>l'</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>l</span> <span class='varop'>==</span> <span class='varid'>l'</span>-<a name="line-114"></a><span class='definition'>isErrorNode</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-115"></a>-<a name="line-116"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-117"></a>-<a name="line-118"></a><a name="textOfXNode"></a><span class='definition'>textOfXNode</span> <span class='keyglyph'>::</span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-119"></a><span class='definition'>textOfXNode</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>t</span>-<a name="line-120"></a><span class='definition'>textOfXNode</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-121"></a>-<a name="line-122"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-123"></a><span class='comment'>--</span>-<a name="line-124"></a><span class='comment'>-- XmlTree constructors</span>-<a name="line-125"></a>-<a name="line-126"></a><span class='comment'>-- |</span>-<a name="line-127"></a><span class='comment'>-- Create a tree with a tag node.</span>-<a name="line-128"></a><span class='comment'>--</span>-<a name="line-129"></a><span class='comment'>-- * 1.parameter n : the name of the tag</span>-<a name="line-130"></a><span class='comment'>--</span>-<a name="line-131"></a><span class='comment'>-- - 2.parameter al : the tag attribte list</span>-<a name="line-132"></a><span class='comment'>--</span>-<a name="line-133"></a><span class='comment'>-- - 3.parameter cs : the list of children</span>-<a name="line-134"></a><span class='comment'>--</span>-<a name="line-135"></a><span class='comment'>-- - returns : the new tree</span>-<a name="line-136"></a>-<a name="line-137"></a><a name="mkXTagTree"></a><span class='definition'>mkXTagTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-138"></a><span class='definition'>mkXTagTree</span> <span class='varid'>n</span> <span class='varid'>al</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>mkNode</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span>-<a name="line-139"></a>-<a name="line-140"></a><span class='comment'>-- | Version with qualified name of 'mkXTagTree'</span>-<a name="line-141"></a>-<a name="line-142"></a><a name="mkQTagTree"></a><span class='definition'>mkQTagTree</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-143"></a><span class='definition'>mkQTagTree</span> <span class='varid'>q</span> <span class='varid'>al</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>mkNode</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>q</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span>-<a name="line-144"></a>-<a name="line-145"></a><span class='comment'>-- |</span>-<a name="line-146"></a><span class='comment'>-- create a tree with a namespace aware tag node.</span>-<a name="line-147"></a><span class='comment'>--</span>-<a name="line-148"></a><span class='comment'>-- * 1.parameter n : the prefix:localpart of the tag</span>-<a name="line-149"></a><span class='comment'>--</span>-<a name="line-150"></a><span class='comment'>-- - 2.parameter ns: the namespace uri</span>-<a name="line-151"></a><span class='comment'>--</span>-<a name="line-152"></a><span class='comment'>-- - 3.parameter al : the tag attribte list</span>-<a name="line-153"></a><span class='comment'>--</span>-<a name="line-154"></a><span class='comment'>-- - 4.parameter cs : the list of children</span>-<a name="line-155"></a><span class='comment'>--</span>-<a name="line-156"></a><span class='comment'>-- - returns : the new tree</span>-<a name="line-157"></a><span class='comment'>--</span>-<a name="line-158"></a><span class='comment'>-- see also: 'mkXTagTree'</span>-<a name="line-159"></a>-<a name="line-160"></a><a name="mkXNsTagTree"></a><span class='definition'>mkXNsTagTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-161"></a><span class='definition'>mkXNsTagTree</span> <span class='varid'>n</span> <span class='varid'>ns</span> <span class='varid'>al</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>mkNode</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='layout'>(</span><span class='varid'>mkNsName</span> <span class='varid'>n</span> <span class='varid'>ns</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span>-<a name="line-162"></a>-<a name="line-163"></a><span class='comment'>-- |</span>-<a name="line-164"></a><span class='comment'>-- creates a new document tree with empty contents.</span>-<a name="line-165"></a><span class='comment'>--</span>-<a name="line-166"></a><span class='comment'>-- * 1.parameter al : the attribute list for the root node</span>-<a name="line-167"></a><span class='comment'>--</span>-<a name="line-168"></a><span class='comment'>-- returns a single node tree with tag name \"\/\" indicating a root and</span>-<a name="line-169"></a><span class='comment'>-- with empty list of children</span>-<a name="line-170"></a><span class='comment'>--</span>-<a name="line-171"></a><span class='comment'>-- see also : 'emptyRoot'</span>-<a name="line-172"></a>-<a name="line-173"></a><a name="newRoot"></a><span class='definition'>newRoot</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-174"></a><span class='definition'>newRoot</span> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>mkXTagTree</span> <span class='varid'>t_root</span> <span class='varid'>al</span> <span class='conid'>[]</span>-<a name="line-175"></a>-<a name="line-176"></a><span class='comment'>-- | the empty document tree</span>-<a name="line-177"></a><span class='comment'>--</span>-<a name="line-178"></a><span class='comment'>-- see also : 'newRoot'</span>-<a name="line-179"></a>-<a name="line-180"></a><a name="emptyRoot"></a><span class='definition'>emptyRoot</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span>-<a name="line-181"></a><span class='definition'>emptyRoot</span> <span class='keyglyph'>=</span> <span class='varid'>newRoot</span> <span class='conid'>[]</span>-<a name="line-182"></a>-<a name="line-183"></a><span class='comment'>-- |</span>-<a name="line-184"></a><span class='comment'>-- create a new empty document with source name as parameter</span>-<a name="line-185"></a>-<a name="line-186"></a><a name="newDocument"></a><span class='definition'>newDocument</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-187"></a><span class='definition'>newDocument</span> <span class='varid'>n</span>-<a name="line-188"></a> <span class='keyglyph'>=</span> <span class='varid'>newDocument'</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>a_source</span><span class='layout'>,</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_status</span><span class='layout'>,</span> <span class='varid'>show</span> <span class='varid'>c_ok</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-189"></a>-<a name="line-190"></a><span class='comment'>-- |</span>-<a name="line-191"></a><span class='comment'>-- create a new empty document with a list of attributes for source location and options</span>-<a name="line-192"></a><span class='comment'>--</span>-<a name="line-193"></a><span class='comment'>-- see also : 'newDocument'</span>-<a name="line-194"></a>-<a name="line-195"></a><a name="newDocument'"></a><span class='definition'>newDocument'</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-196"></a><span class='definition'>newDocument'</span> <span class='varid'>al</span>-<a name="line-197"></a> <span class='keyglyph'>=</span> <span class='varid'>newRoot</span> <span class='layout'>(</span><span class='varid'>fromAttrl</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-198"></a>-<a name="line-199"></a><span class='comment'>-- |</span>-<a name="line-200"></a><span class='comment'>-- create a document root tree.</span>-<a name="line-201"></a><span class='comment'>--</span>-<a name="line-202"></a><span class='comment'>-- * 1.parameter al : the attribute list for the root. This list must contain at</span>-<a name="line-203"></a><span class='comment'>-- least an attribute \"source\" that contains the URI of the document to be processed</span>-<a name="line-204"></a><span class='comment'>--</span>-<a name="line-205"></a><span class='comment'>-- - 2.parameter cs : the list for the document content</span>-<a name="line-206"></a><span class='comment'>--</span>-<a name="line-207"></a><span class='comment'>-- - returns : the document root</span>-<a name="line-208"></a>-<a name="line-209"></a><a name="mkRootTree"></a><span class='definition'>mkRootTree</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-210"></a><span class='definition'>mkRootTree</span> <span class='varid'>al</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>mkXTagTree</span> <span class='varid'>t_root</span> <span class='varid'>al</span> <span class='varid'>cs</span>-<a name="line-211"></a>-<a name="line-212"></a><span class='comment'>-- |</span>-<a name="line-213"></a><span class='comment'>-- create a leaf for a text element.</span>-<a name="line-214"></a><span class='comment'>--</span>-<a name="line-215"></a><span class='comment'>-- * 1.parameter txt : the text</span>-<a name="line-216"></a><span class='comment'>--</span>-<a name="line-217"></a><span class='comment'>-- - returns : the tree with the single node containing the text</span>-<a name="line-218"></a>-<a name="line-219"></a><a name="mkXTextTree"></a><span class='definition'>mkXTextTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-220"></a><span class='definition'>mkXTextTree</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>mkLeaf</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-221"></a>-<a name="line-222"></a><span class='comment'>-- |</span>-<a name="line-223"></a><span class='comment'>-- create a leaf for a char reference.</span>-<a name="line-224"></a><span class='comment'>--</span>-<a name="line-225"></a><span class='comment'>-- * 1.parameter i : the integer representing the Unicode char</span>-<a name="line-226"></a><span class='comment'>--</span>-<a name="line-227"></a><span class='comment'>-- - returns : the tree with the single node containing the char reference</span>-<a name="line-228"></a>-<a name="line-229"></a><a name="mkXCharRefTree"></a><span class='definition'>mkXCharRefTree</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-230"></a><span class='definition'>mkXCharRefTree</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>mkLeaf</span> <span class='layout'>(</span><span class='conid'>XCharRef</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-231"></a>-<a name="line-232"></a><span class='comment'>-- |</span>-<a name="line-233"></a><span class='comment'>-- create a leaf for an entity reference.</span>-<a name="line-234"></a><span class='comment'>--</span>-<a name="line-235"></a><span class='comment'>-- * 1.parameter n : the name of the entity reference</span>-<a name="line-236"></a><span class='comment'>--</span>-<a name="line-237"></a><span class='comment'>-- - returns : the tree with the single node containing the entity reference</span>-<a name="line-238"></a>-<a name="line-239"></a><a name="mkXEntityRefTree"></a><span class='definition'>mkXEntityRefTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-240"></a><span class='definition'>mkXEntityRefTree</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>mkLeaf</span> <span class='layout'>(</span><span class='conid'>XEntityRef</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-241"></a>-<a name="line-242"></a><span class='comment'>-- |</span>-<a name="line-243"></a><span class='comment'>-- create a leaf for a comment,</span>-<a name="line-244"></a><span class='comment'>--</span>-<a name="line-245"></a><span class='comment'>-- * 1.parameter c : the comment text</span>-<a name="line-246"></a><span class='comment'>--</span>-<a name="line-247"></a><span class='comment'>-- - returns : the tree with the single node containing the comment</span>-<a name="line-248"></a>-<a name="line-249"></a><a name="mkXCmtTree"></a><span class='definition'>mkXCmtTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-250"></a><span class='definition'>mkXCmtTree</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkLeaf</span> <span class='layout'>(</span><span class='conid'>XCmt</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-251"></a>-<a name="line-252"></a><span class='comment'>-- |</span>-<a name="line-253"></a><span class='comment'>-- create a tree for a part of a DTD</span>-<a name="line-254"></a><span class='comment'>--</span>-<a name="line-255"></a><span class='comment'>-- * 1.parameter d : the type of the DTD part</span>-<a name="line-256"></a><span class='comment'>--</span>-<a name="line-257"></a><span class='comment'>-- - 2.parameter al : the attribute list for the DTD part</span>-<a name="line-258"></a><span class='comment'>--</span>-<a name="line-259"></a><span class='comment'>-- - 3.parameter ds : the possibly empty list of components for the DTD part</span>-<a name="line-260"></a><span class='comment'>--</span>-<a name="line-261"></a><span class='comment'>-- - returns : the tree with the composed DTD part</span>-<a name="line-262"></a>-<a name="line-263"></a><a name="mkXDTDTree"></a><span class='definition'>mkXDTDTree</span> <span class='keyglyph'>::</span> <span class='conid'>DTDElem</span> <span class='keyglyph'>-></span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-264"></a><span class='definition'>mkXDTDTree</span> <span class='varid'>d</span> <span class='varid'>al</span> <span class='varid'>ds</span> <span class='keyglyph'>=</span> <span class='varid'>mkNode</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>d</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>ds</span>-<a name="line-265"></a>-<a name="line-266"></a>-<a name="line-267"></a><span class='comment'>-- |</span>-<a name="line-268"></a><span class='comment'>-- create an attribute tree as part of a tag attribute list of tag nodes</span>-<a name="line-269"></a><span class='comment'>--</span>-<a name="line-270"></a><span class='comment'>-- * 1.parameter al : the attribute name</span>-<a name="line-271"></a><span class='comment'>--</span>-<a name="line-272"></a><span class='comment'>-- - 2.parameter av : the attribute value as tree list, usually containing a single text node</span>-<a name="line-273"></a>-<a name="line-274"></a><a name="mkXAttrTree"></a><span class='definition'>mkXAttrTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-275"></a><span class='definition'>mkXAttrTree</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='keyglyph'>=</span> <span class='varid'>mkNode</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>an</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>av</span>-<a name="line-276"></a>-<a name="line-277"></a><span class='comment'>-- | Qualified version of 'mkXAttrTree'</span>-<a name="line-278"></a>-<a name="line-279"></a><a name="mkQAttrTree"></a><span class='definition'>mkQAttrTree</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-280"></a><span class='definition'>mkQAttrTree</span> <span class='varid'>aq</span> <span class='varid'>av</span> <span class='keyglyph'>=</span> <span class='varid'>mkNode</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>aq</span><span class='layout'>)</span> <span class='varid'>av</span>-<a name="line-281"></a>-<a name="line-282"></a>-<a name="line-283"></a><span class='comment'>-- |</span>-<a name="line-284"></a><span class='comment'>-- create an attribute tree with a namespace</span>-<a name="line-285"></a><span class='comment'>--</span>-<a name="line-286"></a><span class='comment'>-- * 1.parameter al : the attribute name</span>-<a name="line-287"></a><span class='comment'>--</span>-<a name="line-288"></a><span class='comment'>-- - 2.parameter ns : namespace uri</span>-<a name="line-289"></a><span class='comment'>--</span>-<a name="line-290"></a><span class='comment'>-- - 3.parameter av : the attribute value as tree list, usually containing a single text node</span>-<a name="line-291"></a><span class='comment'>--</span>-<a name="line-292"></a><span class='comment'>-- see also: 'mkXAttrTree', 'mkXNsTagTree'</span>-<a name="line-293"></a>-<a name="line-294"></a><a name="mkXNsAttrTree"></a><span class='definition'>mkXNsAttrTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-295"></a><span class='definition'>mkXNsAttrTree</span> <span class='varid'>an</span> <span class='varid'>ns</span> <span class='varid'>av</span> <span class='keyglyph'>=</span> <span class='varid'>mkNode</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='layout'>(</span><span class='varid'>mkNsName</span> <span class='varid'>an</span> <span class='varid'>ns</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>av</span>-<a name="line-296"></a>-<a name="line-297"></a><span class='comment'>-- |</span>-<a name="line-298"></a><span class='comment'>-- create a parameter entity reference DTD part.</span>-<a name="line-299"></a><span class='comment'>--</span>-<a name="line-300"></a><span class='comment'>-- * 1.parameter ref : the name of the reference</span>-<a name="line-301"></a><span class='comment'>--</span>-<a name="line-302"></a><span class='comment'>-- - returns : the DTD part for a PERef</span>-<a name="line-303"></a>-<a name="line-304"></a><a name="mkXPERefTree"></a><span class='definition'>mkXPERefTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-305"></a><span class='definition'>mkXPERefTree</span> <span class='varid'>ref</span> <span class='keyglyph'>=</span> <span class='varid'>mkLeaf</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>a_peref</span><span class='layout'>,</span> <span class='varid'>ref</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-306"></a>-<a name="line-307"></a><span class='comment'>-- |</span>-<a name="line-308"></a><span class='comment'>-- create a processing instruction tree.</span>-<a name="line-309"></a><span class='comment'>--</span>-<a name="line-310"></a><span class='comment'>-- * 1.parameter n : the name of the PI</span>-<a name="line-311"></a><span class='comment'>--</span>-<a name="line-312"></a><span class='comment'>-- - 2.parameter str : the content of a PI</span>-<a name="line-313"></a><span class='comment'>--</span>-<a name="line-314"></a><span class='comment'>-- - returns : the processing instruction tree with a single attribute \"value\"</span>-<a name="line-315"></a><span class='comment'>-- with the str parameter as attribute value, with @valueOf a_value@ applied to the result tree</span>-<a name="line-316"></a><span class='comment'>-- the content of the PI can be selected</span>-<a name="line-317"></a>-<a name="line-318"></a><a name="mkXPiTree"></a><span class='definition'>mkXPiTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-319"></a><span class='definition'>mkXPiTree</span> <span class='varid'>n</span> <span class='varid'>str</span> <span class='keyglyph'>=</span> <span class='varid'>mkLeaf</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xattr</span> <span class='varid'>a_value</span> <span class='varid'>str</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-320"></a>-<a name="line-321"></a><span class='comment'>-- |</span>-<a name="line-322"></a><span class='comment'>-- create xml declaration</span>-<a name="line-323"></a>-<a name="line-324"></a><a name="mkXmlDeclTree"></a><span class='definition'>mkXmlDeclTree</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-325"></a><span class='definition'>mkXmlDeclTree</span> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>mkLeaf</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>t_xml</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-326"></a>-<a name="line-327"></a><span class='comment'>-- |</span>-<a name="line-328"></a><span class='comment'>-- create a CDATA section tree.</span>-<a name="line-329"></a><span class='comment'>--</span>-<a name="line-330"></a><span class='comment'>-- * 1.parameter s : the content of the CDATA section</span>-<a name="line-331"></a><span class='comment'>--</span>-<a name="line-332"></a><span class='comment'>-- - returns : the tree for the CDATA section</span>-<a name="line-333"></a>-<a name="line-334"></a><a name="mkXCdataTree"></a><span class='definition'>mkXCdataTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-335"></a><span class='definition'>mkXCdataTree</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>mkLeaf</span> <span class='layout'>(</span><span class='conid'>XCdata</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-336"></a>-<a name="line-337"></a><span class='comment'>-- |</span>-<a name="line-338"></a><span class='comment'>-- create an error tree.</span>-<a name="line-339"></a><span class='comment'>--</span>-<a name="line-340"></a><span class='comment'>-- * 1.parameter l : the level of the error (warning, error fatal)</span>-<a name="line-341"></a><span class='comment'>--</span>-<a name="line-342"></a><span class='comment'>-- - 2.parameter msg : the error message</span>-<a name="line-343"></a><span class='comment'>--</span>-<a name="line-344"></a><span class='comment'>-- - 3.parameter cs : the context, where the error was detected</span>-<a name="line-345"></a>-<a name="line-346"></a><a name="mkXErrorTree"></a><span class='definition'>mkXErrorTree</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-347"></a><span class='definition'>mkXErrorTree</span> <span class='varid'>l</span> <span class='varid'>s</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>mkNode</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='varid'>l</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>cs</span>-<a name="line-348"></a>-<a name="line-349"></a><a name="maybeString2XText"></a><span class='definition'>maybeString2XText</span> <span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-350"></a><span class='definition'>maybeString2XText</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>mkXTextTree</span> <span class='varop'>.</span> <span class='varid'>maybeToList</span>-<a name="line-351"></a>-<a name="line-352"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-353"></a><span class='comment'>--</span>-<a name="line-354"></a><span class='comment'>-- text selection</span>-<a name="line-355"></a>-<a name="line-356"></a><a name="showXText"></a><span class='definition'>showXText</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-357"></a><span class='definition'>showXText</span>-<a name="line-358"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>showT</span>-<a name="line-359"></a> <span class='keyword'>where</span>-<a name="line-360"></a> <span class='varid'>showT</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>t</span>-<a name="line-361"></a> <span class='varid'>showT</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-362"></a>-<a name="line-363"></a><a name="showXCharRef"></a><span class='definition'>showXCharRef</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-364"></a><span class='definition'>showXCharRef</span>-<a name="line-365"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>showT</span>-<a name="line-366"></a> <span class='keyword'>where</span>-<a name="line-367"></a> <span class='varid'>showT</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XCharRef</span> <span class='varid'>r</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"&#"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>r</span> <span class='varop'>++</span> <span class='str'>";"</span>-<a name="line-368"></a> <span class='varid'>showT</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-369"></a>-<a name="line-370"></a><a name="showXEntityRef"></a><span class='definition'>showXEntityRef</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-371"></a><span class='definition'>showXEntityRef</span>-<a name="line-372"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>showT</span>-<a name="line-373"></a> <span class='keyword'>where</span>-<a name="line-374"></a> <span class='varid'>showT</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XEntityRef</span> <span class='varid'>r</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"&"</span> <span class='varop'>++</span> <span class='varid'>r</span> <span class='varop'>++</span> <span class='str'>";"</span>-<a name="line-375"></a> <span class='varid'>showT</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-376"></a>-<a name="line-377"></a><a name="showXErrors"></a><span class='definition'>showXErrors</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-378"></a><span class='definition'>showXErrors</span>-<a name="line-379"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>showE</span>-<a name="line-380"></a> <span class='keyword'>where</span>-<a name="line-381"></a> <span class='varid'>showE</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='varid'>level</span> <span class='varid'>str</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>msg</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>": "</span> <span class='varop'>++</span> <span class='varid'>str</span> <span class='varop'>++</span> <span class='str'>"\n"</span>-<a name="line-382"></a> <span class='varid'>showE</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-383"></a>-<a name="line-384"></a> <span class='varid'>msg</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-385"></a> <span class='varid'>msg</span> <span class='varid'>l</span>-<a name="line-386"></a> <span class='keyglyph'>|</span> <span class='varid'>l</span> <span class='varop'>==</span> <span class='varid'>c_warn</span> <span class='keyglyph'>=</span> <span class='str'>"Warning"</span>-<a name="line-387"></a> <span class='keyglyph'>|</span> <span class='varid'>l</span> <span class='varop'>==</span> <span class='varid'>c_err</span> <span class='keyglyph'>=</span> <span class='str'>"Error"</span>-<a name="line-388"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='str'>"Fatal error"</span>-<a name="line-389"></a>-<a name="line-390"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-391"></a><span class='comment'>--</span>-<a name="line-392"></a><span class='comment'>-- the toString conversion functions</span>-<a name="line-393"></a>-<a name="line-394"></a><span class='comment'>-- |</span>-<a name="line-395"></a><span class='comment'>-- old name for 'xshow' (deprecated)</span>-<a name="line-396"></a>-<a name="line-397"></a><a name="xmlTreesToString"></a><span class='definition'>xmlTreesToString</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-398"></a><span class='definition'>xmlTreesToString</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span>-<a name="line-399"></a>-<a name="line-400"></a><span class='comment'>-- |</span>-<a name="line-401"></a><span class='comment'>-- conversion of a filter result into a text node</span>-<a name="line-402"></a><span class='comment'>--</span>-<a name="line-403"></a><span class='comment'>-- see also : 'xshow'</span>-<a name="line-404"></a>-<a name="line-405"></a><a name="xmlTreesToText"></a><span class='definition'>xmlTreesToText</span> <span class='keyglyph'>::</span> <span class='conid'>XmlSFilter</span>-<a name="line-406"></a><span class='definition'>xmlTreesToText</span> <span class='varid'>ts</span><span class='keyglyph'>@</span><span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='varid'>ts</span> <span class='comment'>-- special case optimisation</span>-<a name="line-407"></a><span class='definition'>xmlTreesToText</span> <span class='varid'>ts</span><span class='keyglyph'>@</span><span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='varid'>ts</span>-<a name="line-408"></a><span class='definition'>xmlTreesToText</span> <span class='varid'>ts</span> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='varop'>.</span> <span class='varid'>xshow</span> <span class='varop'>$</span> <span class='varid'>ts</span>-<a name="line-409"></a>-<a name="line-410"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-411"></a>-<a name="line-412"></a><a name="xmlContentModelToString"></a><span class='definition'>xmlContentModelToString</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-413"></a><span class='definition'>xmlContentModelToString</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-414"></a> <span class='keyglyph'>=</span> <span class='varid'>showElemType</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span> <span class='str'>""</span>-<a name="line-415"></a>-<a name="line-416"></a><span class='definition'>xmlContentModelToString</span> <span class='keyword'>_</span>-<a name="line-417"></a> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-418"></a>-<a name="line-419"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-420"></a><span class='comment'>--</span>-<a name="line-421"></a><span class='comment'>-- string access functions</span>-<a name="line-422"></a>-<a name="line-423"></a><span class='comment'>-- |</span>-<a name="line-424"></a><span class='comment'>-- select the name of a node. For tags, attributes and pi\'s the name string</span>-<a name="line-425"></a><span class='comment'>-- is returned, else the empty string.</span>-<a name="line-426"></a>-<a name="line-427"></a><a name="nameOf"></a><span class='definition'>nameOf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-428"></a><span class='definition'>nameOf</span>-<a name="line-429"></a> <span class='keyglyph'>=</span> <span class='varid'>selName</span> <span class='varop'>.</span> <span class='varid'>getNode</span>-<a name="line-430"></a> <span class='keyword'>where</span>-<a name="line-431"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>qualifiedName</span> <span class='varid'>n</span>-<a name="line-432"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>n</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>qualifiedName</span> <span class='varid'>n</span>-<a name="line-433"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>qualifiedName</span> <span class='varid'>n</span>-<a name="line-434"></a> <span class='varid'>selName</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-435"></a>-<a name="line-436"></a><span class='comment'>-- |</span>-<a name="line-437"></a><span class='comment'>-- select the local part of a name of a node. For tags, attributes the name string</span>-<a name="line-438"></a><span class='comment'>-- is returned, for pi's the whole name, else the empty string.</span>-<a name="line-439"></a>-<a name="line-440"></a><a name="localPartOf"></a><span class='definition'>localPartOf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-441"></a><span class='definition'>localPartOf</span>-<a name="line-442"></a> <span class='keyglyph'>=</span> <span class='varid'>selName</span> <span class='varop'>.</span> <span class='varid'>getNode</span>-<a name="line-443"></a> <span class='keyword'>where</span>-<a name="line-444"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>localPart</span> <span class='varid'>n</span>-<a name="line-445"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>n</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>localPart</span> <span class='varid'>n</span>-<a name="line-446"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XPi</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>qualifiedName</span> <span class='varid'>n</span>-<a name="line-447"></a> <span class='varid'>selName</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-448"></a>-<a name="line-449"></a><span class='comment'>-- |</span>-<a name="line-450"></a><span class='comment'>-- select the namespace URI of a tag or an attribute tree, else the empty string is returned</span>-<a name="line-451"></a><span class='comment'>-- see also : 'nameOf'</span>-<a name="line-452"></a>-<a name="line-453"></a><a name="namespaceOf"></a><span class='definition'>namespaceOf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-454"></a><span class='definition'>namespaceOf</span>-<a name="line-455"></a> <span class='keyglyph'>=</span> <span class='varid'>selName</span> <span class='varop'>.</span> <span class='varid'>getNode</span>-<a name="line-456"></a> <span class='keyword'>where</span>-<a name="line-457"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri</span> <span class='varid'>n</span>-<a name="line-458"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>n</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri</span> <span class='varid'>n</span>-<a name="line-459"></a> <span class='varid'>selName</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-460"></a>-<a name="line-461"></a><span class='comment'>-- |</span>-<a name="line-462"></a><span class='comment'>-- select the namespace prefix of a tag or an attribute tree, else the empty string is returned</span>-<a name="line-463"></a><span class='comment'>-- see also : 'nameOf', 'localPartOf'</span>-<a name="line-464"></a>-<a name="line-465"></a><a name="prefixOf"></a><span class='definition'>prefixOf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-466"></a><span class='definition'>prefixOf</span>-<a name="line-467"></a> <span class='keyglyph'>=</span> <span class='varid'>selName</span> <span class='varop'>.</span> <span class='varid'>getNode</span>-<a name="line-468"></a> <span class='keyword'>where</span>-<a name="line-469"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>namePrefix</span> <span class='varid'>n</span>-<a name="line-470"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>n</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>namePrefix</span> <span class='varid'>n</span>-<a name="line-471"></a> <span class='varid'>selName</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-472"></a>-<a name="line-473"></a><span class='comment'>-- |</span>-<a name="line-474"></a><span class='comment'>-- select the universal name (namespace uri ++ localPart) of a tag or an attribute tree, else the empty string is returned</span>-<a name="line-475"></a><span class='comment'>-- see also : 'nameOf', 'namespaceOf'</span>-<a name="line-476"></a>-<a name="line-477"></a><a name="universalNameOf"></a><span class='definition'>universalNameOf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-478"></a><span class='definition'>universalNameOf</span>-<a name="line-479"></a> <span class='keyglyph'>=</span> <span class='varid'>selName</span> <span class='varop'>.</span> <span class='varid'>getNode</span>-<a name="line-480"></a> <span class='keyword'>where</span>-<a name="line-481"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>universalName</span> <span class='varid'>n</span>-<a name="line-482"></a> <span class='varid'>selName</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>n</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>universalName</span> <span class='varid'>n</span>-<a name="line-483"></a> <span class='varid'>selName</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-484"></a>-<a name="line-485"></a><span class='comment'>-- |</span>-<a name="line-486"></a><span class='comment'>-- select the attributes of a dtd tree</span>-<a name="line-487"></a>-<a name="line-488"></a><a name="attrlOfDTD"></a><span class='definition'>attrlOfDTD</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Attributes</span>-<a name="line-489"></a><span class='definition'>attrlOfDTD</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='keyword'>_</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>al</span>-<a name="line-490"></a><span class='definition'>attrlOfDTD</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-491"></a>-<a name="line-492"></a>-<a name="line-493"></a><span class='comment'>-- |</span>-<a name="line-494"></a><span class='comment'>-- select a special attribute of a DTD part</span>-<a name="line-495"></a>-<a name="line-496"></a><a name="valueOfDTD"></a><span class='definition'>valueOfDTD</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-497"></a><span class='definition'>valueOfDTD</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>n</span> <span class='varop'>.</span> <span class='varid'>attrlOfDTD</span>-<a name="line-498"></a>-<a name="line-499"></a><span class='comment'>-- |</span>-<a name="line-500"></a><span class='comment'>-- test an attribute of a DTD part</span>-<a name="line-501"></a>-<a name="line-502"></a><a name="ofDTDequals"></a><span class='definition'>ofDTDequals</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-503"></a><span class='definition'>ofDTDequals</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varop'>==</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>valueOfDTD</span> <span class='varid'>n</span>-<a name="line-504"></a>-<a name="line-505"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-506"></a><span class='comment'>--</span>-<a name="line-507"></a><span class='comment'>-- convenient functions</span>-<a name="line-508"></a>-<a name="line-509"></a><a name="xcmt"></a><span class='definition'>xcmt</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-510"></a><span class='definition'>xcmt</span> <span class='varid'>cmt</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>mkXCmtTree</span> <span class='varid'>cmt</span> <span class='keyglyph'>]</span>-<a name="line-511"></a>-<a name="line-512"></a><a name="xerr"></a><span class='definition'>xerr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-513"></a><span class='definition'>xerr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>mkXErrorTree</span> <span class='varid'>c_err</span> <span class='varid'>msg</span> <span class='conid'>[]</span><span class='keyglyph'>]</span>-<a name="line-514"></a>-<a name="line-515"></a><a name="xwarn"></a><span class='definition'>xwarn</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-516"></a><span class='definition'>xwarn</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>mkXErrorTree</span> <span class='varid'>c_warn</span> <span class='varid'>msg</span> <span class='conid'>[]</span><span class='keyglyph'>]</span>-<a name="line-517"></a>-<a name="line-518"></a><a name="xtext"></a><span class='definition'>xtext</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-519"></a><span class='definition'>xtext</span> <span class='varid'>t</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>mkXTextTree</span> <span class='varid'>t</span><span class='keyglyph'>]</span>-<a name="line-520"></a>-<a name="line-521"></a><a name="xtag"></a><span class='definition'>xtag</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-522"></a><span class='definition'>xtag</span> <span class='varid'>t</span> <span class='varid'>al</span> <span class='varid'>cl</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>mkXTagTree</span> <span class='varid'>t</span> <span class='varid'>al</span> <span class='varid'>cl</span> <span class='keyglyph'>]</span>-<a name="line-523"></a>-<a name="line-524"></a><a name="xattr"></a><span class='definition'>xattr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-525"></a><span class='definition'>xattr</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>mkXAttrTree</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-526"></a>-<a name="line-527"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-528"></a><span class='comment'>--</span>-<a name="line-529"></a><span class='comment'>-- conversion functions: XmlTrees <-> Attributes</span>-<a name="line-530"></a>-<a name="line-531"></a><a name="toTreel"></a><span class='definition'>toTreel</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span>-<a name="line-532"></a><span class='definition'>toTreel</span>-<a name="line-533"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>toTree</span>-<a name="line-534"></a> <span class='keyword'>where</span>-<a name="line-535"></a> <span class='varid'>toTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>cs</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-536"></a> <span class='varid'>toTree</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-537"></a>-<a name="line-538"></a><a name="toAttrl"></a><span class='definition'>toAttrl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>Attributes</span>-<a name="line-539"></a><span class='definition'>toAttrl</span>-<a name="line-540"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>k</span><span class='layout'>,</span><span class='varid'>tl</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>k</span><span class='layout'>,</span> <span class='varid'>xshow</span> <span class='varid'>tl</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>toTreel</span>-<a name="line-541"></a>-<a name="line-542"></a>-<a name="line-543"></a><a name="fromTreel"></a><span class='definition'>fromTreel</span> <span class='keyglyph'>::</span> <span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-544"></a><span class='definition'>fromTreel</span>-<a name="line-545"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>k</span><span class='layout'>,</span><span class='varid'>tl</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>mkXAttrTree</span> <span class='varid'>k</span> <span class='varid'>tl</span><span class='layout'>)</span>-<a name="line-546"></a>-<a name="line-547"></a><a name="fromAttrl"></a><span class='definition'>fromAttrl</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-548"></a><span class='definition'>fromAttrl</span>-<a name="line-549"></a> <span class='keyglyph'>=</span> <span class='varid'>fromTreel</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>k</span><span class='layout'>,</span><span class='varid'>v</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>k</span><span class='layout'>,</span> <span class='varid'>xtext</span> <span class='varid'>v</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-550"></a>-<a name="line-551"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-DOM-XmlTreeTypes.html
@@ -1,87 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- exports the core data types</span>-<a name="line-3"></a><span class='comment'>-- and some additional types and functions</span>-<a name="line-4"></a><span class='comment'>-- for compatibility with none arrow modules</span>-<a name="line-5"></a><span class='comment'>--</span>-<a name="line-6"></a><span class='comment'>-- Version : $Id: XmlTreeTypes.hs,v 1.6 2006/05/09 15:30:43 hxml Exp $</span>-<a name="line-7"></a>-<a name="line-8"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeTypes</span>-<a name="line-9"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Tree</span><span class='varop'>.</span><span class='conid'>NTree</span><span class='varop'>.</span><span class='conid'>Filter</span>-<a name="line-10"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>-<a name="line-11"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTreeTypes</span>-<a name="line-12"></a> <span class='layout'>)</span>-<a name="line-13"></a>-<a name="line-14"></a><span class='keyword'>where</span>-<a name="line-15"></a>-<a name="line-16"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Tree</span><span class='varop'>.</span><span class='conid'>NTree</span><span class='varop'>.</span><span class='conid'>Filter</span>-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='comment'>-- aliases for compatiblility reasons</span>-<a name="line-20"></a>-<a name="line-21"></a><a name="mkNode"></a><span class='definition'>mkNode</span> <span class='keyglyph'>::</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>NTrees</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>NTree</span> <span class='varid'>node</span>-<a name="line-22"></a><span class='definition'>mkNode</span> <span class='keyglyph'>=</span> <span class='varid'>mkTree</span>-<a name="line-23"></a>-<a name="line-24"></a><a name="formatNTree"></a><span class='definition'>formatNTree</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>NTree</span> <span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-25"></a><span class='definition'>formatNTree</span> <span class='keyglyph'>=</span> <span class='varid'>formatTree</span>-<a name="line-26"></a>-<a name="line-27"></a><a name="foldNTree"></a><span class='definition'>foldNTree</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>NTree</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>b</span>-<a name="line-28"></a><span class='definition'>foldNTree</span> <span class='keyglyph'>=</span> <span class='varid'>foldTree</span>-<a name="line-29"></a>-<a name="line-30"></a><a name="mapNTree"></a><span class='definition'>mapNTree</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>NTree</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>NTree</span> <span class='varid'>b</span>-<a name="line-31"></a><span class='definition'>mapNTree</span> <span class='keyglyph'>=</span> <span class='varid'>fmap</span>-<a name="line-32"></a>-<a name="line-33"></a><a name="nTreeToList"></a><span class='definition'>nTreeToList</span> <span class='keyglyph'>::</span> <span class='conid'>NTree</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>-<a name="line-34"></a><span class='definition'>nTreeToList</span> <span class='keyglyph'>=</span> <span class='varid'>nodesTree</span>-<a name="line-35"></a>-<a name="line-36"></a><a name="depthNTree"></a><span class='definition'>depthNTree</span> <span class='keyglyph'>::</span> <span class='conid'>NTree</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span>-<a name="line-37"></a><span class='definition'>depthNTree</span> <span class='keyglyph'>=</span> <span class='varid'>depthTree</span>-<a name="line-38"></a>-<a name="line-39"></a><a name="cardNTree"></a><span class='definition'>cardNTree</span> <span class='keyglyph'>::</span> <span class='conid'>NTree</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span>-<a name="line-40"></a><span class='definition'>cardNTree</span> <span class='keyglyph'>=</span> <span class='varid'>cardNTree</span>-<a name="line-41"></a>-<a name="line-42"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-43"></a><span class='comment'>--</span>-<a name="line-44"></a><span class='comment'>-- Basic types for filters</span>-<a name="line-45"></a>-<a name="line-46"></a><span class='comment'>-- | A functions that takes a node and returns a list of nodes</span>-<a name="line-47"></a>-<a name="line-48"></a><a name="XmlFilter"></a><span class='keyword'>type</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>=</span> <span class='conid'>TFilter</span> <span class='conid'>XNode</span>-<a name="line-49"></a>-<a name="line-50"></a><span class='comment'>-- | A function that takes a list of nodes and returns a list of nodes</span>-<a name="line-51"></a>-<a name="line-52"></a><a name="XmlSFilter"></a><span class='keyword'>type</span> <span class='conid'>XmlSFilter</span> <span class='keyglyph'>=</span> <span class='conid'>TSFilter</span> <span class='conid'>XNode</span>-<a name="line-53"></a>-<a name="line-54"></a>-<a name="line-55"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-56"></a><span class='comment'>--</span>-<a name="line-57"></a>-<a name="line-58"></a><a name="TagName"></a><span class='comment'>-- | Tag name</span>-<a name="line-59"></a><a name="TagName"></a><span class='keyword'>type</span> <span class='conid'>TagName</span> <span class='keyglyph'>=</span> <span class='conid'>QName</span>-<a name="line-60"></a>-<a name="line-61"></a><a name="AttrName"></a><span class='comment'>-- | Attribute name</span>-<a name="line-62"></a><a name="AttrName"></a><span class='keyword'>type</span> <span class='conid'>AttrName</span> <span class='keyglyph'>=</span> <span class='conid'>QName</span>-<a name="line-63"></a>-<a name="line-64"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-65"></a>-<a name="line-66"></a><span class='comment'>-- | shortcut for 'qualifiedName'</span>-<a name="line-67"></a>-<a name="line-68"></a><a name="tName"></a><span class='definition'>tName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-69"></a><span class='definition'>tName</span> <span class='keyglyph'>=</span> <span class='varid'>qualifiedName</span>-<a name="line-70"></a>-<a name="line-71"></a><span class='comment'>-- | shortcut for 'qualifiedName'</span>-<a name="line-72"></a>-<a name="line-73"></a><a name="aName"></a><span class='definition'>aName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-74"></a><span class='definition'>aName</span> <span class='keyglyph'>=</span> <span class='varid'>qualifiedName</span>-<a name="line-75"></a>-<a name="line-76"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-77"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-DOM.html
@@ -1,34 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- DOM data types and functions</span>-<a name="line-3"></a><span class='comment'>--</span>-<a name="line-4"></a><span class='comment'>-- export of all basic datatypes and functions of the toolbox DOM.</span>-<a name="line-5"></a>-<a name="line-6"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span>-<a name="line-7"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-8"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-9"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span>-<a name="line-10"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>FormatXmlTree</span>-<a name="line-11"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Namespace</span>-<a name="line-12"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span>-<a name="line-13"></a> <span class='layout'>)</span>-<a name="line-14"></a><span class='keyword'>where</span>-<a name="line-15"></a>-<a name="line-16"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-18"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span>-<a name="line-19"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>FormatXmlTree</span>-<a name="line-20"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Namespace</span>-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span>-<a name="line-22"></a>-<a name="line-23"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-24"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-DTDProcessing.html
@@ -1,941 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a>-<a name="line-3"></a><span class='comment'>{- |-<a name="line-4"></a> Module : Text.XML.HXT.Parser.DTDProcessing-<a name="line-5"></a> Copyright : Copyright (C) 2005 Uwe Schmidt-<a name="line-6"></a> License : MIT-<a name="line-7"></a>-<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de)-<a name="line-9"></a> Stability : experimental-<a name="line-10"></a> Portability: portable-<a name="line-11"></a>-<a name="line-12"></a> DTD processing function for-<a name="line-13"></a> including external parts of a DTD-<a name="line-14"></a> parameter entity substitution and general entity substitution-<a name="line-15"></a>-<a name="line-16"></a>-}</span>-<a name="line-17"></a>-<a name="line-18"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-19"></a>-<a name="line-20"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DTDProcessing</span>-<a name="line-21"></a> <span class='layout'>(</span> <span class='varid'>getWellformedDoc</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>checkWellformedDoc</span>-<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>processDTD</span>-<a name="line-24"></a> <span class='layout'>,</span> <span class='varid'>processGeneralEntities</span>-<a name="line-25"></a> <span class='layout'>)</span>-<a name="line-26"></a><span class='keyword'>where</span>-<a name="line-27"></a>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-29"></a>-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>-<a name="line-31"></a> <span class='layout'>(</span> <span class='varid'>traceTree</span>-<a name="line-32"></a> <span class='layout'>,</span> <span class='varid'>traceSource</span>-<a name="line-33"></a> <span class='layout'>,</span> <span class='varid'>traceMsg</span>-<a name="line-34"></a> <span class='layout'>)</span>-<a name="line-35"></a>-<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParser</span>-<a name="line-37"></a> <span class='layout'>(</span> <span class='varid'>parseXmlDoc</span>-<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>parseXmlDTDPart</span>-<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>parseXmlAttrValue</span>-<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>parseXmlGeneralEntityValue</span>-<a name="line-41"></a> <span class='layout'>)</span>-<a name="line-42"></a>-<a name="line-43"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlDTDParser</span>-<a name="line-44"></a> <span class='layout'>(</span> <span class='varid'>parseXmlDTDdecl</span>-<a name="line-45"></a> <span class='layout'>,</span> <span class='varid'>parseXmlDTDdeclPart</span>-<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>parseXmlDTDEntityValue</span>-<a name="line-47"></a> <span class='layout'>)</span>-<a name="line-48"></a>-<a name="line-49"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>-<a name="line-50"></a> <span class='layout'>(</span> <span class='varid'>getXmlContents</span>-<a name="line-51"></a> <span class='layout'>,</span> <span class='varid'>getXmlEntityContents</span>-<a name="line-52"></a> <span class='layout'>,</span> <span class='varid'>runInLocalURIContext</span>-<a name="line-53"></a> <span class='layout'>,</span> <span class='varid'>runInNewURIContext</span>-<a name="line-54"></a> <span class='layout'>,</span> <span class='varid'>getBaseURI</span>-<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>setBaseURI</span>-<a name="line-56"></a> <span class='layout'>,</span> <span class='varid'>getAbsolutURI</span>-<a name="line-57"></a> <span class='layout'>,</span> <span class='varid'>isStandaloneDocument</span>-<a name="line-58"></a> <span class='layout'>)</span>-<a name="line-59"></a>-<a name="line-60"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span>-<a name="line-61"></a> <span class='layout'>(</span> <span class='varid'>transfCharRef</span>-<a name="line-62"></a> <span class='layout'>,</span> <span class='varid'>transfAllCharRef</span>-<a name="line-63"></a> <span class='layout'>)</span>-<a name="line-64"></a>-<a name="line-65"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-66"></a>-<a name="line-67"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-68"></a>-<a name="line-69"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='keyword'>as</span> <span class='conid'>M</span>-<a name="line-70"></a> <span class='layout'>(</span> <span class='conid'>Map</span>-<a name="line-71"></a> <span class='layout'>,</span> <span class='varid'>empty</span>-<a name="line-72"></a> <span class='layout'>,</span> <span class='varid'>lookup</span>-<a name="line-73"></a> <span class='layout'>,</span> <span class='varid'>insert</span>-<a name="line-74"></a> <span class='comment'>-- , foldWithKey</span>-<a name="line-75"></a> <span class='layout'>)</span>-<a name="line-76"></a>-<a name="line-77"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-78"></a><span class='comment'>--</span>-<a name="line-79"></a><span class='comment'>-- the "main" building blocks</span>-<a name="line-80"></a>-<a name="line-81"></a><span class='comment'>-- |</span>-<a name="line-82"></a><span class='comment'>-- monadic filter for reading, parsing and checking a wellformed document.</span>-<a name="line-83"></a><span class='comment'>-- the input tree must consist of a root node with a source attribute</span>-<a name="line-84"></a><span class='comment'>-- in its attribute list.</span>-<a name="line-85"></a><span class='comment'>--</span>-<a name="line-86"></a><span class='comment'>-- All attributes from the document root are copied into the system state,</span>-<a name="line-87"></a><span class='comment'>-- and may be queried by the monadic filters, e.g. trace options.</span>-<a name="line-88"></a><span class='comment'>--</span>-<a name="line-89"></a><span class='comment'>-- Result is the single element list containing the well-formed document tree</span>-<a name="line-90"></a><span class='comment'>-- or, in case of errors, the document root with an empty list as children</span>-<a name="line-91"></a><span class='comment'>-- and attributes 'a_status' and 'a_module' for error level and the module,</span>-<a name="line-92"></a><span class='comment'>-- where the error occured.</span>-<a name="line-93"></a><span class='comment'>--</span>-<a name="line-94"></a><span class='comment'>-- this is a shortcut for 'getXmlContents' .\>\> 'checkWellformedDoc'</span>-<a name="line-95"></a><span class='comment'>--</span>-<a name="line-96"></a><span class='comment'>-- example for a main program:</span>-<a name="line-97"></a><span class='comment'>--</span>-<a name="line-98"></a><span class='comment'>-- @</span>-<a name="line-99"></a><span class='comment'>-- main =</span>-<a name="line-100"></a><span class='comment'>-- run\' \$</span>-<a name="line-101"></a><span class='comment'>-- do</span>-<a name="line-102"></a><span class='comment'>-- res \<- getWellformedDoc \$ newDocument \"myfile.xml\"</span>-<a name="line-103"></a><span class='comment'>-- ...</span>-<a name="line-104"></a><span class='comment'>-- @</span>-<a name="line-105"></a>-<a name="line-106"></a><a name="getWellformedDoc"></a><span class='definition'>getWellformedDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-107"></a><span class='definition'>getWellformedDoc</span>-<a name="line-108"></a> <span class='keyglyph'>=</span> <span class='varid'>setSystemParams</span>-<a name="line-109"></a> <span class='varop'>.>></span>-<a name="line-110"></a> <span class='varid'>getXmlContents</span>-<a name="line-111"></a> <span class='varop'>.>></span>-<a name="line-112"></a> <span class='varid'>checkWellformedDoc</span>-<a name="line-113"></a>-<a name="line-114"></a><span class='comment'>-- |</span>-<a name="line-115"></a><span class='comment'>-- parses a text node with 'parseXmlDoc', processes the DTD and general entities</span>-<a name="line-116"></a><span class='comment'>-- and transforms all char references into characters</span>-<a name="line-117"></a>-<a name="line-118"></a><a name="checkWellformedDoc"></a><span class='definition'>checkWellformedDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-119"></a><span class='definition'>checkWellformedDoc</span>-<a name="line-120"></a> <span class='keyglyph'>=</span> <span class='varid'>parseXmlDoc</span>-<a name="line-121"></a> <span class='varop'>.>></span>-<a name="line-122"></a> <span class='varid'>processDTD</span>-<a name="line-123"></a> <span class='varop'>.>></span>-<a name="line-124"></a> <span class='varid'>processGeneralEntities</span>-<a name="line-125"></a> <span class='varop'>.>></span>-<a name="line-126"></a> <span class='varid'>liftMf</span> <span class='varid'>transfAllCharRef</span>-<a name="line-127"></a>-<a name="line-128"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-129"></a><span class='comment'>--</span>-<a name="line-130"></a>-<a name="line-131"></a><a name="RecList"></a><span class='keyword'>type</span> <span class='conid'>RecList</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-132"></a>-<a name="line-133"></a><a name="DTDState"></a><span class='keyword'>type</span> <span class='conid'>DTDState</span> <span class='varid'>res</span> <span class='keyglyph'>=</span> <span class='conid'>XState</span> <span class='conid'>PeEnv</span> <span class='varid'>res</span>-<a name="line-134"></a>-<a name="line-135"></a><a name="DTDStateFilter"></a><span class='keyword'>type</span> <span class='conid'>DTDStateFilter</span> <span class='keyglyph'>=</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>DTDState</span> <span class='conid'>XmlTrees</span>-<a name="line-136"></a>-<a name="line-137"></a><a name="DTDPart"></a><span class='keyword'>data</span> <span class='conid'>DTDPart</span> <span class='keyglyph'>=</span> <span class='conid'>Internal</span>-<a name="line-138"></a> <span class='keyglyph'>|</span> <span class='conid'>External</span>-<a name="line-139"></a> <span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Eq</span><span class='layout'>)</span>-<a name="line-140"></a>-<a name="line-141"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-142"></a>-<a name="line-143"></a><a name="PeEnv"></a><span class='keyword'>type</span> <span class='conid'>PeEnv</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>-<a name="line-144"></a>-<a name="line-145"></a><a name="emptyPeEnv"></a><span class='definition'>emptyPeEnv</span> <span class='keyglyph'>::</span> <span class='conid'>PeEnv</span>-<a name="line-146"></a><span class='definition'>emptyPeEnv</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>empty</span>-<a name="line-147"></a>-<a name="line-148"></a><a name="lookupPeEnv"></a><span class='definition'>lookupPeEnv</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>PeEnv</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span>-<a name="line-149"></a><span class='definition'>lookupPeEnv</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span>-<a name="line-150"></a>-<a name="line-151"></a><a name="addPeEntry"></a><span class='definition'>addPeEntry</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>PeEnv</span> <span class='keyglyph'>-></span> <span class='conid'>PeEnv</span>-<a name="line-152"></a><span class='definition'>addPeEntry</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>insert</span>-<a name="line-153"></a>-<a name="line-154"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-155"></a>-<a name="line-156"></a><span class='comment'>-- |</span>-<a name="line-157"></a><span class='comment'>-- a filter for DTD processing</span>-<a name="line-158"></a><span class='comment'>--</span>-<a name="line-159"></a><span class='comment'>-- inclusion of external parts of DTD,</span>-<a name="line-160"></a><span class='comment'>-- parameter entity substitution</span>-<a name="line-161"></a><span class='comment'>-- conditional section evaluation</span>-<a name="line-162"></a><span class='comment'>--</span>-<a name="line-163"></a><span class='comment'>-- input tree must represent a complete document including root node</span>-<a name="line-164"></a>-<a name="line-165"></a><a name="processDTD"></a><span class='definition'>processDTD</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-166"></a><span class='definition'>processDTD</span>-<a name="line-167"></a> <span class='keyglyph'>=</span> <span class='varid'>runInLocalURIContext</span>-<a name="line-168"></a> <span class='layout'>(</span> <span class='varid'>processRoot</span>-<a name="line-169"></a> <span class='varop'>.>></span>-<a name="line-170"></a> <span class='varid'>traceTree</span>-<a name="line-171"></a> <span class='varop'>.>></span>-<a name="line-172"></a> <span class='varid'>traceSource</span>-<a name="line-173"></a> <span class='layout'>)</span>-<a name="line-174"></a> <span class='varop'>`whenM`</span> <span class='layout'>(</span> <span class='varid'>isRoot</span> <span class='varop'>.></span> <span class='varid'>getChildren</span> <span class='layout'>)</span>-<a name="line-175"></a> <span class='keyword'>where</span>-<a name="line-176"></a>-<a name="line-177"></a> <span class='varid'>processRoot</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-178"></a> <span class='varid'>processRoot</span> <span class='varid'>t</span>-<a name="line-179"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-180"></a> <span class='varid'>sequence_</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>ts</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>setSysParamTree</span> <span class='varid'>a</span> <span class='varid'>ts</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>toTreel</span> <span class='varop'>.</span> <span class='varid'>getAttrl</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-181"></a> <span class='varid'>setSysParam</span> <span class='varid'>a_standalone</span> <span class='str'>""</span>-<a name="line-182"></a> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"processDTD: process parameter entities"</span><span class='layout'>)</span>-<a name="line-183"></a> <span class='varop'>.>></span>-<a name="line-184"></a> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>modifyChildren</span> <span class='varid'>addDoctype</span><span class='layout'>)</span>-<a name="line-185"></a> <span class='varop'>.>></span>-<a name="line-186"></a> <span class='varid'>processChildrenM</span> <span class='varid'>substParamEntities</span>-<a name="line-187"></a> <span class='varop'>.>></span>-<a name="line-188"></a> <span class='varid'>checkResult</span> <span class='str'>"in XML DTD processing"</span>-<a name="line-189"></a> <span class='layout'>)</span> <span class='varop'>`whenM`</span> <span class='varid'>statusOk</span>-<a name="line-190"></a> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-191"></a>-<a name="line-192"></a> <span class='comment'>-- Adds an empty DOCTYPE node to document. Needed for documents without a DTD.</span>-<a name="line-193"></a> <span class='comment'>-- Otherwise processor can not substitute predefined entities. If an xml declaration</span>-<a name="line-194"></a> <span class='comment'>-- is present, the node is inserted after this node.</span>-<a name="line-195"></a> <span class='varid'>addDoctype</span> <span class='keyglyph'>::</span> <span class='conid'>XmlSFilter</span>-<a name="line-196"></a> <span class='varid'>addDoctype</span> <span class='varid'>docChilds</span>-<a name="line-197"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>doctype</span>-<a name="line-198"></a> <span class='keyword'>then</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>xmlDecl</span>-<a name="line-199"></a> <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='varid'>mkXDTDTree</span> <span class='conid'>DOCTYPE</span> <span class='conid'>[]</span> <span class='conid'>[]</span><span class='keyglyph'>]</span> <span class='varop'>++</span> <span class='varid'>docChilds</span>-<a name="line-200"></a> <span class='keyword'>else</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>docChilds</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='keyglyph'>[</span><span class='varid'>mkXDTDTree</span> <span class='conid'>DOCTYPE</span> <span class='conid'>[]</span> <span class='conid'>[]</span><span class='keyglyph'>]</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>docChilds</span><span class='layout'>)</span>-<a name="line-201"></a> <span class='keyword'>else</span> <span class='varid'>docChilds</span>-<a name="line-202"></a> <span class='keyword'>where</span>-<a name="line-203"></a> <span class='varid'>doctype</span> <span class='keyglyph'>=</span> <span class='varid'>isDoctype</span> <span class='varop'>$$</span> <span class='varid'>docChilds</span>-<a name="line-204"></a> <span class='varid'>xmlDecl</span> <span class='keyglyph'>=</span> <span class='varid'>isPi</span> <span class='varid'>t_xml</span> <span class='varop'>$$</span> <span class='varid'>isXPi</span> <span class='varop'>$$</span> <span class='varid'>docChilds</span>-<a name="line-205"></a>-<a name="line-206"></a>-<a name="line-207"></a><a name="substParamEntities"></a><span class='definition'>substParamEntities</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-208"></a><span class='definition'>substParamEntities</span>-<a name="line-209"></a> <span class='keyglyph'>=</span> <span class='varid'>processParamEntities</span>-<a name="line-210"></a> <span class='varop'>`whenM`</span>-<a name="line-211"></a> <span class='varid'>isDoctype</span>-<a name="line-212"></a> <span class='keyword'>where</span>-<a name="line-213"></a>-<a name="line-214"></a> <span class='varid'>processParamEntities</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-215"></a> <span class='varid'>processParamEntities</span> <span class='varid'>t'</span>-<a name="line-216"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-217"></a> <span class='layout'>(</span><span class='varid'>dtdPre</span><span class='layout'>,</span> <span class='varid'>envPre</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>processPredef</span>-<a name="line-218"></a>-<a name="line-219"></a> <span class='comment'>-- process internal part of DTD with initial empty env for parameter entities</span>-<a name="line-220"></a> <span class='layout'>(</span><span class='varid'>dtdInt</span><span class='layout'>,</span> <span class='varid'>envInt</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>processInt</span> <span class='varid'>envPre</span> <span class='varid'>t'</span>-<a name="line-221"></a>-<a name="line-222"></a> <span class='comment'>-- process external part of DTD with resulting env from internal DTD</span>-<a name="line-223"></a> <span class='varid'>dtdExt</span> <span class='keyglyph'><-</span> <span class='varid'>runInLocalURIContext</span> <span class='layout'>(</span><span class='varid'>processExt</span> <span class='varid'>envInt</span><span class='layout'>)</span> <span class='varid'>t'</span>-<a name="line-224"></a>-<a name="line-225"></a> <span class='comment'>-- merge predefined, internal and external part</span>-<a name="line-226"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"substParamEntities: merge internal and external DTD parts"</span>-<a name="line-227"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>foldl1</span> <span class='varid'>mergeDTDs</span> <span class='keyglyph'>[</span><span class='varid'>dtdPre</span><span class='layout'>,</span> <span class='varid'>dtdInt</span><span class='layout'>,</span> <span class='varid'>dtdExt</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='varid'>t'</span><span class='layout'>)</span>-<a name="line-228"></a>-<a name="line-229"></a> <span class='varid'>processPredef</span>-<a name="line-230"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-231"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"substParamEntities: substitute predefined entities"</span>-<a name="line-232"></a> <span class='varid'>chain'</span> <span class='varid'>emptyPeEnv</span> <span class='layout'>(</span><span class='varid'>substParamEntity</span> <span class='conid'>Internal</span> <span class='varop'>$$<</span> <span class='varid'>predefDTDPart</span><span class='layout'>)</span>-<a name="line-233"></a>-<a name="line-234"></a> <span class='varid'>processInt</span> <span class='varid'>env'</span> <span class='varid'>n'</span>-<a name="line-235"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-236"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"substParamEntities: substitute parameter entities in internal DTD part"</span>-<a name="line-237"></a> <span class='varid'>chain'</span> <span class='varid'>env'</span> <span class='layout'>(</span><span class='varid'>substParamEntity</span> <span class='conid'>Internal</span> <span class='varop'>$$<</span> <span class='varid'>getChildren</span> <span class='varid'>n'</span><span class='layout'>)</span>-<a name="line-238"></a>-<a name="line-239"></a> <span class='varid'>processExt</span> <span class='varid'>env'</span> <span class='varid'>n'</span>-<a name="line-240"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-241"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"substParamEntities: process external part of DTD"</span>-<a name="line-242"></a> <span class='varid'>extDtd</span> <span class='keyglyph'><-</span> <span class='varid'>processExternalDTD</span> <span class='varid'>n'</span>-<a name="line-243"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"substParamEntities: substitute parameter entities in external DTD part"</span>-<a name="line-244"></a> <span class='varid'>chain</span> <span class='varid'>env'</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>substParamEntity</span> <span class='conid'>External</span><span class='layout'>)</span> <span class='varop'>$$<</span> <span class='varid'>extDtd</span><span class='layout'>)</span>-<a name="line-245"></a>-<a name="line-246"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-247"></a><span class='comment'>-- |</span>-<a name="line-248"></a><span class='comment'>-- substitute parameter entities</span>-<a name="line-249"></a><span class='comment'>-- result is the input tree with the list of text nodes as children or an error message</span>-<a name="line-250"></a>-<a name="line-251"></a><a name="substPEref'"></a><span class='definition'>substPEref'</span> <span class='keyglyph'>::</span> <span class='conid'>DTDPart</span> <span class='keyglyph'>-></span> <span class='conid'>PeEnv</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-252"></a>-<a name="line-253"></a><span class='definition'>substPEref'</span> <span class='varid'>loc</span> <span class='varid'>env</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-254"></a> <span class='keyglyph'>|</span> <span class='varid'>isInternalRef</span> <span class='keyglyph'>=</span> <span class='varid'>xerr</span> <span class='layout'>(</span><span class='str'>"a parameter entity reference of "</span> <span class='varop'>++</span> <span class='varid'>peName'</span> <span class='varop'>++</span> <span class='str'>" occurs in the internal subset of the DTD"</span><span class='layout'>)</span>-<a name="line-255"></a>-<a name="line-256"></a> <span class='keyglyph'>|</span> <span class='varid'>isUndefinedRef</span> <span class='keyglyph'>=</span> <span class='varid'>xerr</span> <span class='layout'>(</span><span class='str'>"parameter entity "</span> <span class='varop'>++</span> <span class='varid'>peName'</span> <span class='varop'>++</span> <span class='str'>" not found (forward reference?)"</span><span class='layout'>)</span>-<a name="line-257"></a>-<a name="line-258"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>baseUri</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>setChildren</span> <span class='varid'>peContent</span> <span class='varid'>n</span><span class='keyglyph'>]</span>-<a name="line-259"></a>-<a name="line-260"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>a_url</span><span class='layout'>,</span><span class='varid'>baseUri</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>al</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>peContent</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-261"></a> <span class='keyword'>where</span>-<a name="line-262"></a> <span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_peref</span> <span class='varid'>al</span>-<a name="line-263"></a> <span class='varid'>peName'</span> <span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varid'>peName</span>-<a name="line-264"></a> <span class='varid'>peVal</span> <span class='keyglyph'>=</span> <span class='varid'>lookupPeEnv</span> <span class='varid'>peName</span> <span class='varid'>env</span>-<a name="line-265"></a> <span class='varid'>isInternalRef</span> <span class='keyglyph'>=</span> <span class='varid'>loc</span> <span class='varop'>==</span> <span class='conid'>Internal</span>-<a name="line-266"></a> <span class='varid'>isUndefinedRef</span> <span class='keyglyph'>=</span> <span class='varid'>isNothing</span> <span class='varid'>peVal</span>-<a name="line-267"></a>-<a name="line-268"></a> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PENTITY</span> <span class='varid'>peAl</span><span class='layout'>)</span> <span class='varid'>peContent</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varid'>peVal</span>-<a name="line-269"></a> <span class='varid'>baseUri</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_url</span> <span class='varid'>peAl</span>-<a name="line-270"></a>-<a name="line-271"></a> <span class='comment'>-- peContent = getChildren $ fromJust peVal</span>-<a name="line-272"></a>-<a name="line-273"></a><span class='definition'>substPEref'</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='varid'>n</span>-<a name="line-274"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>-<a name="line-275"></a>-<a name="line-276"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-277"></a>-<a name="line-278"></a><span class='comment'>{--<a name="line-279"></a>dumpPE :: DTDStateFilter-<a name="line-280"></a>dumpPE t-<a name="line-281"></a> = do-<a name="line-282"></a> env <- getState-<a name="line-283"></a> ( traceMsg 2 ("dumpPE: parameter entity environment\n" ++ M.foldWithKey showPE "" env)-<a name="line-284"></a> .>>-<a name="line-285"></a> thisM ) t-<a name="line-286"></a> where-<a name="line-287"></a> showPE k v b = k ++ "\t" ++ show v ++ "\n" ++ b-<a name="line-288"></a>-}</span>-<a name="line-289"></a>-<a name="line-290"></a><a name="traceDTD"></a><span class='definition'>traceDTD</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-291"></a><span class='definition'>traceDTD</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>4</span> <span class='varid'>msg</span> <span class='varop'>.>></span> <span class='varid'>traceTree</span>-<a name="line-292"></a>-<a name="line-293"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-294"></a>-<a name="line-295"></a><a name="getExternalParamEntityValue"></a><span class='definition'>getExternalParamEntityValue</span> <span class='keyglyph'>::</span> <span class='conid'>DTDStateFilter</span>-<a name="line-296"></a><span class='definition'>getExternalParamEntityValue</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>-<a name="line-297"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-298"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='layout'>(</span> <span class='varid'>getXmlEntityContents</span>-<a name="line-299"></a> <span class='varop'>.>></span>-<a name="line-300"></a> <span class='varid'>liftMf</span> <span class='varid'>getChildren</span>-<a name="line-301"></a> <span class='layout'>)</span>-<a name="line-302"></a> <span class='varop'>$</span> <span class='varid'>newDocument'</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>a_source</span><span class='layout'>,</span> <span class='varid'>sysVal</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-303"></a> <span class='varid'>base</span> <span class='keyglyph'><-</span> <span class='varid'>getBaseURI</span>-<a name="line-304"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>rl</span>-<a name="line-305"></a> <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"illegal external parameter entity value for entity %"</span> <span class='varop'>++</span> <span class='varid'>peName</span> <span class='varop'>++</span><span class='str'>";"</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-306"></a> <span class='keyword'>else</span> <span class='varid'>thisM</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PENTITY</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>a_url</span><span class='layout'>,</span> <span class='varid'>base</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>al</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>rl</span><span class='layout'>)</span>-<a name="line-307"></a> <span class='keyword'>where</span>-<a name="line-308"></a> <span class='varid'>sysVal</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>k_system</span> <span class='varid'>al</span>-<a name="line-309"></a> <span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-310"></a>-<a name="line-311"></a><span class='definition'>getExternalParamEntityValue</span> <span class='varid'>n</span>-<a name="line-312"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"getExternalParamEntityValue: illegal argument: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-313"></a>-<a name="line-314"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-315"></a>-<a name="line-316"></a><span class='comment'>-- |</span>-<a name="line-317"></a><span class='comment'>-- the dtd parameter entity substitution filter</span>-<a name="line-318"></a>-<a name="line-319"></a><a name="substParamEntity"></a><span class='definition'>substParamEntity</span> <span class='keyglyph'>::</span> <span class='conid'>DTDPart</span> <span class='keyglyph'>-></span> <span class='conid'>DTDStateFilter</span>-<a name="line-320"></a>-<a name="line-321"></a><span class='definition'>substParamEntity</span> <span class='varid'>loc</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>xn</span> <span class='sel'>_cs</span><span class='layout'>)</span>-<a name="line-322"></a> <span class='keyglyph'>|</span> <span class='varid'>isDTDElemNode</span> <span class='conid'>ENTITY</span> <span class='varid'>xn</span> <span class='comment'>-- ENITITY and parameter ENTITY decl</span>-<a name="line-323"></a> <span class='keyglyph'>=</span> <span class='varid'>traceDTD</span> <span class='layout'>(</span><span class='str'>"ENTITY declaration before DTD declaration parsing"</span><span class='layout'>)</span>-<a name="line-324"></a> <span class='varop'>.>></span>-<a name="line-325"></a> <span class='varid'>processChildrenM</span> <span class='layout'>(</span><span class='varid'>substPeRefsInDTDdecl</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-326"></a> <span class='varop'>.>></span>-<a name="line-327"></a> <span class='varid'>liftF</span> <span class='varid'>parseXmlDTDdecl</span>-<a name="line-328"></a> <span class='varop'>.>></span>-<a name="line-329"></a> <span class='varid'>substRefsInEntityValue</span>-<a name="line-330"></a> <span class='varop'>.>></span>-<a name="line-331"></a> <span class='varid'>processEntityDecl</span>-<a name="line-332"></a> <span class='varop'>.>></span>-<a name="line-333"></a> <span class='varid'>traceDTD</span> <span class='layout'>(</span><span class='str'>"ENTITY declaration after DTD declaration parsing"</span><span class='layout'>)</span>-<a name="line-334"></a> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-335"></a>-<a name="line-336"></a> <span class='keyglyph'>|</span> <span class='varid'>isDTDElemNode</span> <span class='conid'>PEREF</span> <span class='varid'>xn</span> <span class='comment'>-- parameter entity ref in DTD</span>-<a name="line-337"></a> <span class='keyglyph'>=</span> <span class='varid'>substPeRefsInDTDpart</span> <span class='conid'>[]</span> <span class='varid'>n</span>-<a name="line-338"></a>-<a name="line-339"></a> <span class='keyglyph'>|</span> <span class='varid'>isDTDElemNode</span> <span class='conid'>ELEMENT</span> <span class='varid'>xn</span> <span class='comment'>-- ELEMENT, ATTLIST, NOTATION</span>-<a name="line-340"></a> <span class='varop'>||</span>-<a name="line-341"></a> <span class='varid'>isDTDElemNode</span> <span class='conid'>ATTLIST</span> <span class='varid'>xn</span>-<a name="line-342"></a> <span class='varop'>||</span>-<a name="line-343"></a> <span class='varid'>isDTDElemNode</span> <span class='conid'>NOTATION</span> <span class='varid'>xn</span>-<a name="line-344"></a> <span class='keyglyph'>=</span> <span class='varid'>traceDTD</span> <span class='str'>"DTD declaration before PE substitution"</span>-<a name="line-345"></a> <span class='varop'>.>></span>-<a name="line-346"></a> <span class='varid'>processChildrenM</span> <span class='layout'>(</span><span class='varid'>substPeRefsInDTDdecl</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-347"></a> <span class='varop'>.>></span>-<a name="line-348"></a> <span class='varid'>liftF</span> <span class='varid'>parseXmlDTDdecl</span>-<a name="line-349"></a> <span class='varop'>.>></span>-<a name="line-350"></a> <span class='varid'>traceDTD</span> <span class='str'>"DTD declaration after DTD declaration parsing"</span>-<a name="line-351"></a> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-352"></a>-<a name="line-353"></a> <span class='keyglyph'>|</span> <span class='varid'>isDTDElemNode</span> <span class='conid'>CONDSECT</span> <span class='varid'>xn</span> <span class='comment'>-- conditional section</span>-<a name="line-354"></a> <span class='varop'>&&</span>-<a name="line-355"></a> <span class='varid'>loc</span> <span class='varop'>==</span> <span class='conid'>Internal</span>-<a name="line-356"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-357"></a> <span class='varid'>issueErr</span> <span class='str'>"conditional sections in internal part of the DTD is not allowed"</span> <span class='varid'>n</span>-<a name="line-358"></a> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-359"></a>-<a name="line-360"></a> <span class='keyglyph'>|</span> <span class='varid'>isDTDElemNode</span> <span class='conid'>CONDSECT</span> <span class='varid'>xn</span> <span class='comment'>-- conditional section</span>-<a name="line-361"></a> <span class='varop'>&&</span>-<a name="line-362"></a> <span class='varid'>loc</span> <span class='varop'>==</span> <span class='conid'>External</span>-<a name="line-363"></a> <span class='keyglyph'>=</span> <span class='keyword'>let</span>-<a name="line-364"></a> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='keyword'>_</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>xn</span>-<a name="line-365"></a> <span class='varid'>content</span> <span class='keyglyph'>=</span> <span class='varid'>mkXTextTree</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-366"></a> <span class='keyword'>in</span>-<a name="line-367"></a> <span class='varid'>traceDTD</span> <span class='str'>"substParamEntity: process conditional section"</span>-<a name="line-368"></a> <span class='varop'>.>></span>-<a name="line-369"></a> <span class='varid'>processChildrenM</span> <span class='layout'>(</span><span class='varid'>substPeRefsInCondSect</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-370"></a> <span class='varop'>.>></span>-<a name="line-371"></a> <span class='varid'>liftF</span> <span class='varid'>parseXmlDTDdecl</span>-<a name="line-372"></a> <span class='varop'>.>></span>-<a name="line-373"></a> <span class='varid'>evalCond</span> <span class='varid'>content</span>-<a name="line-374"></a> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-375"></a>-<a name="line-376"></a> <span class='keyglyph'>|</span> <span class='varid'>isXCmtNode</span> <span class='varid'>xn</span> <span class='comment'>-- remove comments</span>-<a name="line-377"></a> <span class='keyglyph'>=</span> <span class='varid'>noneM</span> <span class='varid'>n</span>-<a name="line-378"></a>-<a name="line-379"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='comment'>-- default: keep things unchanged (should not occur)</span>-<a name="line-380"></a> <span class='keyglyph'>=</span> <span class='varid'>thisM</span> <span class='varid'>n</span>-<a name="line-381"></a> <span class='keyword'>where</span>-<a name="line-382"></a>-<a name="line-383"></a> <span class='varid'>processEntityDecl</span> <span class='keyglyph'>::</span> <span class='conid'>DTDStateFilter</span>-<a name="line-384"></a> <span class='varid'>processEntityDecl</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>isExtern</span>-<a name="line-385"></a> <span class='keyword'>then</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-386"></a> <span class='varid'>url</span> <span class='keyglyph'><-</span> <span class='varid'>getAbsolutURI</span> <span class='varid'>sysVal</span> <span class='comment'>-- add the absolute URI</span>-<a name="line-387"></a> <span class='varid'>return</span> <span class='keyglyph'>[</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>a_url</span><span class='layout'>,</span> <span class='varid'>url</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>al</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='keyglyph'>]</span>-<a name="line-388"></a> <span class='layout'>)</span>-<a name="line-389"></a> <span class='keyword'>else</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>substChildren</span> <span class='layout'>(</span><span class='varid'>xmlTreesToText</span> <span class='varop'>.</span> <span class='varid'>getChildren</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>n'</span>-<a name="line-390"></a> <span class='keyword'>where</span>-<a name="line-391"></a> <span class='varid'>isExtern</span> <span class='keyglyph'>=</span> <span class='varid'>hasEntry</span> <span class='varid'>k_system</span> <span class='varid'>al</span>-<a name="line-392"></a> <span class='varid'>sysVal</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>k_system</span> <span class='varid'>al</span>-<a name="line-393"></a> -<a name="line-394"></a> <span class='varid'>processEntityDecl</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-395"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-396"></a> <span class='varid'>env</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>-<a name="line-397"></a> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>isJust</span> <span class='varop'>.</span> <span class='varid'>lookupPeEnv</span> <span class='varid'>peName</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>env</span>-<a name="line-398"></a> <span class='keyword'>then</span>-<a name="line-399"></a> <span class='varid'>issueWarn</span> <span class='layout'>(</span><span class='str'>"parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span> <span class='varop'>++</span> <span class='str'>" already defined"</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-400"></a> <span class='keyword'>else</span>-<a name="line-401"></a> <span class='layout'>(</span> <span class='varid'>ifM</span> <span class='varid'>isExternalParameterEntity</span>-<a name="line-402"></a> <span class='layout'>(</span> <span class='varid'>runInLocalURIContext</span> <span class='varid'>getExternalParamEntityValue</span> <span class='layout'>)</span>-<a name="line-403"></a> <span class='layout'>(</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>substChildren</span> <span class='layout'>(</span><span class='varid'>xmlTreesToText</span> <span class='varop'>.</span> <span class='varid'>getChildren</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-404"></a> <span class='varop'>.>></span>-<a name="line-405"></a> <span class='varid'>addPE</span> <span class='varid'>peName</span>-<a name="line-406"></a> <span class='layout'>)</span> <span class='varid'>n'</span>-<a name="line-407"></a> <span class='keyword'>where</span>-<a name="line-408"></a> <span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-409"></a>-<a name="line-410"></a> <span class='varid'>processEntityDecl</span> <span class='varid'>n'</span>-<a name="line-411"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"processEntityDecl called with wrong argument"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n'</span><span class='layout'>)</span>-<a name="line-412"></a>-<a name="line-413"></a> <span class='varid'>addPE</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>DTDStateFilter</span>-<a name="line-414"></a> <span class='varid'>addPE</span> <span class='varid'>name</span> <span class='varid'>t</span>-<a name="line-415"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-416"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"substParamEntity: add entity to env: "</span> <span class='varop'>++</span> <span class='varid'>xshow</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-417"></a> <span class='varid'>changeState</span> <span class='varop'>$</span> <span class='varid'>addPeEntry</span> <span class='varid'>name</span> <span class='varid'>t</span>-<a name="line-418"></a> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-419"></a>-<a name="line-420"></a> <span class='varid'>substPEref</span> <span class='keyglyph'>::</span> <span class='conid'>DTDStateFilter</span>-<a name="line-421"></a> <span class='varid'>substPEref</span> <span class='varid'>n'</span>-<a name="line-422"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-423"></a> <span class='varid'>env</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>-<a name="line-424"></a> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>substPEref'</span> <span class='varid'>loc</span> <span class='varid'>env</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>-<a name="line-425"></a>-<a name="line-426"></a> <span class='varid'>substPeRefsInValue</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>DTDStateFilter</span>-<a name="line-427"></a> <span class='varid'>substPeRefsInValue</span> <span class='varid'>recList</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>-<a name="line-428"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>peName</span> <span class='varop'>`elem`</span> <span class='varid'>recList</span>-<a name="line-429"></a> <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"recursive call of parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span> <span class='varop'>++</span> <span class='str'>" in entity value"</span><span class='layout'>)</span>-<a name="line-430"></a> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='varid'>substPEref</span>-<a name="line-431"></a> <span class='varop'>.>></span>-<a name="line-432"></a> <span class='varid'>liftF</span> <span class='varid'>parseXmlDTDEntityValue</span>-<a name="line-433"></a> <span class='varop'>.>></span>-<a name="line-434"></a> <span class='varid'>liftF</span> <span class='varid'>transfCharRef</span>-<a name="line-435"></a> <span class='varop'>.>></span>-<a name="line-436"></a> <span class='layout'>(</span> <span class='varid'>substPeRefsInValue</span> <span class='layout'>(</span><span class='varid'>peName</span> <span class='conop'>:</span> <span class='varid'>recList</span><span class='layout'>)</span>-<a name="line-437"></a> <span class='varop'>`whenM`</span>-<a name="line-438"></a> <span class='varid'>isPeRef</span>-<a name="line-439"></a> <span class='layout'>)</span>-<a name="line-440"></a> <span class='layout'>)</span>-<a name="line-441"></a> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>-<a name="line-442"></a> <span class='keyword'>where</span>-<a name="line-443"></a> <span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_peref</span> <span class='varid'>al</span>-<a name="line-444"></a>-<a name="line-445"></a> <span class='varid'>substPeRefsInValue</span> <span class='keyword'>_</span> <span class='varid'>n'</span>-<a name="line-446"></a> <span class='keyglyph'>=</span> <span class='varid'>thisM</span> <span class='varid'>n'</span>-<a name="line-447"></a>-<a name="line-448"></a> <span class='varid'>substRefsInEntityValue</span> <span class='keyglyph'>::</span> <span class='conid'>DTDStateFilter</span>-<a name="line-449"></a> <span class='varid'>substRefsInEntityValue</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>decl</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>-<a name="line-450"></a> <span class='keyglyph'>|</span> <span class='varid'>decl</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>ENTITY</span><span class='layout'>,</span> <span class='conid'>PENTITY</span><span class='keyglyph'>]</span>-<a name="line-451"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>hasEntry</span> <span class='varid'>k_system</span> <span class='varid'>al</span>-<a name="line-452"></a> <span class='keyword'>then</span> <span class='varid'>thisM</span> <span class='comment'>-- externals not yet handled ??? really</span>-<a name="line-453"></a> <span class='keyword'>else</span> <span class='varid'>processChildrenM</span> <span class='layout'>(</span> <span class='varid'>liftF</span> <span class='varid'>transfCharRef</span>-<a name="line-454"></a> <span class='varop'>.>></span>-<a name="line-455"></a> <span class='varid'>substPeRefsInValue</span> <span class='conid'>[]</span>-<a name="line-456"></a> <span class='layout'>)</span>-<a name="line-457"></a> <span class='layout'>)</span> <span class='varid'>n'</span>-<a name="line-458"></a> <span class='varid'>substRefsInEntityValue</span> <span class='varid'>n'</span>-<a name="line-459"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"substRefsInEntityValue called with wrong argument"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n'</span><span class='layout'>)</span>-<a name="line-460"></a>-<a name="line-461"></a> <span class='varid'>runInPeContext</span> <span class='keyglyph'>::</span> <span class='conid'>DTDStateFilter</span> <span class='keyglyph'>-></span> <span class='conid'>DTDStateFilter</span>-<a name="line-462"></a> <span class='varid'>runInPeContext</span> <span class='varid'>f</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-463"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>base</span>-<a name="line-464"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>n'</span>-<a name="line-465"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-466"></a> <span class='keyglyph'>=</span> <span class='varid'>runInNewURIContext</span> <span class='varid'>base</span> <span class='varid'>f</span> <span class='varid'>n'</span>-<a name="line-467"></a> <span class='keyword'>where</span>-<a name="line-468"></a> <span class='varid'>base</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_url</span> <span class='varid'>al</span>-<a name="line-469"></a>-<a name="line-470"></a> <span class='varid'>runInPeContext</span> <span class='varid'>f</span> <span class='varid'>n'</span>-<a name="line-471"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>n'</span>-<a name="line-472"></a>-<a name="line-473"></a> <span class='varid'>substPeRefsInDTDdecl</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>DTDStateFilter</span>-<a name="line-474"></a> <span class='varid'>substPeRefsInDTDdecl</span> <span class='varid'>recList</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>-<a name="line-475"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>peName</span> <span class='varop'>`elem`</span> <span class='varid'>recList</span>-<a name="line-476"></a> <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"recursive call of parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span> <span class='varop'>++</span> <span class='str'>" in DTD declaration"</span><span class='layout'>)</span>-<a name="line-477"></a> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='varid'>substPEref</span>-<a name="line-478"></a> <span class='varop'>.>></span>-<a name="line-479"></a> <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInDTDdecl: parseXmlDTDdeclPart"</span>-<a name="line-480"></a> <span class='varop'>.>></span>-<a name="line-481"></a> <span class='layout'>(</span> <span class='varid'>runInPeContext</span>-<a name="line-482"></a> <span class='layout'>(</span> <span class='varid'>liftF</span> <span class='layout'>(</span> <span class='varid'>parseXmlDTDdeclPart</span> <span class='layout'>)</span>-<a name="line-483"></a> <span class='varop'>.>></span>-<a name="line-484"></a> <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInDTDdecl: after parseXmlDTDdeclPart"</span>-<a name="line-485"></a> <span class='varop'>.>></span>-<a name="line-486"></a> <span class='varid'>processChildrenM</span> <span class='layout'>(</span> <span class='varid'>substPeRefsInDTDdecl</span> <span class='layout'>(</span><span class='varid'>peName</span> <span class='conop'>:</span> <span class='varid'>recList</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-487"></a> <span class='layout'>)</span>-<a name="line-488"></a> <span class='varop'>`whenM`</span>-<a name="line-489"></a> <span class='varid'>isPeRef</span>-<a name="line-490"></a> <span class='layout'>)</span>-<a name="line-491"></a> <span class='layout'>)</span>-<a name="line-492"></a> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>-<a name="line-493"></a> <span class='keyword'>where</span>-<a name="line-494"></a> <span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_peref</span> <span class='varid'>al</span>-<a name="line-495"></a>-<a name="line-496"></a> <span class='varid'>substPeRefsInDTDdecl</span> <span class='keyword'>_</span> <span class='varid'>n'</span>-<a name="line-497"></a> <span class='keyglyph'>=</span> <span class='varid'>thisM</span> <span class='varid'>n'</span>-<a name="line-498"></a>-<a name="line-499"></a> <span class='varid'>substPeRefsInDTDpart</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>DTDStateFilter</span>-<a name="line-500"></a> <span class='varid'>substPeRefsInDTDpart</span> <span class='varid'>recList</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>-<a name="line-501"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>peName</span> <span class='varop'>`elem`</span> <span class='varid'>recList</span>-<a name="line-502"></a> <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"recursive call of parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span> <span class='varop'>++</span> <span class='str'>" in DTD part"</span><span class='layout'>)</span>-<a name="line-503"></a> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='varid'>substPEref</span>-<a name="line-504"></a> <span class='varop'>.>></span>-<a name="line-505"></a> <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInDTDpart: parseXmlDTDPart"</span>-<a name="line-506"></a> <span class='varop'>.>></span>-<a name="line-507"></a> <span class='varid'>runInPeContext</span>-<a name="line-508"></a> <span class='layout'>(</span> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>.></span> <span class='varid'>parseXmlDTDPart</span> <span class='layout'>(</span><span class='str'>"parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-509"></a> <span class='varop'>.>></span>-<a name="line-510"></a> <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInDTDdecl: after parseXmlDTDPart"</span>-<a name="line-511"></a> <span class='varop'>.>></span>-<a name="line-512"></a> <span class='varid'>substParamEntity</span> <span class='varid'>loc</span> <span class='comment'>-- cyclic check not yet done (peName : recList)</span>-<a name="line-513"></a> <span class='layout'>)</span>-<a name="line-514"></a> <span class='layout'>)</span>-<a name="line-515"></a> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>-<a name="line-516"></a> <span class='keyword'>where</span>-<a name="line-517"></a> <span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_peref</span> <span class='varid'>al</span>-<a name="line-518"></a>-<a name="line-519"></a> <span class='varid'>substPeRefsInDTDpart</span> <span class='keyword'>_</span> <span class='varid'>n'</span>-<a name="line-520"></a> <span class='keyglyph'>=</span> <span class='varid'>thisM</span> <span class='varid'>n'</span>-<a name="line-521"></a>-<a name="line-522"></a> <span class='varid'>substPeRefsInCondSect</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>DTDStateFilter</span>-<a name="line-523"></a> <span class='varid'>substPeRefsInCondSect</span> <span class='varid'>recList</span> <span class='varid'>n'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>-<a name="line-524"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>peName</span> <span class='varop'>`elem`</span> <span class='varid'>recList</span>-<a name="line-525"></a> <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"recursive call of parameter entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>peName</span> <span class='varop'>++</span> <span class='str'>" in conditional section"</span><span class='layout'>)</span>-<a name="line-526"></a> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='varid'>substPEref</span>-<a name="line-527"></a> <span class='varop'>.>></span>-<a name="line-528"></a> <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInCondSect: parseXmlDTDdeclPart"</span>-<a name="line-529"></a> <span class='varop'>.>></span>-<a name="line-530"></a> <span class='layout'>(</span> <span class='varid'>runInPeContext</span>-<a name="line-531"></a> <span class='layout'>(</span> <span class='varid'>liftF</span> <span class='layout'>(</span> <span class='varid'>parseXmlDTDdeclPart</span> <span class='layout'>)</span>-<a name="line-532"></a> <span class='varop'>.>></span>-<a name="line-533"></a> <span class='varid'>traceDTD</span> <span class='str'>"substPeRefsInCondSect: after parseXmlDTDdeclPart"</span>-<a name="line-534"></a> <span class='varop'>.>></span>-<a name="line-535"></a> <span class='varid'>processChildrenM</span> <span class='layout'>(</span> <span class='varid'>substPeRefsInCondSect</span> <span class='layout'>(</span><span class='varid'>peName</span> <span class='conop'>:</span> <span class='varid'>recList</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-536"></a> <span class='layout'>)</span>-<a name="line-537"></a> <span class='varop'>`whenM`</span>-<a name="line-538"></a> <span class='varid'>isPeRef</span>-<a name="line-539"></a> <span class='layout'>)</span>-<a name="line-540"></a> <span class='layout'>)</span>-<a name="line-541"></a> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>-<a name="line-542"></a> <span class='keyword'>where</span>-<a name="line-543"></a> <span class='varid'>peName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_peref</span> <span class='varid'>al</span>-<a name="line-544"></a>-<a name="line-545"></a> <span class='varid'>substPeRefsInCondSect</span> <span class='keyword'>_</span> <span class='varid'>n'</span>-<a name="line-546"></a> <span class='keyglyph'>=</span> <span class='varid'>thisM</span> <span class='varid'>n'</span>-<a name="line-547"></a>-<a name="line-548"></a>-<a name="line-549"></a><a name="evalCond"></a><span class='definition'>evalCond</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>DTDStateFilter</span>-<a name="line-550"></a><span class='definition'>evalCond</span> <span class='varid'>content</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-551"></a> <span class='keyglyph'>|</span> <span class='varid'>c</span> <span class='varop'>==</span> <span class='varid'>k_include</span>-<a name="line-552"></a> <span class='keyglyph'>=</span> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>parseXmlDTDPart</span> <span class='str'>"conditional section"</span><span class='layout'>)</span>-<a name="line-553"></a> <span class='varop'>.>></span>-<a name="line-554"></a> <span class='varid'>traceDTD</span> <span class='str'>"evalCond: DTD part"</span>-<a name="line-555"></a> <span class='varop'>.>></span>-<a name="line-556"></a> <span class='varid'>substParamEntity</span> <span class='conid'>External</span>-<a name="line-557"></a> <span class='varop'>$</span> <span class='varid'>content</span> -<a name="line-558"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-559"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-560"></a> <span class='keyword'>where</span>-<a name="line-561"></a> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>textOfXNode</span> <span class='varid'>n</span>-<a name="line-562"></a>-<a name="line-563"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-564"></a>-<a name="line-565"></a><a name="processExternalDTD"></a><span class='definition'>processExternalDTD</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-566"></a><span class='definition'>processExternalDTD</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>DOCTYPE</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_dtd</span><span class='layout'>)</span>-<a name="line-567"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>sysVal</span>-<a name="line-568"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-569"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-570"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-571"></a> <span class='varid'>checkStandalone</span>-<a name="line-572"></a> <span class='varid'>dtdContent</span> <span class='keyglyph'><-</span> <span class='layout'>(</span> <span class='varid'>getXmlEntityContents</span>-<a name="line-573"></a> <span class='varop'>.>></span>-<a name="line-574"></a> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"processExternalDTD: parsing DTD part for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>sysVal</span><span class='layout'>)</span>-<a name="line-575"></a> <span class='varop'>.>></span>-<a name="line-576"></a> <span class='varid'>liftMf</span> <span class='varid'>getChildren</span>-<a name="line-577"></a> <span class='varop'>.>></span>-<a name="line-578"></a> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>parseXmlDTDPart</span> <span class='varid'>sysVal</span><span class='layout'>)</span>-<a name="line-579"></a> <span class='layout'>)</span>-<a name="line-580"></a> <span class='varop'>$</span> <span class='varid'>newDocument</span> <span class='varid'>sysVal</span>-<a name="line-581"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='str'>"processExternalDTD: parsing DTD part done"</span>-<a name="line-582"></a> <span class='varid'>traceTree</span> <span class='varop'>$</span> <span class='varid'>mkRootTree</span> <span class='conid'>[]</span> <span class='varid'>dtdContent</span>-<a name="line-583"></a> <span class='varid'>return</span> <span class='varid'>dtdContent</span>-<a name="line-584"></a> <span class='keyword'>where</span>-<a name="line-585"></a> <span class='varid'>sysVal</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>k_system</span> <span class='varid'>al</span>-<a name="line-586"></a> <span class='varid'>checkStandalone</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-587"></a> <span class='sel'>_isAlone</span> <span class='keyglyph'><-</span> <span class='varid'>isStandaloneDocument</span>-<a name="line-588"></a> <span class='keyword'>if</span> <span class='conid'>False</span> <span class='comment'>-- isAlone</span>-<a name="line-589"></a> <span class='keyword'>then</span> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"external DTD "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>sysVal</span> <span class='varop'>++</span> <span class='str'>" specified for standalone document"</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-590"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-591"></a>-<a name="line-592"></a><span class='definition'>processExternalDTD</span> <span class='keyword'>_</span>-<a name="line-593"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-594"></a>-<a name="line-595"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-596"></a><span class='comment'>-- |</span>-<a name="line-597"></a><span class='comment'>-- merge the external and the internal part of a DTD into one internal part.</span>-<a name="line-598"></a><span class='comment'>-- parameter entity substitution should be made before applying this filter</span>-<a name="line-599"></a><span class='comment'>-- internal definitions shadow external ones</span>-<a name="line-600"></a><span class='comment'>--</span>-<a name="line-601"></a><span class='comment'>--</span>-<a name="line-602"></a><span class='comment'>-- preliminary: no real merge is done</span>-<a name="line-603"></a>-<a name="line-604"></a><a name="mergeDTDs"></a><span class='definition'>mergeDTDs</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-605"></a><span class='definition'>mergeDTDs</span> <span class='varid'>dtdInt</span> <span class='varid'>dtdExt</span>-<a name="line-606"></a> <span class='keyglyph'>=</span> <span class='varid'>dtdInt</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>mergeDTDentry</span> <span class='varid'>dtdInt</span> <span class='varop'>$$</span> <span class='varid'>dtdExt</span><span class='layout'>)</span>-<a name="line-607"></a>-<a name="line-608"></a><a name="mergeDTDentry"></a><span class='definition'>mergeDTDentry</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-609"></a><span class='definition'>mergeDTDentry</span> <span class='varid'>dtdPart</span>-<a name="line-610"></a> <span class='keyglyph'>=</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>found</span>-<a name="line-611"></a> <span class='keyword'>where</span>-<a name="line-612"></a> <span class='varid'>filterList</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>filterDTDNode</span> <span class='varid'>dtdPart</span> <span class='comment'>-- construct the list of filters</span>-<a name="line-613"></a> <span class='varid'>found</span> <span class='keyglyph'>=</span> <span class='varid'>cat</span> <span class='varid'>filterList</span> <span class='comment'>-- concatenate the filters (set union)</span>-<a name="line-614"></a>-<a name="line-615"></a>-<a name="line-616"></a><a name="filterDTDNode"></a><span class='definition'>filterDTDNode</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-617"></a>-<a name="line-618"></a><span class='definition'>filterDTDNode</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>dtdElem</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-619"></a> <span class='keyglyph'>|</span> <span class='varid'>dtdElem</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>ELEMENT</span><span class='layout'>,</span> <span class='conid'>NOTATION</span><span class='layout'>,</span> <span class='conid'>ENTITY</span><span class='keyglyph'>]</span>-<a name="line-620"></a> <span class='keyglyph'>=</span> <span class='varid'>filterElement</span>-<a name="line-621"></a> <span class='keyword'>where</span>-<a name="line-622"></a> <span class='varid'>filterElement</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>dtdElem'</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='sel'>_cl'</span><span class='layout'>)</span>-<a name="line-623"></a> <span class='keyglyph'>|</span> <span class='varid'>dtdElem</span> <span class='varop'>==</span> <span class='varid'>dtdElem'</span> <span class='varop'>&&</span>-<a name="line-624"></a> <span class='varid'>lookup</span> <span class='varid'>a_name</span> <span class='varid'>al'</span> <span class='varop'>==</span> <span class='varid'>lookup</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-625"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>-<a name="line-626"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-627"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-628"></a> <span class='varid'>filterElement</span> <span class='keyword'>_</span>-<a name="line-629"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-630"></a>-<a name="line-631"></a><span class='definition'>filterDTDNode</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-632"></a> <span class='keyglyph'>=</span> <span class='varid'>filterAttlist</span>-<a name="line-633"></a> <span class='keyword'>where</span>-<a name="line-634"></a> <span class='varid'>filterAttlist</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='sel'>_cl'</span><span class='layout'>)</span>-<a name="line-635"></a> <span class='keyglyph'>|</span> <span class='varid'>lookup</span> <span class='varid'>a_name</span> <span class='varid'>al'</span> <span class='varop'>==</span> <span class='varid'>lookup</span> <span class='varid'>a_name</span> <span class='varid'>al</span> <span class='varop'>&&</span>-<a name="line-636"></a> <span class='varid'>lookup</span> <span class='varid'>a_value</span> <span class='varid'>al'</span> <span class='varop'>==</span> <span class='varid'>lookup</span> <span class='varid'>a_value</span> <span class='varid'>al</span>-<a name="line-637"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>-<a name="line-638"></a> <span class='varid'>filterAttlist</span> <span class='keyword'>_</span>-<a name="line-639"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-640"></a>-<a name="line-641"></a><span class='definition'>filterDTDNode</span> <span class='keyword'>_</span>-<a name="line-642"></a> <span class='keyglyph'>=</span> <span class='varid'>none</span>-<a name="line-643"></a>-<a name="line-644"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-645"></a>-<a name="line-646"></a><a name="predefinedEntities"></a><span class='definition'>predefinedEntities</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-647"></a><span class='definition'>predefinedEntities</span>-<a name="line-648"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='keyglyph'>[</span> <span class='str'>"<!ENTITY lt '&#38;#60;'>"</span>-<a name="line-649"></a> <span class='layout'>,</span> <span class='str'>"<!ENTITY gt '&#62;'>"</span>-<a name="line-650"></a> <span class='layout'>,</span> <span class='str'>"<!ENTITY amp '&#38;#38;'>"</span>-<a name="line-651"></a> <span class='layout'>,</span> <span class='str'>"<!ENTITY apos '&#39;'>"</span>-<a name="line-652"></a> <span class='layout'>,</span> <span class='str'>"<!ENTITY quot '&#34;'>"</span>-<a name="line-653"></a> <span class='keyglyph'>]</span>-<a name="line-654"></a>-<a name="line-655"></a><a name="predefDTDPart"></a><span class='definition'>predefDTDPart</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span>-<a name="line-656"></a><span class='definition'>predefDTDPart</span>-<a name="line-657"></a> <span class='keyglyph'>=</span> <span class='varid'>parseXmlDTDPart</span> <span class='str'>"predefined entities"</span> <span class='varop'>$</span> <span class='varid'>mkXTextTree</span> <span class='varid'>predefinedEntities</span>-<a name="line-658"></a>-<a name="line-659"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-660"></a><span class='comment'>--</span>-<a name="line-661"></a><span class='comment'>-- 4.4 XML Processor Treatment of General Entities and References</span>-<a name="line-662"></a>-<a name="line-663"></a><a name="GeContext"></a><span class='keyword'>data</span> <span class='conid'>GeContext</span>-<a name="line-664"></a> <span class='keyglyph'>=</span> <span class='conid'>ReferenceInContent</span>-<a name="line-665"></a> <span class='keyglyph'>|</span> <span class='conid'>ReferenceInAttributeValue</span>-<a name="line-666"></a> <span class='keyglyph'>|</span> <span class='conid'>ReferenceInEntityValue</span>-<a name="line-667"></a> <span class='comment'>-- or OccursInAttributeValue -- not used during substitution but during validation</span>-<a name="line-668"></a> <span class='comment'>-- or ReferenceInDTD -- not used: syntax check detects errors</span>-<a name="line-669"></a>-<a name="line-670"></a><a name="GeFct"></a><span class='keyword'>type</span> <span class='conid'>GeFct</span> <span class='keyglyph'>=</span> <span class='conid'>GeContext</span> <span class='keyglyph'>-></span> <span class='conid'>RecList</span> <span class='keyglyph'>-></span> <span class='conid'>GeStateFilter</span>-<a name="line-671"></a>-<a name="line-672"></a><a name="GeState"></a><span class='keyword'>type</span> <span class='conid'>GeState</span> <span class='varid'>res</span> <span class='keyglyph'>=</span> <span class='conid'>XState</span> <span class='conid'>GeEnv</span> <span class='varid'>res</span>-<a name="line-673"></a>-<a name="line-674"></a><a name="GeStateFilter"></a><span class='keyword'>type</span> <span class='conid'>GeStateFilter</span> <span class='keyglyph'>=</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>GeState</span> <span class='conid'>XmlTrees</span>-<a name="line-675"></a>-<a name="line-676"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-677"></a>-<a name="line-678"></a><a name="GeEnv"></a><span class='keyword'>newtype</span> <span class='conid'>GeEnv</span> <span class='keyglyph'>=</span> <span class='conid'>GeEnv</span> <span class='layout'>(</span><span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>String</span> <span class='conid'>GeFct</span><span class='layout'>)</span>-<a name="line-679"></a>-<a name="line-680"></a><a name="emptyGeEnv"></a><span class='definition'>emptyGeEnv</span> <span class='keyglyph'>::</span> <span class='conid'>GeEnv</span>-<a name="line-681"></a><span class='definition'>emptyGeEnv</span> <span class='keyglyph'>=</span> <span class='conid'>GeEnv</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>empty</span>-<a name="line-682"></a>-<a name="line-683"></a><a name="lookupGeEnv"></a><span class='definition'>lookupGeEnv</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>GeEnv</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>GeFct</span>-<a name="line-684"></a><span class='definition'>lookupGeEnv</span> <span class='varid'>k</span> <span class='layout'>(</span><span class='conid'>GeEnv</span> <span class='varid'>env</span><span class='layout'>)</span>-<a name="line-685"></a> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>k</span> <span class='varid'>env</span>-<a name="line-686"></a>-<a name="line-687"></a><a name="addGeEntry"></a><span class='definition'>addGeEntry</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>GeFct</span> <span class='keyglyph'>-></span> <span class='conid'>GeEnv</span> <span class='keyglyph'>-></span> <span class='conid'>GeEnv</span>-<a name="line-688"></a><span class='definition'>addGeEntry</span> <span class='varid'>k</span> <span class='varid'>a</span> <span class='layout'>(</span><span class='conid'>GeEnv</span> <span class='varid'>env</span><span class='layout'>)</span>-<a name="line-689"></a> <span class='keyglyph'>=</span> <span class='conid'>GeEnv</span> <span class='varop'>$</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>insert</span> <span class='varid'>k</span> <span class='varid'>a</span> <span class='varid'>env</span>-<a name="line-690"></a>-<a name="line-691"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-692"></a>-<a name="line-693"></a><span class='comment'>-- |</span>-<a name="line-694"></a><span class='comment'>-- substitution of general entities</span>-<a name="line-695"></a><span class='comment'>--</span>-<a name="line-696"></a><span class='comment'>-- input: a complete document tree including root node</span>-<a name="line-697"></a>-<a name="line-698"></a><a name="processGeneralEntities"></a><span class='definition'>processGeneralEntities</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-699"></a><span class='definition'>processGeneralEntities</span>-<a name="line-700"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"processGeneralEntities: collect and substitute general entities"</span>-<a name="line-701"></a> <span class='varop'>.>></span>-<a name="line-702"></a> <span class='varid'>processEntities</span>-<a name="line-703"></a> <span class='varop'>.>></span>-<a name="line-704"></a> <span class='varid'>checkResult</span> <span class='str'>"in general entity processing"</span>-<a name="line-705"></a> <span class='varop'>.>></span>-<a name="line-706"></a> <span class='varid'>traceTree</span>-<a name="line-707"></a> <span class='varop'>.>></span>-<a name="line-708"></a> <span class='varid'>traceSource</span>-<a name="line-709"></a> <span class='layout'>)</span>-<a name="line-710"></a> <span class='varop'>`whenM`</span> <span class='varid'>statusOk</span>-<a name="line-711"></a> <span class='keyword'>where</span>-<a name="line-712"></a> <span class='varid'>processEntities</span> <span class='varid'>t'</span>-<a name="line-713"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-714"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>chain</span> <span class='varid'>initialEnv</span> <span class='layout'>(</span><span class='varid'>processGeneralEntity</span> <span class='conid'>ReferenceInContent</span> <span class='conid'>[]</span> <span class='varop'>$$<</span> <span class='varid'>getChildren</span> <span class='varid'>t'</span><span class='layout'>)</span>-<a name="line-715"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>replaceChildren</span> <span class='varid'>res</span> <span class='varid'>t'</span>-<a name="line-716"></a> <span class='keyword'>where</span>-<a name="line-717"></a> <span class='varid'>initialEnv</span> <span class='keyglyph'>=</span> <span class='varid'>emptyGeEnv</span>-<a name="line-718"></a>-<a name="line-719"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-720"></a>-<a name="line-721"></a><a name="processGeneralEntity"></a><span class='definition'>processGeneralEntity</span> <span class='keyglyph'>::</span> <span class='conid'>GeContext</span> <span class='keyglyph'>-></span> <span class='conid'>RecList</span> <span class='keyglyph'>-></span> <span class='conid'>GeStateFilter</span>-<a name="line-722"></a><span class='definition'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>DOCTYPE</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>dtdPart</span><span class='layout'>)</span>-<a name="line-723"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-724"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varop'>$$<</span> <span class='varid'>dtdPart</span>-<a name="line-725"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>replaceChildren</span> <span class='varid'>res</span> <span class='varid'>n</span>-<a name="line-726"></a>-<a name="line-727"></a><span class='definition'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cl</span><span class='layout'>)</span>-<a name="line-728"></a> <span class='keyglyph'>|</span> <span class='varid'>isIntern</span>-<a name="line-729"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-730"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"processGeneralEnity: general entity definition for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span>-<a name="line-731"></a> <span class='varid'>value</span> <span class='keyglyph'><-</span> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>parseXmlGeneralEntityValue</span> <span class='layout'>(</span><span class='str'>"general internal entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>mkXTextTree</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>cl</span><span class='layout'>)</span>-<a name="line-732"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>processGeneralEntity</span> <span class='conid'>ReferenceInEntityValue</span> <span class='layout'>(</span><span class='varid'>name</span><span class='conop'>:</span><span class='varid'>rl</span><span class='layout'>)</span> <span class='varop'>$$<</span> <span class='varid'>value</span>-<a name="line-733"></a> <span class='varid'>insertEntity</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>substInternal</span> <span class='varid'>res</span><span class='layout'>)</span>-<a name="line-734"></a> <span class='keyglyph'>|</span> <span class='varid'>isExtern</span>-<a name="line-735"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-736"></a> <span class='varid'>baseUri</span> <span class='keyglyph'><-</span> <span class='varid'>getBaseURI</span>-<a name="line-737"></a> <span class='varid'>insertEntity</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>substExternalParsed1Time</span> <span class='varid'>baseUri</span><span class='layout'>)</span>-<a name="line-738"></a>-<a name="line-739"></a> <span class='keyglyph'>|</span> <span class='varid'>isUnparsed</span>-<a name="line-740"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-741"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"processGeneralEnity: unparsed entity definition for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span>-<a name="line-742"></a> <span class='varid'>insertEntity</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>substUnparsed</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-743"></a> <span class='keyword'>where</span>-<a name="line-744"></a> <span class='varid'>isUnparsed</span> <span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='varid'>isIntern</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='varid'>isExtern</span>-<a name="line-745"></a> <span class='varid'>isExtern</span> <span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='varid'>isIntern</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>hasEntry</span> <span class='varid'>k_ndata</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-746"></a> <span class='varid'>isIntern</span> <span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>hasEntry</span> <span class='varid'>k_system</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-747"></a>-<a name="line-748"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-749"></a> <span class='comment'>-- sysVal = lookup1 k_system al</span>-<a name="line-750"></a> <span class='varid'>url</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_url</span> <span class='varid'>al</span> <span class='comment'>-- a_url contains absolut url for k_system</span>-<a name="line-751"></a> <span class='varid'>context</span> <span class='keyglyph'>=</span> <span class='varid'>addEntry</span> <span class='varid'>a_source</span> <span class='varid'>url</span> <span class='varid'>al</span>-<a name="line-752"></a>-<a name="line-753"></a> <span class='varid'>processExternalEntityContents</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>GeState</span> <span class='conid'>XmlTrees</span>-<a name="line-754"></a> <span class='varid'>processExternalEntityContents</span> <span class='varid'>cl'</span>-<a name="line-755"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>cl'</span> <span class='comment'>-- reading content did not succeed</span>-<a name="line-756"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-757"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>txt'</span> <span class='comment'>-- something weird in entity content</span>-<a name="line-758"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-759"></a> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"illegal external parsed entity value for entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-760"></a> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-761"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='comment'>-- o.k.: parse the contents</span>-<a name="line-762"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-763"></a> <span class='varid'>res'</span> <span class='keyglyph'><-</span> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>parseXmlGeneralEntityValue</span> <span class='layout'>(</span><span class='str'>"external parsed entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$$<</span> <span class='varid'>txt'</span>-<a name="line-764"></a> <span class='layout'>(</span> <span class='varid'>traceSource</span>-<a name="line-765"></a> <span class='varop'>.>></span>-<a name="line-766"></a> <span class='varid'>traceTree</span> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>mkRootTree</span> <span class='layout'>(</span><span class='varid'>fromAttrl</span> <span class='varid'>context</span><span class='layout'>)</span> <span class='varid'>res'</span>-<a name="line-767"></a> <span class='varid'>return</span> <span class='varid'>res'</span>-<a name="line-768"></a> <span class='keyword'>where</span>-<a name="line-769"></a> <span class='varid'>txt'</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>.></span> <span class='varid'>isXText</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>cl'</span>-<a name="line-770"></a>-<a name="line-771"></a> <span class='varid'>insertEntity</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>GeFct</span> <span class='keyglyph'>-></span> <span class='conid'>GeState</span> <span class='conid'>XmlTrees</span>-<a name="line-772"></a> <span class='varid'>insertEntity</span> <span class='varid'>name'</span> <span class='varid'>fct'</span>-<a name="line-773"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-774"></a> <span class='varid'>geEnv'</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>-<a name="line-775"></a> <span class='keyword'>case</span> <span class='varid'>lookupGeEnv</span> <span class='varid'>name'</span> <span class='varid'>geEnv'</span> <span class='keyword'>of</span>-<a name="line-776"></a> <span class='conid'>Just</span> <span class='sel'>_fct</span>-<a name="line-777"></a> <span class='keyglyph'>-></span> <span class='keyword'>do</span>-<a name="line-778"></a> <span class='varid'>issueWarn</span> <span class='layout'>(</span><span class='str'>"entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>" already defined, repeated definition ignored"</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-779"></a> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-780"></a> <span class='conid'>Nothing</span>-<a name="line-781"></a> <span class='keyglyph'>-></span> <span class='keyword'>do</span>-<a name="line-782"></a> <span class='varid'>changeState</span> <span class='varop'>$</span> <span class='varid'>addGeEntry</span> <span class='varid'>name'</span> <span class='varid'>fct'</span> -<a name="line-783"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>this</span> <span class='varid'>n</span>-<a name="line-784"></a>-<a name="line-785"></a> <span class='comment'>-- --------</span>-<a name="line-786"></a> <span class='comment'>--</span>-<a name="line-787"></a> <span class='comment'>-- 4.4 XML Processor Treatment of Entities and References</span>-<a name="line-788"></a>-<a name="line-789"></a> <span class='varid'>substInternal</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>GeContext</span> <span class='keyglyph'>-></span> <span class='conid'>RecList</span> <span class='keyglyph'>-></span> <span class='conid'>GeStateFilter</span>-<a name="line-790"></a> <span class='varid'>substInternal</span> <span class='varid'>nl</span> <span class='conid'>ReferenceInContent</span> <span class='varid'>rl'</span> <span class='sel'>_n'</span>-<a name="line-791"></a> <span class='keyglyph'>=</span> <span class='varid'>included</span> <span class='varid'>nl</span> <span class='varid'>rl'</span>-<a name="line-792"></a>-<a name="line-793"></a> <span class='varid'>substInternal</span> <span class='varid'>nl</span> <span class='conid'>ReferenceInAttributeValue</span> <span class='varid'>rl'</span> <span class='sel'>_n'</span>-<a name="line-794"></a> <span class='keyglyph'>=</span> <span class='varid'>includedInLiteral</span> <span class='varid'>nl</span> <span class='varid'>rl'</span>-<a name="line-795"></a>-<a name="line-796"></a> <span class='varid'>substInternal</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInEntityValue</span> <span class='sel'>_rl</span> <span class='varid'>n'</span>-<a name="line-797"></a> <span class='keyglyph'>=</span> <span class='varid'>bypassed</span> <span class='varid'>n'</span>-<a name="line-798"></a>-<a name="line-799"></a> <span class='comment'>-- --------</span>-<a name="line-800"></a>-<a name="line-801"></a> <span class='varid'>substExternalParsed1Time</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>GeContext</span> <span class='keyglyph'>-></span> <span class='conid'>RecList</span> <span class='keyglyph'>-></span> <span class='conid'>GeStateFilter</span>-<a name="line-802"></a> <span class='varid'>substExternalParsed1Time</span> <span class='varid'>baseUri'</span> <span class='varid'>cx'</span> <span class='varid'>rl'</span> <span class='varid'>n'</span>-<a name="line-803"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-804"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"substExternalParsed1Time: read and parse external parsed entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span>-<a name="line-805"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>runInLocalURIContext</span> <span class='varid'>getContents'</span> <span class='varop'>$</span> <span class='varid'>newDocument'</span> <span class='varid'>context</span>-<a name="line-806"></a> <span class='varid'>changeState</span> <span class='varop'>$</span> <span class='varid'>addGeEntry</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>substExternalParsed</span> <span class='varid'>res</span><span class='layout'>)</span>-<a name="line-807"></a> <span class='varid'>substExternalParsed</span> <span class='varid'>res</span> <span class='varid'>cx'</span> <span class='varid'>rl'</span> <span class='varid'>n'</span> -<a name="line-808"></a> <span class='keyword'>where</span>-<a name="line-809"></a> <span class='varid'>getContents'</span> <span class='keyglyph'>::</span> <span class='conid'>GeStateFilter</span>-<a name="line-810"></a> <span class='varid'>getContents'</span> <span class='varid'>t''</span>-<a name="line-811"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-812"></a> <span class='varid'>setBaseURI</span> <span class='varid'>baseUri'</span>-<a name="line-813"></a> <span class='varid'>rs'</span> <span class='keyglyph'><-</span> <span class='varid'>getXmlEntityContents</span> <span class='varid'>t''</span>-<a name="line-814"></a> <span class='varid'>processExternalEntityContents</span> <span class='varid'>rs'</span>-<a name="line-815"></a>-<a name="line-816"></a>-<a name="line-817"></a> <span class='varid'>substExternalParsed</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>GeContext</span> <span class='keyglyph'>-></span> <span class='conid'>RecList</span> <span class='keyglyph'>-></span> <span class='conid'>GeStateFilter</span>-<a name="line-818"></a> <span class='varid'>substExternalParsed</span> <span class='varid'>nl</span> <span class='conid'>ReferenceInContent</span> <span class='varid'>rl'</span> <span class='sel'>_n'</span>-<a name="line-819"></a> <span class='keyglyph'>=</span> <span class='varid'>includedIfValidating</span> <span class='varid'>nl</span> <span class='varid'>rl'</span>-<a name="line-820"></a>-<a name="line-821"></a> <span class='varid'>substExternalParsed</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInAttributeValue</span> <span class='sel'>_rl</span> <span class='sel'>_n'</span>-<a name="line-822"></a> <span class='keyglyph'>=</span> <span class='varid'>forbidden</span> <span class='str'>"external parsed general"</span> <span class='str'>"in attribute value"</span>-<a name="line-823"></a>-<a name="line-824"></a> <span class='varid'>substExternalParsed</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInEntityValue</span> <span class='sel'>_rl</span> <span class='varid'>n'</span>-<a name="line-825"></a> <span class='keyglyph'>=</span> <span class='varid'>bypassed</span> <span class='varid'>n'</span>-<a name="line-826"></a>-<a name="line-827"></a> <span class='comment'>-- --------</span>-<a name="line-828"></a>-<a name="line-829"></a> <span class='varid'>substUnparsed</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>GeContext</span> <span class='keyglyph'>-></span> <span class='conid'>RecList</span> <span class='keyglyph'>-></span> <span class='conid'>GeStateFilter</span>-<a name="line-830"></a> <span class='varid'>substUnparsed</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInContent</span> <span class='sel'>_rl</span> <span class='sel'>_n'</span>-<a name="line-831"></a> <span class='keyglyph'>=</span> <span class='varid'>forbidden</span> <span class='str'>"unparsed"</span> <span class='str'>"content"</span>-<a name="line-832"></a> <span class='varid'>substUnparsed</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInAttributeValue</span> <span class='sel'>_rl</span> <span class='sel'>_n'</span>-<a name="line-833"></a> <span class='keyglyph'>=</span> <span class='varid'>forbidden</span> <span class='str'>"unparsed"</span> <span class='str'>"attribute value"</span>-<a name="line-834"></a> <span class='varid'>substUnparsed</span> <span class='sel'>_nl</span> <span class='conid'>ReferenceInEntityValue</span> <span class='sel'>_rl</span> <span class='sel'>_n'</span>-<a name="line-835"></a> <span class='keyglyph'>=</span> <span class='varid'>forbidden</span> <span class='str'>"unparsed"</span> <span class='str'>"entity value"</span>-<a name="line-836"></a>-<a name="line-837"></a> <span class='comment'>-- --------</span>-<a name="line-838"></a> <span class='comment'>-- see XML 1.0 chapter:</span>-<a name="line-839"></a>-<a name="line-840"></a> <span class='varid'>included</span> <span class='varid'>nl</span> <span class='varid'>rl'</span> <span class='comment'>-- 4.4.2</span>-<a name="line-841"></a> <span class='keyglyph'>=</span> <span class='varid'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='layout'>(</span><span class='varid'>name</span><span class='conop'>:</span><span class='varid'>rl'</span><span class='layout'>)</span> <span class='varop'>$$<</span> <span class='varid'>nl</span>-<a name="line-842"></a>-<a name="line-843"></a> <span class='varid'>includedIfValidating</span> <span class='comment'>-- 4.4.3</span>-<a name="line-844"></a> <span class='keyglyph'>=</span> <span class='varid'>included</span>-<a name="line-845"></a>-<a name="line-846"></a> <span class='varid'>includedInLiteral</span> <span class='comment'>-- 4.4.5</span>-<a name="line-847"></a> <span class='keyglyph'>=</span> <span class='varid'>included</span>-<a name="line-848"></a>-<a name="line-849"></a> <span class='varid'>bypassed</span> <span class='varid'>n'</span> <span class='comment'>-- 4.4.7</span>-<a name="line-850"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>this</span> <span class='varid'>n'</span>-<a name="line-851"></a>-<a name="line-852"></a> <span class='varid'>forbidden</span> <span class='varid'>msg'</span> <span class='varid'>cx'</span> <span class='comment'>-- 4.4.4</span>-<a name="line-853"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-854"></a> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"reference of "</span> <span class='varop'>++</span> <span class='varid'>msg'</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>" forbidden in "</span> <span class='varop'>++</span> <span class='varid'>cx'</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-855"></a> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-856"></a>-<a name="line-857"></a> <span class='comment'>-- normalize default value in ATTLIST</span>-<a name="line-858"></a><span class='definition'>processGeneralEntity</span> <span class='sel'>_cx</span> <span class='varid'>rl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='sel'>_cl</span><span class='layout'>)</span>-<a name="line-859"></a> <span class='keyglyph'>|</span> <span class='varid'>hasDefaultValue</span>-<a name="line-860"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-861"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='layout'>(</span> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>parseXmlAttrValue</span> <span class='str'>"default value of attribute "</span><span class='layout'>)</span>-<a name="line-862"></a> <span class='varop'>.>></span>-<a name="line-863"></a> <span class='varid'>substGeneralEntityInAValue</span> <span class='varid'>rl</span>-<a name="line-864"></a> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>mkXTextTree</span> <span class='varid'>defaultValue</span>-<a name="line-865"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>addDTDAttr</span> <span class='varid'>a_default</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-866"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-867"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>this</span> <span class='varid'>n</span>-<a name="line-868"></a> <span class='keyword'>where</span>-<a name="line-869"></a> <span class='varid'>hasDefaultValue</span> <span class='keyglyph'>=</span> <span class='varid'>hasEntry</span> <span class='varid'>a_default</span> <span class='varid'>al</span>-<a name="line-870"></a> <span class='varid'>defaultValue</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_default</span> <span class='varid'>al</span>-<a name="line-871"></a>-<a name="line-872"></a><span class='definition'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XEntityRef</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-873"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-874"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"processGeneralEnity: entity reference for entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span>-<a name="line-875"></a> <span class='varid'>trace</span> <span class='num'>3</span> <span class='layout'>(</span><span class='str'>"recursion list = "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>rl</span><span class='layout'>)</span>-<a name="line-876"></a> <span class='varid'>geEnv</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>-<a name="line-877"></a> <span class='keyword'>case</span> <span class='varid'>lookupGeEnv</span> <span class='varid'>name</span> <span class='varid'>geEnv</span> <span class='keyword'>of</span>-<a name="line-878"></a> <span class='conid'>Just</span> <span class='varid'>fct</span>-<a name="line-879"></a> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>rl</span>-<a name="line-880"></a> <span class='keyword'>then</span> <span class='keyword'>do</span>-<a name="line-881"></a> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"recursive substitution of general entity reference "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>ref</span> <span class='varop'>++</span> <span class='str'>" not processed"</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-882"></a> <span class='varid'>return</span> <span class='varid'>nl</span>-<a name="line-883"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>-<a name="line-884"></a> <span class='varid'>fct</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varid'>n</span>-<a name="line-885"></a> <span class='conid'>Nothing</span>-<a name="line-886"></a> <span class='keyglyph'>-></span> <span class='keyword'>do</span>-<a name="line-887"></a> <span class='varid'>issueErr</span> <span class='layout'>(</span><span class='str'>"general entity reference "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>ref</span> <span class='varop'>++</span> <span class='str'>" not processed, no definition found, (forward reference?)"</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-888"></a> <span class='varid'>return</span> <span class='varid'>nl</span>-<a name="line-889"></a> <span class='keyword'>where</span>-<a name="line-890"></a> <span class='varid'>nl</span> <span class='keyglyph'>=</span> <span class='varid'>this</span> <span class='varid'>n</span>-<a name="line-891"></a> <span class='varid'>ref</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='varid'>nl</span>-<a name="line-892"></a>-<a name="line-893"></a>-<a name="line-894"></a><span class='definition'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='sel'>_tagName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cl</span><span class='layout'>)</span>-<a name="line-895"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-896"></a> <span class='varid'>al'</span> <span class='keyglyph'><-</span> <span class='varid'>substGeneralEntityInAttr</span> <span class='varid'>rl</span> <span class='varop'>$$<</span> <span class='varid'>al</span>-<a name="line-897"></a> <span class='varid'>cl'</span> <span class='keyglyph'><-</span> <span class='varid'>processGeneralEntity</span> <span class='varid'>cx</span> <span class='varid'>rl</span> <span class='varop'>$$<</span> <span class='varid'>cl</span>-<a name="line-898"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='layout'>(</span><span class='varid'>replaceAttrl</span> <span class='varid'>al'</span> <span class='varop'>.></span> <span class='varid'>replaceChildren</span> <span class='varid'>cl'</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-899"></a>-<a name="line-900"></a><span class='definition'>processGeneralEntity</span> <span class='sel'>_cx</span> <span class='sel'>_rl</span> <span class='varid'>n</span>-<a name="line-901"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>this</span> <span class='varid'>n</span>-<a name="line-902"></a>-<a name="line-903"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-904"></a>-<a name="line-905"></a><a name="substGeneralEntityInAttr"></a><span class='definition'>substGeneralEntityInAttr</span> <span class='keyglyph'>::</span> <span class='conid'>RecList</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>GeState</span> <span class='conid'>XmlTrees</span>-<a name="line-906"></a><span class='definition'>substGeneralEntityInAttr</span> <span class='varid'>rl</span> <span class='varid'>a</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>aValue</span><span class='layout'>)</span>-<a name="line-907"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-908"></a> <span class='varid'>nv</span> <span class='keyglyph'><-</span> <span class='varid'>substGeneralEntityInAValue</span> <span class='varid'>rl</span> <span class='varop'>$$<</span> <span class='varid'>aValue</span>-<a name="line-909"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>replaceChildren</span> <span class='varid'>nv</span> <span class='varid'>a</span><span class='layout'>)</span>-<a name="line-910"></a>-<a name="line-911"></a><span class='definition'>substGeneralEntityInAttr</span> <span class='keyword'>_</span> <span class='keyword'>_</span>-<a name="line-912"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-913"></a>-<a name="line-914"></a><a name="substGeneralEntityInAValue"></a><span class='definition'>substGeneralEntityInAValue</span> <span class='keyglyph'>::</span> <span class='conid'>RecList</span> <span class='keyglyph'>-></span> <span class='conid'>GeStateFilter</span>-<a name="line-915"></a><span class='definition'>substGeneralEntityInAValue</span> <span class='varid'>rl</span>-<a name="line-916"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>processGeneralEntity</span> <span class='conid'>ReferenceInAttributeValue</span> <span class='varid'>rl</span>-<a name="line-917"></a> <span class='varop'>`whenM`</span>-<a name="line-918"></a> <span class='varid'>isXEntityRef</span>-<a name="line-919"></a> <span class='layout'>)</span>-<a name="line-920"></a> <span class='varop'>.>></span>-<a name="line-921"></a> <span class='varid'>liftMf</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>modifyText</span> <span class='varid'>normalizeWhiteSpace</span> <span class='varop'>`when`</span> <span class='varid'>isXText</span><span class='layout'>)</span>-<a name="line-922"></a> <span class='varop'>.></span>-<a name="line-923"></a> <span class='layout'>(</span><span class='varid'>transfCharRef</span> <span class='varop'>`when`</span> <span class='varid'>isXCharRef</span><span class='layout'>)</span>-<a name="line-924"></a> <span class='layout'>)</span>-<a name="line-925"></a> <span class='keyword'>where</span>-<a name="line-926"></a> <span class='varid'>normalizeWhiteSpace</span>-<a name="line-927"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span> <span class='keyglyph'>\</span><span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='str'>"\n\t\r"</span> <span class='keyword'>then</span> <span class='chr'>' '</span> <span class='keyword'>else</span> <span class='varid'>c</span> <span class='layout'>)</span>-<a name="line-928"></a>-<a name="line-929"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-930"></a>-<a name="line-931"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-DefaultURI.html
@@ -1,57 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a><span class='comment'>--</span>-<a name="line-3"></a><span class='comment'>-- defaut uri computation</span>-<a name="line-4"></a><span class='comment'>-- this routine is platform dependent</span>-<a name="line-5"></a><span class='comment'>-- and must be exchanged when porting the toolbox e.g. to windows</span>-<a name="line-6"></a>-<a name="line-7"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DefaultURI</span>-<a name="line-8"></a> <span class='layout'>(</span> <span class='varid'>setDefaultURI</span>-<a name="line-9"></a> <span class='layout'>)</span>-<a name="line-10"></a>-<a name="line-11"></a><span class='keyword'>where</span>-<a name="line-12"></a>-<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-14"></a>-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Directory</span>-<a name="line-18"></a> <span class='layout'>(</span> <span class='varid'>getCurrentDirectory</span>-<a name="line-19"></a> <span class='layout'>)</span>-<a name="line-20"></a>-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>-<a name="line-22"></a> <span class='layout'>(</span> <span class='varid'>escapeURIChar</span>-<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>isUnescapedInURI</span>-<a name="line-24"></a> <span class='layout'>)</span>-<a name="line-25"></a>-<a name="line-26"></a><a name="setDefaultURI"></a><span class='definition'>setDefaultURI</span> <span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>-<a name="line-27"></a><span class='definition'>setDefaultURI</span>-<a name="line-28"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-29"></a> <span class='varid'>wd</span> <span class='keyglyph'><-</span> <span class='varid'>io</span> <span class='varid'>getCurrentDirectory</span>-<a name="line-30"></a> <span class='varid'>setSysParam</span> <span class='varid'>transferDefaultURI</span> <span class='layout'>(</span><span class='str'>"file://"</span> <span class='varop'>++</span> <span class='varid'>normalize</span> <span class='varid'>wd</span> <span class='varop'>++</span> <span class='str'>"/"</span><span class='layout'>)</span>-<a name="line-31"></a>-<a name="line-32"></a> <span class='keyword'>where</span>-<a name="line-33"></a>-<a name="line-34"></a> <span class='comment'>-- under Windows getCurrentDirectory returns something like: "c:\path\to\file"</span>-<a name="line-35"></a> <span class='comment'>-- backslaches are not allowed in URIs and paths must start with a /</span>-<a name="line-36"></a> <span class='comment'>-- so this is transformed into "/c:/path/to/file"</span>-<a name="line-37"></a>-<a name="line-38"></a> <span class='varid'>normalize</span> <span class='varid'>wd'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>d</span> <span class='conop'>:</span> <span class='chr'>':'</span> <span class='conop'>:</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-39"></a> <span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'A'</span><span class='keyglyph'>..</span><span class='chr'>'Z'</span><span class='keyglyph'>]</span> <span class='varop'>||</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'a'</span><span class='keyglyph'>..</span><span class='chr'>'z'</span><span class='keyglyph'>]</span>-<a name="line-40"></a> <span class='keyglyph'>=</span> <span class='chr'>'/'</span> <span class='conop'>:</span> <span class='varid'>concatMap</span> <span class='varid'>win32ToUriChar</span> <span class='varid'>wd'</span>-<a name="line-41"></a> <span class='varid'>normalize</span> <span class='varid'>wd'</span>-<a name="line-42"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>escapeNonUriChar</span> <span class='varid'>wd'</span>-<a name="line-43"></a> -<a name="line-44"></a> <span class='varid'>win32ToUriChar</span> <span class='chr'>'\\'</span> <span class='keyglyph'>=</span> <span class='str'>"/"</span>-<a name="line-45"></a> <span class='varid'>win32ToUriChar</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>escapeNonUriChar</span> <span class='varid'>c</span>-<a name="line-46"></a>-<a name="line-47"></a> <span class='varid'>escapeNonUriChar</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>escapeURIChar</span> <span class='varid'>isUnescapedInURI</span> <span class='varid'>c</span> <span class='comment'>-- from Network.URI</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-HtmlParser.html
@@ -1,180 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a>-<a name="line-3"></a><span class='comment'>{- |-<a name="line-4"></a> Module : Text.XML.HXT.Parser.HtmlParser-<a name="line-5"></a> Copyright : Copyright (C) 2005 Uwe Schmidt-<a name="line-6"></a> License : MIT-<a name="line-7"></a>-<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de)-<a name="line-9"></a> Stability : stable-<a name="line-10"></a> Portability: portable-<a name="line-11"></a>-<a name="line-12"></a> This parser tries to interprete everything as HTML-<a name="line-13"></a> no errors are emitted during parsing. If something looks-<a name="line-14"></a> weired, warning messages are inserted in the document tree.-<a name="line-15"></a> -<a name="line-16"></a> Module contains state filter for easy parsing and error handling-<a name="line-17"></a> real work is done in 'Text.XML.HXT.Parser.HtmlParsec'-<a name="line-18"></a>-<a name="line-19"></a>-}</span>-<a name="line-20"></a>-<a name="line-21"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-22"></a>-<a name="line-23"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParser</span>-<a name="line-24"></a> <span class='layout'>(</span> <span class='varid'>getHtmlDoc</span>-<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>parseHtmlDoc</span>-<a name="line-26"></a> <span class='layout'>,</span> <span class='varid'>runHtmlParser</span>-<a name="line-27"></a> <span class='layout'>,</span> <span class='varid'>substHtmlEntities</span>-<a name="line-28"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParsec</span>-<a name="line-29"></a> <span class='layout'>)</span>-<a name="line-30"></a>-<a name="line-31"></a><span class='keyword'>where</span>-<a name="line-32"></a>-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParsec</span>-<a name="line-36"></a>-<a name="line-37"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>-<a name="line-38"></a> <span class='layout'>(</span> <span class='varid'>getXmlContents</span>-<a name="line-39"></a> <span class='layout'>)</span>-<a name="line-40"></a>-<a name="line-41"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>-<a name="line-42"></a> <span class='layout'>(</span> <span class='varid'>traceTree</span>-<a name="line-43"></a> <span class='layout'>,</span> <span class='varid'>traceSource</span>-<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>traceMsg</span>-<a name="line-45"></a> <span class='layout'>)</span>-<a name="line-46"></a>-<a name="line-47"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XhtmlEntities</span>-<a name="line-48"></a> <span class='layout'>(</span> <span class='varid'>xhtmlEntities</span>-<a name="line-49"></a> <span class='layout'>)</span>-<a name="line-50"></a>-<a name="line-51"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-52"></a>-<a name="line-53"></a><span class='comment'>-- |</span>-<a name="line-54"></a><span class='comment'>-- read a document and parse it with 'parseHtmlDoc'. The main entry point of this module</span>-<a name="line-55"></a><span class='comment'>--</span>-<a name="line-56"></a><span class='comment'>-- The input tree must be a root tree like in ' Text.XML.HXT.Parser.MainFunctions.getXmlDoc'. The content is read with 'Text.XML.HXT.Parser.XmlInput.getXmlContents',</span>-<a name="line-57"></a><span class='comment'>-- is parsed with 'parseHtmlDoc' and canonicalized (char refs are substituted in content and attributes,</span>-<a name="line-58"></a><span class='comment'>-- but comment is preserved)</span>-<a name="line-59"></a><span class='comment'>--</span>-<a name="line-60"></a><span class='comment'>-- see also : 'Text.XML.HXT.Parser.DTDProcessing.getWellformedDoc'</span>-<a name="line-61"></a>-<a name="line-62"></a><a name="getHtmlDoc"></a><span class='definition'>getHtmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-63"></a><span class='definition'>getHtmlDoc</span>-<a name="line-64"></a> <span class='keyglyph'>=</span> <span class='varid'>setSystemParams</span>-<a name="line-65"></a> <span class='varop'>.>></span>-<a name="line-66"></a> <span class='varid'>getXmlContents</span>-<a name="line-67"></a> <span class='varop'>.>></span>-<a name="line-68"></a> <span class='varid'>parseHtmlDoc</span>-<a name="line-69"></a>-<a name="line-70"></a><span class='comment'>-- | The HTML parsing filter</span>-<a name="line-71"></a><span class='comment'>--</span>-<a name="line-72"></a><span class='comment'>-- The input is parsed with 'runHtmlParser', everything is interpreted as HTML,</span>-<a name="line-73"></a><span class='comment'>-- if errors ocuur, the parser will try to do some meaningfull action and continues</span>-<a name="line-74"></a><span class='comment'>-- parsing. Afterwards the entitiy references for defined for XHTML are resovled,</span>-<a name="line-75"></a><span class='comment'>-- any unresolved reference is transformed into plain text.</span>-<a name="line-76"></a><span class='comment'>--</span>-<a name="line-77"></a><span class='comment'>-- Error messages</span>-<a name="line-78"></a><span class='comment'>-- during parsing and entity resolving are added as warning nodes into the resulting tree.</span>-<a name="line-79"></a><span class='comment'>--</span>-<a name="line-80"></a><span class='comment'>-- The warnings are issued, if the 1. parameter noWarnings is set to True,</span>-<a name="line-81"></a><span class='comment'>-- afterwards all are removed from the resulting tree.</span>-<a name="line-82"></a>-<a name="line-83"></a><a name="parseHtmlDoc"></a><span class='definition'>parseHtmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-84"></a><span class='definition'>parseHtmlDoc</span>-<a name="line-85"></a> <span class='keyglyph'>=</span> <span class='varid'>parseDoc</span>-<a name="line-86"></a> <span class='varop'>`whenM`</span> <span class='layout'>(</span> <span class='varid'>isRoot</span> <span class='varop'>.></span> <span class='varid'>getChildren</span> <span class='varop'>.></span> <span class='varid'>isXText</span> <span class='layout'>)</span>-<a name="line-87"></a> <span class='keyword'>where</span>-<a name="line-88"></a> <span class='varid'>parseDoc</span> <span class='varid'>t'</span>-<a name="line-89"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"parseHtmlDoc: parse HTML document "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>loc</span><span class='layout'>)</span>-<a name="line-90"></a> <span class='varop'>.>></span>-<a name="line-91"></a> <span class='varid'>runHtmlParser</span>-<a name="line-92"></a> <span class='varop'>.>></span>-<a name="line-93"></a> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>processTopDown</span> <span class='varid'>substHtmlEntities</span><span class='layout'>)</span>-<a name="line-94"></a> <span class='varop'>.>></span>-<a name="line-95"></a> <span class='varid'>removeWarnings</span>-<a name="line-96"></a> <span class='varop'>.>></span>-<a name="line-97"></a> <span class='varid'>traceTree</span>-<a name="line-98"></a> <span class='varop'>.>></span>-<a name="line-99"></a> <span class='varid'>traceSource</span>-<a name="line-100"></a> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>t'</span>-<a name="line-101"></a> <span class='keyword'>where</span>-<a name="line-102"></a> <span class='varid'>loc</span> <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='varid'>a_source</span> <span class='varid'>t'</span> <span class='comment'>-- get document source uri</span>-<a name="line-103"></a>-<a name="line-104"></a> <span class='varid'>removeWarnings</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-105"></a> <span class='varid'>removeWarnings</span> <span class='varid'>t'</span>-<a name="line-106"></a> <span class='keyglyph'>=</span> <span class='keyword'>let</span>-<a name="line-107"></a> <span class='varid'>noWarnings</span> <span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>satisfies</span> <span class='layout'>(</span><span class='varid'>hasOption</span> <span class='varid'>a_issue_warnings</span><span class='layout'>)</span> <span class='varid'>t'</span><span class='layout'>)</span>-<a name="line-108"></a> <span class='varid'>selWarnings</span> <span class='keyglyph'>=</span> <span class='varid'>deep</span>-<a name="line-109"></a> <span class='layout'>(</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isWarning</span> <span class='conop'>:-></span> <span class='varid'>this</span>-<a name="line-110"></a> <span class='layout'>,</span> <span class='varid'>isXTag</span> <span class='conop'>:-></span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varop'>.></span> <span class='varid'>selWarnings</span><span class='layout'>)</span>-<a name="line-111"></a> <span class='keyglyph'>]</span>-<a name="line-112"></a> <span class='layout'>)</span>-<a name="line-113"></a> <span class='varid'>remWarnings</span> <span class='keyglyph'>=</span> <span class='varid'>processTopDown</span>-<a name="line-114"></a> <span class='layout'>(</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isWarning</span> <span class='conop'>:-></span> <span class='varid'>none</span>-<a name="line-115"></a> <span class='layout'>,</span> <span class='varid'>isXTag</span> <span class='conop'>:-></span> <span class='layout'>(</span><span class='varid'>processAttrl</span> <span class='layout'>(</span><span class='varid'>remWarnings</span> <span class='varop'>$$</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-116"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>-<a name="line-117"></a> <span class='keyglyph'>]</span>-<a name="line-118"></a> <span class='layout'>)</span>-<a name="line-119"></a> <span class='varid'>warnings</span> <span class='keyglyph'>=</span> <span class='varid'>selWarnings</span> <span class='varid'>t'</span>-<a name="line-120"></a> <span class='keyword'>in</span> <span class='keyword'>do</span> -<a name="line-121"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>warnings</span>-<a name="line-122"></a> <span class='keyword'>then</span> <span class='varid'>thisM</span> <span class='varid'>t'</span>-<a name="line-123"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>-<a name="line-124"></a> <span class='keyword'>if</span> <span class='varid'>noWarnings</span>-<a name="line-125"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-126"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>-<a name="line-127"></a> <span class='varid'>issueError</span> <span class='varop'>$$<</span> <span class='varid'>warnings</span>-<a name="line-128"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>remWarnings</span> <span class='varid'>t'</span><span class='layout'>)</span>-<a name="line-129"></a>-<a name="line-130"></a><span class='comment'>-- | The pure HTML parser, usually called via 'parseHtmlDoc'.</span>-<a name="line-131"></a><span class='comment'>--</span>-<a name="line-132"></a>-<a name="line-133"></a><a name="runHtmlParser"></a><span class='definition'>runHtmlParser</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-134"></a><span class='definition'>runHtmlParser</span> <span class='varid'>t</span>-<a name="line-135"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>errs</span>-<a name="line-136"></a> <span class='keyword'>then</span> <span class='keyword'>do</span>-<a name="line-137"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>replaceChildren</span> <span class='varid'>res</span> <span class='varid'>t</span><span class='layout'>)</span>-<a name="line-138"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>-<a name="line-139"></a> <span class='varid'>issueError</span> <span class='varop'>$$<</span> <span class='varid'>errs</span>-<a name="line-140"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>setStatus</span> <span class='varid'>c_err</span> <span class='str'>"parsing HTML"</span> <span class='varid'>t</span><span class='layout'>)</span>-<a name="line-141"></a> <span class='keyword'>where</span>-<a name="line-142"></a> <span class='varid'>res</span> <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varop'>.></span> <span class='varid'>parseHtmlText</span> <span class='varid'>loc</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-143"></a> <span class='varid'>errs</span> <span class='keyglyph'>=</span> <span class='varid'>isXError</span> <span class='varop'>.></span> <span class='varid'>neg</span> <span class='varid'>isWarning</span> <span class='varop'>$$</span> <span class='varid'>res</span>-<a name="line-144"></a> <span class='varid'>loc</span> <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='varid'>a_source</span> <span class='varid'>t</span>-<a name="line-145"></a>-<a name="line-146"></a>-<a name="line-147"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-148"></a><span class='comment'>--</span>-<a name="line-149"></a><span class='comment'>-- XHTML entities</span>-<a name="line-150"></a>-<a name="line-151"></a><a name="substHtmlEntities"></a><span class='definition'>substHtmlEntities</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-152"></a><span class='definition'>substHtmlEntities</span>-<a name="line-153"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isXEntityRef</span> <span class='conop'>:-></span> <span class='varid'>substEntity</span>-<a name="line-154"></a> <span class='layout'>,</span> <span class='varid'>isXTag</span> <span class='conop'>:-></span> <span class='varid'>processAttr</span> <span class='layout'>(</span><span class='varid'>processChildren</span> <span class='varid'>substHtmlEntities</span><span class='layout'>)</span>-<a name="line-155"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>-<a name="line-156"></a> <span class='keyglyph'>]</span>-<a name="line-157"></a> <span class='keyword'>where</span>-<a name="line-158"></a> <span class='varid'>substEntity</span> <span class='varid'>t'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XEntityRef</span> <span class='varid'>en</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-159"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>en</span> <span class='varid'>xhtmlEntities</span><span class='layout'>)</span> <span class='keyword'>of</span>-<a name="line-160"></a> <span class='conid'>Just</span> <span class='varid'>i</span>-<a name="line-161"></a> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>mkXCharRefTree</span> <span class='varid'>i</span><span class='keyglyph'>]</span>-<a name="line-162"></a> <span class='conid'>Nothing</span>-<a name="line-163"></a> <span class='keyglyph'>-></span> <span class='varid'>xwarn</span> <span class='layout'>(</span><span class='str'>"no XHTML entity found for reference: \"&"</span> <span class='varop'>++</span> <span class='varid'>en</span> <span class='varop'>++</span> <span class='str'>";\""</span><span class='layout'>)</span>-<a name="line-164"></a> <span class='varop'>++</span>-<a name="line-165"></a> <span class='layout'>(</span><span class='varid'>xmlTreesToText</span> <span class='keyglyph'>[</span><span class='varid'>t'</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-166"></a>-<a name="line-167"></a> <span class='varid'>substEntity</span> <span class='keyword'>_</span>-<a name="line-168"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='str'>"substHtmlEntities: illegal argument"</span>-<a name="line-169"></a>-<a name="line-170"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-MainFunctions.html
@@ -1,465 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- Simple parse functions.</span>-<a name="line-3"></a><span class='comment'>--</span>-<a name="line-4"></a><span class='comment'>-- the main building blocks for an application.</span>-<a name="line-5"></a><span class='comment'>-- this module exports complex filters and functions for</span>-<a name="line-6"></a><span class='comment'>-- common tasks for input and parsing, output and option handling.</span>-<a name="line-7"></a><span class='comment'>--</span>-<a name="line-8"></a>-<a name="line-9"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>MainFunctions</span>-<a name="line-10"></a> <span class='layout'>(</span> <span class='varid'>getXmlDocument</span>-<a name="line-11"></a> <span class='layout'>,</span> <span class='varid'>putXmlDocument</span>-<a name="line-12"></a>-<a name="line-13"></a> <span class='layout'>,</span> <span class='varid'>parseDocument</span>-<a name="line-14"></a> <span class='layout'>,</span> <span class='varid'>writeDocument</span>-<a name="line-15"></a> <span class='layout'>)</span>-<a name="line-16"></a><span class='keyword'>where</span>-<a name="line-17"></a>-<a name="line-18"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-19"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-20"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParser</span>-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>-<a name="line-22"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DTDProcessing</span>-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>Validation</span>-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span>-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Namespace</span>-<a name="line-27"></a>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>-<a name="line-29"></a>-<a name="line-30"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-31"></a>-<a name="line-32"></a><span class='comment'>-- |</span>-<a name="line-33"></a><span class='comment'>-- convenient function for reading a XML document without</span>-<a name="line-34"></a><span class='comment'>-- dealing with state monads, error messages collection and other details</span>-<a name="line-35"></a><span class='comment'>--</span>-<a name="line-36"></a><span class='comment'>-- getXmlDocument calls 'parseDocument' with the list of parsing options</span>-<a name="line-37"></a><span class='comment'>-- and an url or filename as document source.</span>-<a name="line-38"></a><span class='comment'>--</span>-<a name="line-39"></a><span class='comment'>-- result is a triple</span>-<a name="line-40"></a><span class='comment'>--</span>-<a name="line-41"></a><span class='comment'>-- * the resulting document tree with a root node containing all</span>-<a name="line-42"></a><span class='comment'>-- meta info about the document (options, status info, http header, ...)</span>-<a name="line-43"></a><span class='comment'>--</span>-<a name="line-44"></a><span class='comment'>-- - the list of errors and warnings</span>-<a name="line-45"></a><span class='comment'>--</span>-<a name="line-46"></a><span class='comment'>-- - the error level: one of 'c_ok', 'c_warn', 'c_err', 'c_fatal'</span>-<a name="line-47"></a><span class='comment'>--</span>-<a name="line-48"></a><span class='comment'>-- example for input (see also example in 'putXmlDocument' and example in 'writeDocument')</span>-<a name="line-49"></a><span class='comment'>--</span>-<a name="line-50"></a><span class='comment'>-- > main :: IO ()</span>-<a name="line-51"></a><span class='comment'>-- > main</span>-<a name="line-52"></a><span class='comment'>-- > = do</span>-<a name="line-53"></a><span class='comment'>-- > (res, errs, rc) <- getXmlDocument [] "test.xml"</span>-<a name="line-54"></a><span class='comment'>-- > if rc >= c_err</span>-<a name="line-55"></a><span class='comment'>-- > then issueErrors errs</span>-<a name="line-56"></a><span class='comment'>-- > else processTree res</span>-<a name="line-57"></a><span class='comment'>-- ></span>-<a name="line-58"></a><span class='comment'>-- > issueErrors :: XmlTrees -> IO ()</span>-<a name="line-59"></a><span class='comment'>-- ></span>-<a name="line-60"></a><span class='comment'>-- > processTree :: XmlTree -> IO ()</span>-<a name="line-61"></a><span class='comment'>--</span>-<a name="line-62"></a><span class='comment'>-- for options see 'parseDocument', 'a_collect_errors' is set implicitly</span>-<a name="line-63"></a>-<a name="line-64"></a><a name="getXmlDocument"></a><span class='definition'>getXmlDocument</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='conid'>XmlTree</span><span class='layout'>,</span> <span class='conid'>XmlTrees</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span>-<a name="line-65"></a><span class='definition'>getXmlDocument</span> <span class='varid'>options</span> <span class='varid'>url</span>-<a name="line-66"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-67"></a> <span class='keyword'>let</span> <span class='varid'>options'</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_collect_errors</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span> <span class='comment'>-- collect errors</span>-<a name="line-68"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_issue_errors</span><span class='layout'>,</span> <span class='varid'>v_0</span><span class='layout'>)</span> <span class='comment'>-- but don't issue</span>-<a name="line-69"></a> <span class='keyglyph'>]</span> <span class='comment'>-- can be overwritten by supporting other values in options</span>-<a name="line-70"></a> <span class='varop'>++</span>-<a name="line-71"></a> <span class='varid'>options</span>-<a name="line-72"></a> <span class='varop'>++</span>-<a name="line-73"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_source</span><span class='layout'>,</span> <span class='varid'>url</span><span class='layout'>)</span> <span class='comment'>-- set the source url</span>-<a name="line-74"></a> <span class='keyglyph'>]</span>-<a name="line-75"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>run'</span> <span class='varop'>$</span> <span class='varid'>parseDocument</span> <span class='varid'>options'</span> <span class='varid'>emptyRoot</span>-<a name="line-76"></a> <span class='keyword'>let</span> <span class='varid'>root</span> <span class='keyglyph'>=</span> <span class='varid'>head</span> <span class='varid'>res</span>-<a name="line-77"></a> <span class='keyword'>let</span> <span class='varid'>errs</span> <span class='keyglyph'>=</span> <span class='varid'>tail</span> <span class='varid'>res</span>-<a name="line-78"></a> <span class='keyword'>let</span> <span class='varid'>elvl</span> <span class='keyglyph'>=</span> <span class='varid'>intValueOf</span> <span class='varid'>a_status</span> <span class='varid'>root</span>-<a name="line-79"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>root</span><span class='layout'>,</span> <span class='varid'>errs</span><span class='layout'>,</span> <span class='varid'>elvl</span><span class='layout'>)</span>-<a name="line-80"></a>-<a name="line-81"></a>-<a name="line-82"></a><span class='comment'>-- |</span>-<a name="line-83"></a><span class='comment'>-- the inverse operation to 'getXmlDocument'</span>-<a name="line-84"></a><span class='comment'>--</span>-<a name="line-85"></a><span class='comment'>-- writes a complete document tree to a file, writing can be</span>-<a name="line-86"></a><span class='comment'>-- controlled by options, the real work is done with filter 'writeDocument'.</span>-<a name="line-87"></a><span class='comment'>-- useful options are the options of 'writeDocument'.</span>-<a name="line-88"></a><span class='comment'>--</span>-<a name="line-89"></a><span class='comment'>-- result is a pair: 1.part is a list of error messages, 2. part is the return code,</span>-<a name="line-90"></a><span class='comment'>-- the status info of the write filter</span>-<a name="line-91"></a><span class='comment'>--</span>-<a name="line-92"></a><span class='comment'>-- this filter is useful, when processing XML in an arbitray context in the IO monad</span>-<a name="line-93"></a><span class='comment'>--</span>-<a name="line-94"></a><span class='comment'>-- an example main program for such an application is:</span>-<a name="line-95"></a><span class='comment'>--</span>-<a name="line-96"></a><span class='comment'>-- > main :: IO ()</span>-<a name="line-97"></a><span class='comment'>-- > main</span>-<a name="line-98"></a><span class='comment'>-- > = do</span>-<a name="line-99"></a><span class='comment'>-- > (input, readErrs, rc) <- getXmlDocument [...] "test.xml"</span>-<a name="line-100"></a><span class='comment'>-- > if rc >= c_err</span>-<a name="line-101"></a><span class='comment'>-- > then issueErrors readErrs</span>-<a name="line-102"></a><span class='comment'>-- > else processTree input</span>-<a name="line-103"></a><span class='comment'>-- ></span>-<a name="line-104"></a><span class='comment'>-- > processTree :: XmlTree -> IO ()</span>-<a name="line-105"></a><span class='comment'>-- > processTree t</span>-<a name="line-106"></a><span class='comment'>-- > = let res = computeNewTree input</span>-<a name="line-107"></a><span class='comment'>-- > in do</span>-<a name="line-108"></a><span class='comment'>-- > (writeErrs, rc2) <- putXmlDocument [...] "out.xml" res</span>-<a name="line-109"></a><span class='comment'>-- > if rc2 >= c_err</span>-<a name="line-110"></a><span class='comment'>-- > then issueErrors writeErrs</span>-<a name="line-111"></a><span class='comment'>-- > else return ()</span>-<a name="line-112"></a><span class='comment'>-- ></span>-<a name="line-113"></a><span class='comment'>-- > issueErrors :: XmlTrees -> IO ()</span>-<a name="line-114"></a><span class='comment'>-- ></span>-<a name="line-115"></a><span class='comment'>-- > computeNewTree :: XmlTree -> XmlTree</span>-<a name="line-116"></a>-<a name="line-117"></a>-<a name="line-118"></a><a name="putXmlDocument"></a><span class='definition'>putXmlDocument</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='conid'>XmlTrees</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span>-<a name="line-119"></a><span class='definition'>putXmlDocument</span> <span class='varid'>options</span> <span class='varid'>fileName</span> <span class='varid'>t</span>-<a name="line-120"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-121"></a> <span class='keyword'>let</span> <span class='varid'>options'</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_collect_errors</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span> <span class='comment'>-- collect errors</span>-<a name="line-122"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_issue_errors</span><span class='layout'>,</span> <span class='varid'>v_0</span><span class='layout'>)</span> <span class='comment'>-- but don't issue</span>-<a name="line-123"></a> <span class='keyglyph'>]</span> <span class='comment'>-- can be overwritten by supporting other values in options</span>-<a name="line-124"></a> <span class='varop'>++</span>-<a name="line-125"></a> <span class='varid'>options</span>-<a name="line-126"></a> <span class='varop'>++</span>-<a name="line-127"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_output_file</span><span class='layout'>,</span> <span class='varid'>fileName</span><span class='layout'>)</span> <span class='comment'>-- set the source url</span>-<a name="line-128"></a> <span class='keyglyph'>]</span>-<a name="line-129"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>run'</span> <span class='varop'>$</span> <span class='varid'>writeDocument</span> <span class='varid'>options'</span> <span class='varid'>t</span>-<a name="line-130"></a> <span class='keyword'>let</span> <span class='varid'>root</span> <span class='keyglyph'>=</span> <span class='varid'>head</span> <span class='varid'>res</span>-<a name="line-131"></a> <span class='keyword'>let</span> <span class='varid'>errs</span> <span class='keyglyph'>=</span> <span class='varid'>tail</span> <span class='varid'>res</span>-<a name="line-132"></a> <span class='keyword'>let</span> <span class='varid'>elvl</span> <span class='keyglyph'>=</span> <span class='varid'>intValueOf</span> <span class='varid'>a_status</span> <span class='varid'>root</span>-<a name="line-133"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>errs</span><span class='layout'>,</span> <span class='varid'>elvl</span><span class='layout'>)</span>-<a name="line-134"></a>-<a name="line-135"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-136"></a>-<a name="line-137"></a><span class='comment'>-- |</span>-<a name="line-138"></a><span class='comment'>-- the main parsing filter</span>-<a name="line-139"></a><span class='comment'>--</span>-<a name="line-140"></a><span class='comment'>-- this filter can be configured by an option list, a list of</span>-<a name="line-141"></a><span class='comment'>-- option name, option value pairs.</span>-<a name="line-142"></a><span class='comment'>-- the input tree must be a possibly empty document root tree.</span>-<a name="line-143"></a><span class='comment'>-- all the options are stored as attributes in this root node to control processing.</span>-<a name="line-144"></a><span class='comment'>--</span>-<a name="line-145"></a><span class='comment'>-- available options:</span>-<a name="line-146"></a><span class='comment'>--</span>-<a name="line-147"></a><span class='comment'>-- * 'a_parse_html': use HTML parser, else use XML parser (default)</span>-<a name="line-148"></a><span class='comment'>--</span>-<a name="line-149"></a><span class='comment'>-- - 'a_validate' : validate document (default), else skip validation</span>-<a name="line-150"></a><span class='comment'>--</span>-<a name="line-151"></a><span class='comment'>-- - 'a_check_namespaces' : check namespaces, else skip namespace processing (default)</span>-<a name="line-152"></a><span class='comment'>--</span>-<a name="line-153"></a><span class='comment'>-- - 'a_canonicalize' : canonicalize document (default), else skip canonicalization</span>-<a name="line-154"></a><span class='comment'>--</span>-<a name="line-155"></a><span class='comment'>-- - 'a_preserve_comment' : preserve comments during canonicalization, else remove comments (default)</span>-<a name="line-156"></a><span class='comment'>--</span>-<a name="line-157"></a><span class='comment'>-- - 'a_remove_whitespace' : remove all whitespace, used for document indentation, else skip this step (default)</span>-<a name="line-158"></a><span class='comment'>--</span>-<a name="line-159"></a><span class='comment'>-- - 'a_indent' : indent document by inserting whitespace, else skip this step (default)</span>-<a name="line-160"></a><span class='comment'>--</span>-<a name="line-161"></a><span class='comment'>-- - 'a_issue_warnings' : issue warnings, when parsing HTML (default), else ignore HTML parser warnings</span>-<a name="line-162"></a><span class='comment'>--</span>-<a name="line-163"></a><span class='comment'>-- - 'a_issue_errors' : issue all error messages on stderr (default), or ignore all error messages</span>-<a name="line-164"></a><span class='comment'>--</span>-<a name="line-165"></a><span class='comment'>-- - 'a_collect_errors' : all error messages are collected during processing and appended to the result document</span>-<a name="line-166"></a><span class='comment'>-- for further processing within the calling modules</span>-<a name="line-167"></a><span class='comment'>--</span>-<a name="line-168"></a><span class='comment'>-- - 'a_trace' : trace level: values: 0 -4</span>-<a name="line-169"></a><span class='comment'>--</span>-<a name="line-170"></a><span class='comment'>-- - 'a_proxy' : proxy for http access, e.g. www-cache:3128</span>-<a name="line-171"></a><span class='comment'>--</span>-<a name="line-172"></a><span class='comment'>-- - 'a_use_curl' : for http access via external programm curl, default is native HTTP access</span>-<a name="line-173"></a><span class='comment'>--</span>-<a name="line-174"></a><span class='comment'>-- - 'a_options_curl' : more options for external program curl</span>-<a name="line-175"></a><span class='comment'>--</span>-<a name="line-176"></a><span class='comment'>-- - 'a_source' : the document source url</span>-<a name="line-177"></a><span class='comment'>--</span>-<a name="line-178"></a><span class='comment'>-- - 'a_encoding' : default document encoding ('utf8', 'isoLatin1', 'usAscii', ...)</span>-<a name="line-179"></a><span class='comment'>--</span>-<a name="line-180"></a><span class='comment'>-- examples:</span>-<a name="line-181"></a><span class='comment'>--</span>-<a name="line-182"></a><span class='comment'>-- > parseDocument [ (a_source, "test.xml")</span>-<a name="line-183"></a><span class='comment'>-- > , (a_validate, "0")</span>-<a name="line-184"></a><span class='comment'>-- > , (a_encoding, isoLatin1)</span>-<a name="line-185"></a><span class='comment'>-- > ] emptyRoot</span>-<a name="line-186"></a><span class='comment'>--</span>-<a name="line-187"></a><span class='comment'>-- reads document \"test.xml\" without validation and default encoding 'isoLatin1'</span>-<a name="line-188"></a><span class='comment'>--</span>-<a name="line-189"></a><span class='comment'>-- > parseDocument [ (a_source, "<a href="http://www.haskell.org/">http://www.haskell.org/</a>")</span>-<a name="line-190"></a><span class='comment'>-- > , (a_parse_html, "1")</span>-<a name="line-191"></a><span class='comment'>-- > , (a_proxy, "www-cache:3128")</span>-<a name="line-192"></a><span class='comment'>-- > , (a_curl, "1")</span>-<a name="line-193"></a><span class='comment'>-- > , (a_issue_warnings, "0")</span>-<a name="line-194"></a><span class='comment'>-- > ] emptyRoot</span>-<a name="line-195"></a><span class='comment'>--</span>-<a name="line-196"></a><span class='comment'>-- reads Haskell homepage with HTML parser ignoring any warnings and with http access via external program curl and proxy \"www-cache\" at port 3128</span>-<a name="line-197"></a><span class='comment'>--</span>-<a name="line-198"></a><span class='comment'>-- > parseDocument [ (a_source, "<a href="http://www.w3c.org/">http://www.w3c.org/</a>")</span>-<a name="line-199"></a><span class='comment'>-- > , (a_parse_html, "0") -- default</span>-<a name="line-200"></a><span class='comment'>-- > , (a_validate, "1") -- default</span>-<a name="line-201"></a><span class='comment'>-- > , (a_check_namespace, "1")</span>-<a name="line-202"></a><span class='comment'>-- > , (a_remove_whitespace, "1")</span>-<a name="line-203"></a><span class='comment'>-- > , (a_trace, "2")</span>-<a name="line-204"></a><span class='comment'>-- > ] emptyRoot</span>-<a name="line-205"></a><span class='comment'>--</span>-<a name="line-206"></a><span class='comment'>-- read w3c home page, validate and chech namespaces, remove whitespace between tags, trace activities with level 2</span>-<a name="line-207"></a><span class='comment'>--</span>-<a name="line-208"></a><span class='comment'>-- > parseDocument [ (a_source, "test.xml")</span>-<a name="line-209"></a><span class='comment'>-- > , (a_validate, "1")</span>-<a name="line-210"></a><span class='comment'>-- > , (a_check_namespace, "1")</span>-<a name="line-211"></a><span class='comment'>-- > , (a_collect_errors, "1")</span>-<a name="line-212"></a><span class='comment'>-- > , (a_issue_errors, "0")</span>-<a name="line-213"></a><span class='comment'>-- > ] emptyRoot</span>-<a name="line-214"></a><span class='comment'>--</span>-<a name="line-215"></a><span class='comment'>-- reads file \"test.xml\", validates it, checks namespaces, does not issue any erros</span>-<a name="line-216"></a><span class='comment'>-- but collects errors and appends the list of errors to the single element list for the document.</span>-<a name="line-217"></a><span class='comment'>-- this enables the calling application to define own error handlers.</span>-<a name="line-218"></a>-<a name="line-219"></a><a name="parseDocument"></a><span class='definition'>parseDocument</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-220"></a><span class='definition'>parseDocument</span> <span class='varid'>userOptions</span>-<a name="line-221"></a> <span class='keyglyph'>=</span> <span class='varid'>processDocument</span> <span class='varid'>userOptions</span> <span class='varid'>defaultOptions</span>-<a name="line-222"></a> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"parseDocument: options added, start processing"</span>-<a name="line-223"></a> <span class='varop'>.>></span>-<a name="line-224"></a> <span class='varid'>traceTree</span>-<a name="line-225"></a> <span class='varop'>.>></span>-<a name="line-226"></a> <span class='varid'>getXmlContents</span> <span class='comment'>-- get the content as text</span>-<a name="line-227"></a> <span class='varop'>.>></span>-<a name="line-228"></a> <span class='varid'>choiceM</span> <span class='comment'>-- select parser</span>-<a name="line-229"></a> <span class='keyglyph'>[</span> <span class='varid'>hasOption</span> <span class='varid'>a_parse_html</span>-<a name="line-230"></a> <span class='conop'>:-></span> <span class='varid'>parseHtmlDoc</span> <span class='comment'>-- parse everything as HTML</span>-<a name="line-231"></a> <span class='layout'>,</span> <span class='varid'>this</span>-<a name="line-232"></a> <span class='conop'>:-></span> <span class='varid'>checkWellformedDoc</span> <span class='comment'>-- parse XML and process entities</span>-<a name="line-233"></a> <span class='varop'>.>></span>-<a name="line-234"></a> <span class='layout'>(</span> <span class='varid'>getValidatedDoc</span> <span class='comment'>-- validate</span>-<a name="line-235"></a> <span class='varop'>`whenM`</span>-<a name="line-236"></a> <span class='varid'>hasOption</span> <span class='varid'>a_validate</span>-<a name="line-237"></a> <span class='layout'>)</span>-<a name="line-238"></a> <span class='keyglyph'>]</span>-<a name="line-239"></a> <span class='varop'>.>></span>-<a name="line-240"></a> <span class='layout'>(</span> <span class='varid'>propagateAndValidateNamespaces</span> <span class='comment'>-- namespace processing</span>-<a name="line-241"></a> <span class='varop'>`whenM`</span>-<a name="line-242"></a> <span class='varid'>hasOption</span> <span class='varid'>a_check_namespaces</span>-<a name="line-243"></a> <span class='layout'>)</span>-<a name="line-244"></a> <span class='varop'>.>></span>-<a name="line-245"></a> <span class='varid'>liftMf</span> <span class='comment'>-- canonicalization</span>-<a name="line-246"></a> <span class='layout'>(</span> <span class='varid'>choice</span>-<a name="line-247"></a> <span class='keyglyph'>[</span> <span class='varid'>hasOption</span> <span class='varid'>a_preserve_comment</span> <span class='comment'>-- don't remove comments (in XPath required)</span>-<a name="line-248"></a> <span class='conop'>:-></span> <span class='varid'>canonicalizeForXPath</span>-<a name="line-249"></a> <span class='layout'>,</span> <span class='varid'>this</span>-<a name="line-250"></a> <span class='conop'>:-></span> <span class='varid'>canonicalizeAllNodes</span> <span class='comment'>-- do normal canonicaliazion</span>-<a name="line-251"></a> <span class='keyglyph'>]</span>-<a name="line-252"></a> <span class='varop'>`when`</span>-<a name="line-253"></a> <span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span> <span class='comment'>-- caconicalization can be switched off</span>-<a name="line-254"></a> <span class='layout'>)</span>-<a name="line-255"></a> <span class='varop'>.>></span>-<a name="line-256"></a> <span class='varid'>liftMf</span>-<a name="line-257"></a> <span class='layout'>(</span> <span class='varid'>removeDocWhiteSpace</span> <span class='comment'>-- remove all whitespace between tags</span>-<a name="line-258"></a> <span class='varop'>`when`</span>-<a name="line-259"></a> <span class='varid'>hasOption</span> <span class='varid'>a_remove_whitespace</span>-<a name="line-260"></a> <span class='layout'>)</span>-<a name="line-261"></a> <span class='varop'>.>></span>-<a name="line-262"></a> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"parseDocument: document processed"</span> <span class='comment'>-- trace output</span>-<a name="line-263"></a> <span class='varop'>.>></span>-<a name="line-264"></a> <span class='varid'>traceSource</span>-<a name="line-265"></a> <span class='varop'>.>></span>-<a name="line-266"></a> <span class='varid'>traceTree</span>-<a name="line-267"></a> <span class='layout'>)</span>-<a name="line-268"></a> <span class='keyword'>where</span>-<a name="line-269"></a> <span class='varid'>defaultOptions</span>-<a name="line-270"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>a_parse_html</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-271"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_validate</span><span class='layout'>,</span> <span class='varid'>v_1</span> <span class='layout'>)</span>-<a name="line-272"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_issue_errors</span><span class='layout'>,</span> <span class='varid'>v_1</span> <span class='layout'>)</span>-<a name="line-273"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_issue_warnings</span><span class='layout'>,</span> <span class='varid'>v_1</span> <span class='layout'>)</span>-<a name="line-274"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_check_namespaces</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-275"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_canonicalize</span><span class='layout'>,</span> <span class='varid'>v_1</span> <span class='layout'>)</span>-<a name="line-276"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_preserve_comment</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-277"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_remove_whitespace</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-278"></a> <span class='keyglyph'>]</span>-<a name="line-279"></a>-<a name="line-280"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-281"></a>-<a name="line-282"></a><a name="addOptions"></a><span class='definition'>addOptions</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-283"></a><span class='definition'>addOptions</span>-<a name="line-284"></a> <span class='keyglyph'>=</span> <span class='varid'>seqF</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span><span class='varid'>v</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>addAttr</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='layout'>)</span>-<a name="line-285"></a>-<a name="line-286"></a><a name="addDefaultOptions"></a><span class='definition'>addDefaultOptions</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-287"></a><span class='definition'>addDefaultOptions</span>-<a name="line-288"></a> <span class='keyglyph'>=</span> <span class='varid'>seqF</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span><span class='varid'>v</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>addAttr</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='varop'>`whenNot`</span> <span class='varid'>hasAttr</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-289"></a>-<a name="line-290"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-291"></a>-<a name="line-292"></a><span class='comment'>-- |</span>-<a name="line-293"></a><span class='comment'>-- the main filter for writing documents</span>-<a name="line-294"></a><span class='comment'>--</span>-<a name="line-295"></a><span class='comment'>-- this filter can be configured by an option list like 'getXmlDocument'</span>-<a name="line-296"></a><span class='comment'>--</span>-<a name="line-297"></a><span class='comment'>-- available options are</span>-<a name="line-298"></a><span class='comment'>--</span>-<a name="line-299"></a><span class='comment'>-- * 'a_indent' : indent document for readability, (default: no indentation)</span>-<a name="line-300"></a><span class='comment'>--</span>-<a name="line-301"></a><span class='comment'>-- - 'a_remove_whitespace' : remove all redundant whitespace for shorten text (default: no removal)</span>-<a name="line-302"></a><span class='comment'>--</span>-<a name="line-303"></a><span class='comment'>-- - 'a_output_file' : destination file for document, default is \"-\" for stdout</span>-<a name="line-304"></a><span class='comment'>--</span>-<a name="line-305"></a><span class='comment'>-- - 'a_output_encoding' : encoding of document, default is 'a_encoding' or 'utf8'</span>-<a name="line-306"></a><span class='comment'>--</span>-<a name="line-307"></a><span class='comment'>-- - 'a_output_xml' : (default) issue XML: quote special XML chars \>,\<,\",\',&</span>-<a name="line-308"></a><span class='comment'>-- add XML processing instruction</span>-<a name="line-309"></a><span class='comment'>-- and encode document with respect to 'a_output_encoding',</span>-<a name="line-310"></a><span class='comment'>-- if explizitly switched of, the plain text is issued, this is useful</span>-<a name="line-311"></a><span class='comment'>-- for non XML output, e.g. generated Haskell code, LaTex, Java, ...</span>-<a name="line-312"></a><span class='comment'>--</span>-<a name="line-313"></a><span class='comment'>-- - 'a_show_tree' : show tree representation of document (for debugging)</span>-<a name="line-314"></a><span class='comment'>--</span>-<a name="line-315"></a><span class='comment'>-- - 'a_show_haskell' : show Haskell representaion of document (for debugging)</span>-<a name="line-316"></a><span class='comment'>--</span>-<a name="line-317"></a><span class='comment'>-- - 'a_issue_errors', 'a_collect_errors' : see 'parseDocument'</span>-<a name="line-318"></a><span class='comment'>--</span>-<a name="line-319"></a><span class='comment'>-- a typical main program running in the XmlState monad</span>-<a name="line-320"></a><span class='comment'>-- has the following structure:</span>-<a name="line-321"></a><span class='comment'>--</span>-<a name="line-322"></a><span class='comment'>-- ></span>-<a name="line-323"></a><span class='comment'>-- > main :: IO ()</span>-<a name="line-324"></a><span class='comment'>-- > main</span>-<a name="line-325"></a><span class='comment'>-- > = do</span>-<a name="line-326"></a><span class='comment'>-- > argv <- getArgs -- get the commandline arguments</span>-<a name="line-327"></a><span class='comment'>-- > (inp, outp, options) <- cmdlineOpts argv -- and evaluate them, return a key-value list</span>-<a name="line-328"></a><span class='comment'>-- > -- and input and output</span>-<a name="line-329"></a><span class='comment'>-- > res <- run' $ application inp outp options $ emptyRoot -- run the application</span>-<a name="line-330"></a><span class='comment'>-- > </span>-<a name="line-331"></a><span class='comment'>-- > exitWith (if null res</span>-<a name="line-332"></a><span class='comment'>-- > then ExitFailure (-1)</span>-<a name="line-333"></a><span class='comment'>-- > else exitSuccess</span>-<a name="line-334"></a><span class='comment'>-- > )</span>-<a name="line-335"></a><span class='comment'>-- ></span>-<a name="line-336"></a><span class='comment'>-- > application :: String -> String -> Attributes -> XmlStateFilter ()</span>-<a name="line-337"></a><span class='comment'>-- > application inp outp al</span>-<a name="line-338"></a><span class='comment'>-- > = parseDocument (al ++ [(a_source, inp)]) -- set options and source</span>-<a name="line-339"></a><span class='comment'>-- > .>> -- and parse document</span>-<a name="line-340"></a><span class='comment'>-- > processDocument -- the hard work</span>-<a name="line-341"></a><span class='comment'>-- > .>></span>-<a name="line-342"></a><span class='comment'>-- > writeDocument [(a_output_file, outp)] -- issue results</span>-<a name="line-343"></a><span class='comment'>-- > .>></span>-<a name="line-344"></a><span class='comment'>-- > checkStatus -- check errors</span>-<a name="line-345"></a><span class='comment'>-- ></span>-<a name="line-346"></a>-<a name="line-347"></a>-<a name="line-348"></a><a name="writeDocument"></a><span class='definition'>writeDocument</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-349"></a><span class='definition'>writeDocument</span> <span class='varid'>userOptions</span>-<a name="line-350"></a> <span class='keyglyph'>=</span> <span class='varid'>processDocument</span> <span class='varid'>userOptions</span> <span class='varid'>defaultOptions</span>-<a name="line-351"></a> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"writeDocument: options added, start processing"</span>-<a name="line-352"></a> <span class='varop'>.>></span>-<a name="line-353"></a> <span class='varid'>liftMf</span>-<a name="line-354"></a> <span class='layout'>(</span> <span class='varid'>choice</span>-<a name="line-355"></a> <span class='keyglyph'>[</span> <span class='varid'>hasOption</span> <span class='varid'>a_indent</span> <span class='conop'>:-></span> <span class='varid'>indentDoc</span> <span class='comment'>-- document indentation</span>-<a name="line-356"></a> <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_remove_whitespace</span> <span class='conop'>:-></span> <span class='varid'>removeDocWhiteSpace</span> <span class='comment'>-- remove all whitespace between tags</span>-<a name="line-357"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>-<a name="line-358"></a> <span class='keyglyph'>]</span>-<a name="line-359"></a> <span class='layout'>)</span>-<a name="line-360"></a> <span class='varop'>.>></span>-<a name="line-361"></a> <span class='varid'>liftMf</span>-<a name="line-362"></a> <span class='layout'>(</span> <span class='varid'>choice</span>-<a name="line-363"></a> <span class='keyglyph'>[</span> <span class='varid'>hasOption</span> <span class='varid'>a_show_tree</span> <span class='conop'>:-></span> <span class='varid'>treeRepOfXmlDoc</span>-<a name="line-364"></a> <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_show_haskell</span> <span class='conop'>:-></span> <span class='varid'>haskellRepOfXmlDoc</span>-<a name="line-365"></a> <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_output_xml</span> <span class='conop'>:-></span> <span class='layout'>(</span> <span class='varid'>escapeXmlDoc</span> <span class='comment'>-- escape lt, gt, amp, quot, </span>-<a name="line-366"></a> <span class='varop'>.></span>-<a name="line-367"></a> <span class='varid'>addXmlPiToDoc</span> <span class='comment'>-- add <?xml ... > pi</span>-<a name="line-368"></a> <span class='varop'>.></span>-<a name="line-369"></a> <span class='varid'>unparseXmlDoc</span> <span class='comment'>-- convert doc into text with respect to output encoding</span>-<a name="line-370"></a> <span class='layout'>)</span>-<a name="line-371"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>-<a name="line-372"></a> <span class='keyglyph'>]</span>-<a name="line-373"></a> <span class='layout'>)</span>-<a name="line-374"></a> <span class='varop'>.>></span>-<a name="line-375"></a> <span class='varid'>writeXmlDoc</span>-<a name="line-376"></a> <span class='varop'>.>></span>-<a name="line-377"></a> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"writeDocument: finished"</span>-<a name="line-378"></a> <span class='layout'>)</span>-<a name="line-379"></a> <span class='keyword'>where</span>-<a name="line-380"></a> <span class='varid'>defaultOptions</span>-<a name="line-381"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>a_output_file</span><span class='layout'>,</span> <span class='str'>"-"</span> <span class='layout'>)</span>-<a name="line-382"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_indent</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-383"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_remove_whitespace</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-384"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_output_xml</span><span class='layout'>,</span> <span class='varid'>v_1</span> <span class='layout'>)</span>-<a name="line-385"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_output_encoding</span><span class='layout'>,</span> <span class='varid'>utf8</span> <span class='layout'>)</span>-<a name="line-386"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_show_tree</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-387"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_show_haskell</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-388"></a> <span class='keyglyph'>]</span>-<a name="line-389"></a>-<a name="line-390"></a><a name="writeXmlDoc"></a><span class='definition'>writeXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-391"></a><span class='definition'>writeXmlDoc</span> <span class='varid'>t'</span>-<a name="line-392"></a> <span class='keyglyph'>=</span> <span class='varid'>put</span> <span class='varid'>t'</span>-<a name="line-393"></a> <span class='keyword'>where</span>-<a name="line-394"></a> <span class='varid'>put</span>-<a name="line-395"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>fn</span> <span class='varop'>||</span> <span class='varid'>fn</span> <span class='varop'>==</span> <span class='str'>"-"</span> <span class='keyglyph'>=</span> <span class='varid'>putXmlDoc</span>-<a name="line-396"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>putXmlDocToFile</span> <span class='varid'>fn</span>-<a name="line-397"></a>-<a name="line-398"></a> <span class='varid'>fn</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>getValue</span> <span class='varid'>a_output_file</span> <span class='varop'>$</span> <span class='varid'>t'</span>-<a name="line-399"></a>-<a name="line-400"></a>-<a name="line-401"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-402"></a><span class='comment'>--</span>-<a name="line-403"></a>-<a name="line-404"></a><span class='comment'>-- |</span>-<a name="line-405"></a><span class='comment'>-- wrapper filter for running a monadic filter</span>-<a name="line-406"></a><span class='comment'>-- controlled by common options</span>-<a name="line-407"></a><span class='comment'>--</span>-<a name="line-408"></a><span class='comment'>-- input tree must be a complete document</span>-<a name="line-409"></a><span class='comment'>-- parameters and default parameters can be used to contol</span>-<a name="line-410"></a><span class='comment'>-- the filer and common tasks like error message handling</span>-<a name="line-411"></a>-<a name="line-412"></a><a name="processDocument"></a><span class='definition'>processDocument</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-413"></a><span class='definition'>processDocument</span> <span class='varid'>userOptions</span> <span class='varid'>defaultOptions</span> <span class='varid'>processFilter</span>-<a name="line-414"></a> <span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='varid'>isRoot</span>-<a name="line-415"></a> <span class='varop'>.>></span>-<a name="line-416"></a> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>addOptions</span> <span class='varid'>userOptions</span>-<a name="line-417"></a> <span class='varop'>.></span>-<a name="line-418"></a> <span class='varid'>addOptions</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>a_status</span><span class='layout'>,</span> <span class='varid'>show</span> <span class='varid'>c_ok</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-419"></a> <span class='layout'>)</span>-<a name="line-420"></a> <span class='varop'>.>></span>-<a name="line-421"></a> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>addDefaultOptions</span> <span class='varid'>defaultOptions</span><span class='layout'>)</span>-<a name="line-422"></a> <span class='varop'>.>></span>-<a name="line-423"></a> <span class='varid'>setSystemParams</span> <span class='comment'>-- store options in system state</span>-<a name="line-424"></a> <span class='varop'>.>></span>-<a name="line-425"></a> <span class='varid'>choiceM</span>-<a name="line-426"></a> <span class='keyglyph'>[</span> <span class='varid'>hasOption</span> <span class='varid'>a_propagate_errors</span> <span class='comment'>-- error handling is set by calling environment</span>-<a name="line-427"></a> <span class='conop'>:-></span> <span class='varid'>thisM</span>-<a name="line-428"></a>-<a name="line-429"></a> <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_collect_errors</span>-<a name="line-430"></a> <span class='varop'>.></span>-<a name="line-431"></a> <span class='varid'>hasOption</span> <span class='varid'>a_issue_errors</span>-<a name="line-432"></a> <span class='conop'>:-></span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>setSysErrorHandler</span> <span class='layout'>(</span><span class='varid'>errorMsgLogging</span><span class='varop'>.>></span> <span class='varid'>errorMsgToStderr</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-433"></a>-<a name="line-434"></a> <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_collect_errors</span>-<a name="line-435"></a> <span class='conop'>:-></span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>setSysErrorHandler</span> <span class='varid'>errorMsgLogging</span> <span class='layout'>)</span>-<a name="line-436"></a>-<a name="line-437"></a> <span class='layout'>,</span> <span class='varid'>hasOption</span> <span class='varid'>a_issue_errors</span>-<a name="line-438"></a> <span class='conop'>:-></span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>setSysErrorHandler</span> <span class='varid'>errorMsgToStderr</span> <span class='layout'>)</span>-<a name="line-439"></a>-<a name="line-440"></a> <span class='layout'>,</span> <span class='varid'>this</span>-<a name="line-441"></a> <span class='conop'>:-></span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>setSysErrorHandler</span> <span class='varid'>noneM</span> <span class='layout'>)</span>-<a name="line-442"></a> <span class='keyglyph'>]</span>-<a name="line-443"></a> <span class='varop'>.>></span>-<a name="line-444"></a> <span class='varid'>processFilter</span>-<a name="line-445"></a> <span class='varop'>.>></span>-<a name="line-446"></a> <span class='layout'>(</span> <span class='varid'>thisM</span>-<a name="line-447"></a> <span class='varop'>+++>></span>-<a name="line-448"></a> <span class='layout'>(</span> <span class='varid'>hasOption</span> <span class='varid'>a_collect_errors</span>-<a name="line-449"></a> <span class='varop'>`guardsM`</span>-<a name="line-450"></a> <span class='varid'>getErrorMsg</span>-<a name="line-451"></a> <span class='layout'>)</span>-<a name="line-452"></a> <span class='layout'>)</span>-<a name="line-453"></a>-<a name="line-454"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-455"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-ProtocolHandler.html
@@ -1,93 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>{-# LINE 1 "ProtocolHandler.hs" #-}</span>-<a name="line-2"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-3"></a><span class='comment'>--</span>-<a name="line-4"></a><span class='comment'>-- protocol handler functions</span>-<a name="line-5"></a><span class='comment'>-- configuration file</span>-<a name="line-6"></a><span class='comment'>-- real handler is generated with cpp</span>-<a name="line-7"></a>-<a name="line-8"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandler</span>-<a name="line-9"></a> <span class='layout'>(</span> <span class='varid'>getProtocolHandler</span>-<a name="line-10"></a> <span class='layout'>)</span>-<a name="line-11"></a>-<a name="line-12"></a><span class='keyword'>where</span>-<a name="line-13"></a>-<a name="line-14"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-15"></a>-<a name="line-16"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-17"></a><span class='comment'>--</span>-<a name="line-18"></a><span class='comment'>-- file io and network</span>-<a name="line-19"></a>-<a name="line-20"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-21"></a> <span class='layout'>(</span> <span class='varid'>fromMaybe</span>-<a name="line-22"></a> <span class='layout'>)</span>-<a name="line-23"></a>-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>-<a name="line-25"></a> <span class='layout'>(</span> <span class='conid'>URI</span>-<a name="line-26"></a> <span class='layout'>,</span> <span class='varid'>uriScheme</span>-<a name="line-27"></a> <span class='layout'>)</span>-<a name="line-28"></a>-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerFile</span>-<a name="line-30"></a> <span class='layout'>(</span> <span class='varid'>getFileContents</span>-<a name="line-31"></a> <span class='layout'>)</span>-<a name="line-32"></a>-<a name="line-33"></a>-<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpNativeOrCurl</span>-<a name="line-35"></a> <span class='layout'>(</span> <span class='varid'>getHttpContentsNativeOrWithCurl</span>-<a name="line-36"></a> <span class='layout'>)</span>-<a name="line-37"></a>-<a name="line-38"></a>-<a name="line-39"></a>-<a name="line-40"></a>-<a name="line-41"></a>-<a name="line-42"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-43"></a><span class='comment'>--</span>-<a name="line-44"></a>-<a name="line-45"></a><a name="getProtocolHandler"></a><span class='definition'>getProtocolHandler</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>URI</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span><span class='layout'>)</span>-<a name="line-46"></a><span class='definition'>getProtocolHandler</span> <span class='varid'>proto</span>-<a name="line-47"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='varid'>getUnsupported</span> <span class='varid'>handler</span>-<a name="line-48"></a> <span class='keyword'>where</span>-<a name="line-49"></a> <span class='varid'>handler</span> <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='varid'>proto</span> <span class='varid'>protocolHandler</span>-<a name="line-50"></a>-<a name="line-51"></a><span class='comment'>--</span>-<a name="line-52"></a><span class='comment'>-- the fall back protocol handler</span>-<a name="line-53"></a>-<a name="line-54"></a><a name="getUnsupported"></a><span class='definition'>getUnsupported</span> <span class='keyglyph'>::</span> <span class='conid'>URI</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-55"></a><span class='definition'>getUnsupported</span> <span class='varid'>uri</span>-<a name="line-56"></a> <span class='keyglyph'>=</span> <span class='varid'>addFatal</span> <span class='layout'>(</span> <span class='str'>"unsupported protocol "</span>-<a name="line-57"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>uriScheme</span> <span class='varid'>uri</span><span class='layout'>)</span>-<a name="line-58"></a> <span class='varop'>++</span> <span class='str'>" in URI: "</span>-<a name="line-59"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>-<a name="line-60"></a> <span class='layout'>)</span>-<a name="line-61"></a>-<a name="line-62"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-63"></a><span class='comment'>--</span>-<a name="line-64"></a><span class='comment'>-- the table of potocol handlers</span>-<a name="line-65"></a><span class='comment'>-- looked up in getProtocolHandler</span>-<a name="line-66"></a>-<a name="line-67"></a><a name="protocolHandler"></a><span class='definition'>protocolHandler</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>URI</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-68"></a><span class='definition'>protocolHandler</span>-<a name="line-69"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='str'>"file"</span><span class='layout'>,</span> <span class='varid'>getFileContents</span><span class='layout'>)</span>-<a name="line-70"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>"http"</span><span class='layout'>,</span>-<a name="line-71"></a>-<a name="line-72"></a>-<a name="line-73"></a> <span class='varid'>getHttpContentsNativeOrWithCurl</span>-<a name="line-74"></a>-<a name="line-75"></a>-<a name="line-76"></a>-<a name="line-77"></a>-<a name="line-78"></a> <span class='layout'>)</span>-<a name="line-79"></a> <span class='keyglyph'>]</span>-<a name="line-80"></a>-<a name="line-81"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-82"></a>-<a name="line-83"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-ProtocolHandlerFile.html
@@ -1,87 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a><span class='comment'>--</span>-<a name="line-3"></a><span class='comment'>-- protocol handler function for file protocol</span>-<a name="line-4"></a><span class='comment'>-- implemented as filer</span>-<a name="line-5"></a>-<a name="line-6"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerFile</span>-<a name="line-7"></a> <span class='layout'>(</span> <span class='varid'>getFileContents</span>-<a name="line-8"></a> <span class='layout'>)</span>-<a name="line-9"></a>-<a name="line-10"></a><span class='keyword'>where</span>-<a name="line-11"></a>-<a name="line-12"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-13"></a>-<a name="line-14"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-15"></a>-<a name="line-16"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Directory</span>-<a name="line-17"></a> <span class='layout'>(</span> <span class='varid'>doesFileExist</span>-<a name="line-18"></a> <span class='layout'>,</span> <span class='varid'>getPermissions</span>-<a name="line-19"></a> <span class='layout'>,</span> <span class='varid'>readable</span>-<a name="line-20"></a> <span class='layout'>)</span>-<a name="line-21"></a>-<a name="line-22"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>-<a name="line-23"></a> <span class='layout'>(</span> <span class='conid'>URI</span>-<a name="line-24"></a> <span class='layout'>,</span> <span class='varid'>unEscapeString</span>-<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>uriPath</span>-<a name="line-26"></a> <span class='layout'>)</span>-<a name="line-27"></a>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>Error</span>-<a name="line-30"></a>-<a name="line-31"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-32"></a><span class='comment'>--</span>-<a name="line-33"></a><span class='comment'>-- the file protocol handler</span>-<a name="line-34"></a>-<a name="line-35"></a><a name="getFileContents"></a><span class='definition'>getFileContents</span> <span class='keyglyph'>::</span> <span class='conid'>URI</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-36"></a><span class='definition'>getFileContents</span> <span class='varid'>uri</span> <span class='varid'>n</span>-<a name="line-37"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-38"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"getFileContent: reading file "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>source</span><span class='layout'>)</span>-<a name="line-39"></a> <span class='varid'>exists</span> <span class='keyglyph'><-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>doesFileExist</span> <span class='varid'>source</span>-<a name="line-40"></a> <span class='keyword'>if</span> <span class='varid'>exists</span>-<a name="line-41"></a> <span class='keyword'>then</span> <span class='keyword'>do</span>-<a name="line-42"></a> <span class='varid'>perm</span> <span class='keyglyph'><-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>getPermissions</span> <span class='varid'>source</span>-<a name="line-43"></a> <span class='keyword'>if</span> <span class='varid'>readable</span> <span class='varid'>perm</span>-<a name="line-44"></a> <span class='keyword'>then</span> <span class='keyword'>do</span>-<a name="line-45"></a> <span class='varid'>h</span> <span class='keyglyph'><-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='varid'>openFile</span> <span class='varid'>source</span> <span class='conid'>ReadMode</span> <span class='layout'>)</span>-<a name="line-46"></a> <span class='keyword'>case</span> <span class='varid'>h</span> <span class='keyword'>of</span>-<a name="line-47"></a> <span class='conid'>Left</span> <span class='varid'>e</span>-<a name="line-48"></a> <span class='keyglyph'>-></span> <span class='varid'>readErr</span> <span class='layout'>(</span> <span class='str'>"system error when reading file "</span>-<a name="line-49"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>source</span>-<a name="line-50"></a> <span class='varop'>++</span> <span class='str'>": "</span>-<a name="line-51"></a> <span class='varop'>++</span> <span class='varid'>ioeGetErrorString</span> <span class='varid'>e</span>-<a name="line-52"></a> <span class='layout'>)</span>-<a name="line-53"></a> <span class='conid'>Right</span> <span class='varid'>h'</span>-<a name="line-54"></a> <span class='keyglyph'>-></span> <span class='keyword'>do</span>-<a name="line-55"></a> <span class='varid'>c</span> <span class='keyglyph'><-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>hGetContents</span> <span class='varid'>h'</span>-<a name="line-56"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>addAttrInt</span> <span class='varid'>transferStatus</span> <span class='num'>200</span>-<a name="line-57"></a> <span class='varop'>.></span>-<a name="line-58"></a> <span class='varid'>addAttr</span> <span class='varid'>transferMessage</span> <span class='str'>"OK"</span>-<a name="line-59"></a> <span class='varop'>.></span>-<a name="line-60"></a> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-61"></a> <span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-62"></a> <span class='layout'>)</span>-<a name="line-63"></a>-<a name="line-64"></a> <span class='keyword'>else</span> <span class='varid'>readErr</span> <span class='layout'>(</span><span class='str'>"file "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>source</span> <span class='varop'>++</span> <span class='str'>" not readable"</span><span class='layout'>)</span>-<a name="line-65"></a> <span class='keyword'>else</span> <span class='varid'>readErr</span> <span class='layout'>(</span><span class='str'>"file "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>source</span> <span class='varop'>++</span> <span class='str'>" not found"</span><span class='layout'>)</span>-<a name="line-66"></a> <span class='keyword'>where</span>-<a name="line-67"></a> <span class='varid'>source</span> <span class='keyglyph'>=</span> <span class='varid'>fileUriPath</span> <span class='varop'>.</span> <span class='varid'>unEscapeString</span> <span class='varop'>.</span> <span class='varid'>uriPath</span> <span class='varop'>$</span> <span class='varid'>uri</span>-<a name="line-68"></a> <span class='varid'>readErr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>addFatal</span> <span class='varid'>msg</span> <span class='varid'>n</span>-<a name="line-69"></a>-<a name="line-70"></a> <span class='comment'>-- remove leading / if file starts with windows drive letter, e.g. /c:/windows -> c:/windows</span>-<a name="line-71"></a> <span class='varid'>fileUriPath</span> <span class='layout'>(</span><span class='chr'>'/'</span> <span class='conop'>:</span> <span class='varid'>file</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>d</span> <span class='conop'>:</span> <span class='chr'>':'</span> <span class='conop'>:</span> <span class='sel'>_more</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-72"></a> <span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'A'</span><span class='keyglyph'>..</span><span class='chr'>'Z'</span><span class='keyglyph'>]</span> <span class='varop'>||</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'a'</span><span class='keyglyph'>..</span><span class='chr'>'z'</span><span class='keyglyph'>]</span>-<a name="line-73"></a> <span class='keyglyph'>=</span> <span class='varid'>file</span>-<a name="line-74"></a> <span class='varid'>fileUriPath</span> <span class='varid'>file</span>-<a name="line-75"></a> <span class='keyglyph'>=</span> <span class='varid'>file</span>-<a name="line-76"></a>-<a name="line-77"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-ProtocolHandlerHttpCurl.html
@@ -1,202 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a><span class='comment'>--</span>-<a name="line-3"></a><span class='comment'>-- protocol handler functions for native http access</span>-<a name="line-4"></a>-<a name="line-5"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpCurl</span>-<a name="line-6"></a> <span class='layout'>(</span> <span class='varid'>getHttpContentsWithCurl</span>-<a name="line-7"></a> <span class='layout'>)</span>-<a name="line-8"></a>-<a name="line-9"></a><span class='keyword'>where</span>-<a name="line-10"></a>-<a name="line-11"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-12"></a>-<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-14"></a>-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerUtil</span>-<a name="line-16"></a> <span class='layout'>(</span> <span class='varid'>parseContentType</span>-<a name="line-17"></a> <span class='layout'>)</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span>-<a name="line-20"></a> <span class='layout'>(</span> <span class='conid'>Parser</span>-<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>parse</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>anyChar</span>-<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>char</span>-<a name="line-24"></a> <span class='layout'>,</span> <span class='varid'>digit</span>-<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>getInput</span>-<a name="line-26"></a> <span class='layout'>,</span> <span class='varid'>many1</span>-<a name="line-27"></a> <span class='layout'>,</span> <span class='varid'>manyTill</span>-<a name="line-28"></a> <span class='layout'>,</span> <span class='varid'>spaces</span>-<a name="line-29"></a> <span class='layout'>,</span> <span class='varid'>string</span>-<a name="line-30"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'><|></span><span class='layout'>)</span>-<a name="line-31"></a> <span class='layout'>)</span>-<a name="line-32"></a>-<a name="line-33"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span>-<a name="line-34"></a> <span class='layout'>(</span> <span class='varid'>try</span>-<a name="line-35"></a> <span class='layout'>)</span>-<a name="line-36"></a>-<a name="line-37"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>-<a name="line-38"></a> <span class='layout'>(</span> <span class='conid'>URI</span>-<a name="line-39"></a> <span class='layout'>)</span>-<a name="line-40"></a>-<a name="line-41"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>PipeOpen</span>-<a name="line-42"></a> <span class='layout'>(</span> <span class='varid'>popen</span>-<a name="line-43"></a> <span class='layout'>)</span>-<a name="line-44"></a>-<a name="line-45"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span>-<a name="line-46"></a> <span class='layout'>(</span> <span class='varid'>toLower</span>-<a name="line-47"></a> <span class='layout'>)</span>-<a name="line-48"></a>-<a name="line-49"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-50"></a><span class='comment'>--</span>-<a name="line-51"></a><span class='comment'>-- the http protocol handler implemented by calling external program curl</span>-<a name="line-52"></a>-<a name="line-53"></a><a name="getHttpContentsWithCurl"></a><span class='definition'>getHttpContentsWithCurl</span> <span class='keyglyph'>::</span> <span class='conid'>URI</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-54"></a><span class='definition'>getHttpContentsWithCurl</span> <span class='varid'>uri</span> <span class='varid'>n</span>-<a name="line-55"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-56"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span> <span class='str'>"getHttpContentWithCurl: reading from URL "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span> <span class='layout'>)</span>-<a name="line-57"></a>-<a name="line-58"></a> <span class='varid'>proxy</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParam</span> <span class='varid'>a_proxy</span>-<a name="line-59"></a> <span class='varid'>curlOptions</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParam</span> <span class='varid'>a_options_curl</span>-<a name="line-60"></a>-<a name="line-61"></a> <span class='keyword'>let</span> <span class='varid'>allArgs</span> <span class='keyglyph'>=</span> <span class='varid'>args</span> <span class='varop'>++</span> <span class='varid'>proxyArgs</span> <span class='varid'>proxy</span> <span class='varop'>++</span> <span class='varid'>words</span> <span class='varid'>curlOptions</span>-<a name="line-62"></a>-<a name="line-63"></a> <span class='varid'>trace</span> <span class='num'>4</span> <span class='layout'>(</span> <span class='str'>"getHttpContentWithCurl: running "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>unwords</span> <span class='layout'>(</span><span class='varid'>cmd</span> <span class='conop'>:</span> <span class='varid'>allArgs</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-64"></a>-<a name="line-65"></a> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>errs</span><span class='layout'>,</span> <span class='varid'>rc</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>popen</span> <span class='varid'>cmd</span> <span class='varid'>allArgs</span>-<a name="line-66"></a>-<a name="line-67"></a> <span class='varid'>trace</span> <span class='num'>4</span> <span class='layout'>(</span> <span class='str'>"getHttpContentWithCurl: PID: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>rc</span> <span class='layout'>)</span>-<a name="line-68"></a> <span class='varid'>trace</span> <span class='num'>4</span> <span class='layout'>(</span> <span class='str'>"getHttpContentWithCurl: stdin: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>res</span> <span class='layout'>)</span>-<a name="line-69"></a> <span class='varid'>trace</span> <span class='num'>4</span> <span class='layout'>(</span> <span class='str'>"getHttpContentWithCurl: stderr: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>errs</span> <span class='layout'>)</span>-<a name="line-70"></a>-<a name="line-71"></a> <span class='keyword'>if</span> <span class='varid'>rc</span> <span class='varop'>/=</span> <span class='num'>0</span>-<a name="line-72"></a> <span class='keyword'>then</span> <span class='varid'>addFatal</span> <span class='layout'>(</span> <span class='str'>"http error when requesting URI (rc="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>rc</span> <span class='varop'>++</span> <span class='str'>") "</span>-<a name="line-73"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>-<a name="line-74"></a> <span class='varop'>++</span> <span class='str'>": "</span>-<a name="line-75"></a> <span class='varop'>++</span> <span class='varid'>errs</span>-<a name="line-76"></a> <span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-77"></a> <span class='keyword'>else</span> <span class='keyword'>let</span>-<a name="line-78"></a> <span class='layout'>(</span><span class='varid'>st</span><span class='layout'>,</span> <span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>contents</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>parseResponse</span> <span class='varid'>res</span>-<a name="line-79"></a> <span class='keyword'>in</span>-<a name="line-80"></a> <span class='varid'>liftMf</span> <span class='layout'>(</span> <span class='varid'>addAttrl</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-81"></a> <span class='varop'>.></span>-<a name="line-82"></a> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='varid'>contents</span><span class='layout'>)</span>-<a name="line-83"></a> <span class='layout'>)</span>-<a name="line-84"></a> <span class='varop'>.>></span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>st</span> <span class='varop'>>=</span> <span class='num'>200</span> <span class='varop'>&&</span> <span class='varid'>st</span> <span class='varop'><</span> <span class='num'>300</span>-<a name="line-85"></a> <span class='keyword'>then</span> <span class='varid'>thisM</span>-<a name="line-86"></a> <span class='keyword'>else</span>-<a name="line-87"></a> <span class='varid'>addFatal</span> <span class='layout'>(</span> <span class='str'>"http error when accessing URI "</span>-<a name="line-88"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>-<a name="line-89"></a> <span class='varop'>++</span> <span class='str'>": "</span>-<a name="line-90"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>st</span>-<a name="line-91"></a> <span class='varop'>++</span> <span class='str'>" "</span>-<a name="line-92"></a> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>valueOf</span> <span class='varid'>transferMessage</span> <span class='varop'>$</span> <span class='varid'>newRoot</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-93"></a> <span class='layout'>)</span>-<a name="line-94"></a> <span class='layout'>)</span>-<a name="line-95"></a> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-96"></a> <span class='keyword'>where</span>-<a name="line-97"></a> <span class='varid'>cmd</span> <span class='keyglyph'>=</span> <span class='str'>"curl"</span>-<a name="line-98"></a> <span class='varid'>args</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='str'>"--silent"</span>-<a name="line-99"></a> <span class='layout'>,</span> <span class='str'>"--show-error"</span>-<a name="line-100"></a> <span class='layout'>,</span> <span class='str'>"--dump-header"</span><span class='layout'>,</span> <span class='str'>"-"</span>-<a name="line-101"></a> <span class='layout'>,</span> <span class='varid'>show</span> <span class='varid'>uri</span>-<a name="line-102"></a> <span class='keyglyph'>]</span>-<a name="line-103"></a> <span class='varid'>proxyArgs</span> <span class='str'>""</span>-<a name="line-104"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-105"></a> <span class='varid'>proxyArgs</span> <span class='varid'>prx</span>-<a name="line-106"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='str'>"--proxy"</span><span class='layout'>,</span> <span class='varid'>prx</span> <span class='keyglyph'>]</span>-<a name="line-107"></a>-<a name="line-108"></a><a name="parseResponse"></a><span class='definition'>parseResponse</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>XmlTrees</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-109"></a><span class='definition'>parseResponse</span> <span class='varid'>inp</span>-<a name="line-110"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>parse</span> <span class='varid'>parseHttpResponse</span> <span class='str'>"HTTP Header"</span> <span class='varid'>inp</span><span class='layout'>)</span> <span class='keyword'>of</span>-<a name="line-111"></a> <span class='conid'>Right</span> <span class='varid'>res</span> <span class='keyglyph'>-></span> <span class='varid'>res</span>-<a name="line-112"></a> <span class='conid'>Left</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='num'>999</span><span class='layout'>,</span> <span class='varid'>xattr</span> <span class='varid'>transferMessage</span> <span class='str'>"illegal HTTP response"</span><span class='layout'>,</span> <span class='varid'>inp</span><span class='layout'>)</span>-<a name="line-113"></a>-<a name="line-114"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-115"></a><span class='comment'>--</span>-<a name="line-116"></a><span class='comment'>-- parsers for HTTP response</span>-<a name="line-117"></a>-<a name="line-118"></a><a name="parseHttpResponse"></a><span class='definition'>parseHttpResponse</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>XmlTrees</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-119"></a><span class='definition'>parseHttpResponse</span>-<a name="line-120"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-121"></a> <span class='varid'>allResponses</span> <span class='keyglyph'><-</span> <span class='varid'>many1</span>-<a name="line-122"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-123"></a> <span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>parseResp</span>-<a name="line-124"></a> <span class='varid'>rhs</span> <span class='keyglyph'><-</span> <span class='varid'>parseHeaders</span>-<a name="line-125"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span><span class='layout'>,</span> <span class='varid'>rhs</span><span class='layout'>)</span>-<a name="line-126"></a> <span class='layout'>)</span>-<a name="line-127"></a> <span class='keyword'>let</span> <span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span><span class='layout'>,</span> <span class='varid'>rhs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>last</span> <span class='varid'>allResponses</span>-<a name="line-128"></a> <span class='varid'>content</span> <span class='keyglyph'><-</span> <span class='varid'>getInput</span>-<a name="line-129"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>rc</span><span class='layout'>,</span> <span class='varid'>rh</span> <span class='varop'>++</span> <span class='varid'>rhs</span><span class='layout'>,</span> <span class='varid'>content</span><span class='layout'>)</span>-<a name="line-130"></a> <span class='keyword'>where</span>-<a name="line-131"></a>-<a name="line-132"></a> <span class='varid'>crlf</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>()</span>-<a name="line-133"></a> <span class='varid'>crlf</span>-<a name="line-134"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-135"></a> <span class='layout'>(</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span><span class='varop'>.</span><span class='varid'>try</span> <span class='layout'>(</span><span class='varid'>string</span> <span class='str'>"\r\n"</span><span class='layout'>)</span> <span class='varop'><|></span> <span class='varid'>string</span> <span class='str'>"\n"</span> <span class='layout'>)</span>-<a name="line-136"></a> <span class='varid'>return</span> <span class='conid'>()</span>-<a name="line-137"></a>-<a name="line-138"></a> <span class='varid'>parseResp</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>XmlTrees</span><span class='layout'>)</span>-<a name="line-139"></a> <span class='varid'>parseResp</span>-<a name="line-140"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-141"></a> <span class='varid'>vers</span> <span class='keyglyph'><-</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-142"></a> <span class='varid'>http</span> <span class='keyglyph'><-</span> <span class='varid'>string</span> <span class='str'>"HTTP/"</span>-<a name="line-143"></a> <span class='varid'>mav</span> <span class='keyglyph'><-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>-<a name="line-144"></a> <span class='varid'>char</span> <span class='chr'>'.'</span>-<a name="line-145"></a> <span class='varid'>miv</span> <span class='keyglyph'><-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>-<a name="line-146"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>http</span> <span class='varop'>++</span> <span class='varid'>mav</span> <span class='varop'>++</span> <span class='str'>"."</span> <span class='varop'>++</span> <span class='varid'>miv</span><span class='layout'>)</span>-<a name="line-147"></a> <span class='layout'>)</span>-<a name="line-148"></a> <span class='varid'>spaces</span>-<a name="line-149"></a> <span class='varid'>ds</span> <span class='keyglyph'><-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>-<a name="line-150"></a> <span class='varid'>spaces</span>-<a name="line-151"></a> <span class='varid'>reason</span> <span class='keyglyph'><-</span> <span class='varid'>manyTill</span> <span class='varid'>anyChar</span> <span class='varid'>crlf</span>-<a name="line-152"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>read</span> <span class='varid'>ds</span><span class='layout'>,</span>-<a name="line-153"></a> <span class='varid'>xattr</span> <span class='varid'>transferMessage</span> <span class='varid'>reason</span> <span class='varop'>++</span> <span class='varid'>xattr</span> <span class='varid'>transferVersion</span> <span class='varid'>vers</span>-<a name="line-154"></a> <span class='layout'>)</span>-<a name="line-155"></a>-<a name="line-156"></a> <span class='varid'>parseHeaders</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>-<a name="line-157"></a> <span class='varid'>parseHeaders</span>-<a name="line-158"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-159"></a> <span class='varid'>crlf</span>-<a name="line-160"></a> <span class='varid'>return</span> <span class='conid'>[]</span>-<a name="line-161"></a> <span class='layout'>)</span>-<a name="line-162"></a> <span class='varop'><|></span>-<a name="line-163"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-164"></a> <span class='varid'>header1</span> <span class='keyglyph'><-</span> <span class='varid'>parse1Header</span>-<a name="line-165"></a> <span class='varid'>rest</span> <span class='keyglyph'><-</span> <span class='varid'>parseHeaders</span>-<a name="line-166"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>header1</span> <span class='varop'>++</span> <span class='varid'>rest</span>-<a name="line-167"></a> <span class='layout'>)</span>-<a name="line-168"></a> <span class='varop'><|></span>-<a name="line-169"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-170"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>xattr</span> <span class='layout'>(</span><span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='str'>"IllegalHeaders"</span><span class='layout'>)</span> <span class='str'>""</span>-<a name="line-171"></a> <span class='layout'>)</span>-<a name="line-172"></a>-<a name="line-173"></a> <span class='varid'>parse1Header</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>-<a name="line-174"></a> <span class='varid'>parse1Header</span>-<a name="line-175"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-176"></a> <span class='varid'>header</span> <span class='keyglyph'><-</span> <span class='varid'>manyTill</span> <span class='varid'>anyChar</span> <span class='layout'>(</span><span class='varid'>char</span> <span class='chr'>':'</span><span class='layout'>)</span>-<a name="line-177"></a> <span class='varid'>spaces</span>-<a name="line-178"></a> <span class='varid'>value</span> <span class='keyglyph'><-</span> <span class='varid'>manyTill</span> <span class='varid'>anyChar</span> <span class='varid'>crlf</span>-<a name="line-179"></a> <span class='keyword'>let</span> <span class='varid'>ct</span> <span class='keyglyph'>=</span> <span class='varid'>parseCT</span> <span class='varid'>header</span> <span class='varid'>value</span>-<a name="line-180"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>ct</span> <span class='varop'>++</span> <span class='varid'>xattr</span> <span class='layout'>(</span><span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='varid'>header</span><span class='layout'>)</span> <span class='varid'>value</span>-<a name="line-181"></a> <span class='keyword'>where</span>-<a name="line-182"></a> <span class='varid'>parseCT</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-183"></a> <span class='varid'>parseCT</span> <span class='varid'>h</span> <span class='varid'>v</span>-<a name="line-184"></a> <span class='keyglyph'>|</span> <span class='varid'>map</span> <span class='varid'>toLower</span> <span class='varid'>h</span> <span class='varop'>==</span> <span class='str'>"content-type"</span>-<a name="line-185"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>parse</span> <span class='varid'>parseContentType</span> <span class='varid'>h</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='keyword'>of</span>-<a name="line-186"></a> <span class='conid'>Right</span> <span class='varid'>res</span> <span class='keyglyph'>-></span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>xattr</span><span class='layout'>)</span> <span class='varid'>res</span>-<a name="line-187"></a> <span class='conid'>Left</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='conid'>[]</span>-<a name="line-188"></a> <span class='layout'>)</span>-<a name="line-189"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-190"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-191"></a>-<a name="line-192"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-ProtocolHandlerHttpNative.html
@@ -1,161 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a><span class='comment'>--</span>-<a name="line-3"></a><span class='comment'>-- protocol handler functions for native http access</span>-<a name="line-4"></a><span class='comment'>--</span>-<a name="line-5"></a>-<a name="line-6"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpNative</span>-<a name="line-7"></a> <span class='layout'>(</span> <span class='varid'>getHttpContentsWithHttp</span>-<a name="line-8"></a> <span class='layout'>)</span>-<a name="line-9"></a>-<a name="line-10"></a><span class='keyword'>where</span>-<a name="line-11"></a>-<a name="line-12"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-13"></a>-<a name="line-14"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-15"></a>-<a name="line-16"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerUtil</span>-<a name="line-17"></a> <span class='layout'>(</span> <span class='varid'>parseContentType</span>-<a name="line-18"></a> <span class='layout'>)</span>-<a name="line-19"></a>-<a name="line-20"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>-<a name="line-21"></a> <span class='layout'>(</span> <span class='varid'>stringTrim</span>-<a name="line-22"></a> <span class='layout'>)</span>-<a name="line-23"></a>-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span>-<a name="line-25"></a> <span class='layout'>(</span> <span class='varid'>parse</span>-<a name="line-26"></a> <span class='layout'>)</span>-<a name="line-27"></a>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>Error</span>-<a name="line-30"></a>-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>-<a name="line-32"></a> <span class='layout'>(</span> <span class='conid'>URI</span>-<a name="line-33"></a> <span class='layout'>)</span>-<a name="line-34"></a>-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>Socket</span>-<a name="line-36"></a> <span class='layout'>(</span> <span class='varid'>withSocketsDo</span>-<a name="line-37"></a> <span class='layout'>)</span>-<a name="line-38"></a>-<a name="line-39"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>HTTP</span> <span class='comment'>-- http modules</span>-<a name="line-40"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>Browser</span>-<a name="line-41"></a>-<a name="line-42"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-43"></a><span class='comment'>--</span>-<a name="line-44"></a><span class='comment'>-- the native http protocol handler</span>-<a name="line-45"></a>-<a name="line-46"></a><a name="ResponseString"></a><span class='keyword'>type</span> <span class='conid'>ResponseString</span> <span class='keyglyph'>=</span> <span class='conid'>Response</span> <span class='conid'>String</span>-<a name="line-47"></a>-<a name="line-48"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-49"></a><span class='comment'>--</span>-<a name="line-50"></a><span class='comment'>-- the http protocol handler, haskell implementation</span>-<a name="line-51"></a>-<a name="line-52"></a><a name="getHttpContentsWithHttp"></a><span class='definition'>getHttpContentsWithHttp</span> <span class='keyglyph'>::</span> <span class='conid'>URI</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-53"></a><span class='definition'>getHttpContentsWithHttp</span> <span class='varid'>uri</span> <span class='varid'>n</span>-<a name="line-54"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-55"></a> <span class='varid'>traceLevel</span> <span class='keyglyph'><-</span> <span class='varid'>getTraceLevel</span>-<a name="line-56"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"getHttpContent: reading from URL "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span><span class='layout'>)</span>-<a name="line-57"></a> <span class='varid'>proxy</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParam</span> <span class='varid'>a_proxy</span>-<a name="line-58"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>try</span> <span class='layout'>(</span><span class='varid'>getHttp</span> <span class='varid'>traceLevel</span> <span class='varid'>uri</span> <span class='varid'>proxy</span><span class='layout'>)</span>-<a name="line-59"></a> <span class='keyword'>case</span> <span class='varid'>res</span> <span class='keyword'>of</span>-<a name="line-60"></a> <span class='conid'>Left</span> <span class='varid'>e</span>-<a name="line-61"></a> <span class='keyglyph'>-></span> <span class='varid'>readErr</span> <span class='layout'>(</span> <span class='str'>"http error when requesting URI "</span>-<a name="line-62"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span>-<a name="line-63"></a> <span class='varop'>++</span> <span class='str'>": "</span>-<a name="line-64"></a> <span class='varop'>++</span> <span class='varid'>ioeGetErrorString</span> <span class='varid'>e</span>-<a name="line-65"></a> <span class='varop'>++</span> <span class='str'>" (perhaps server does not understand HTTP/1.1) "</span>-<a name="line-66"></a> <span class='layout'>)</span>-<a name="line-67"></a> <span class='conid'>Right</span> <span class='varid'>response</span>-<a name="line-68"></a> <span class='keyglyph'>-></span> <span class='keyword'>let</span>-<a name="line-69"></a> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>convertResponseHeaders</span> <span class='varid'>response</span>-<a name="line-70"></a> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='layout'>(</span><span class='varid'>rspBody</span> <span class='varid'>response</span><span class='layout'>)</span>-<a name="line-71"></a> <span class='varid'>st</span> <span class='keyglyph'>=</span> <span class='varid'>convertResponseStatus</span> <span class='layout'>(</span><span class='varid'>rspCode</span> <span class='varid'>response</span><span class='layout'>)</span>-<a name="line-72"></a> <span class='keyword'>in</span>-<a name="line-73"></a> <span class='keyword'>if</span> <span class='varid'>st</span> <span class='varop'>>=</span> <span class='num'>200</span> <span class='varop'>&&</span> <span class='varid'>st</span> <span class='varop'><</span> <span class='num'>300</span>-<a name="line-74"></a> <span class='keyword'>then</span>-<a name="line-75"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='layout'>(</span><span class='varid'>addAttrl</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>.></span> <span class='varid'>replaceChildren</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-76"></a> <span class='keyword'>else</span> -<a name="line-77"></a> <span class='varid'>readErr</span> <span class='layout'>(</span> <span class='str'>"http error when accessing URI "</span>-<a name="line-78"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>uri</span><span class='layout'>)</span>-<a name="line-79"></a> <span class='varop'>++</span> <span class='str'>": "</span>-<a name="line-80"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>st</span>-<a name="line-81"></a> <span class='varop'>++</span> <span class='str'>" "</span>-<a name="line-82"></a> <span class='varop'>++</span> <span class='varid'>rspReason</span> <span class='varid'>response</span>-<a name="line-83"></a> <span class='layout'>)</span>-<a name="line-84"></a> <span class='keyword'>where</span>-<a name="line-85"></a> <span class='varid'>readErr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>addFatal</span> <span class='varid'>msg</span> <span class='varid'>n</span>-<a name="line-86"></a>-<a name="line-87"></a> <span class='varid'>getHttp</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>URI</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='conid'>ResponseString</span>-<a name="line-88"></a> <span class='varid'>getHttp</span> <span class='varid'>trc'</span> <span class='varid'>uri'</span> <span class='varid'>proxy'</span>-<a name="line-89"></a> <span class='keyglyph'>=</span> <span class='varid'>withSocketsDo</span> <span class='varop'>$</span>-<a name="line-90"></a> <span class='varid'>browse</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-91"></a> <span class='varid'>setOutHandler</span> <span class='layout'>(</span><span class='varid'>trcFct</span><span class='layout'>)</span>-<a name="line-92"></a> <span class='varid'>setErrHandler</span> <span class='layout'>(</span><span class='varid'>trcFct</span><span class='layout'>)</span>-<a name="line-93"></a>-<a name="line-94"></a> <span class='varid'>setProxy'</span> <span class='varid'>proxy'</span>-<a name="line-95"></a> <span class='layout'>(</span><span class='sel'>_ruri</span><span class='layout'>,</span> <span class='varid'>rsp</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>request</span> <span class='varid'>rq</span>-<a name="line-96"></a> <span class='varid'>return</span> <span class='varid'>rsp</span>-<a name="line-97"></a> <span class='layout'>)</span>-<a name="line-98"></a> <span class='keyword'>where</span>-<a name="line-99"></a> <span class='varid'>trcFct</span> <span class='varid'>s</span>-<a name="line-100"></a> <span class='keyglyph'>|</span> <span class='varid'>trc'</span> <span class='varop'>>=</span> <span class='num'>5</span>-<a name="line-101"></a> <span class='keyglyph'>=</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='layout'>(</span><span class='str'>"-- ("</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>trc'</span> <span class='varop'>++</span> <span class='str'>") http: "</span> <span class='varop'>++</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-102"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-103"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>()</span>-<a name="line-104"></a>-<a name="line-105"></a> <span class='varid'>rq</span> <span class='keyglyph'>=</span> <span class='varid'>defaultGETRequest</span> <span class='varid'>uri'</span>-<a name="line-106"></a> -<a name="line-107"></a> <span class='varid'>setProxy'</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>()</span>-<a name="line-108"></a> <span class='varid'>setProxy'</span> <span class='varid'>p</span> <span class='keyglyph'>=</span> <span class='varid'>setProxy</span> <span class='layout'>(</span><span class='conid'>Proxy</span> <span class='varid'>p</span> <span class='conid'>Nothing</span><span class='layout'>)</span>-<a name="line-109"></a>-<a name="line-110"></a> <span class='varid'>convertResponseStatus</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span>-<a name="line-111"></a> <span class='varid'>convertResponseStatus</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-112"></a> <span class='keyglyph'>=</span> <span class='num'>100</span> <span class='varop'>*</span> <span class='varid'>a</span> <span class='varop'>+</span> <span class='num'>10</span> <span class='varop'>*</span> <span class='varid'>b</span> <span class='varop'>+</span> <span class='varid'>c</span>-<a name="line-113"></a>-<a name="line-114"></a> <span class='varid'>convertResponseHeaders</span> <span class='keyglyph'>::</span> <span class='conid'>ResponseString</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-115"></a> <span class='varid'>convertResponseHeaders</span> <span class='varid'>r'</span>-<a name="line-116"></a> <span class='keyglyph'>=</span> <span class='varid'>cvResponseCode</span> <span class='layout'>(</span><span class='varid'>rspCode</span> <span class='varid'>r'</span><span class='layout'>)</span>-<a name="line-117"></a> <span class='varop'>++</span>-<a name="line-118"></a> <span class='varid'>cvResponseReason</span> <span class='layout'>(</span><span class='varid'>rspReason</span> <span class='varid'>r'</span><span class='layout'>)</span>-<a name="line-119"></a> <span class='varop'>++</span>-<a name="line-120"></a> <span class='varid'>cvResponseHeaders</span> <span class='layout'>(</span><span class='varid'>rspHeaders</span> <span class='varid'>r'</span><span class='layout'>)</span>-<a name="line-121"></a> <span class='keyword'>where</span>-<a name="line-122"></a> <span class='varid'>cvResponseCode</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-123"></a> <span class='varid'>cvResponseCode</span> <span class='varid'>st'</span>-<a name="line-124"></a> <span class='keyglyph'>=</span> <span class='varid'>xattr</span> <span class='varid'>transferStatus</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>convertResponseStatus</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-125"></a> <span class='varop'>++</span>-<a name="line-126"></a> <span class='varid'>xattr</span> <span class='varid'>transferVersion</span> <span class='varid'>httpVersion</span>-<a name="line-127"></a>-<a name="line-128"></a> <span class='varid'>cvResponseReason</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-129"></a> <span class='varid'>cvResponseReason</span> <span class='varid'>r''</span>-<a name="line-130"></a> <span class='keyglyph'>=</span> <span class='varid'>xattr</span> <span class='varid'>transferMessage</span> <span class='layout'>(</span><span class='varid'>stringTrim</span> <span class='varid'>r''</span><span class='layout'>)</span>-<a name="line-131"></a>-<a name="line-132"></a> <span class='varid'>cvResponseHeaders</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Header</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-133"></a> <span class='varid'>cvResponseHeaders</span>-<a name="line-134"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>cvResponseHeader</span>-<a name="line-135"></a>-<a name="line-136"></a> <span class='varid'>cvResponseHeader</span> <span class='keyglyph'>::</span> <span class='conid'>Header</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-137"></a> <span class='varid'>cvResponseHeader</span> <span class='layout'>(</span><span class='conid'>Header</span> <span class='varid'>name</span> <span class='varid'>value</span><span class='layout'>)</span>-<a name="line-138"></a> <span class='keyglyph'>|</span> <span class='varid'>name</span> <span class='varop'>==</span> <span class='conid'>HdrContentType</span>-<a name="line-139"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>parse</span> <span class='varid'>parseContentType</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='conid'>HdrContentType</span><span class='layout'>)</span> <span class='varid'>value</span><span class='layout'>)</span> <span class='keyword'>of</span>-<a name="line-140"></a> <span class='conid'>Right</span> <span class='varid'>res</span> <span class='keyglyph'>-></span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>xattr</span><span class='layout'>)</span> <span class='varid'>res</span>-<a name="line-141"></a> <span class='conid'>Left</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='conid'>[]</span>-<a name="line-142"></a> <span class='layout'>)</span>-<a name="line-143"></a> <span class='varop'>++</span>-<a name="line-144"></a> <span class='varid'>addHttpAttr</span>-<a name="line-145"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-146"></a> <span class='keyglyph'>=</span> <span class='varid'>addHttpAttr</span>-<a name="line-147"></a> <span class='keyword'>where</span>-<a name="line-148"></a> <span class='varid'>addHttpAttr</span> <span class='keyglyph'>=</span> <span class='varid'>xattr</span> <span class='layout'>(</span><span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>value</span>-<a name="line-149"></a>-<a name="line-150"></a>-<a name="line-151"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-ProtocolHandlerHttpNativeOrCurl.html
@@ -1,53 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a><span class='comment'>--</span>-<a name="line-3"></a><span class='comment'>-- protocol handler functions for native http access</span>-<a name="line-4"></a>-<a name="line-5"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpNativeOrCurl</span>-<a name="line-6"></a> <span class='layout'>(</span> <span class='varid'>getHttpContentsNativeOrWithCurl</span>-<a name="line-7"></a> <span class='layout'>)</span>-<a name="line-8"></a>-<a name="line-9"></a><span class='keyword'>where</span>-<a name="line-10"></a>-<a name="line-11"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>-<a name="line-12"></a> <span class='layout'>(</span> <span class='varid'>a_use_curl</span>-<a name="line-13"></a> <span class='layout'>)</span>-<a name="line-14"></a>-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>-<a name="line-18"></a> <span class='layout'>(</span> <span class='conid'>URI</span>-<a name="line-19"></a> <span class='layout'>)</span>-<a name="line-20"></a>-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpNative</span>-<a name="line-22"></a> <span class='layout'>(</span> <span class='varid'>getHttpContentsWithHttp</span>-<a name="line-23"></a> <span class='layout'>)</span>-<a name="line-24"></a>-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandlerHttpCurl</span>-<a name="line-26"></a> <span class='layout'>(</span> <span class='varid'>getHttpContentsWithCurl</span>-<a name="line-27"></a> <span class='layout'>)</span>-<a name="line-28"></a>-<a name="line-29"></a>-<a name="line-30"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-31"></a><span class='comment'>--</span>-<a name="line-32"></a><span class='comment'>-- the http protocol handler switch for internal / external access</span>-<a name="line-33"></a>-<a name="line-34"></a><a name="getHttpContentsNativeOrWithCurl"></a><span class='definition'>getHttpContentsNativeOrWithCurl</span> <span class='keyglyph'>::</span> <span class='conid'>URI</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-35"></a><span class='definition'>getHttpContentsNativeOrWithCurl</span> <span class='varid'>uri</span> <span class='varid'>n</span>-<a name="line-36"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-37"></a> <span class='varid'>curl</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParamInt</span> <span class='varid'>a_use_curl</span> <span class='num'>0</span>-<a name="line-38"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>curl</span> <span class='varop'>/=</span> <span class='num'>0</span>-<a name="line-39"></a> <span class='keyword'>then</span> <span class='varid'>getHttpContentsWithCurl</span>-<a name="line-40"></a> <span class='keyword'>else</span> <span class='varid'>getHttpContentsWithHttp</span> <span class='layout'>)</span> <span class='varid'>uri</span> <span class='varid'>n</span>-<a name="line-41"></a>-<a name="line-42"></a>-<a name="line-43"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-XmlInput.html
@@ -1,392 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a><span class='comment'>--</span>-<a name="line-3"></a><span class='comment'>-- input functions</span>-<a name="line-4"></a><span class='comment'>-- implemented as filer</span>-<a name="line-5"></a>-<a name="line-6"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>-<a name="line-7"></a> <span class='layout'>(</span> <span class='varid'>getXmlContents</span>-<a name="line-8"></a> <span class='layout'>,</span> <span class='varid'>getXmlEntityContents</span>-<a name="line-9"></a> <span class='layout'>,</span> <span class='varid'>getUrlContents</span>-<a name="line-10"></a> <span class='layout'>,</span> <span class='varid'>getContentLength</span>-<a name="line-11"></a> <span class='layout'>,</span> <span class='varid'>guessDocEncoding</span>-<a name="line-12"></a> <span class='layout'>,</span> <span class='varid'>runInLocalURIContext</span>-<a name="line-13"></a> <span class='layout'>,</span> <span class='varid'>runInNewURIContext</span>-<a name="line-14"></a> <span class='layout'>,</span> <span class='varid'>getBaseURI</span>-<a name="line-15"></a> <span class='layout'>,</span> <span class='varid'>setBaseURI</span>-<a name="line-16"></a> <span class='layout'>,</span> <span class='varid'>getAbsolutURI</span>-<a name="line-17"></a> <span class='layout'>,</span> <span class='varid'>isStandaloneDocument</span>-<a name="line-18"></a> <span class='layout'>)</span>-<a name="line-19"></a>-<a name="line-20"></a><span class='keyword'>where</span>-<a name="line-21"></a>-<a name="line-22"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-23"></a>-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-25"></a>-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DefaultURI</span>-<a name="line-27"></a> <span class='layout'>(</span> <span class='varid'>setDefaultURI</span>-<a name="line-28"></a> <span class='layout'>)</span>-<a name="line-29"></a>-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParser</span>-<a name="line-31"></a> <span class='layout'>(</span> <span class='varid'>parseXmlDocEncodingSpec</span>-<a name="line-32"></a> <span class='layout'>,</span> <span class='varid'>parseXmlEntityEncodingSpec</span>-<a name="line-33"></a> <span class='layout'>,</span> <span class='varid'>removeEncodingSpec</span>-<a name="line-34"></a> <span class='layout'>)</span>-<a name="line-35"></a>-<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span>-<a name="line-37"></a> <span class='layout'>(</span> <span class='varid'>getDecodingFct</span>-<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>guessEncoding</span>-<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>normalizeNL</span>-<a name="line-40"></a> <span class='layout'>)</span>-<a name="line-41"></a>-<a name="line-42"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>-<a name="line-43"></a> <span class='layout'>(</span> <span class='varid'>traceTree</span>-<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>traceSource</span>-<a name="line-45"></a> <span class='layout'>,</span> <span class='varid'>traceMsg</span>-<a name="line-46"></a> <span class='layout'>)</span>-<a name="line-47"></a>-<a name="line-48"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>ProtocolHandler</span>-<a name="line-49"></a> <span class='layout'>(</span> <span class='varid'>getProtocolHandler</span>-<a name="line-50"></a> <span class='layout'>)</span>-<a name="line-51"></a>-<a name="line-52"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-53"></a><span class='comment'>--</span>-<a name="line-54"></a><span class='comment'>-- URI manipulation</span>-<a name="line-55"></a>-<a name="line-56"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>-<a name="line-57"></a> <span class='layout'>(</span> <span class='varid'>parseURIReference</span>-<a name="line-58"></a> <span class='layout'>,</span> <span class='varid'>relativeTo</span>-<a name="line-59"></a> <span class='layout'>,</span> <span class='varid'>uriScheme</span>-<a name="line-60"></a> <span class='layout'>)</span>-<a name="line-61"></a>-<a name="line-62"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-63"></a><span class='comment'>--</span>-<a name="line-64"></a><span class='comment'>-- utilities</span>-<a name="line-65"></a>-<a name="line-66"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-67"></a>-<a name="line-68"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-69"></a><span class='comment'>--</span>-<a name="line-70"></a><span class='comment'>-- filter for reading the content</span>-<a name="line-71"></a><span class='comment'>-- input: a root node with arguments in tag attribute list</span>-<a name="line-72"></a><span class='comment'>-- and without any children.</span>-<a name="line-73"></a>-<a name="line-74"></a><span class='comment'>-- attribute a_source ("source") for input file or uri</span>-<a name="line-75"></a><span class='comment'>--</span>-<a name="line-76"></a><span class='comment'>-- attribute a_encoding ("encoding") for encoding scheme</span>-<a name="line-77"></a><span class='comment'>--</span>-<a name="line-78"></a><span class='comment'>-- attribute a_proxy ("proxy") for proxy tob be used in http access</span>-<a name="line-79"></a>-<a name="line-80"></a><a name="getXmlContents'"></a><span class='definition'>getXmlContents'</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-81"></a><span class='definition'>getXmlContents'</span> <span class='varid'>parseEncodingSpec</span>-<a name="line-82"></a> <span class='keyglyph'>=</span> <span class='varid'>getContent'</span>-<a name="line-83"></a> <span class='varop'>`whenM`</span> <span class='varid'>isRoot</span>-<a name="line-84"></a> <span class='keyword'>where</span>-<a name="line-85"></a> <span class='varid'>getContent'</span> <span class='varid'>t'</span>-<a name="line-86"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>setStatus</span> <span class='varid'>c_ok</span> <span class='str'>"getXmlContents"</span><span class='layout'>)</span>-<a name="line-87"></a> <span class='varop'>.>></span>-<a name="line-88"></a> <span class='varid'>getUrlContents</span>-<a name="line-89"></a> <span class='varop'>.>></span>-<a name="line-90"></a> <span class='varid'>liftF</span> <span class='varid'>parseEncodingSpec</span>-<a name="line-91"></a> <span class='varop'>.>></span>-<a name="line-92"></a> <span class='varid'>guessDocEncoding</span>-<a name="line-93"></a> <span class='varop'>.>></span>-<a name="line-94"></a> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"getXmlContents: content read and decoded from "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>input'</span><span class='layout'>)</span>-<a name="line-95"></a> <span class='varop'>.>></span>-<a name="line-96"></a> <span class='varid'>traceTree</span>-<a name="line-97"></a> <span class='varop'>.>></span>-<a name="line-98"></a> <span class='varid'>traceSource</span>-<a name="line-99"></a> <span class='layout'>)</span> <span class='varid'>t'</span>-<a name="line-100"></a> <span class='keyword'>where</span>-<a name="line-101"></a> <span class='varid'>input'</span> <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='varid'>a_source</span> <span class='varid'>t'</span>-<a name="line-102"></a>-<a name="line-103"></a><span class='comment'>-- |</span>-<a name="line-104"></a><span class='comment'>-- filter for reading the content of a XML document</span>-<a name="line-105"></a><span class='comment'>--</span>-<a name="line-106"></a><span class='comment'>-- input is a root node with the source as an attibute</span>-<a name="line-107"></a><span class='comment'>-- the text is read, the encoding scheme is parsed and selected</span>-<a name="line-108"></a><span class='comment'>-- and the input is translated into the internal UTF-8 string representation</span>-<a name="line-109"></a>-<a name="line-110"></a><a name="getXmlContents"></a><span class='definition'>getXmlContents</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-111"></a><span class='definition'>getXmlContents</span>-<a name="line-112"></a> <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlDocEncodingSpec</span>-<a name="line-113"></a> <span class='varop'>.>></span>-<a name="line-114"></a> <span class='varid'>setBaseURIFilter</span>-<a name="line-115"></a> <span class='varop'>.>></span>-<a name="line-116"></a> <span class='varid'>setStandAloneFilter</span>-<a name="line-117"></a>-<a name="line-118"></a><span class='comment'>-- |</span>-<a name="line-119"></a><span class='comment'>-- filter for reading the content of an external XML entity</span>-<a name="line-120"></a><span class='comment'>--</span>-<a name="line-121"></a><span class='comment'>--</span>-<a name="line-122"></a><span class='comment'>-- see also : 'getXmlContents'</span>-<a name="line-123"></a>-<a name="line-124"></a><a name="getXmlEntityContents"></a><span class='definition'>getXmlEntityContents</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-125"></a><span class='definition'>getXmlEntityContents</span>-<a name="line-126"></a> <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlEntityEncodingSpec</span>-<a name="line-127"></a> <span class='varop'>.>></span>-<a name="line-128"></a> <span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>processChildren</span> <span class='varid'>removeEncodingSpec</span><span class='layout'>)</span> <span class='comment'>-- remove encoding spec, it's not part of the entity value</span>-<a name="line-129"></a> <span class='varop'>.>></span> -<a name="line-130"></a> <span class='varid'>setBaseURIFilter</span>-<a name="line-131"></a>-<a name="line-132"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-133"></a>-<a name="line-134"></a><a name="setBaseURIFilter"></a><span class='definition'>setBaseURIFilter</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-135"></a><span class='definition'>setBaseURIFilter</span>-<a name="line-136"></a> <span class='keyglyph'>=</span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='varid'>setBaseURI</span> <span class='layout'>(</span><span class='varid'>valueOf</span> <span class='varid'>transferURI</span> <span class='varid'>t</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-137"></a> <span class='varop'>`whenM`</span> <span class='varid'>isRoot</span>-<a name="line-138"></a>-<a name="line-139"></a><span class='comment'>-- |</span>-<a name="line-140"></a><span class='comment'>-- filter command for saving and restoring</span>-<a name="line-141"></a><span class='comment'>-- the base URI</span>-<a name="line-142"></a><span class='comment'>--</span>-<a name="line-143"></a><span class='comment'>-- * 1.parameter f : the filter that possible changes the base URI</span>-<a name="line-144"></a><span class='comment'>--</span>-<a name="line-145"></a><span class='comment'>--</span>-<a name="line-146"></a><span class='comment'>-- - returns : a filter with the same effect as f, that restores the base URI after application of f</span>-<a name="line-147"></a>-<a name="line-148"></a><a name="runInLocalURIContext"></a><span class='definition'>runInLocalURIContext</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-149"></a><span class='definition'>runInLocalURIContext</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-150"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-151"></a> <span class='varid'>oldContext</span> <span class='keyglyph'><-</span> <span class='varid'>getBaseURI</span>-<a name="line-152"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"runInLocalURIContext: save base URI "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>oldContext</span><span class='layout'>)</span>-<a name="line-153"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-154"></a> <span class='varid'>setBaseURI</span> <span class='varid'>oldContext</span>-<a name="line-155"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"runInLocalURIContext: restore base URI "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>oldContext</span><span class='layout'>)</span>-<a name="line-156"></a> <span class='varid'>return</span> <span class='varid'>res</span>-<a name="line-157"></a>-<a name="line-158"></a><span class='comment'>-- |</span>-<a name="line-159"></a><span class='comment'>-- filter command for running an action in a new URI context</span>-<a name="line-160"></a>-<a name="line-161"></a><a name="runInNewURIContext"></a><span class='definition'>runInNewURIContext</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-162"></a><span class='definition'>runInNewURIContext</span> <span class='varid'>uri</span> <span class='varid'>f</span>-<a name="line-163"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>uri</span>-<a name="line-164"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span>-<a name="line-165"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-166"></a> <span class='keyglyph'>=</span> <span class='varid'>runInLocalURIContext</span>-<a name="line-167"></a> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-168"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"runInNewURIContext: new base URI "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span><span class='layout'>)</span>-<a name="line-169"></a> <span class='varid'>setBaseURI</span> <span class='varid'>uri</span>-<a name="line-170"></a> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-171"></a> <span class='layout'>)</span>-<a name="line-172"></a> <span class='layout'>)</span>-<a name="line-173"></a>-<a name="line-174"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-175"></a><span class='comment'>-- |</span>-<a name="line-176"></a><span class='comment'>-- guessEncoding uses encoding attribute and content</span>-<a name="line-177"></a><span class='comment'>-- to determine the encoding scheme.</span>-<a name="line-178"></a><span class='comment'>--</span>-<a name="line-179"></a><span class='comment'>-- it's assumed that an encoding spec has been tried to parse before guessing the encoding.</span>-<a name="line-180"></a><span class='comment'>--</span>-<a name="line-181"></a><span class='comment'>-- UTF-8 is the default encoding</span>-<a name="line-182"></a><span class='comment'>--</span>-<a name="line-183"></a><span class='comment'>-- other supported encodings are ISO-8859-1 (also known as ISO-Latin-1),</span>-<a name="line-184"></a><span class='comment'>-- US-ASCII, UTF-16 or ISO-10646-UCS-2, UTF-16BE, UTF-16LE</span>-<a name="line-185"></a>-<a name="line-186"></a><a name="guessDocEncoding"></a><span class='definition'>guessDocEncoding</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-187"></a><span class='definition'>guessDocEncoding</span>-<a name="line-188"></a> <span class='keyglyph'>=</span> <span class='varid'>addDocEncoding</span>-<a name="line-189"></a> <span class='varop'>`whenM`</span> <span class='varid'>isRoot</span>-<a name="line-190"></a> <span class='keyword'>where</span>-<a name="line-191"></a> <span class='varid'>addDocEncoding</span> <span class='varid'>n'</span>-<a name="line-192"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-193"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span> <span class='str'>"guessDocEncoding: encoding is "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>guess</span><span class='layout'>)</span>-<a name="line-194"></a> <span class='layout'>(</span> <span class='varid'>encFilter</span> <span class='layout'>(</span><span class='varid'>getDecodingFct</span> <span class='varid'>guess</span><span class='layout'>)</span>-<a name="line-195"></a> <span class='varop'>.>></span>-<a name="line-196"></a> <span class='varid'>issueError</span>-<a name="line-197"></a> <span class='varop'>.>></span>-<a name="line-198"></a> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>addAttr</span> <span class='varid'>transferEncoding</span> <span class='varid'>guess</span><span class='layout'>)</span> <span class='layout'>)</span> <span class='varid'>n'</span>-<a name="line-199"></a> <span class='keyword'>where</span>-<a name="line-200"></a> <span class='varid'>guess</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-201"></a> <span class='varid'>guess</span> <span class='keyglyph'>=</span> <span class='varid'>head</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span>-<a name="line-202"></a> <span class='varop'>$</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>guessEncoding</span> <span class='varop'>.</span> <span class='varid'>showXText</span> <span class='varop'>.</span> <span class='varid'>getChildren</span><span class='layout'>)</span> <span class='varid'>n'</span>-<a name="line-203"></a> <span class='layout'>,</span> <span class='varid'>valueOf</span> <span class='varid'>transferEncoding</span> <span class='varid'>n'</span>-<a name="line-204"></a> <span class='layout'>,</span> <span class='varid'>valueOf</span> <span class='varid'>a_encoding</span> <span class='varid'>n'</span>-<a name="line-205"></a> <span class='layout'>,</span> <span class='varid'>utf8</span>-<a name="line-206"></a> <span class='keyglyph'>]</span>-<a name="line-207"></a> <span class='varid'>encFilter</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>fct</span><span class='layout'>)</span>-<a name="line-208"></a> <span class='keyglyph'>=</span> <span class='varid'>decodeDoc</span> <span class='varid'>fct</span>-<a name="line-209"></a>-<a name="line-210"></a> <span class='varid'>encFilter</span> <span class='conid'>Nothing</span>-<a name="line-211"></a> <span class='keyglyph'>=</span> <span class='varid'>addFatal</span> <span class='layout'>(</span><span class='str'>"encoding scheme not supported: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>guess</span><span class='layout'>)</span>-<a name="line-212"></a>-<a name="line-213"></a> <span class='varid'>decodeDoc</span> <span class='varid'>df</span> <span class='varid'>n''</span>-<a name="line-214"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>errs</span> <span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='layout'>(</span><span class='varid'>normalizeNL</span> <span class='varid'>res</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n''</span>-<a name="line-215"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>xtext</span> <span class='str'>""</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-216"></a> <span class='varop'>.>></span>-<a name="line-217"></a> <span class='layout'>(</span> <span class='varid'>issueDecodingErrs</span>-<a name="line-218"></a> <span class='varop'>+++>></span>-<a name="line-219"></a> <span class='varid'>addFatal</span> <span class='str'>"decoding errors detected"</span>-<a name="line-220"></a> <span class='layout'>)</span>-<a name="line-221"></a> <span class='layout'>)</span> <span class='varid'>n''</span>-<a name="line-222"></a> <span class='keyword'>where</span>-<a name="line-223"></a> <span class='varid'>str</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>getChildren</span> <span class='varop'>$</span> <span class='varid'>n''</span>-<a name="line-224"></a> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>errs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>df</span> <span class='varid'>str</span>-<a name="line-225"></a> <span class='varid'>issueDecodingErrs</span> <span class='keyglyph'>=</span> <span class='varid'>catM</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>issueErr</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>guess</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>" encoding error"</span> <span class='varop'>++</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>errs</span>-<a name="line-226"></a>-<a name="line-227"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-228"></a>-<a name="line-229"></a><a name="getDefaultURI"></a><span class='definition'>getDefaultURI</span> <span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>String</span>-<a name="line-230"></a><span class='definition'>getDefaultURI</span>-<a name="line-231"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-232"></a> <span class='varid'>uri</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParam</span> <span class='varid'>transferDefaultURI</span>-<a name="line-233"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>uri</span>-<a name="line-234"></a> <span class='keyword'>then</span> <span class='keyword'>do</span>-<a name="line-235"></a> <span class='varid'>setDefaultURI</span>-<a name="line-236"></a> <span class='varid'>getDefaultURI</span>-<a name="line-237"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varid'>uri</span>-<a name="line-238"></a>-<a name="line-239"></a><span class='comment'>-- |</span>-<a name="line-240"></a><span class='comment'>-- set the base URI, all other URIs are handled relative to this base URI</span>-<a name="line-241"></a><span class='comment'>--</span>-<a name="line-242"></a><span class='comment'>-- the default base URI is @file:\/\/\/\<current-working-dir\>\/@</span>-<a name="line-243"></a><span class='comment'>--</span>-<a name="line-244"></a><span class='comment'>-- see also : 'getBaseURI'</span>-<a name="line-245"></a>-<a name="line-246"></a><a name="setBaseURI"></a><span class='definition'>setBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>()</span>-<a name="line-247"></a><span class='definition'>setBaseURI</span> <span class='varid'>str</span>-<a name="line-248"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-249"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"setBaseURI: new base URI: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>str</span><span class='layout'>)</span>-<a name="line-250"></a> <span class='varid'>setSysParam</span> <span class='varid'>transferURI</span> <span class='varid'>str</span>-<a name="line-251"></a>-<a name="line-252"></a><span class='comment'>-- |</span>-<a name="line-253"></a><span class='comment'>-- read the current base URI</span>-<a name="line-254"></a><span class='comment'>--</span>-<a name="line-255"></a><span class='comment'>-- see also : 'setBaseURI'</span>-<a name="line-256"></a>-<a name="line-257"></a><a name="getBaseURI"></a><span class='definition'>getBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>String</span>-<a name="line-258"></a><span class='definition'>getBaseURI</span>-<a name="line-259"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-260"></a> <span class='varid'>uri</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParam</span> <span class='varid'>transferURI</span>-<a name="line-261"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>uri</span>-<a name="line-262"></a> <span class='keyword'>then</span> <span class='keyword'>do</span>-<a name="line-263"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>getDefaultURI</span>-<a name="line-264"></a> <span class='varid'>setBaseURI</span> <span class='varid'>res</span>-<a name="line-265"></a> <span class='varid'>getBaseURI</span>-<a name="line-266"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varid'>uri</span>-<a name="line-267"></a>-<a name="line-268"></a><span class='comment'>-- |</span>-<a name="line-269"></a><span class='comment'>-- transform an URI into an absolut URI using the current base URI</span>-<a name="line-270"></a><span class='comment'>--</span>-<a name="line-271"></a><span class='comment'>--</span>-<a name="line-272"></a><span class='comment'>-- * 1.parameter uri : the URI as string</span>-<a name="line-273"></a><span class='comment'>--</span>-<a name="line-274"></a><span class='comment'>--</span>-<a name="line-275"></a><span class='comment'>-- - returns : the absolut URI as string or \"\" in case of an error</span>-<a name="line-276"></a>-<a name="line-277"></a><a name="getAbsolutURI"></a><span class='definition'>getAbsolutURI</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>String</span>-<a name="line-278"></a><span class='definition'>getAbsolutURI</span> <span class='varid'>uri</span>-<a name="line-279"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-280"></a> <span class='varid'>baseUri</span> <span class='keyglyph'><-</span> <span class='varid'>getBaseURI</span>-<a name="line-281"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>expandURI</span> <span class='varid'>uri</span> <span class='varid'>baseUri</span>-<a name="line-282"></a>-<a name="line-283"></a><a name="expandURI"></a><span class='definition'>expandURI</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-284"></a><span class='definition'>expandURI</span> <span class='varid'>uri</span> <span class='varid'>base</span>-<a name="line-285"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>""</span> <span class='varop'>$</span> <span class='varid'>expand</span>-<a name="line-286"></a> <span class='keyword'>where</span>-<a name="line-287"></a> <span class='varid'>expand</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-288"></a> <span class='varid'>base'</span> <span class='keyglyph'><-</span> <span class='varid'>parseURIReference</span> <span class='varid'>base</span>-<a name="line-289"></a> <span class='varid'>uri'</span> <span class='keyglyph'><-</span> <span class='varid'>parseURIReference</span> <span class='varid'>uri</span>-<a name="line-290"></a> <span class='varid'>abs'</span> <span class='keyglyph'><-</span> <span class='varid'>relativeTo</span> <span class='varid'>uri'</span> <span class='varid'>base'</span>-<a name="line-291"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>show</span> <span class='varid'>abs'</span>-<a name="line-292"></a>-<a name="line-293"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-294"></a>-<a name="line-295"></a><a name="setStandAloneFilter"></a><span class='definition'>setStandAloneFilter</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-296"></a><span class='definition'>setStandAloneFilter</span>-<a name="line-297"></a> <span class='keyglyph'>=</span> <span class='varid'>performAction</span> <span class='varid'>setStandAlone</span>-<a name="line-298"></a> <span class='keyword'>where</span>-<a name="line-299"></a> <span class='varid'>setStandAlone</span> <span class='varid'>t</span>-<a name="line-300"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-301"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>standalone</span>-<a name="line-302"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='conid'>()</span>-<a name="line-303"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>-<a name="line-304"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"setStandAloneFilter: standalone="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>standaloneVal</span><span class='layout'>)</span>-<a name="line-305"></a> <span class='varid'>setSysParam</span> <span class='varid'>a_standalone</span> <span class='varid'>standaloneVal</span>-<a name="line-306"></a> <span class='keyword'>where</span>-<a name="line-307"></a> <span class='varid'>standalone</span> <span class='keyglyph'>=</span> <span class='varid'>getValue</span> <span class='varid'>a_standalone</span> <span class='varid'>t</span>-<a name="line-308"></a> <span class='varid'>standaloneVal</span> <span class='keyglyph'>=</span> <span class='varid'>showXText</span> <span class='varid'>standalone</span>-<a name="line-309"></a>-<a name="line-310"></a><span class='comment'>-- |</span>-<a name="line-311"></a><span class='comment'>-- predicate for testing the standalone document attribute</span>-<a name="line-312"></a>-<a name="line-313"></a><a name="isStandaloneDocument"></a><span class='definition'>isStandaloneDocument</span> <span class='keyglyph'>::</span> <span class='conid'>XState</span> <span class='varid'>state</span> <span class='conid'>Bool</span>-<a name="line-314"></a><span class='definition'>isStandaloneDocument</span>-<a name="line-315"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-316"></a> <span class='varid'>val</span> <span class='keyglyph'><-</span> <span class='varid'>getSysParam</span> <span class='varid'>a_standalone</span>-<a name="line-317"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>val</span> <span class='varop'>==</span> <span class='str'>"yes"</span><span class='layout'>)</span>-<a name="line-318"></a>-<a name="line-319"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-320"></a>-<a name="line-321"></a><span class='comment'>-- |</span>-<a name="line-322"></a><span class='comment'>-- the hard io operations</span>-<a name="line-323"></a><span class='comment'>--</span>-<a name="line-324"></a><span class='comment'>-- for reading a file or accessing a document via http</span>-<a name="line-325"></a><span class='comment'>-- input must be a root node with a @source@ attribute specifying the URI</span>-<a name="line-326"></a>-<a name="line-327"></a><a name="getUrlContents"></a><span class='definition'>getUrlContents</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-328"></a><span class='definition'>getUrlContents</span>-<a name="line-329"></a> <span class='keyglyph'>=</span> <span class='varid'>getCont</span>-<a name="line-330"></a> <span class='varop'>`whenM`</span> <span class='varid'>isRoot</span>-<a name="line-331"></a> <span class='keyword'>where</span>-<a name="line-332"></a> <span class='varid'>getCont</span> <span class='varid'>n'</span>-<a name="line-333"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-334"></a> <span class='varid'>trace</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"getUrlContent: reading "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span><span class='layout'>)</span>-<a name="line-335"></a> <span class='varid'>uri</span> <span class='keyglyph'><-</span> <span class='varid'>getAbsolutURI</span> <span class='varid'>src</span>-<a name="line-336"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>uri</span>-<a name="line-337"></a> <span class='keyword'>then</span> <span class='varid'>urlErr</span> <span class='layout'>(</span> <span class='str'>"illegal URI for input: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='layout'>)</span>-<a name="line-338"></a> <span class='keyword'>else</span> <span class='keyword'>let</span>-<a name="line-339"></a> <span class='varid'>uri'</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>parseURIReference</span> <span class='varid'>uri</span>-<a name="line-340"></a> <span class='varid'>proto</span> <span class='keyglyph'>=</span> <span class='varid'>init</span> <span class='varop'>.</span> <span class='varid'>uriScheme</span> <span class='varop'>$</span> <span class='varid'>uri'</span>-<a name="line-341"></a> <span class='varid'>handler</span> <span class='keyglyph'>=</span> <span class='varid'>getProtocolHandler</span> <span class='varid'>proto</span>-<a name="line-342"></a> <span class='keyword'>in</span>-<a name="line-343"></a> <span class='layout'>(</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>addAttr</span> <span class='varid'>transferProtocol</span> <span class='varid'>proto</span>-<a name="line-344"></a> <span class='varop'>.></span>-<a name="line-345"></a> <span class='varid'>addAttr</span> <span class='varid'>transferURI</span> <span class='varid'>uri</span>-<a name="line-346"></a> <span class='layout'>)</span>-<a name="line-347"></a> <span class='varop'>.>></span>-<a name="line-348"></a> <span class='varid'>handler</span> <span class='varid'>uri'</span>-<a name="line-349"></a> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>n'</span>-<a name="line-350"></a> <span class='keyword'>where</span>-<a name="line-351"></a> <span class='varid'>src</span> <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='varid'>a_source</span> <span class='varid'>n'</span>-<a name="line-352"></a> <span class='varid'>urlErr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>addFatal</span> <span class='varid'>msg</span> <span class='varid'>n'</span>-<a name="line-353"></a>-<a name="line-354"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-355"></a>-<a name="line-356"></a><span class='comment'>-- |</span>-<a name="line-357"></a><span class='comment'>-- compute the length of the data for a document read previously</span>-<a name="line-358"></a><span class='comment'>-- by a call of 'getUrlContents. The result is stored as an attribute</span>-<a name="line-359"></a><span class='comment'>-- value in the document root node. the attribute name is 'a_contentLength'</span>-<a name="line-360"></a>-<a name="line-361"></a><a name="getContentLength"></a><span class='definition'>getContentLength</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-362"></a><span class='definition'>getContentLength</span>-<a name="line-363"></a> <span class='keyglyph'>=</span> <span class='varid'>addAttrl</span> <span class='varid'>contentLengthAttr</span>-<a name="line-364"></a> <span class='varop'>`when`</span> <span class='varid'>isRoot</span>-<a name="line-365"></a> <span class='keyword'>where</span>-<a name="line-366"></a> <span class='varid'>http_contentLength</span> <span class='keyglyph'>=</span> <span class='varid'>httpPrefix</span> <span class='varop'>++</span> <span class='str'>"Content-Length"</span>-<a name="line-367"></a>-<a name="line-368"></a> <span class='varid'>contentLengthAttr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-369"></a> <span class='varid'>contentLengthAttr</span> <span class='varid'>t</span>-<a name="line-370"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>hasAttr</span> <span class='varid'>a_contentLength</span>-<a name="line-371"></a> <span class='conop'>:-></span> <span class='varid'>none</span>-<a name="line-372"></a> <span class='layout'>,</span> <span class='varid'>hasAttr</span> <span class='varid'>http_contentLength</span>-<a name="line-373"></a> <span class='conop'>:-></span> <span class='varid'>mkXAttr</span> <span class='varid'>a_contentLength</span> <span class='layout'>(</span><span class='varid'>getValue</span> <span class='varid'>http_contentLength</span><span class='layout'>)</span>-<a name="line-374"></a> <span class='layout'>,</span> <span class='varid'>this</span>-<a name="line-375"></a> <span class='conop'>:-></span> <span class='varid'>mkXAttr</span> <span class='varid'>a_contentLength</span> <span class='varid'>getLength</span>-<a name="line-376"></a> <span class='keyglyph'>]</span> <span class='varid'>t</span>-<a name="line-377"></a>-<a name="line-378"></a> <span class='varid'>getLength</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-379"></a> <span class='varid'>getLength</span> <span class='varid'>t</span>-<a name="line-380"></a> <span class='keyglyph'>=</span> <span class='varid'>xtext</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>length</span> <span class='varop'>.</span> <span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>getChildren</span> <span class='varop'>$</span> <span class='varid'>t</span><span class='layout'>)</span>-<a name="line-381"></a>-<a name="line-382"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-XmlOutput.html
@@ -1,176 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- output functions</span>-<a name="line-3"></a><span class='comment'>-- implemented as filer</span>-<a name="line-4"></a>-<a name="line-5"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>-<a name="line-6"></a> <span class='layout'>(</span> <span class='varid'>putXmlDoc</span>-<a name="line-7"></a> <span class='layout'>,</span> <span class='varid'>putXmlDocToFile</span>-<a name="line-8"></a> <span class='layout'>,</span> <span class='varid'>putXmlTree</span> <span class='comment'>-- for trace output</span>-<a name="line-9"></a> <span class='layout'>,</span> <span class='varid'>putXmlSource</span> <span class='comment'>-- " " "</span>-<a name="line-10"></a>-<a name="line-11"></a> <span class='layout'>,</span> <span class='varid'>hPutXmlDoc</span>-<a name="line-12"></a> <span class='layout'>,</span> <span class='varid'>hPutXmlTree</span>-<a name="line-13"></a> <span class='layout'>,</span> <span class='varid'>hPutXmlSource</span>-<a name="line-14"></a>-<a name="line-15"></a> <span class='layout'>,</span> <span class='varid'>traceF</span>-<a name="line-16"></a> <span class='layout'>,</span> <span class='varid'>traceMsg</span>-<a name="line-17"></a> <span class='layout'>,</span> <span class='varid'>traceTree</span>-<a name="line-18"></a> <span class='layout'>,</span> <span class='varid'>traceSource</span>-<a name="line-19"></a> <span class='layout'>)</span>-<a name="line-20"></a>-<a name="line-21"></a><span class='keyword'>where</span>-<a name="line-22"></a>-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-24"></a>-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-26"></a>-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span> <span class='layout'>(</span> <span class='varid'>indentDoc</span>-<a name="line-28"></a> <span class='layout'>,</span> <span class='varid'>numberLinesInXmlDoc</span>-<a name="line-29"></a> <span class='layout'>,</span> <span class='varid'>treeRepOfXmlDoc</span>-<a name="line-30"></a> <span class='layout'>,</span> <span class='varid'>addHeadlineToXmlDoc</span>-<a name="line-31"></a> <span class='layout'>)</span>-<a name="line-32"></a>-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>-<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>Error</span>-<a name="line-35"></a>-<a name="line-36"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-37"></a>-<a name="line-38"></a><span class='comment'>-- |</span>-<a name="line-39"></a><span class='comment'>-- document output for standard output</span>-<a name="line-40"></a><span class='comment'>--</span>-<a name="line-41"></a><span class='comment'>-- see also : 'hPutXmlDoc'</span>-<a name="line-42"></a>-<a name="line-43"></a><a name="putXmlDoc"></a><span class='definition'>putXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-44"></a><span class='definition'>putXmlDoc</span> <span class='keyglyph'>=</span> <span class='varid'>hPutXmlDoc</span> <span class='varid'>stdout</span>-<a name="line-45"></a>-<a name="line-46"></a><span class='comment'>-- |</span>-<a name="line-47"></a><span class='comment'>-- document output for arbitrary files.</span>-<a name="line-48"></a><span class='comment'>--</span>-<a name="line-49"></a><span class='comment'>-- Result is the input document</span>-<a name="line-50"></a>-<a name="line-51"></a><a name="hPutXmlDoc"></a><span class='definition'>hPutXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>Handle</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-52"></a><span class='definition'>hPutXmlDoc</span> <span class='varid'>handle</span> <span class='varid'>t</span>-<a name="line-53"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-54"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>try</span> <span class='layout'>(</span><span class='varid'>hPutStr</span> <span class='varid'>handle</span> <span class='varid'>content</span><span class='layout'>)</span>-<a name="line-55"></a> <span class='keyword'>case</span> <span class='varid'>res</span> <span class='keyword'>of</span>-<a name="line-56"></a> <span class='conid'>Left</span> <span class='varid'>ioerr</span>-<a name="line-57"></a> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>ioerr</span><span class='layout'>)</span>-<a name="line-58"></a> <span class='varop'>+++>></span>-<a name="line-59"></a> <span class='varid'>thisM</span>-<a name="line-60"></a> <span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-61"></a> <span class='conid'>Right</span> <span class='keyword'>_</span>-<a name="line-62"></a> <span class='keyglyph'>-></span> <span class='varid'>thisM</span> <span class='varid'>t</span>-<a name="line-63"></a>-<a name="line-64"></a> <span class='keyword'>where</span>-<a name="line-65"></a> <span class='varid'>content</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='varop'>.</span> <span class='varid'>getChildren</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-66"></a>-<a name="line-67"></a><span class='comment'>-- |</span>-<a name="line-68"></a><span class='comment'>-- document output on a given file name</span>-<a name="line-69"></a><span class='comment'>--</span>-<a name="line-70"></a><span class='comment'>-- Result is the input document</span>-<a name="line-71"></a><span class='comment'>--</span>-<a name="line-72"></a><span class='comment'>-- see also : 'hPutXmlDoc', 'putXmlDoc'</span>-<a name="line-73"></a>-<a name="line-74"></a><a name="putXmlDocToFile"></a><span class='definition'>putXmlDocToFile</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-75"></a><span class='definition'>putXmlDocToFile</span> <span class='varid'>fn</span> <span class='varid'>t</span>-<a name="line-76"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-77"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>try</span> <span class='layout'>(</span><span class='varid'>openFile</span> <span class='varid'>fn</span> <span class='conid'>WriteMode</span><span class='layout'>)</span>-<a name="line-78"></a> <span class='keyword'>case</span> <span class='varid'>res</span> <span class='keyword'>of</span>-<a name="line-79"></a> <span class='conid'>Left</span> <span class='varid'>ioerr</span>-<a name="line-80"></a> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>ioerr</span><span class='layout'>)</span>-<a name="line-81"></a> <span class='varop'>+++>></span>-<a name="line-82"></a> <span class='varid'>thisM</span>-<a name="line-83"></a> <span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-84"></a> <span class='conid'>Right</span> <span class='varid'>h</span>-<a name="line-85"></a> <span class='keyglyph'>-></span> <span class='keyword'>do</span>-<a name="line-86"></a> <span class='varid'>t'</span> <span class='keyglyph'><-</span> <span class='varid'>hPutXmlDoc</span> <span class='varid'>h</span> <span class='varid'>t</span>-<a name="line-87"></a> <span class='varid'>io</span> <span class='varop'>$</span> <span class='varid'>try</span> <span class='layout'>(</span><span class='varid'>hClose</span> <span class='varid'>h</span><span class='layout'>)</span>-<a name="line-88"></a> <span class='varid'>trace</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"document written to file: "</span> <span class='varop'>++</span> <span class='varid'>fn</span><span class='layout'>)</span>-<a name="line-89"></a> <span class='varid'>return</span> <span class='varid'>t'</span>-<a name="line-90"></a>-<a name="line-91"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-92"></a>-<a name="line-93"></a><span class='comment'>-- |</span>-<a name="line-94"></a><span class='comment'>-- output of tree representation for trace</span>-<a name="line-95"></a>-<a name="line-96"></a><a name="hPutXmlTree"></a><span class='definition'>hPutXmlTree</span> <span class='keyglyph'>::</span> <span class='conid'>Handle</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-97"></a><span class='definition'>hPutXmlTree</span> <span class='varid'>handle</span>-<a name="line-98"></a> <span class='keyglyph'>=</span> <span class='varid'>performAction</span>-<a name="line-99"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>treeRepOfXmlDoc</span>-<a name="line-100"></a> <span class='varop'>.></span>-<a name="line-101"></a> <span class='varid'>addHeadlineToXmlDoc</span>-<a name="line-102"></a> <span class='layout'>)</span>-<a name="line-103"></a> <span class='varop'>.>></span>-<a name="line-104"></a> <span class='varid'>hPutXmlDoc</span> <span class='varid'>handle</span>-<a name="line-105"></a> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-106"></a> <span class='layout'>)</span>-<a name="line-107"></a>-<a name="line-108"></a><a name="putXmlTree"></a><span class='definition'>putXmlTree</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-109"></a><span class='definition'>putXmlTree</span> <span class='keyglyph'>=</span> <span class='varid'>hPutXmlTree</span> <span class='varid'>stdout</span>-<a name="line-110"></a>-<a name="line-111"></a><span class='comment'>-- |</span>-<a name="line-112"></a><span class='comment'>-- output of text representation for trace</span>-<a name="line-113"></a>-<a name="line-114"></a><a name="hPutXmlSource"></a><span class='definition'>hPutXmlSource</span> <span class='keyglyph'>::</span> <span class='conid'>Handle</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-115"></a><span class='definition'>hPutXmlSource</span> <span class='varid'>handle</span>-<a name="line-116"></a> <span class='keyglyph'>=</span> <span class='varid'>performAction</span>-<a name="line-117"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>liftMf</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>rootTag</span>-<a name="line-118"></a> <span class='keyglyph'>[</span> <span class='varid'>sattr</span> <span class='varid'>a_source</span> <span class='str'>"internal tree"</span> <span class='keyglyph'>]</span>-<a name="line-119"></a> <span class='keyglyph'>[</span> <span class='varid'>this</span> <span class='keyglyph'>]</span>-<a name="line-120"></a> <span class='varop'>`whenNot`</span> <span class='varid'>isRoot</span>-<a name="line-121"></a> <span class='layout'>)</span>-<a name="line-122"></a> <span class='varop'>.></span>-<a name="line-123"></a> <span class='varid'>indentDoc</span>-<a name="line-124"></a> <span class='varop'>.></span>-<a name="line-125"></a> <span class='varid'>numberLinesInXmlDoc</span>-<a name="line-126"></a> <span class='varop'>.></span>-<a name="line-127"></a> <span class='varid'>addHeadlineToXmlDoc</span>-<a name="line-128"></a> <span class='layout'>)</span>-<a name="line-129"></a> <span class='varop'>.>></span>-<a name="line-130"></a> <span class='varid'>hPutXmlDoc</span> <span class='varid'>handle</span>-<a name="line-131"></a> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-132"></a> <span class='layout'>)</span>-<a name="line-133"></a>-<a name="line-134"></a><a name="putXmlSource"></a><span class='definition'>putXmlSource</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-135"></a><span class='definition'>putXmlSource</span> <span class='keyglyph'>=</span> <span class='varid'>hPutXmlSource</span> <span class='varid'>stdout</span>-<a name="line-136"></a>-<a name="line-137"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-138"></a>-<a name="line-139"></a><span class='comment'>-- trace filter for inserting trace operations</span>-<a name="line-140"></a><span class='comment'>-- into a filter sequence</span>-<a name="line-141"></a><span class='comment'>--</span>-<a name="line-142"></a><span class='comment'>-- * 1.parameter level : like in 'traceCmd'</span>-<a name="line-143"></a><span class='comment'>--</span>-<a name="line-144"></a><span class='comment'>-- - 2.parameter cmd : the output filter, e.g. putXmlTree or putXmlSource</span>-<a name="line-145"></a><span class='comment'>--</span>-<a name="line-146"></a><span class='comment'>-- - 3.parameter : the tree</span>-<a name="line-147"></a><span class='comment'>--</span>-<a name="line-148"></a><span class='comment'>-- - returns: the tree</span>-<a name="line-149"></a>-<a name="line-150"></a><a name="traceF"></a><span class='definition'>traceF</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-151"></a><span class='definition'>traceF</span> <span class='varid'>level</span> <span class='varid'>cmd</span>-<a name="line-152"></a> <span class='keyglyph'>=</span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='varid'>traceCmd</span> <span class='varid'>level</span> <span class='layout'>(</span><span class='varid'>cmd</span> <span class='varid'>t</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-153"></a>-<a name="line-154"></a><a name="traceMsg"></a><span class='definition'>traceMsg</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-155"></a><span class='definition'>traceMsg</span> <span class='varid'>level</span> <span class='varid'>msg</span>-<a name="line-156"></a> <span class='keyglyph'>=</span> <span class='varid'>performAction</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>trace</span> <span class='varid'>level</span> <span class='varid'>msg</span><span class='layout'>)</span>-<a name="line-157"></a>-<a name="line-158"></a><a name="traceTree"></a><span class='definition'>traceTree</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-159"></a><span class='definition'>traceTree</span>-<a name="line-160"></a> <span class='keyglyph'>=</span> <span class='varid'>traceF</span> <span class='num'>4</span> <span class='layout'>(</span><span class='varid'>hPutXmlTree</span> <span class='varid'>stderr</span><span class='layout'>)</span>-<a name="line-161"></a>-<a name="line-162"></a><a name="traceSource"></a><span class='definition'>traceSource</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-163"></a><span class='definition'>traceSource</span>-<a name="line-164"></a> <span class='keyglyph'>=</span> <span class='varid'>traceF</span> <span class='num'>3</span> <span class='layout'>(</span><span class='varid'>hPutXmlSource</span> <span class='varid'>stderr</span><span class='layout'>)</span>-<a name="line-165"></a>-<a name="line-166"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser-XmlParser.html
@@ -1,91 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- Xml Parser: the main parse filter </span>-<a name="line-3"></a>-<a name="line-4"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParser</span>-<a name="line-5"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParsec</span>-<a name="line-6"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlTokenParser</span>-<a name="line-7"></a> <span class='layout'>,</span> <span class='varid'>parseXmlDoc</span>-<a name="line-8"></a> <span class='layout'>,</span> <span class='varid'>substXmlEntities</span>-<a name="line-9"></a> <span class='layout'>)</span>-<a name="line-10"></a><span class='keyword'>where</span>-<a name="line-11"></a>-<a name="line-12"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-14"></a>-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlTokenParser</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlEntities</span>-<a name="line-18"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParsec</span>-<a name="line-19"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>-<a name="line-20"></a> <span class='layout'>(</span> <span class='varid'>traceTree</span>-<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>traceSource</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>traceMsg</span>-<a name="line-23"></a> <span class='layout'>)</span>-<a name="line-24"></a>-<a name="line-25"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-26"></a>-<a name="line-27"></a><span class='comment'>-- |</span>-<a name="line-28"></a><span class='comment'>-- The monadic parser for a whole document.</span>-<a name="line-29"></a><span class='comment'>-- input must be a root node with a single text child.</span>-<a name="line-30"></a><span class='comment'>-- Error messages are issued and global error state is set.</span>-<a name="line-31"></a>-<a name="line-32"></a><a name="parseXmlDoc"></a><span class='definition'>parseXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>a</span>-<a name="line-33"></a><span class='definition'>parseXmlDoc</span>-<a name="line-34"></a> <span class='keyglyph'>=</span> <span class='varid'>parseDoc</span>-<a name="line-35"></a> <span class='varop'>`whenM`</span> <span class='layout'>(</span> <span class='varid'>isRoot</span> <span class='varop'>.></span> <span class='varid'>getChildren</span> <span class='varop'>.></span> <span class='varid'>isXText</span> <span class='layout'>)</span>-<a name="line-36"></a> <span class='keyword'>where</span>-<a name="line-37"></a> <span class='varid'>parseDoc</span> <span class='varid'>t</span>-<a name="line-38"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"parseXmlDoc: parse XML document "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>loc</span><span class='layout'>)</span>-<a name="line-39"></a> <span class='varop'>.>></span>-<a name="line-40"></a> <span class='varid'>parser</span>-<a name="line-41"></a> <span class='varop'>.>></span>-<a name="line-42"></a> <span class='varid'>liftMf</span> <span class='varid'>checkRes</span>-<a name="line-43"></a> <span class='varop'>.>></span>-<a name="line-44"></a> <span class='varid'>traceTree</span>-<a name="line-45"></a> <span class='varop'>.>></span>-<a name="line-46"></a> <span class='varid'>traceSource</span>-<a name="line-47"></a> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-48"></a> <span class='keyword'>where</span>-<a name="line-49"></a> <span class='varid'>loc</span> <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='varid'>a_source</span> <span class='varid'>t</span> <span class='comment'>-- document name</span>-<a name="line-50"></a> <span class='varid'>checkRes</span>-<a name="line-51"></a> <span class='keyglyph'>=</span> <span class='varid'>setStatus</span> <span class='varid'>c_err</span> <span class='layout'>(</span><span class='str'>"parsing XML source "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>loc</span><span class='layout'>)</span>-<a name="line-52"></a> <span class='varop'>`whenNot`</span>-<a name="line-53"></a> <span class='varid'>getChildren</span>-<a name="line-54"></a> <span class='varid'>parser</span>-<a name="line-55"></a> <span class='keyglyph'>=</span> <span class='varid'>processChildrenM</span> <span class='layout'>(</span><span class='varid'>liftF</span> <span class='layout'>(</span><span class='varid'>parseXmlText</span> <span class='varid'>document'</span> <span class='varid'>loc</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-56"></a>-<a name="line-57"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-58"></a>-<a name="line-59"></a><span class='comment'>-- |</span>-<a name="line-60"></a><span class='comment'>-- Filter for substitution of all occurences of the predefined XML entites quot, amp, lt, gt, apos</span>-<a name="line-61"></a><span class='comment'>-- by equivalent character references</span>-<a name="line-62"></a>-<a name="line-63"></a><a name="substXmlEntities"></a><span class='definition'>substXmlEntities</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-64"></a><span class='definition'>substXmlEntities</span>-<a name="line-65"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span>-<a name="line-66"></a> <span class='keyglyph'>[</span> <span class='varid'>isXEntityRef</span> <span class='conop'>:-></span> <span class='varid'>substEntity</span>-<a name="line-67"></a> <span class='layout'>,</span> <span class='varid'>isXTag</span> <span class='conop'>:-></span> <span class='varid'>processAttr</span> <span class='layout'>(</span><span class='varid'>processChildren</span> <span class='varid'>substXmlEntities</span><span class='layout'>)</span>-<a name="line-68"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>-<a name="line-69"></a> <span class='keyglyph'>]</span>-<a name="line-70"></a> <span class='keyword'>where</span>-<a name="line-71"></a> <span class='varid'>substEntity</span> <span class='varid'>t'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XEntityRef</span> <span class='varid'>en</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-72"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>en</span> <span class='varid'>xmlEntities</span><span class='layout'>)</span> <span class='keyword'>of</span>-<a name="line-73"></a> <span class='conid'>Just</span> <span class='varid'>i</span>-<a name="line-74"></a> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>mkXCharRefTree</span> <span class='varid'>i</span><span class='keyglyph'>]</span>-<a name="line-75"></a> <span class='conid'>Nothing</span>-<a name="line-76"></a> <span class='keyglyph'>-></span> <span class='varid'>this</span> <span class='varid'>t'</span>-<a name="line-77"></a>-<a name="line-78"></a> <span class='varid'>substEntity</span> <span class='keyword'>_</span> <span class='comment'>-- just for preventing ghc warning</span>-<a name="line-79"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='str'>"substXmlEntities: illegal argument"</span>-<a name="line-80"></a>-<a name="line-81"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Parser.html
@@ -1,45 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- Simple parse functions.</span>-<a name="line-3"></a><span class='comment'>--</span>-<a name="line-4"></a><span class='comment'>-- the "main" building blocks for an application.</span>-<a name="line-5"></a><span class='comment'>-- this module exports all important functions for parsing, validating and transforming XML.</span>-<a name="line-6"></a><span class='comment'>-- it also exports all basic datatypes and functions of the toolbox.</span>-<a name="line-7"></a><span class='comment'>--</span>-<a name="line-8"></a>-<a name="line-9"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span>-<a name="line-10"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span>-<a name="line-11"></a>-<a name="line-12"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParser</span>-<a name="line-13"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParser</span>-<a name="line-14"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>-<a name="line-15"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>-<a name="line-16"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DTDProcessing</span>-<a name="line-17"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>MainFunctions</span>-<a name="line-18"></a>-<a name="line-19"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>Validation</span>-<a name="line-20"></a> <span class='layout'>)</span>-<a name="line-21"></a><span class='keyword'>where</span>-<a name="line-22"></a>-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span>-<a name="line-24"></a>-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParser</span>-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParser</span>-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlInput</span>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>DTDProcessing</span>-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>MainFunctions</span>-<a name="line-31"></a>-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>Validation</span>-<a name="line-33"></a>-<a name="line-34"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-35"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Validator-AttributeValueValidation.html
@@ -1,367 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- This module provides functions for validating attributes.</span>-<a name="line-3"></a>-<a name="line-4"></a><span class='comment'>-- The main functions are:</span>-<a name="line-5"></a><span class='comment'>--</span>-<a name="line-6"></a><span class='comment'>-- - Check if the attribute value meets the lexical constraints of its type</span>-<a name="line-7"></a><span class='comment'>--</span>-<a name="line-8"></a><span class='comment'>-- - Normalization of an attribute value</span>-<a name="line-9"></a><span class='comment'>--</span>-<a name="line-10"></a>-<a name="line-11"></a><span class='comment'>-- Special namings in source code:</span>-<a name="line-12"></a><span class='comment'>--</span>-<a name="line-13"></a><span class='comment'>-- - nd - XDTD node</span>-<a name="line-14"></a><span class='comment'>--</span>-<a name="line-15"></a><span class='comment'>-- - n - XTag node</span>-<a name="line-16"></a><span class='comment'>--</span>-<a name="line-17"></a>-<a name="line-18"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>AttributeValueValidation</span>-<a name="line-19"></a> <span class='layout'>(</span> <span class='varid'>checkAttributeValue</span>-<a name="line-20"></a> <span class='layout'>,</span> <span class='varid'>normalizeAttributeValue</span>-<a name="line-21"></a> <span class='layout'>)</span>-<a name="line-22"></a><span class='keyword'>where</span>-<a name="line-23"></a>-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlParser</span>-<a name="line-25"></a> <span class='layout'>(</span> <span class='varid'>parseNMToken</span>-<a name="line-26"></a> <span class='layout'>,</span> <span class='varid'>parseName</span>-<a name="line-27"></a> <span class='layout'>)</span>-<a name="line-28"></a>-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>-<a name="line-31"></a>-<a name="line-32"></a><span class='comment'>-- |</span>-<a name="line-33"></a><span class='comment'>-- Checks if the attribute value meets the lexical constraints of its type.</span>-<a name="line-34"></a><span class='comment'>--</span>-<a name="line-35"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-36"></a><span class='comment'>--</span>-<a name="line-37"></a><span class='comment'>-- - 2.parameter attrDecl : the declaration of the attribute from the DTD</span>-<a name="line-38"></a><span class='comment'>--</span>-<a name="line-39"></a><span class='comment'>-- - returns : a function which takes an element (XTag or XDTD ATTLIST),</span>-<a name="line-40"></a><span class='comment'>-- checks if the attribute value meets the lexical constraints</span>-<a name="line-41"></a><span class='comment'>-- of its type and returns a list of errors</span>-<a name="line-42"></a>-<a name="line-43"></a><a name="checkAttributeValue"></a><span class='definition'>checkAttributeValue</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-44"></a><span class='definition'>checkAttributeValue</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='sel'>_al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-45"></a> <span class='keyglyph'>=</span> <span class='varid'>checkValue</span> <span class='varid'>attrType</span> <span class='varid'>dtdPart</span> <span class='varid'>normalizedVal</span> <span class='varid'>attrDecl</span> <span class='varid'>n</span>-<a name="line-46"></a> <span class='keyword'>where</span>-<a name="line-47"></a> <span class='varid'>attrType</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span>-<a name="line-48"></a> <span class='varid'>attrValue</span> <span class='keyglyph'>=</span> <span class='varid'>valueOf</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-49"></a> <span class='varid'>normalizedVal</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>attrDecl</span><span class='layout'>)</span> <span class='varid'>attrValue</span>-<a name="line-50"></a>-<a name="line-51"></a><span class='definition'>checkAttributeValue</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-52"></a> <span class='keyglyph'>=</span> <span class='varid'>checkValue</span> <span class='varid'>attrType</span> <span class='varid'>dtdPart</span> <span class='varid'>normalizedVal</span> <span class='varid'>attrDecl</span> <span class='varid'>n</span>-<a name="line-53"></a> <span class='keyword'>where</span>-<a name="line-54"></a> <span class='varid'>attrType</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span>-<a name="line-55"></a> <span class='varid'>attrValue</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_default</span> <span class='varid'>al'</span>-<a name="line-56"></a> <span class='varid'>normalizedVal</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>attrDecl</span><span class='layout'>)</span> <span class='varid'>attrValue</span>-<a name="line-57"></a>-<a name="line-58"></a><span class='definition'>checkAttributeValue</span> <span class='keyword'>_</span> <span class='varid'>nd</span> <span class='varid'>n</span>-<a name="line-59"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkAttributeValue: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-60"></a>-<a name="line-61"></a>-<a name="line-62"></a><span class='comment'>-- |</span>-<a name="line-63"></a><span class='comment'>-- Dispatches the attibute check by the attribute type.</span>-<a name="line-64"></a><span class='comment'>--</span>-<a name="line-65"></a><span class='comment'>-- * 1.parameter typ : the attribute type</span>-<a name="line-66"></a><span class='comment'>--</span>-<a name="line-67"></a><span class='comment'>-- - 2.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-68"></a><span class='comment'>--</span>-<a name="line-69"></a><span class='comment'>-- - 3.parameter attrValue : the normalized attribute value to be checked</span>-<a name="line-70"></a><span class='comment'>--</span>-<a name="line-71"></a><span class='comment'>-- - 4.parameter attrDecl : the declaration of the attribute from the DTD</span>-<a name="line-72"></a><span class='comment'>--</span>-<a name="line-73"></a><span class='comment'>-- - returns : a functions which takes an element (XTag or XDTD ATTLIST),</span>-<a name="line-74"></a><span class='comment'>-- checks if the attribute value meets the lexical constraints</span>-<a name="line-75"></a><span class='comment'>-- of its type and returns a list of errors</span>-<a name="line-76"></a>-<a name="line-77"></a><a name="checkValue"></a><span class='definition'>checkValue</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-78"></a><span class='definition'>checkValue</span> <span class='varid'>typ</span> <span class='varid'>dtdPart</span> <span class='varid'>attrValue</span> <span class='varid'>attrDecl</span>-<a name="line-79"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_cdata</span> <span class='keyglyph'>=</span> <span class='varid'>none</span>-<a name="line-80"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_enumeration</span> <span class='keyglyph'>=</span> <span class='varid'>checkValueEnumeration</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-81"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_entity</span> <span class='keyglyph'>=</span> <span class='varid'>checkValueEntity</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-82"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_entities</span> <span class='keyglyph'>=</span> <span class='varid'>checkValueEntities</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-83"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_id</span> <span class='keyglyph'>=</span> <span class='varid'>checkValueId</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-84"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_idref</span> <span class='keyglyph'>=</span> <span class='varid'>checkValueIdref</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-85"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_idrefs</span> <span class='keyglyph'>=</span> <span class='varid'>checkValueIdrefs</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-86"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_nmtoken</span> <span class='keyglyph'>=</span> <span class='varid'>checkValueNmtoken</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-87"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_nmtokens</span> <span class='keyglyph'>=</span> <span class='varid'>checkValueNmtokens</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-88"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_notation</span> <span class='keyglyph'>=</span> <span class='varid'>checkValueEnumeration</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-89"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"Attribute type "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>typ</span> <span class='varop'>++</span> <span class='str'>" unknown."</span><span class='layout'>)</span>-<a name="line-90"></a>-<a name="line-91"></a><span class='comment'>-- |</span>-<a name="line-92"></a><span class='comment'>-- Checks the value of Enumeration attribute types. (3.3.1 \/ p.27 in Spec)</span>-<a name="line-93"></a><span class='comment'>--</span>-<a name="line-94"></a><span class='comment'>-- * 1.parameter attrDecl : the declaration of the attribute from the DTD</span>-<a name="line-95"></a><span class='comment'>--</span>-<a name="line-96"></a><span class='comment'>-- - 2.parameter attrValue : the normalized attribute value to be checked</span>-<a name="line-97"></a>-<a name="line-98"></a><a name="checkValueEnumeration"></a><span class='definition'>checkValueEnumeration</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-99"></a><span class='definition'>checkValueEnumeration</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='varid'>attrValue</span>-<a name="line-100"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>attrValue</span> <span class='varop'>`elem`</span> <span class='varid'>enumVals</span>-<a name="line-101"></a> <span class='keyword'>then</span> <span class='varid'>none</span>-<a name="line-102"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" for element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span>-<a name="line-103"></a> <span class='str'>" must have a value from list "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enumVals</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span>-<a name="line-104"></a> <span class='keyword'>where</span>-<a name="line-105"></a> <span class='varid'>enumVals</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-106"></a> <span class='varid'>enumVals</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>getEnumVal</span><span class='layout'>)</span> <span class='varid'>cs</span>-<a name="line-107"></a>-<a name="line-108"></a> <span class='varid'>getEnumVal</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-109"></a> <span class='varid'>getEnumVal</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>-<a name="line-110"></a> <span class='varid'>getEnumVal</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-111"></a>-<a name="line-112"></a><span class='definition'>checkValueEnumeration</span> <span class='varid'>n</span> <span class='keyword'>_</span>-<a name="line-113"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValueEnumeration: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-114"></a>-<a name="line-115"></a>-<a name="line-116"></a><span class='comment'>-- |</span>-<a name="line-117"></a><span class='comment'>-- Checks the value of ENTITY attribute types. (3.3.1 \/ p.26 in Spec)</span>-<a name="line-118"></a><span class='comment'>--</span>-<a name="line-119"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node, to get the</span>-<a name="line-120"></a><span class='comment'>-- unparsed entity declarations</span>-<a name="line-121"></a><span class='comment'>--</span>-<a name="line-122"></a><span class='comment'>-- - 2.parameter attrDecl : the declaration of the attribute from the DTD</span>-<a name="line-123"></a><span class='comment'>--</span>-<a name="line-124"></a><span class='comment'>-- - 3.parameter attrValue : the normalized attribute value to be checked</span>-<a name="line-125"></a>-<a name="line-126"></a><a name="checkValueEntity"></a><span class='definition'>checkValueEntity</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-127"></a><span class='definition'>checkValueEntity</span> <span class='varid'>dtdPart</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>-<a name="line-128"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>attrValue</span> <span class='varop'>`elem`</span> <span class='varid'>upEntities</span>-<a name="line-129"></a> <span class='keyword'>then</span> <span class='varid'>none</span>-<a name="line-130"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Entity "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrValue</span> <span class='varop'>++</span> <span class='str'>" of attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span>-<a name="line-131"></a> <span class='str'>" for element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" is not unparsed. "</span> <span class='varop'>++</span>-<a name="line-132"></a> <span class='str'>"The following unparsed entities exist: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>upEntities</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span>-<a name="line-133"></a> <span class='keyword'>where</span>-<a name="line-134"></a> <span class='varid'>upEntities</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-135"></a> <span class='varid'>upEntities</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>getEnumVal</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>isUnparsedEntity</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span><span class='layout'>)</span>-<a name="line-136"></a>-<a name="line-137"></a> <span class='varid'>getEnumVal</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-138"></a> <span class='varid'>getEnumVal</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>-<a name="line-139"></a> <span class='varid'>getEnumVal</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-140"></a>-<a name="line-141"></a>-<a name="line-142"></a><span class='definition'>checkValueEntity</span> <span class='keyword'>_</span> <span class='varid'>n</span> <span class='keyword'>_</span>-<a name="line-143"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValueEntity: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-144"></a>-<a name="line-145"></a>-<a name="line-146"></a><span class='comment'>-- |</span>-<a name="line-147"></a><span class='comment'>-- Checks the value of ENTITIES attribute types. (3.3.1 \/ p.26 in Spec)</span>-<a name="line-148"></a><span class='comment'>--</span>-<a name="line-149"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node, to get the</span>-<a name="line-150"></a><span class='comment'>-- unparsed entity declarations</span>-<a name="line-151"></a><span class='comment'>--</span>-<a name="line-152"></a><span class='comment'>-- - 2.parameter attrDecl : the declaration of the attribute from the DTD</span>-<a name="line-153"></a><span class='comment'>--</span>-<a name="line-154"></a><span class='comment'>-- - 3.parameter attrValue : the normalized attribute value to be checked</span>-<a name="line-155"></a>-<a name="line-156"></a><a name="checkValueEntities"></a><span class='definition'>checkValueEntities</span> <span class='keyglyph'>::</span><span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-157"></a><span class='definition'>checkValueEntities</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>-<a name="line-158"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>valueList</span>-<a name="line-159"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" of element "</span> <span class='varop'>++</span>-<a name="line-160"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" must be one or more names."</span><span class='layout'>)</span>-<a name="line-161"></a> <span class='keyword'>else</span> <span class='varid'>cat</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>checkValueEntity</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span><span class='layout'>)</span> <span class='varid'>valueList</span><span class='layout'>)</span>-<a name="line-162"></a> <span class='keyword'>where</span>-<a name="line-163"></a> <span class='varid'>valueList</span> <span class='keyglyph'>=</span> <span class='varid'>words</span> <span class='varid'>attrValue</span>-<a name="line-164"></a>-<a name="line-165"></a><span class='definition'>checkValueEntities</span> <span class='keyword'>_</span> <span class='varid'>n</span> <span class='keyword'>_</span>-<a name="line-166"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValueEntities: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-167"></a>-<a name="line-168"></a>-<a name="line-169"></a><span class='comment'>-- |</span>-<a name="line-170"></a><span class='comment'>-- Checks the value of NMTOKEN attribute types. (3.3.1 \/ p.26 in Spec)</span>-<a name="line-171"></a><span class='comment'>--</span>-<a name="line-172"></a><span class='comment'>-- * 1.parameter attrDecl : the declaration of the attribute from the DTD</span>-<a name="line-173"></a><span class='comment'>--</span>-<a name="line-174"></a><span class='comment'>-- - 2.parameter attrValue : the normalized attribute value to be checked</span>-<a name="line-175"></a>-<a name="line-176"></a><a name="checkValueNmtoken"></a><span class='definition'>checkValueNmtoken</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-177"></a><span class='definition'>checkValueNmtoken</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>-<a name="line-178"></a> <span class='keyglyph'>=</span> <span class='varid'>checkNmtoken</span> <span class='varid'>parseRes</span>-<a name="line-179"></a> <span class='keyword'>where</span>-<a name="line-180"></a> <span class='varid'>parseRes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span>-<a name="line-181"></a> <span class='varid'>parseRes</span> <span class='keyglyph'>=</span> <span class='varid'>parseNMToken</span> <span class='str'>""</span> <span class='layout'>(</span><span class='varid'>mkXTextTree</span> <span class='varid'>attrValue</span><span class='layout'>)</span>-<a name="line-182"></a>-<a name="line-183"></a> <span class='varid'>checkNmtoken</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-184"></a> <span class='varid'>checkNmtoken</span> <span class='layout'>(</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='keyword'>_</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-185"></a> <span class='keyglyph'>=</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute value "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrValue</span> <span class='varop'>++</span> <span class='str'>" of attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span>-<a name="line-186"></a> <span class='str'>" for element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" must be a name token, "</span><span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>lines</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varop'>!!</span> <span class='num'>1</span> <span class='varop'>++</span><span class='str'>"."</span><span class='layout'>)</span>-<a name="line-187"></a>-<a name="line-188"></a> <span class='varid'>checkNmtoken</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>none</span>-<a name="line-189"></a>-<a name="line-190"></a>-<a name="line-191"></a><span class='definition'>checkValueNmtoken</span> <span class='varid'>n</span> <span class='keyword'>_</span>-<a name="line-192"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValueNmtoken: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-193"></a>-<a name="line-194"></a>-<a name="line-195"></a><span class='comment'>-- |</span>-<a name="line-196"></a><span class='comment'>-- Checks the value of NMTOKENS attribute types. (3.3.1 \/ p.26 in Spec)</span>-<a name="line-197"></a><span class='comment'>--</span>-<a name="line-198"></a><span class='comment'>-- * 1.parameter attrDecl : the declaration of the attribute from the DTD</span>-<a name="line-199"></a><span class='comment'>--</span>-<a name="line-200"></a><span class='comment'>-- - 2.parameter attrValue : the normalized attribute value to be checked</span>-<a name="line-201"></a>-<a name="line-202"></a><a name="checkValueNmtokens"></a><span class='definition'>checkValueNmtokens</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-203"></a><span class='definition'>checkValueNmtokens</span> <span class='varid'>attrDecl</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>-<a name="line-204"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>valueList</span>-<a name="line-205"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span><span class='str'>" of element "</span> <span class='varop'>++</span>-<a name="line-206"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" must be one or more name tokens."</span><span class='layout'>)</span>-<a name="line-207"></a> <span class='keyword'>else</span> <span class='varid'>cat</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>checkValueNmtoken</span> <span class='varid'>attrDecl</span><span class='layout'>)</span> <span class='varid'>valueList</span><span class='layout'>)</span>-<a name="line-208"></a> <span class='keyword'>where</span>-<a name="line-209"></a> <span class='varid'>valueList</span> <span class='keyglyph'>=</span> <span class='varid'>words</span> <span class='varid'>attrValue</span>-<a name="line-210"></a>-<a name="line-211"></a><span class='definition'>checkValueNmtokens</span> <span class='varid'>n</span> <span class='keyword'>_</span>-<a name="line-212"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValueNmtokens: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-213"></a>-<a name="line-214"></a>-<a name="line-215"></a><span class='comment'>-- |</span>-<a name="line-216"></a><span class='comment'>-- Checks the value of ID attribute types. (3.3.1 \/ p.25 in Spec)</span>-<a name="line-217"></a><span class='comment'>--</span>-<a name="line-218"></a><span class='comment'>-- * 1.parameter attrDecl : the declaration of the attribute from the DTD</span>-<a name="line-219"></a><span class='comment'>--</span>-<a name="line-220"></a><span class='comment'>-- - 2.parameter attrValue : the normalized attribute value to be checked</span>-<a name="line-221"></a>-<a name="line-222"></a><a name="checkValueId"></a><span class='definition'>checkValueId</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-223"></a><span class='definition'>checkValueId</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-224"></a> <span class='keyglyph'>=</span> <span class='varid'>checkForName</span> <span class='str'>"Attribute value"</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-225"></a>-<a name="line-226"></a>-<a name="line-227"></a><span class='comment'>-- |</span>-<a name="line-228"></a><span class='comment'>-- Checks the value of IDREF attribute types. (3.3.1 \/ p.26 in Spec)</span>-<a name="line-229"></a><span class='comment'>--</span>-<a name="line-230"></a><span class='comment'>-- * 1.parameter attrDecl : the declaration of the attribute from the DTD</span>-<a name="line-231"></a><span class='comment'>--</span>-<a name="line-232"></a><span class='comment'>-- - 2.parameter attrValue : the normalized attribute value to be checked</span>-<a name="line-233"></a>-<a name="line-234"></a><a name="checkValueIdref"></a><span class='definition'>checkValueIdref</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-235"></a><span class='definition'>checkValueIdref</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-236"></a> <span class='keyglyph'>=</span> <span class='varid'>checkForName</span> <span class='str'>"Attribute value"</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-237"></a>-<a name="line-238"></a>-<a name="line-239"></a><span class='comment'>-- |</span>-<a name="line-240"></a><span class='comment'>-- Checks the value of IDREFS attribute types. (3.3.1 \/ p.26 in Spec)</span>-<a name="line-241"></a><span class='comment'>--</span>-<a name="line-242"></a><span class='comment'>-- * 1.parameter attrDecl : the declaration of the attribute from the DTD</span>-<a name="line-243"></a><span class='comment'>--</span>-<a name="line-244"></a><span class='comment'>-- - 2.parameter attrValue : the normalized attribute value to be checked</span>-<a name="line-245"></a>-<a name="line-246"></a><a name="checkValueIdrefs"></a><span class='definition'>checkValueIdrefs</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-247"></a><span class='definition'>checkValueIdrefs</span> <span class='varid'>attrDecl</span> <span class='varid'>attrValue</span>-<a name="line-248"></a> <span class='keyglyph'>=</span> <span class='varid'>cat</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>checkValueIdref</span> <span class='varid'>attrDecl</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>words</span> <span class='varid'>attrValue</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-249"></a>-<a name="line-250"></a>-<a name="line-251"></a>-<a name="line-252"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-253"></a><span class='comment'>-- General helper functions for checking attribute values</span>-<a name="line-254"></a><span class='comment'>--</span>-<a name="line-255"></a>-<a name="line-256"></a><span class='comment'>-- |</span>-<a name="line-257"></a><span class='comment'>-- Checks if the value of an attribute is a name.</span>-<a name="line-258"></a><span class='comment'>--</span>-<a name="line-259"></a><span class='comment'>-- * 1.parameter msg : error message, should be "Entity" or "Attribute value"</span>-<a name="line-260"></a><span class='comment'>--</span>-<a name="line-261"></a><span class='comment'>-- - 2.parameter attrDecl : the declaration of the attribute from the DTD</span>-<a name="line-262"></a><span class='comment'>--</span>-<a name="line-263"></a><span class='comment'>-- - 3.parameter attrValue : the normalized attribute value to be checked</span>-<a name="line-264"></a>-<a name="line-265"></a><a name="checkForName"></a><span class='definition'>checkForName</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-266"></a><span class='definition'>checkForName</span> <span class='varid'>msg</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>-<a name="line-267"></a> <span class='keyglyph'>=</span> <span class='varid'>checkName</span> <span class='varid'>parseRes</span>-<a name="line-268"></a> <span class='keyword'>where</span>-<a name="line-269"></a> <span class='varid'>parseRes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span>-<a name="line-270"></a> <span class='varid'>parseRes</span> <span class='keyglyph'>=</span> <span class='varid'>parseName</span> <span class='str'>""</span> <span class='layout'>(</span><span class='varid'>mkXTextTree</span> <span class='varid'>attrValue</span><span class='layout'>)</span>-<a name="line-271"></a>-<a name="line-272"></a> <span class='varid'>checkName</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-273"></a> <span class='varid'>checkName</span> <span class='layout'>(</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='keyword'>_</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-274"></a> <span class='keyglyph'>=</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='varid'>msg</span> <span class='varop'>++</span> <span class='str'>" "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrValue</span> <span class='varop'>++</span><span class='str'>" of attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span>-<a name="line-275"></a> <span class='str'>" for element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getElemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span><span class='str'>" must be a name, "</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>lines</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varop'>!!</span> <span class='num'>1</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span>-<a name="line-276"></a>-<a name="line-277"></a> <span class='varid'>checkName</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>none</span>-<a name="line-278"></a>-<a name="line-279"></a>-<a name="line-280"></a><span class='definition'>checkForName</span> <span class='keyword'>_</span> <span class='varid'>n</span> <span class='keyword'>_</span>-<a name="line-281"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForName: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-282"></a>-<a name="line-283"></a>-<a name="line-284"></a><span class='comment'>-- |</span>-<a name="line-285"></a><span class='comment'>-- Gets the element name from an attribute list of an XDTD ATTLIST node.</span>-<a name="line-286"></a><span class='comment'>--</span>-<a name="line-287"></a><span class='comment'>-- * 1.parameter tag : the attibute list of an XDTD ATTLIST</span>-<a name="line-288"></a><span class='comment'>--</span>-<a name="line-289"></a><span class='comment'>-- - returns : the element name</span>-<a name="line-290"></a>-<a name="line-291"></a><a name="getElemName"></a><span class='definition'>getElemName</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-292"></a><span class='definition'>getElemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span>-<a name="line-293"></a>-<a name="line-294"></a>-<a name="line-295"></a><span class='comment'>-- |</span>-<a name="line-296"></a><span class='comment'>-- Gets the attribute name from an attribute list of an XDTD ATTLIST node.</span>-<a name="line-297"></a><span class='comment'>--</span>-<a name="line-298"></a><span class='comment'>-- * 1.parameter tag : the attibute list of an XDTD ATTLIST</span>-<a name="line-299"></a><span class='comment'>--</span>-<a name="line-300"></a><span class='comment'>-- - returns : the attribute name</span>-<a name="line-301"></a>-<a name="line-302"></a><a name="getAttrName"></a><span class='definition'>getAttrName</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-303"></a><span class='definition'>getAttrName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span>-<a name="line-304"></a>-<a name="line-305"></a>-<a name="line-306"></a>-<a name="line-307"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-308"></a>-<a name="line-309"></a>-<a name="line-310"></a><a name="normalizeAttributeValue"></a><span class='comment'>-- |</span>-<a name="line-311"></a><span class='comment'>-- Normalizes an attribute value with respect to its type. (3.3.3 \/ p.29 in Spec)</span>-<a name="line-312"></a><span class='comment'>--</span>-<a name="line-313"></a><span class='comment'>-- * 1.parameter attrDecl : the declaration of the attribute from the DTD. Expected</span>-<a name="line-314"></a><span class='comment'>-- is a list. If the list is empty, no declaration exists.</span>-<a name="line-315"></a><span class='comment'>--</span>-<a name="line-316"></a><span class='comment'>-- - 2.parameter value : the attribute value to be normalized</span>-<a name="line-317"></a><span class='comment'>--</span>-<a name="line-318"></a><span class='comment'>-- - returns : the normalized value</span>-<a name="line-319"></a><span class='comment'>--</span>-<a name="line-320"></a><span class='definition'>normalizeAttributeValue</span> <span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-321"></a><span class='definition'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>value</span>-<a name="line-322"></a> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttribute</span> <span class='varid'>attrType</span>-<a name="line-323"></a> <span class='keyword'>where</span>-<a name="line-324"></a> <span class='varid'>attrType</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span>-<a name="line-325"></a>-<a name="line-326"></a> <span class='varid'>normalizeAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-327"></a> <span class='varid'>normalizeAttribute</span> <span class='varid'>typ</span>-<a name="line-328"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_cdata</span> <span class='keyglyph'>=</span> <span class='varid'>cdataNormalization</span> <span class='varid'>value</span>-<a name="line-329"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>otherNormalization</span> <span class='varid'>value</span>-<a name="line-330"></a>-<a name="line-331"></a>-<a name="line-332"></a><span class='comment'>-- Attribute not declared in DTD, normalization as CDATA</span>-<a name="line-333"></a><span class='definition'>normalizeAttributeValue</span> <span class='keyword'>_</span> <span class='varid'>value</span>-<a name="line-334"></a> <span class='keyglyph'>=</span> <span class='varid'>cdataNormalization</span> <span class='varid'>value</span>-<a name="line-335"></a>-<a name="line-336"></a>-<a name="line-337"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-338"></a><span class='comment'>-- Helper functions for normalization</span>-<a name="line-339"></a>-<a name="line-340"></a>-<a name="line-341"></a><a name="cdataNormalization"></a><span class='comment'>-- |</span>-<a name="line-342"></a><span class='comment'>-- Normalization of CDATA attribute values.</span>-<a name="line-343"></a><span class='comment'>-- is already done when parsing</span>-<a name="line-344"></a><span class='comment'>-- during entity substituion for attribute values</span>-<a name="line-345"></a><span class='definition'>cdataNormalization</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-346"></a><span class='definition'>cdataNormalization</span> <span class='keyglyph'>=</span> <span class='varid'>id</span>-<a name="line-347"></a>-<a name="line-348"></a>-<a name="line-349"></a><a name="otherNormalization"></a><span class='comment'>-- | Normalization of attribute values other than CDATA.</span>-<a name="line-350"></a><span class='definition'>otherNormalization</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-351"></a><span class='definition'>otherNormalization</span> <span class='keyglyph'>=</span> <span class='varid'>reduceWSSequences</span> <span class='varop'>.</span> <span class='varid'>stringTrim</span> <span class='varop'>.</span> <span class='varid'>cdataNormalization</span>-<a name="line-352"></a>-<a name="line-353"></a><a name="reduceWSSequences"></a><span class='comment'>-- | Reduce whitespace sequences to a single whitespace.</span>-<a name="line-354"></a><span class='definition'>reduceWSSequences</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-355"></a><span class='definition'>reduceWSSequences</span> <span class='varid'>str</span> <span class='keyglyph'>=</span> <span class='varid'>unwords</span> <span class='layout'>(</span><span class='varid'>words</span> <span class='varid'>str</span><span class='layout'>)</span>-<a name="line-356"></a>-<a name="line-357"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Validator-DTDValidation.html
@@ -1,637 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- This module provides functions for validating the DTD of XML documents</span>-<a name="line-3"></a><span class='comment'>-- represented as XmlTree.</span>-<a name="line-4"></a>-<a name="line-5"></a><span class='comment'>-- Unlike other popular XML validation tools the validation process returns</span>-<a name="line-6"></a><span class='comment'>-- a list of errors instead of aborting after the first error was found.</span>-<a name="line-7"></a>-<a name="line-8"></a>-<a name="line-9"></a><span class='comment'>-- Unlike validation of the document, the DTD branch is traversed four times:</span>-<a name="line-10"></a><span class='comment'>--</span>-<a name="line-11"></a><span class='comment'>-- - Validation of Notations</span>-<a name="line-12"></a><span class='comment'>--</span>-<a name="line-13"></a><span class='comment'>-- - Validation of Unparsed Entities</span>-<a name="line-14"></a><span class='comment'>--</span>-<a name="line-15"></a><span class='comment'>-- - Validation of Element declarations</span>-<a name="line-16"></a><span class='comment'>--</span>-<a name="line-17"></a><span class='comment'>-- - Validation of Attribute declarations</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='comment'>-- Special namings in source code:</span>-<a name="line-20"></a><span class='comment'>--</span>-<a name="line-21"></a><span class='comment'>-- - nd - XDTD node</span>-<a name="line-22"></a><span class='comment'>--</span>-<a name="line-23"></a><span class='comment'>-- Author : .\\artin Schmidt</span>-<a name="line-24"></a>-<a name="line-25"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DTDValidation</span>-<a name="line-26"></a> <span class='layout'>(</span> <span class='varid'>removeDoublicateDefs</span>-<a name="line-27"></a> <span class='layout'>,</span> <span class='varid'>validateDTD</span>-<a name="line-28"></a> <span class='layout'>)</span>-<a name="line-29"></a><span class='keyword'>where</span>-<a name="line-30"></a>-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-32"></a>-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>AttributeValueValidation</span>-<a name="line-34"></a>-<a name="line-35"></a>-<a name="line-36"></a>-<a name="line-37"></a><span class='comment'>-- |</span>-<a name="line-38"></a><span class='comment'>-- Validate a DTD.</span>-<a name="line-39"></a><span class='comment'>--</span>-<a name="line-40"></a><span class='comment'>-- - returns : a functions which takes the DTD subset of the XmlTree, checks</span>-<a name="line-41"></a><span class='comment'>-- if the DTD is valid and returns a list of errors</span>-<a name="line-42"></a>-<a name="line-43"></a><a name="validateDTD"></a><span class='definition'>validateDTD</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-44"></a><span class='definition'>validateDTD</span> <span class='varid'>dtdPart</span>-<a name="line-45"></a> <span class='keyglyph'>=</span> <span class='comment'>{-# SCC "validateNotations" #-}</span> <span class='varid'>validateNotations</span> <span class='varid'>dtdPart'</span>-<a name="line-46"></a> <span class='varop'>++</span>-<a name="line-47"></a> <span class='comment'>{-# SCC "validateEntities" #-}</span> <span class='varid'>validateEntities</span> <span class='varid'>dtdPart'</span> <span class='varid'>notationNames</span>-<a name="line-48"></a> <span class='varop'>++</span>-<a name="line-49"></a> <span class='comment'>{-# SCC "validateElements" #-}</span> <span class='varid'>validateElements</span> <span class='varid'>dtdPart'</span> <span class='varid'>elemNames</span>-<a name="line-50"></a> <span class='varop'>++</span>-<a name="line-51"></a> <span class='comment'>{-# SCC "validateAttributes" #-}</span> <span class='varid'>validateAttributes</span> <span class='varid'>dtdPart'</span> <span class='varid'>elemNames</span> <span class='varid'>notationNames</span>-<a name="line-52"></a>-<a name="line-53"></a> <span class='keyword'>where</span>-<a name="line-54"></a> <span class='varid'>dtdPart'</span> <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varid'>dtdPart</span>-<a name="line-55"></a>-<a name="line-56"></a> <span class='varid'>notationNames</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-57"></a> <span class='varid'>notationNames</span>-<a name="line-58"></a> <span class='keyglyph'>=</span> <span class='varid'>getXTextValues</span> <span class='layout'>(</span><span class='varid'>isNotation</span> <span class='varop'>.></span> <span class='varid'>getDTDValue</span> <span class='varid'>a_name</span> <span class='varop'>$$</span> <span class='varid'>dtdPart'</span><span class='layout'>)</span>-<a name="line-59"></a>-<a name="line-60"></a> <span class='varid'>elemNames</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-61"></a> <span class='varid'>elemNames</span>-<a name="line-62"></a> <span class='keyglyph'>=</span> <span class='varid'>getXTextValues</span> <span class='layout'>(</span><span class='varid'>isElement</span> <span class='varop'>.></span> <span class='varid'>getDTDValue</span> <span class='varid'>a_name</span> <span class='varop'>$$</span> <span class='varid'>dtdPart'</span><span class='layout'>)</span>-<a name="line-63"></a>-<a name="line-64"></a>-<a name="line-65"></a>-<a name="line-66"></a>-<a name="line-67"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-68"></a>-<a name="line-69"></a><span class='comment'>-- |</span>-<a name="line-70"></a><span class='comment'>-- Returns a list of XText values.</span>-<a name="line-71"></a><span class='comment'>--</span>-<a name="line-72"></a><span class='comment'>-- * 1.parameter xtextList : a list of XText nodes</span>-<a name="line-73"></a><span class='comment'>--</span>-<a name="line-74"></a><span class='comment'>-- - returns : the values of the XText nodes</span>-<a name="line-75"></a>-<a name="line-76"></a><a name="getXTextValues"></a><span class='definition'>getXTextValues</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-77"></a><span class='definition'>getXTextValues</span>-<a name="line-78"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>showT</span>-<a name="line-79"></a> <span class='keyword'>where</span>-<a name="line-80"></a> <span class='varid'>showT</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-81"></a> <span class='keyglyph'>|</span> <span class='varid'>isXTextNode</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>textOfXNode</span> <span class='varid'>n</span><span class='keyglyph'>]</span>-<a name="line-82"></a> <span class='varid'>showT</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-83"></a>-<a name="line-84"></a>-<a name="line-85"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-86"></a>-<a name="line-87"></a>-<a name="line-88"></a><span class='comment'>-- |</span>-<a name="line-89"></a><span class='comment'>-- Validation of Notations, checks if all notation names are unique.</span>-<a name="line-90"></a><span class='comment'>-- Validity constraint: Unique Notation Name (4.7 \/ p.44 in Spec)</span>-<a name="line-91"></a><span class='comment'>--</span>-<a name="line-92"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-93"></a><span class='comment'>--</span>-<a name="line-94"></a><span class='comment'>-- - returns : a list of errors</span>-<a name="line-95"></a>-<a name="line-96"></a><a name="validateNotations"></a><span class='definition'>validateNotations</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-97"></a><span class='definition'>validateNotations</span> <span class='varid'>dtdPart</span>-<a name="line-98"></a> <span class='keyglyph'>=</span> <span class='varid'>checkForUniqueNotation</span> <span class='varid'>notations</span> <span class='conid'>[]</span>-<a name="line-99"></a> <span class='keyword'>where</span>-<a name="line-100"></a> <span class='varid'>notations</span> <span class='keyglyph'>=</span> <span class='varid'>isNotation</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>-<a name="line-101"></a>-<a name="line-102"></a> <span class='varid'>checkForUniqueNotation</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-103"></a> <span class='varid'>checkForUniqueNotation</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NOTATION</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>-<a name="line-104"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>-<a name="line-105"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Notation "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>" was already specified."</span><span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-106"></a> <span class='varop'>++</span>-<a name="line-107"></a> <span class='varid'>checkForUniqueNotation</span> <span class='varid'>xs</span> <span class='varid'>used</span>-<a name="line-108"></a>-<a name="line-109"></a> <span class='keyword'>else</span> <span class='varid'>checkForUniqueNotation</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>-<a name="line-110"></a> <span class='keyword'>where</span>-<a name="line-111"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-112"></a>-<a name="line-113"></a> <span class='varid'>checkForUniqueNotation</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-114"></a>-<a name="line-115"></a> <span class='varid'>checkForUniqueNotation</span> <span class='varid'>nd</span> <span class='keyword'>_</span>-<a name="line-116"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueNotation: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-117"></a>-<a name="line-118"></a>-<a name="line-119"></a><span class='comment'>-- |</span>-<a name="line-120"></a><span class='comment'>-- Validation of Entities.</span>-<a name="line-121"></a><span class='comment'>--</span>-<a name="line-122"></a><span class='comment'>-- 1. Issues a warning if entities are declared multiple times.</span>-<a name="line-123"></a><span class='comment'>--</span>-<a name="line-124"></a><span class='comment'>-- Optional warning: (4.2 \/ p.35 in Spec) </span>-<a name="line-125"></a><span class='comment'>--</span>-<a name="line-126"></a><span class='comment'>--</span>-<a name="line-127"></a><span class='comment'>-- 2. Validates that a notation is declared for an unparsed entity.</span>-<a name="line-128"></a><span class='comment'>--</span>-<a name="line-129"></a><span class='comment'>-- Validity constraint: Notation Declared (4.2.2 \/ p.36 in Spec)</span>-<a name="line-130"></a><span class='comment'>--</span>-<a name="line-131"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-132"></a><span class='comment'>--</span>-<a name="line-133"></a><span class='comment'>-- - 2.parameter notationNames : list of all notation names declared in the DTD</span>-<a name="line-134"></a><span class='comment'>--</span>-<a name="line-135"></a><span class='comment'>-- - returns : a list of errors</span>-<a name="line-136"></a>-<a name="line-137"></a><a name="validateEntities"></a><span class='definition'>validateEntities</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-138"></a><span class='definition'>validateEntities</span> <span class='varid'>dtdPart</span> <span class='varid'>notationNames</span>-<a name="line-139"></a> <span class='keyglyph'>=</span> <span class='varid'>checkForUniqueEntity</span> <span class='varid'>entities</span> <span class='conid'>[]</span>-<a name="line-140"></a> <span class='varop'>++</span>-<a name="line-141"></a> <span class='varid'>checkNotationDecls</span> <span class='varid'>notationNames</span> <span class='varid'>upEntities</span>-<a name="line-142"></a>-<a name="line-143"></a> <span class='keyword'>where</span>-<a name="line-144"></a> <span class='varid'>entities</span> <span class='keyglyph'>=</span> <span class='varid'>isEntity</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>-<a name="line-145"></a> <span class='varid'>upEntities</span> <span class='keyglyph'>=</span> <span class='varid'>isUnparsedEntity</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>-<a name="line-146"></a>-<a name="line-147"></a> <span class='comment'>-- Check if entities are declared multiple times</span>-<a name="line-148"></a> <span class='varid'>checkForUniqueEntity</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-149"></a> <span class='varid'>checkForUniqueEntity</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>-<a name="line-150"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>-<a name="line-151"></a> <span class='keyword'>then</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"Entity "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>" was already specified. "</span> <span class='varop'>++</span>-<a name="line-152"></a> <span class='str'>"First declaration will be used."</span><span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-153"></a> <span class='varop'>++</span>-<a name="line-154"></a> <span class='varid'>checkForUniqueEntity</span> <span class='varid'>xs</span> <span class='varid'>used</span>-<a name="line-155"></a>-<a name="line-156"></a> <span class='keyword'>else</span> <span class='varid'>checkForUniqueEntity</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>-<a name="line-157"></a> <span class='keyword'>where</span>-<a name="line-158"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-159"></a>-<a name="line-160"></a> <span class='varid'>checkForUniqueEntity</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-161"></a>-<a name="line-162"></a> <span class='varid'>checkForUniqueEntity</span> <span class='varid'>nd</span> <span class='keyword'>_</span>-<a name="line-163"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueEntity: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-164"></a>-<a name="line-165"></a>-<a name="line-166"></a> <span class='comment'>-- Find unparsed entities for which no notation is specified</span>-<a name="line-167"></a> <span class='varid'>checkNotationDecls</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-168"></a> <span class='varid'>checkNotationDecls</span> <span class='varid'>notationNames'</span> <span class='varid'>upEntities'</span>-<a name="line-169"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>checkNotationDecl</span><span class='layout'>)</span> <span class='varid'>upEntities'</span>-<a name="line-170"></a> <span class='keyword'>where</span>-<a name="line-171"></a> <span class='varid'>checkNotationDecl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-172"></a> <span class='varid'>checkNotationDecl</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-173"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>notationName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>`elem`</span> <span class='varid'>notationNames'</span>-<a name="line-174"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-175"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The notation "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>notationName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" must be declared "</span> <span class='varop'>++</span>-<a name="line-176"></a> <span class='str'>"when referenced in the unparsed entity declaration for "</span> <span class='varop'>++</span>-<a name="line-177"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>upEntityName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-178"></a> <span class='keyword'>where</span>-<a name="line-179"></a> <span class='varid'>notationName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>k_ndata</span>-<a name="line-180"></a> <span class='varid'>upEntityName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span>-<a name="line-181"></a>-<a name="line-182"></a> <span class='varid'>checkNotationDecl</span> <span class='varid'>nd</span>-<a name="line-183"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkNotationDecl: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-184"></a>-<a name="line-185"></a>-<a name="line-186"></a>-<a name="line-187"></a><span class='comment'>-- |</span>-<a name="line-188"></a><span class='comment'>-- Validation of Element declarations.</span>-<a name="line-189"></a><span class='comment'>--</span>-<a name="line-190"></a><span class='comment'>-- 1. Validates that an element is not declared multiple times.</span>-<a name="line-191"></a><span class='comment'>--</span>-<a name="line-192"></a><span class='comment'>-- Validity constraint: Unique Element Type Declaration (3.2 \/ p.21 in Spec) </span>-<a name="line-193"></a><span class='comment'>--</span>-<a name="line-194"></a><span class='comment'>--</span>-<a name="line-195"></a><span class='comment'>-- 2. Validates that an element name only appears once in a mixed-content declaration.</span>-<a name="line-196"></a><span class='comment'>--</span>-<a name="line-197"></a><span class='comment'>-- Validity constraint: No Duplicate Types (3.2 \/ p.21 in Spec) </span>-<a name="line-198"></a><span class='comment'>--</span>-<a name="line-199"></a><span class='comment'>--</span>-<a name="line-200"></a><span class='comment'>-- 3. Issues a warning if an element mentioned in a content model is not declared in the</span>-<a name="line-201"></a><span class='comment'>-- DTD.</span>-<a name="line-202"></a><span class='comment'>--</span>-<a name="line-203"></a><span class='comment'>-- Optional warning: (3.2 \/ p.21 in Spec)</span>-<a name="line-204"></a><span class='comment'>--</span>-<a name="line-205"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-206"></a><span class='comment'>--</span>-<a name="line-207"></a><span class='comment'>-- - 2.parameter elemNames : list of all element names declared in the DTD</span>-<a name="line-208"></a><span class='comment'>--</span>-<a name="line-209"></a><span class='comment'>-- - returns : a list of errors</span>-<a name="line-210"></a>-<a name="line-211"></a>-<a name="line-212"></a><a name="validateElements"></a><span class='definition'>validateElements</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-213"></a><span class='definition'>validateElements</span> <span class='varid'>dtdPart</span> <span class='varid'>elemNames</span>-<a name="line-214"></a> <span class='keyglyph'>=</span> <span class='varid'>checkForUniqueElement</span> <span class='varid'>elements</span> <span class='conid'>[]</span>-<a name="line-215"></a> <span class='varop'>++</span>-<a name="line-216"></a> <span class='varid'>checkMixedContents</span> <span class='varid'>mixedContentElems</span>-<a name="line-217"></a> <span class='varop'>++</span>-<a name="line-218"></a> <span class='varid'>checkContentModels</span> <span class='varid'>elemNames</span> <span class='varid'>elements</span>-<a name="line-219"></a>-<a name="line-220"></a> <span class='keyword'>where</span>-<a name="line-221"></a> <span class='varid'>elements</span> <span class='keyglyph'>=</span> <span class='varid'>isElement</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>-<a name="line-222"></a> <span class='varid'>mixedContentElems</span> <span class='keyglyph'>=</span> <span class='varid'>isMixedContentElement</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>-<a name="line-223"></a>-<a name="line-224"></a>-<a name="line-225"></a> <span class='comment'>-- Validates that an element is not declared multiple times</span>-<a name="line-226"></a> <span class='varid'>checkForUniqueElement</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-227"></a> <span class='varid'>checkForUniqueElement</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>-<a name="line-228"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>-<a name="line-229"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Element type "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span>-<a name="line-230"></a> <span class='str'>" must not be declared more than once."</span><span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-231"></a> <span class='varop'>++</span>-<a name="line-232"></a> <span class='varid'>checkForUniqueElement</span> <span class='varid'>xs</span> <span class='varid'>used</span>-<a name="line-233"></a>-<a name="line-234"></a> <span class='keyword'>else</span> <span class='varid'>checkForUniqueElement</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>-<a name="line-235"></a> <span class='keyword'>where</span>-<a name="line-236"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-237"></a>-<a name="line-238"></a> <span class='varid'>checkForUniqueElement</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-239"></a>-<a name="line-240"></a> <span class='varid'>checkForUniqueElement</span> <span class='varid'>nd</span> <span class='keyword'>_</span>-<a name="line-241"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueElement: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-242"></a>-<a name="line-243"></a>-<a name="line-244"></a> <span class='comment'>-- Validates that an element name only appears once in a mixed-content declaration</span>-<a name="line-245"></a> <span class='varid'>checkMixedContents</span> <span class='varid'>elems</span>-<a name="line-246"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>checkMixedContent</span><span class='layout'>)</span> <span class='varid'>elems</span>-<a name="line-247"></a> <span class='keyword'>where</span>-<a name="line-248"></a> <span class='varid'>checkMixedContent</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-249"></a> <span class='keyglyph'>=</span> <span class='varid'>checkMC</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cs</span><span class='layout'>)</span><span class='layout'>)</span> <span class='conid'>[]</span>-<a name="line-250"></a> <span class='keyword'>where</span>-<a name="line-251"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-252"></a>-<a name="line-253"></a> <span class='varid'>checkMC</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-254"></a> <span class='varid'>checkMC</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>-<a name="line-255"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>-<a name="line-256"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The element type "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span>-<a name="line-257"></a> <span class='str'>" was already specified in the mixed-content model of the element declaration "</span> <span class='varop'>++</span>-<a name="line-258"></a> <span class='varid'>show</span> <span class='varid'>elemName</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-259"></a> <span class='varop'>++</span>-<a name="line-260"></a> <span class='varid'>checkMC</span> <span class='varid'>xs</span> <span class='varid'>used</span>-<a name="line-261"></a>-<a name="line-262"></a> <span class='keyword'>else</span> <span class='varid'>checkMC</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>-<a name="line-263"></a> <span class='keyword'>where</span>-<a name="line-264"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>-<a name="line-265"></a>-<a name="line-266"></a> <span class='varid'>checkMC</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-267"></a>-<a name="line-268"></a> <span class='varid'>checkMC</span> <span class='varid'>nd</span> <span class='keyword'>_</span>-<a name="line-269"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkMC: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-270"></a>-<a name="line-271"></a> <span class='varid'>checkMixedContent</span> <span class='varid'>nd</span>-<a name="line-272"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkMixedContent: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-273"></a>-<a name="line-274"></a>-<a name="line-275"></a> <span class='comment'>-- Issues a warning if an element mentioned in a content model is not</span>-<a name="line-276"></a> <span class='comment'>-- declared in the DTD.</span>-<a name="line-277"></a> <span class='varid'>checkContentModels</span> <span class='varid'>names</span> <span class='varid'>elems</span>-<a name="line-278"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>checkContentModel</span> <span class='varid'>elems</span>-<a name="line-279"></a> <span class='keyword'>where</span>-<a name="line-280"></a> <span class='varid'>checkContentModel</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-281"></a> <span class='varid'>checkContentModel</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-282"></a> <span class='keyglyph'>=</span> <span class='varid'>validateContent</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-283"></a> <span class='keyword'>where</span>-<a name="line-284"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-285"></a>-<a name="line-286"></a> <span class='varid'>validateContent</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-287"></a> <span class='varid'>validateContent</span> <span class='varid'>cm</span>-<a name="line-288"></a> <span class='keyglyph'>|</span> <span class='varid'>cm</span> <span class='varop'>==</span> <span class='varid'>v_children</span> <span class='keyglyph'>=</span> <span class='varid'>checkContent</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-289"></a> <span class='keyglyph'>|</span> <span class='varid'>cm</span> <span class='varop'>==</span> <span class='varid'>v_mixed</span> <span class='keyglyph'>=</span> <span class='varid'>checkContent</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-290"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span> <span class='comment'>-- no child elements to check</span>-<a name="line-291"></a>-<a name="line-292"></a> <span class='varid'>checkContent</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-293"></a> <span class='varid'>checkContent</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-294"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>childElemName</span> <span class='varop'>`elem`</span> <span class='varid'>names</span>-<a name="line-295"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-296"></a> <span class='keyword'>else</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"The element type "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>childElemName</span> <span class='varop'>++</span>-<a name="line-297"></a> <span class='str'>", used in content model of element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>elemName</span> <span class='varop'>++</span>-<a name="line-298"></a> <span class='str'>", is not declared."</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-299"></a> <span class='keyword'>where</span>-<a name="line-300"></a> <span class='varid'>childElemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>-<a name="line-301"></a>-<a name="line-302"></a> <span class='varid'>checkContent</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>CONTENT</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs'</span><span class='layout'>)</span>-<a name="line-303"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>checkContent</span><span class='layout'>)</span> <span class='varid'>cs'</span>-<a name="line-304"></a>-<a name="line-305"></a> <span class='varid'>checkContent</span> <span class='varid'>nd</span>-<a name="line-306"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkContent: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-307"></a>-<a name="line-308"></a> <span class='varid'>checkContentModel</span> <span class='varid'>nd</span>-<a name="line-309"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkContentModel: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-310"></a>-<a name="line-311"></a>-<a name="line-312"></a><span class='comment'>-- |</span>-<a name="line-313"></a><span class='comment'>-- Validation of Attribute declarations.</span>-<a name="line-314"></a><span class='comment'>--</span>-<a name="line-315"></a><span class='comment'>-- (1) Issues a warning if an attribute is declared for an element type not itself</span>-<a name="line-316"></a><span class='comment'>-- decared.</span>-<a name="line-317"></a><span class='comment'>--</span>-<a name="line-318"></a><span class='comment'>-- Optinal warning: (3.3 \/ p. 24 in Spec)</span>-<a name="line-319"></a><span class='comment'>--</span>-<a name="line-320"></a><span class='comment'>--</span>-<a name="line-321"></a><span class='comment'>-- 2. Issues a warning if more than one definition is provided for the same</span>-<a name="line-322"></a><span class='comment'>-- attribute of a given element type. Fist declaration is binding, later</span>-<a name="line-323"></a><span class='comment'>-- definitions are ignored.</span>-<a name="line-324"></a><span class='comment'>--</span>-<a name="line-325"></a><span class='comment'>-- Optional warning: (3.3 \/ p.24 in Spec)</span>-<a name="line-326"></a><span class='comment'>--</span>-<a name="line-327"></a><span class='comment'>--</span>-<a name="line-328"></a><span class='comment'>-- 3. Issues a warning if the same Nmtoken occures more than once in enumerated</span>-<a name="line-329"></a><span class='comment'>-- attribute types of a single element type.</span>-<a name="line-330"></a><span class='comment'>--</span>-<a name="line-331"></a><span class='comment'>-- Optional warning: (3.3.1 \/ p.27 in Spec) </span>-<a name="line-332"></a><span class='comment'>--</span>-<a name="line-333"></a><span class='comment'>--</span>-<a name="line-334"></a><span class='comment'>-- 4. Validates that an element type has not more than one ID attribute defined.</span>-<a name="line-335"></a><span class='comment'>--</span>-<a name="line-336"></a><span class='comment'>-- Validity constraint: One ID per Element Type (3.3.1 \/ p.26 in Spec) </span>-<a name="line-337"></a><span class='comment'>--</span>-<a name="line-338"></a><span class='comment'>--</span>-<a name="line-339"></a><span class='comment'>-- 5. Validates that an element type has not more than one NOTATION attribute defined.</span>-<a name="line-340"></a><span class='comment'>--</span>-<a name="line-341"></a><span class='comment'>-- Validity constraint: One Notation per Element Type (3.3.1 \/ p.27 in Spec) </span>-<a name="line-342"></a><span class='comment'>--</span>-<a name="line-343"></a><span class='comment'>--</span>-<a name="line-344"></a><span class='comment'>-- 6. Validates that an ID attributes has the type #IMPLIED or #REQUIRED.</span>-<a name="line-345"></a><span class='comment'>--</span>-<a name="line-346"></a><span class='comment'>-- Validity constraint: ID Attribute Default (3.3.1 \/ p.26 in Spec) </span>-<a name="line-347"></a><span class='comment'>--</span>-<a name="line-348"></a><span class='comment'>--</span>-<a name="line-349"></a><span class='comment'>-- 7. Validates that all referenced notations are declared.</span>-<a name="line-350"></a><span class='comment'>--</span>-<a name="line-351"></a><span class='comment'>-- Validity constraint: Notation Attributes (3.3.1 \/ p.27 in Spec) </span>-<a name="line-352"></a><span class='comment'>--</span>-<a name="line-353"></a><span class='comment'>--</span>-<a name="line-354"></a><span class='comment'>-- 8. Validates that notations are not declared for EMPTY elements.</span>-<a name="line-355"></a><span class='comment'>--</span>-<a name="line-356"></a><span class='comment'>-- Validity constraint: No Notation on Empty Element (3.3.1 \/p.27 in Spec) </span>-<a name="line-357"></a><span class='comment'>--</span>-<a name="line-358"></a><span class='comment'>--</span>-<a name="line-359"></a><span class='comment'>-- 9. Validates that the default value matches the lexical constraints of it's type.</span>-<a name="line-360"></a><span class='comment'>--</span>-<a name="line-361"></a><span class='comment'>-- Validity constraint: Attribute default legal (3.3.2 \/ p.28 in Spec)</span>-<a name="line-362"></a><span class='comment'>--</span>-<a name="line-363"></a><span class='comment'>--</span>-<a name="line-364"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-365"></a><span class='comment'>--</span>-<a name="line-366"></a><span class='comment'>-- - 2.parameter elemNames : list of all element names declared in the DTD</span>-<a name="line-367"></a><span class='comment'>--</span>-<a name="line-368"></a><span class='comment'>-- - 3.parameter notationNames : list of all notation names declared in the DTD</span>-<a name="line-369"></a><span class='comment'>--</span>-<a name="line-370"></a><span class='comment'>-- - returns : a list of errors</span>-<a name="line-371"></a>-<a name="line-372"></a><a name="validateAttributes"></a><span class='definition'>validateAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-373"></a><span class='definition'>validateAttributes</span> <span class='varid'>dtdPart</span> <span class='varid'>elemNames</span> <span class='varid'>notationNames</span>-<a name="line-374"></a> <span class='keyglyph'>=</span> <span class='comment'>-- 1. Find attributes for which no elements are declared</span>-<a name="line-375"></a> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>checkDeclaredElements</span> <span class='varid'>elemNames</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>attributes</span><span class='layout'>)</span>-<a name="line-376"></a> <span class='varop'>++</span>-<a name="line-377"></a> <span class='comment'>-- 2. Find attributes which are declared more than once</span>-<a name="line-378"></a> <span class='layout'>(</span><span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='varid'>attributes</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-379"></a> <span class='varop'>++</span>-<a name="line-380"></a> <span class='comment'>-- 3. Find enumerated attribute types which nmtokens are declared more than once</span>-<a name="line-381"></a> <span class='layout'>(</span><span class='varid'>checkEnumeratedTypes</span>-<a name="line-382"></a> <span class='varop'>`o`</span>-<a name="line-383"></a> <span class='layout'>(</span><span class='varid'>isEnumAttrType</span> <span class='varop'>`orElse`</span> <span class='varid'>isNotationAttrType</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>attributes</span><span class='layout'>)</span>-<a name="line-384"></a> <span class='varop'>++</span>-<a name="line-385"></a> <span class='comment'>-- 4. Validate that there exists only one ID attribute for an element</span>-<a name="line-386"></a> <span class='layout'>(</span><span class='varid'>checkForUniqueId</span> <span class='varid'>idAttributes</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-387"></a> <span class='varop'>++</span>-<a name="line-388"></a> <span class='comment'>-- 5. Validate that there exists only one NOTATION attribute for an element</span>-<a name="line-389"></a> <span class='layout'>(</span><span class='varid'>checkForUniqueNotation</span> <span class='varid'>notationAttributes</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-390"></a> <span class='varop'>++</span>-<a name="line-391"></a> <span class='comment'>-- 6. Validate that ID attributes have the type #IMPLIED or #REQUIRED</span>-<a name="line-392"></a> <span class='layout'>(</span><span class='varid'>checkIdKindConstraint</span> <span class='varop'>$$</span> <span class='varid'>idAttributes</span><span class='layout'>)</span>-<a name="line-393"></a> <span class='varop'>++</span>-<a name="line-394"></a> <span class='comment'>-- 7. Validate that all referenced notations are declared</span>-<a name="line-395"></a> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>checkNotationDeclaration</span> <span class='varid'>notationNames</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>notationAttributes</span><span class='layout'>)</span>-<a name="line-396"></a> <span class='varop'>++</span>-<a name="line-397"></a> <span class='comment'>-- 8. Validate that notations are not declared for EMPTY elements</span>-<a name="line-398"></a> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>checkNoNotationForEmptyElement</span>-<a name="line-399"></a> <span class='layout'>(</span>-<a name="line-400"></a> <span class='varid'>getXTextValues</span> <span class='layout'>(</span><span class='varid'>getDTDValue</span> <span class='varid'>a_name</span> <span class='varop'>$$</span> <span class='layout'>(</span><span class='varid'>isEmptyElement</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-401"></a> <span class='layout'>)</span>-<a name="line-402"></a> <span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>notationAttributes</span><span class='layout'>)</span>-<a name="line-403"></a> <span class='varop'>++</span>-<a name="line-404"></a> <span class='comment'>-- 9. Validate that the default value matches the lexical constraints of it's type</span>-<a name="line-405"></a> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>checkDefaultValueTypes</span> <span class='varid'>dtdPart</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='layout'>(</span><span class='varid'>isDefaultAttrKind</span> <span class='varop'>$$</span> <span class='varid'>attributes</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-406"></a>-<a name="line-407"></a> <span class='keyword'>where</span>-<a name="line-408"></a> <span class='comment'>--------------------------------------------------------------------------</span>-<a name="line-409"></a> <span class='comment'>-- helper functions</span>-<a name="line-410"></a> <span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>isAttlist</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>-<a name="line-411"></a> <span class='varid'>idAttributes</span> <span class='keyglyph'>=</span> <span class='varid'>isIdAttrType</span> <span class='varop'>$$</span> <span class='varid'>attributes</span>-<a name="line-412"></a> <span class='varid'>notationAttributes</span> <span class='keyglyph'>=</span> <span class='varid'>isNotationAttrType</span> <span class='varop'>$$</span> <span class='varid'>attributes</span>-<a name="line-413"></a>-<a name="line-414"></a>-<a name="line-415"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span>-<a name="line-416"></a> <span class='varid'>attName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span>-<a name="line-417"></a>-<a name="line-418"></a> <span class='comment'>--------------------------------------------------------------------------</span>-<a name="line-419"></a> <span class='comment'>-- 1. Find attributes for which no elements are declared</span>-<a name="line-420"></a> <span class='varid'>checkDeclaredElements</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-421"></a> <span class='varid'>checkDeclaredElements</span> <span class='varid'>elemNames'</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-422"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>elemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>`elem`</span> <span class='varid'>elemNames'</span>-<a name="line-423"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-424"></a> <span class='keyword'>else</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"The element type \""</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>al</span> <span class='varop'>++</span> <span class='str'>"\" used in declaration "</span><span class='varop'>++</span>-<a name="line-425"></a> <span class='str'>"of attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span><span class='str'>"\" is not declared."</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-426"></a>-<a name="line-427"></a> <span class='varid'>checkDeclaredElements</span> <span class='keyword'>_</span> <span class='varid'>nd</span>-<a name="line-428"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkDeclaredElements: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-429"></a>-<a name="line-430"></a> <span class='comment'>--------------------------------------------------------------------------</span>-<a name="line-431"></a> <span class='comment'>-- 2. Find attributes which are declared more than once</span>-<a name="line-432"></a> <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-433"></a> <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>-<a name="line-434"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>-<a name="line-435"></a> <span class='keyword'>then</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"Attribute \""</span><span class='varop'>++</span> <span class='varid'>aname</span> <span class='varop'>++</span><span class='str'>"\" for element type \""</span><span class='varop'>++</span>-<a name="line-436"></a> <span class='varid'>ename</span> <span class='varop'>++</span><span class='str'>"\" is already declared. First "</span><span class='varop'>++</span>-<a name="line-437"></a> <span class='str'>"declaration will be used."</span><span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-438"></a> <span class='varop'>++</span>-<a name="line-439"></a> <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='varid'>xs</span> <span class='varid'>used</span>-<a name="line-440"></a>-<a name="line-441"></a> <span class='keyword'>else</span> <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>-<a name="line-442"></a> <span class='keyword'>where</span>-<a name="line-443"></a> <span class='varid'>ename</span> <span class='keyglyph'>=</span> <span class='varid'>elemName</span> <span class='varid'>al</span>-<a name="line-444"></a> <span class='varid'>aname</span> <span class='keyglyph'>=</span> <span class='varid'>attName</span> <span class='varid'>al</span>-<a name="line-445"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>ename</span> <span class='varop'>++</span> <span class='str'>"|"</span> <span class='varop'>++</span> <span class='varid'>aname</span>-<a name="line-446"></a>-<a name="line-447"></a> <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-448"></a>-<a name="line-449"></a> <span class='varid'>checkForUniqueAttributeDeclaration</span> <span class='varid'>nd</span> <span class='keyword'>_</span>-<a name="line-450"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueAttributeDeclaration: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-451"></a>-<a name="line-452"></a>-<a name="line-453"></a> <span class='comment'>--------------------------------------------------------------------------</span>-<a name="line-454"></a> <span class='comment'>-- 3. Find enumerated attribute types which nmtokens are declared more than once</span>-<a name="line-455"></a> <span class='varid'>checkEnumeratedTypes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-456"></a> <span class='varid'>checkEnumeratedTypes</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-457"></a> <span class='keyglyph'>=</span> <span class='varid'>checkForUniqueType</span> <span class='varid'>cs</span> <span class='conid'>[]</span>-<a name="line-458"></a> <span class='keyword'>where</span>-<a name="line-459"></a> <span class='varid'>checkForUniqueType</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-460"></a> <span class='varid'>checkForUniqueType</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>-<a name="line-461"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>nmtoken</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>-<a name="line-462"></a> <span class='keyword'>then</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"Nmtoken \""</span><span class='varop'>++</span> <span class='varid'>nmtoken</span> <span class='varop'>++</span><span class='str'>"\" should not "</span><span class='varop'>++</span>-<a name="line-463"></a> <span class='str'>"occur more than once in attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span>-<a name="line-464"></a> <span class='str'>"\" for element \""</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>al</span> <span class='varop'>++</span> <span class='str'>"\"."</span><span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-465"></a> <span class='varop'>++</span>-<a name="line-466"></a> <span class='varid'>checkForUniqueType</span> <span class='varid'>xs</span> <span class='varid'>used</span>-<a name="line-467"></a>-<a name="line-468"></a> <span class='keyword'>else</span> <span class='varid'>checkForUniqueType</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>nmtoken</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>-<a name="line-469"></a> <span class='keyword'>where</span>-<a name="line-470"></a> <span class='varid'>nmtoken</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>-<a name="line-471"></a>-<a name="line-472"></a> <span class='varid'>checkForUniqueType</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-473"></a>-<a name="line-474"></a> <span class='varid'>checkForUniqueType</span> <span class='varid'>nd</span> <span class='keyword'>_</span>-<a name="line-475"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueType: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-476"></a>-<a name="line-477"></a> <span class='varid'>checkEnumeratedTypes</span> <span class='varid'>nd</span>-<a name="line-478"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkEnumeratedTypes: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-479"></a>-<a name="line-480"></a>-<a name="line-481"></a> <span class='comment'>--------------------------------------------------------------------------</span>-<a name="line-482"></a> <span class='comment'>-- 4. Validate that there exists only one ID attribute for an element</span>-<a name="line-483"></a> <span class='varid'>checkForUniqueId</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-484"></a> <span class='varid'>checkForUniqueId</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>-<a name="line-485"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>ename</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>-<a name="line-486"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Element \""</span><span class='varop'>++</span> <span class='varid'>ename</span> <span class='varop'>++</span> <span class='str'>"\" already has attribute of type "</span><span class='varop'>++</span>-<a name="line-487"></a> <span class='str'>"ID, another attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span> <span class='str'>"\" of type ID is "</span><span class='varop'>++</span>-<a name="line-488"></a> <span class='str'>"not permitted."</span><span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-489"></a> <span class='varop'>++</span>-<a name="line-490"></a> <span class='varid'>checkForUniqueId</span> <span class='varid'>xs</span> <span class='varid'>used</span>-<a name="line-491"></a>-<a name="line-492"></a> <span class='keyword'>else</span> <span class='varid'>checkForUniqueId</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>ename</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>-<a name="line-493"></a> <span class='keyword'>where</span>-<a name="line-494"></a> <span class='varid'>ename</span> <span class='keyglyph'>=</span> <span class='varid'>elemName</span> <span class='varid'>al</span>-<a name="line-495"></a>-<a name="line-496"></a> <span class='varid'>checkForUniqueId</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-497"></a>-<a name="line-498"></a> <span class='varid'>checkForUniqueId</span> <span class='varid'>nd</span> <span class='keyword'>_</span>-<a name="line-499"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueId: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-500"></a>-<a name="line-501"></a> <span class='comment'>--------------------------------------------------------------------------</span>-<a name="line-502"></a> <span class='comment'>-- 5. Validate that there exists only one NOTATION attribute for an element</span>-<a name="line-503"></a> <span class='varid'>checkForUniqueNotation</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-504"></a> <span class='varid'>checkForUniqueNotation</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>-<a name="line-505"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>ename</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>-<a name="line-506"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Element \""</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>al</span> <span class='varop'>++</span> <span class='str'>"\" already has attribute of type "</span><span class='varop'>++</span>-<a name="line-507"></a> <span class='str'>"NOTATION, another attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span> <span class='str'>"\" of type NOTATION "</span><span class='varop'>++</span>-<a name="line-508"></a> <span class='str'>"is not permitted."</span><span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-509"></a> <span class='varop'>++</span>-<a name="line-510"></a> <span class='varid'>checkForUniqueNotation</span> <span class='varid'>xs</span> <span class='varid'>used</span>-<a name="line-511"></a>-<a name="line-512"></a> <span class='keyword'>else</span> <span class='varid'>checkForUniqueNotation</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>ename</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>-<a name="line-513"></a> <span class='keyword'>where</span>-<a name="line-514"></a> <span class='varid'>ename</span> <span class='keyglyph'>=</span> <span class='varid'>elemName</span> <span class='varid'>al</span>-<a name="line-515"></a>-<a name="line-516"></a> <span class='varid'>checkForUniqueNotation</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-517"></a>-<a name="line-518"></a> <span class='varid'>checkForUniqueNotation</span> <span class='varid'>nd</span> <span class='keyword'>_</span>-<a name="line-519"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkForUniqueNotation: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-520"></a>-<a name="line-521"></a> <span class='comment'>--------------------------------------------------------------------------</span>-<a name="line-522"></a> <span class='comment'>-- 6. Validate that ID attributes have the type #IMPLIED or #REQUIRED</span>-<a name="line-523"></a> <span class='varid'>checkIdKindConstraint</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-524"></a> <span class='varid'>checkIdKindConstraint</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-525"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>attKind</span> <span class='varop'>==</span> <span class='varid'>k_implied</span><span class='layout'>)</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='varid'>attKind</span> <span class='varop'>==</span> <span class='varid'>k_required</span><span class='layout'>)</span>-<a name="line-526"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-527"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"ID attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span><span class='str'>"\" must have a declared default "</span><span class='varop'>++</span>-<a name="line-528"></a> <span class='str'>"of \"#IMPLIED\" or \"REQUIRED\""</span><span class='layout'>)</span> <span class='varid'>nd</span>-<a name="line-529"></a> <span class='keyword'>where</span>-<a name="line-530"></a> <span class='varid'>attKind</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_kind</span> <span class='varid'>al</span>-<a name="line-531"></a>-<a name="line-532"></a> <span class='varid'>checkIdKindConstraint</span> <span class='varid'>nd</span>-<a name="line-533"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkIdKindConstraint: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-534"></a>-<a name="line-535"></a>-<a name="line-536"></a> <span class='comment'>--------------------------------------------------------------------------</span>-<a name="line-537"></a> <span class='comment'>-- 7. Validate that all referenced notations are declared</span>-<a name="line-538"></a> <span class='varid'>checkNotationDeclaration</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-539"></a> <span class='varid'>checkNotationDeclaration</span> <span class='varid'>notations</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-540"></a> <span class='keyglyph'>=</span> <span class='varid'>checkNotations</span> <span class='varop'>$$</span> <span class='varid'>cs</span>-<a name="line-541"></a> <span class='keyword'>where</span>-<a name="line-542"></a> <span class='varid'>checkNotations</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-543"></a> <span class='varid'>checkNotations</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-544"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>notation</span> <span class='varop'>`elem`</span> <span class='varid'>notations</span>-<a name="line-545"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-546"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The notation \""</span><span class='varop'>++</span> <span class='varid'>notation</span> <span class='varop'>++</span><span class='str'>"\" must be declared when "</span><span class='varop'>++</span>-<a name="line-547"></a> <span class='str'>"referenced in the notation type list for attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span>-<a name="line-548"></a> <span class='str'>"\" of element \""</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>al</span> <span class='varop'>++</span><span class='str'>"\"."</span><span class='layout'>)</span> <span class='varid'>nd</span>-<a name="line-549"></a> <span class='keyword'>where</span>-<a name="line-550"></a> <span class='varid'>notation</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al'</span>-<a name="line-551"></a>-<a name="line-552"></a> <span class='varid'>checkNotations</span> <span class='varid'>nd</span>-<a name="line-553"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkNotations: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-554"></a>-<a name="line-555"></a> <span class='varid'>checkNotationDeclaration</span> <span class='keyword'>_</span> <span class='varid'>nd</span>-<a name="line-556"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkNotationDeclaration: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-557"></a>-<a name="line-558"></a> <span class='comment'>--------------------------------------------------------------------------</span>-<a name="line-559"></a> <span class='comment'>-- 8. Validate that notations are not declared for EMPTY elements</span>-<a name="line-560"></a> <span class='varid'>checkNoNotationForEmptyElement</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-561"></a> <span class='varid'>checkNoNotationForEmptyElement</span> <span class='varid'>emptyElems</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-562"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>elemName</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>`elem`</span> <span class='varid'>emptyElems</span>-<a name="line-563"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute \""</span><span class='varop'>++</span> <span class='varid'>attName</span> <span class='varid'>al</span> <span class='varop'>++</span><span class='str'>"\" of type NOTATION must not be "</span><span class='varop'>++</span>-<a name="line-564"></a> <span class='str'>"declared on the element \""</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>al</span> <span class='varop'>++</span><span class='str'>"\" declared EMPTY."</span><span class='layout'>)</span>-<a name="line-565"></a> <span class='varid'>nd</span>-<a name="line-566"></a> <span class='keyword'>else</span> <span class='conid'>[]</span>-<a name="line-567"></a>-<a name="line-568"></a> <span class='varid'>checkNoNotationForEmptyElement</span> <span class='keyword'>_</span> <span class='varid'>nd</span>-<a name="line-569"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkNoNotationForEmptyElement: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-570"></a>-<a name="line-571"></a> <span class='comment'>--------------------------------------------------------------------------</span>-<a name="line-572"></a> <span class='comment'>-- 9. Validate that default values meet the lexical constraints of the attribute types</span>-<a name="line-573"></a> <span class='varid'>checkDefaultValueTypes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-574"></a> <span class='varid'>checkDefaultValueTypes</span> <span class='varid'>dtdPart'</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-575"></a> <span class='keyglyph'>=</span> <span class='varid'>checkAttributeValue</span> <span class='varid'>dtdPart'</span> <span class='varid'>n</span> <span class='varid'>n</span>-<a name="line-576"></a>-<a name="line-577"></a> <span class='varid'>checkDefaultValueTypes</span> <span class='keyword'>_</span> <span class='varid'>nd</span>-<a name="line-578"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkDefaultValueTypes: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-579"></a>-<a name="line-580"></a>-<a name="line-581"></a>-<a name="line-582"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-583"></a>-<a name="line-584"></a><span class='comment'>-- |</span>-<a name="line-585"></a><span class='comment'>-- Removes doublicate declarations from the DTD, which first declaration is</span>-<a name="line-586"></a><span class='comment'>-- binding. This is the case for ATTLIST and ENTITY declarations.</span>-<a name="line-587"></a><span class='comment'>--</span>-<a name="line-588"></a><span class='comment'>-- - returns : A function that replaces the children of DOCTYPE nodes by a list</span>-<a name="line-589"></a><span class='comment'>-- where all multiple declarations are removed.</span>-<a name="line-590"></a>-<a name="line-591"></a><a name="removeDoublicateDefs"></a><span class='definition'>removeDoublicateDefs</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-592"></a><span class='definition'>removeDoublicateDefs</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>DOCTYPE</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-593"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>removeDoubleDefs</span> <span class='conid'>[]</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-594"></a> <span class='keyword'>where</span>-<a name="line-595"></a> <span class='varid'>removeDoubleDefs</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-596"></a> <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span>-<a name="line-597"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>elemAttr</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>-<a name="line-598"></a> <span class='keyword'>then</span> <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='varid'>xs</span>-<a name="line-599"></a> <span class='keyword'>else</span> <span class='varid'>x</span>-<a name="line-600"></a> <span class='conop'>:</span>-<a name="line-601"></a> <span class='varid'>removeDoubleDefs</span> <span class='layout'>(</span><span class='varid'>elemAttr</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span> <span class='varid'>xs</span>-<a name="line-602"></a> <span class='keyword'>where</span>-<a name="line-603"></a> <span class='varid'>elemAttr</span> <span class='keyglyph'>=</span> <span class='varid'>elemName</span> <span class='varop'>++</span> <span class='str'>"|"</span> <span class='varop'>++</span> <span class='varid'>attrName</span>-<a name="line-604"></a> <span class='varid'>attrName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al</span>-<a name="line-605"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-606"></a>-<a name="line-607"></a>-<a name="line-608"></a> <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span>-<a name="line-609"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>-<a name="line-610"></a> <span class='keyword'>then</span> <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='varid'>xs</span>-<a name="line-611"></a> <span class='keyword'>else</span> <span class='varid'>x</span>-<a name="line-612"></a> <span class='conop'>:</span>-<a name="line-613"></a> <span class='varid'>removeDoubleDefs</span> <span class='layout'>(</span><span class='varid'>name</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span> <span class='varid'>xs</span>-<a name="line-614"></a> <span class='keyword'>where</span>-<a name="line-615"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-616"></a>-<a name="line-617"></a>-<a name="line-618"></a> <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span>-<a name="line-619"></a> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>removeDoubleDefs</span> <span class='varid'>used</span> <span class='varid'>xs</span>-<a name="line-620"></a>-<a name="line-621"></a> <span class='varid'>removeDoubleDefs</span> <span class='keyword'>_</span> <span class='conid'>[]</span>-<a name="line-622"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-623"></a>-<a name="line-624"></a>-<a name="line-625"></a><span class='definition'>removeDoublicateDefs</span> <span class='varid'>n</span>-<a name="line-626"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>-<a name="line-627"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Validator-DocTransformation.html
@@ -1,244 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- This module provides functions for transforming XML documents represented as</span>-<a name="line-3"></a><span class='comment'>-- XmlTree with respect to its DTD.</span>-<a name="line-4"></a>-<a name="line-5"></a><span class='comment'>-- Transforming an XML document with respect to its DTD means:</span>-<a name="line-6"></a><span class='comment'>--</span>-<a name="line-7"></a><span class='comment'>-- - add all attributes with default values</span>-<a name="line-8"></a><span class='comment'>--</span>-<a name="line-9"></a><span class='comment'>-- - normalize all attribute values</span>-<a name="line-10"></a><span class='comment'>--</span>-<a name="line-11"></a><span class='comment'>-- - sort all attributes in lexical order</span>-<a name="line-12"></a><span class='comment'>--</span>-<a name="line-13"></a>-<a name="line-14"></a>-<a name="line-15"></a><span class='comment'>-- Note: Transformation should be started after validation.</span>-<a name="line-16"></a>-<a name="line-17"></a>-<a name="line-18"></a><span class='comment'>-- Before the document is validated, a lookup-table is build on the basis of</span>-<a name="line-19"></a><span class='comment'>-- the DTD which maps element names to their transformation functions.</span>-<a name="line-20"></a><span class='comment'>-- After this initialization phase the whole document is traversed in preorder</span>-<a name="line-21"></a><span class='comment'>-- and every element is transformed by the XmlFilter from the lookup-table.</span>-<a name="line-22"></a>-<a name="line-23"></a><span class='comment'>-- Special namings in source code:</span>-<a name="line-24"></a><span class='comment'>--</span>-<a name="line-25"></a><span class='comment'>-- - nd - XDTD node</span>-<a name="line-26"></a><span class='comment'>--</span>-<a name="line-27"></a><span class='comment'>-- - n - XTag node</span>-<a name="line-28"></a><span class='comment'>--</span>-<a name="line-29"></a><span class='comment'>-- Author : .\\artin Schmidt</span>-<a name="line-30"></a>-<a name="line-31"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DocTransformation</span>-<a name="line-32"></a> <span class='layout'>(</span> <span class='varid'>transform</span>-<a name="line-33"></a> <span class='layout'>)</span>-<a name="line-34"></a><span class='keyword'>where</span>-<a name="line-35"></a>-<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-37"></a>-<a name="line-38"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>AttributeValueValidation</span>-<a name="line-39"></a>-<a name="line-40"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-41"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>-<a name="line-42"></a>-<a name="line-43"></a>-<a name="line-44"></a>-<a name="line-45"></a><span class='comment'>-- |</span>-<a name="line-46"></a><span class='comment'>-- Lookup-table which maps element names to their transformation functions. The</span>-<a name="line-47"></a><span class='comment'>-- transformation functions are XmlFilters.</span>-<a name="line-48"></a>-<a name="line-49"></a><a name="TransEnvTable"></a><span class='keyword'>type</span> <span class='conid'>TransEnvTable</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>TransEnv</span><span class='keyglyph'>]</span>-<a name="line-50"></a><a name="TransEnv"></a><span class='keyword'>type</span> <span class='conid'>TransEnv</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conid'>ElemName</span><span class='layout'>,</span> <span class='conid'>TransFct</span><span class='layout'>)</span>-<a name="line-51"></a><a name="ElemName"></a><span class='keyword'>type</span> <span class='conid'>ElemName</span> <span class='keyglyph'>=</span> <span class='conid'>String</span>-<a name="line-52"></a><a name="TransFct"></a><span class='keyword'>type</span> <span class='conid'>TransFct</span> <span class='keyglyph'>=</span> <span class='conid'>XmlFilter</span>-<a name="line-53"></a>-<a name="line-54"></a>-<a name="line-55"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-56"></a>-<a name="line-57"></a>-<a name="line-58"></a><span class='comment'>-- |</span>-<a name="line-59"></a><span class='comment'>-- filter for transforming the document.</span>-<a name="line-60"></a><span class='comment'>--</span>-<a name="line-61"></a><span class='comment'>-- * 1.parameter dtdPart : the DTD subset (Node @DOCTYPE@) of the XmlTree</span>-<a name="line-62"></a><span class='comment'>--</span>-<a name="line-63"></a><span class='comment'>-- - 2.parameter doc : the document subset of the XmlTree</span>-<a name="line-64"></a><span class='comment'>--</span>-<a name="line-65"></a><span class='comment'>-- - returns : a list of errors</span>-<a name="line-66"></a>-<a name="line-67"></a><a name="transform"></a><span class='definition'>transform</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-68"></a><span class='definition'>transform</span> <span class='varid'>dtdPart</span> <span class='varid'>dom</span>-<a name="line-69"></a> <span class='keyglyph'>=</span> <span class='varid'>traverseTree</span> <span class='varid'>transTable</span> <span class='varid'>dom</span>-<a name="line-70"></a> <span class='keyword'>where</span>-<a name="line-71"></a> <span class='varid'>transTable</span> <span class='keyglyph'>=</span> <span class='comment'>{-# SCC "buildAllTransFcts" #-}</span> <span class='varid'>buildAllTransformationFunctions</span> <span class='varid'>dtdPart</span>-<a name="line-72"></a>-<a name="line-73"></a>-<a name="line-74"></a>-<a name="line-75"></a><span class='comment'>-- |</span>-<a name="line-76"></a><span class='comment'>-- Traverse the XmlTree in preorder.</span>-<a name="line-77"></a><span class='comment'>--</span>-<a name="line-78"></a><span class='comment'>-- * 1.parameter transEnv : lookup-table which maps element names to their transformation functions</span>-<a name="line-79"></a><span class='comment'>--</span>-<a name="line-80"></a><span class='comment'>-- - returns : the whole transformed document</span>-<a name="line-81"></a>-<a name="line-82"></a><a name="traverseTree"></a><span class='definition'>traverseTree</span> <span class='keyglyph'>::</span> <span class='conid'>TransEnvTable</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-83"></a><span class='definition'>traverseTree</span> <span class='varid'>transEnv</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-84"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>traverseTree</span> <span class='varid'>transEnv</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='layout'>(</span><span class='varid'>transFct</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-85"></a> <span class='keyword'>where</span>-<a name="line-86"></a> <span class='varid'>transFct</span> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varid'>transEnv</span><span class='layout'>)</span> <span class='keyword'>of</span>-<a name="line-87"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='varid'>this</span> <span class='comment'>-- element not in DTD, can't be transformed</span>-<a name="line-88"></a> <span class='conid'>Just</span> <span class='varid'>f</span> <span class='keyglyph'>-></span> <span class='varid'>f</span>-<a name="line-89"></a>-<a name="line-90"></a><span class='definition'>traverseTree</span> <span class='keyword'>_</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>n</span><span class='keyglyph'>]</span>-<a name="line-91"></a>-<a name="line-92"></a>-<a name="line-93"></a><span class='comment'>-- |</span>-<a name="line-94"></a><span class='comment'>-- Build all transformation functions.</span>-<a name="line-95"></a><span class='comment'>--</span>-<a name="line-96"></a><span class='comment'>-- * 1.parameter dtdPart : the DTD subset, root node should be of type @DOCTYPE@</span>-<a name="line-97"></a><span class='comment'>--</span>-<a name="line-98"></a><span class='comment'>-- - returns : lookup-table which maps element names to their transformation functions</span>-<a name="line-99"></a>-<a name="line-100"></a><a name="buildAllTransformationFunctions"></a><span class='definition'>buildAllTransformationFunctions</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>TransEnvTable</span>-<a name="line-101"></a><span class='definition'>buildAllTransformationFunctions</span> <span class='varid'>dtdPart</span>-<a name="line-102"></a> <span class='keyglyph'>=</span> <span class='varid'>buildTransRoot</span>-<a name="line-103"></a> <span class='conop'>:</span>-<a name="line-104"></a> <span class='comment'>-- construct the list of filters</span>-<a name="line-105"></a> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>buildTransformationFunctions</span> <span class='varid'>dtdNodes</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>isElement</span> <span class='varop'>$$</span> <span class='varid'>dtdNodes</span><span class='layout'>)</span>-<a name="line-106"></a> <span class='keyword'>where</span>-<a name="line-107"></a> <span class='varid'>dtdNodes</span> <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varid'>dtdPart</span>-<a name="line-108"></a>-<a name="line-109"></a>-<a name="line-110"></a><span class='comment'>-- |</span>-<a name="line-111"></a><span class='comment'>-- Build a transformation function for the document root. By root @\/@</span>-<a name="line-112"></a><span class='comment'>-- is meant, which is the topmost dummy created by the parser. This function is only a</span>-<a name="line-113"></a><span class='comment'>-- dummy, too.</span>-<a name="line-114"></a><span class='comment'>--</span>-<a name="line-115"></a><span class='comment'>-- * returns : entry for the lookup-table</span>-<a name="line-116"></a>-<a name="line-117"></a><a name="buildTransRoot"></a><span class='definition'>buildTransRoot</span> <span class='keyglyph'>::</span> <span class='conid'>TransEnv</span>-<a name="line-118"></a><span class='definition'>buildTransRoot</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>t_root</span><span class='layout'>,</span> <span class='varid'>this</span><span class='layout'>)</span>-<a name="line-119"></a>-<a name="line-120"></a>-<a name="line-121"></a>-<a name="line-122"></a><span class='comment'>-- |</span>-<a name="line-123"></a><span class='comment'>-- Build transformation functions for an element.</span>-<a name="line-124"></a><span class='comment'>--</span>-<a name="line-125"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-126"></a><span class='comment'>--</span>-<a name="line-127"></a><span class='comment'>-- * 1.parameter nd : element declaration for which the transformation functions are</span>-<a name="line-128"></a><span class='comment'>-- created</span>-<a name="line-129"></a><span class='comment'>--</span>-<a name="line-130"></a><span class='comment'>-- - returns : entry for the lookup-table</span>-<a name="line-131"></a>-<a name="line-132"></a><a name="buildTransformationFunctions"></a><span class='definition'>buildTransformationFunctions</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>TransEnv</span>-<a name="line-133"></a>-<a name="line-134"></a><span class='definition'>buildTransformationFunctions</span> <span class='varid'>dtdPart</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-135"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>name</span><span class='layout'>,</span> <span class='varid'>transFct</span><span class='layout'>)</span>-<a name="line-136"></a> <span class='keyword'>where</span>-<a name="line-137"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-138"></a> <span class='varid'>transFct</span> <span class='keyglyph'>=</span> <span class='varid'>lexicographicAttributeOrder</span>-<a name="line-139"></a> <span class='varop'>`o`</span>-<a name="line-140"></a> <span class='varid'>normalizeAttributeValues</span> <span class='varid'>n</span> <span class='varid'>dtdPart</span>-<a name="line-141"></a> <span class='varop'>`o`</span>-<a name="line-142"></a> <span class='varid'>setDefaultAttributeValues</span> <span class='varid'>n</span> <span class='varid'>dtdPart</span>-<a name="line-143"></a>-<a name="line-144"></a><span class='definition'>buildTransformationFunctions</span> <span class='keyword'>_</span> <span class='varid'>n</span>-<a name="line-145"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildTransformationFunctions: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-146"></a>-<a name="line-147"></a>-<a name="line-148"></a>-<a name="line-149"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-150"></a>-<a name="line-151"></a>-<a name="line-152"></a><span class='comment'>-- |</span>-<a name="line-153"></a><span class='comment'>-- Sort the attributes of an element in lexicographic order.</span>-<a name="line-154"></a><span class='comment'>--</span>-<a name="line-155"></a><span class='comment'>-- * returns : a function which takes an element (XTag), sorts its</span>-<a name="line-156"></a><span class='comment'>-- attributes in lexicographic order and returns the changed element</span>-<a name="line-157"></a>-<a name="line-158"></a><a name="lexicographicAttributeOrder"></a><span class='definition'>lexicographicAttributeOrder</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-159"></a><span class='definition'>lexicographicAttributeOrder</span>-<a name="line-160"></a> <span class='keyglyph'>=</span> <span class='varid'>processAttrl</span> <span class='varid'>sortAttrl</span>-<a name="line-161"></a> <span class='keyword'>where</span>-<a name="line-162"></a> <span class='varid'>sortAttrl</span> <span class='varid'>al</span>-<a name="line-163"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>al</span> <span class='varop'>!!</span><span class='layout'>)</span> <span class='varid'>ixs</span>-<a name="line-164"></a> <span class='keyword'>where</span>-<a name="line-165"></a> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>nameOf</span> <span class='varid'>al</span>-<a name="line-166"></a> <span class='varid'>ixs</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>snd</span> <span class='varop'>.</span> <span class='varid'>sort</span> <span class='varop'>.</span> <span class='varid'>zip</span> <span class='varid'>ns</span> <span class='varop'>$</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='num'>0</span><span class='keyglyph'>::</span><span class='conid'>Int</span><span class='layout'>)</span><span class='keyglyph'>..</span><span class='keyglyph'>]</span>-<a name="line-167"></a>-<a name="line-168"></a><span class='comment'>-- |</span>-<a name="line-169"></a><span class='comment'>-- Normalize attribute values.</span>-<a name="line-170"></a><span class='comment'>--</span>-<a name="line-171"></a><span class='comment'>-- * returns : a function which takes an element (XTag), normalizes its</span>-<a name="line-172"></a><span class='comment'>-- attribute values and returns the changed element</span>-<a name="line-173"></a>-<a name="line-174"></a><a name="normalizeAttributeValues"></a><span class='definition'>normalizeAttributeValues</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-175"></a><span class='definition'>normalizeAttributeValues</span> <span class='varid'>elemDescr</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>dtdPart</span>-<a name="line-176"></a> <span class='keyglyph'>=</span> <span class='varid'>processAttr</span> <span class='varid'>normalizeAttr</span>-<a name="line-177"></a> <span class='keyword'>where</span>-<a name="line-178"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>elemDescr</span>-<a name="line-179"></a> <span class='varid'>declaredAtts</span> <span class='keyglyph'>=</span> <span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>-<a name="line-180"></a>-<a name="line-181"></a> <span class='varid'>normalizeAttr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-182"></a> <span class='varid'>normalizeAttr</span> <span class='varid'>att</span>-<a name="line-183"></a> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttrValue</span> <span class='layout'>(</span><span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>attDescr</span>-<a name="line-184"></a> <span class='keyword'>then</span> <span class='conid'>Nothing</span>-<a name="line-185"></a> <span class='keyword'>else</span> <span class='conid'>Just</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>attDescr</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>att</span>-<a name="line-186"></a> <span class='keyword'>where</span>-<a name="line-187"></a> <span class='varid'>attDescr</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>valueOfDTD</span> <span class='varid'>a_value</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>nameOf</span> <span class='varid'>att</span><span class='layout'>)</span> <span class='varid'>declaredAtts</span>-<a name="line-188"></a>-<a name="line-189"></a> <span class='varid'>normalizeAttrValue</span> <span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-190"></a> <span class='varid'>normalizeAttrValue</span> <span class='varid'>descr</span>-<a name="line-191"></a> <span class='keyglyph'>=</span> <span class='varid'>modifyChildren</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>modifyText</span> <span class='layout'>(</span><span class='varid'>normalizeAttributeValue</span> <span class='varid'>descr</span><span class='layout'>)</span> <span class='varop'>$$</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>xmlTreesToText</span><span class='layout'>)</span>-<a name="line-192"></a>-<a name="line-193"></a><span class='definition'>normalizeAttributeValues</span> <span class='varid'>n</span> <span class='keyword'>_</span>-<a name="line-194"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"normalizeAttributeValues: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-195"></a>-<a name="line-196"></a>-<a name="line-197"></a>-<a name="line-198"></a><span class='comment'>-- |</span>-<a name="line-199"></a><span class='comment'>-- Set default attribute values if they are not set.</span>-<a name="line-200"></a><span class='comment'>--</span>-<a name="line-201"></a><span class='comment'>-- * returns : a function which takes an element (XTag), adds missing attribute</span>-<a name="line-202"></a><span class='comment'>-- defaults and returns the changed element</span>-<a name="line-203"></a>-<a name="line-204"></a><a name="setDefaultAttributeValues"></a><span class='definition'>setDefaultAttributeValues</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-205"></a><span class='definition'>setDefaultAttributeValues</span> <span class='varid'>elemDescr</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>dtdPart</span>-<a name="line-206"></a> <span class='keyglyph'>=</span> <span class='varid'>seqF</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>setDefault</span> <span class='varid'>defaultAtts</span><span class='layout'>)</span>-<a name="line-207"></a> <span class='keyword'>where</span>-<a name="line-208"></a> <span class='comment'>-- select the element name from the dtd</span>-<a name="line-209"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>elemDescr</span>-<a name="line-210"></a>-<a name="line-211"></a> <span class='varid'>defaultAtts</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>isFixedAttrKind</span> <span class='comment'>-- select attributes with default values</span>-<a name="line-212"></a> <span class='varop'>`orElse`</span>-<a name="line-213"></a> <span class='varid'>isDefaultAttrKind</span>-<a name="line-214"></a> <span class='layout'>)</span>-<a name="line-215"></a> <span class='varop'>$$</span>-<a name="line-216"></a> <span class='layout'>(</span><span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span><span class='layout'>)</span>-<a name="line-217"></a>-<a name="line-218"></a> <span class='varid'>setDefault</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-219"></a> <span class='varid'>setDefault</span> <span class='varid'>attrDescr</span> <span class='comment'>-- add the default attributes</span>-<a name="line-220"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>addAttr</span> <span class='varid'>attName</span> <span class='varid'>defaultValue</span> <span class='comment'>-- to tag nodes with missing attributes</span>-<a name="line-221"></a> <span class='varop'>`whenNot`</span>-<a name="line-222"></a> <span class='varid'>hasAttr</span> <span class='varid'>attName</span>-<a name="line-223"></a> <span class='layout'>)</span>-<a name="line-224"></a> <span class='varop'>`when`</span>-<a name="line-225"></a> <span class='varid'>isXTag</span>-<a name="line-226"></a> <span class='keyword'>where</span>-<a name="line-227"></a> <span class='varid'>attName</span> <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_value</span> <span class='varid'>attrDescr</span>-<a name="line-228"></a> <span class='varid'>defaultValue</span> <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_default</span> <span class='varid'>attrDescr</span>-<a name="line-229"></a>-<a name="line-230"></a>-<a name="line-231"></a><span class='definition'>setDefaultAttributeValues</span> <span class='varid'>n</span> <span class='keyword'>_</span>-<a name="line-232"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"setDefaultAttributeValues: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-233"></a>-<a name="line-234"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Validator-DocValidation.html
@@ -1,547 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- This module provides functions for validating XML Documents represented as</span>-<a name="line-3"></a><span class='comment'>-- XmlTree.</span>-<a name="line-4"></a>-<a name="line-5"></a><span class='comment'>-- Unlike other popular XML validation tools the validation process returns</span>-<a name="line-6"></a><span class='comment'>-- a list of errors instead of aborting after the first error was found.</span>-<a name="line-7"></a>-<a name="line-8"></a>-<a name="line-9"></a><span class='comment'>-- Before the document is validated, a lookup-table is build on the basis of</span>-<a name="line-10"></a><span class='comment'>-- the DTD which maps element names to their validation functions.</span>-<a name="line-11"></a><span class='comment'>-- After this initialization phase the whole document is traversed in preorder</span>-<a name="line-12"></a><span class='comment'>-- and every element is validated by the XmlFilter from the lookup-table.</span>-<a name="line-13"></a>-<a name="line-14"></a><span class='comment'>-- Special namings in source code:</span>-<a name="line-15"></a><span class='comment'>--</span>-<a name="line-16"></a><span class='comment'>-- - nd - XDTD node</span>-<a name="line-17"></a><span class='comment'>--</span>-<a name="line-18"></a><span class='comment'>-- - n - XTag node</span>-<a name="line-19"></a><span class='comment'>--</span>-<a name="line-20"></a><span class='comment'>-- Author : .\\artin Schmidt</span>-<a name="line-21"></a>-<a name="line-22"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DocValidation</span>-<a name="line-23"></a> <span class='layout'>(</span> <span class='varid'>validateDoc</span>-<a name="line-24"></a> <span class='layout'>)</span>-<a name="line-25"></a><span class='keyword'>where</span>-<a name="line-26"></a>-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-28"></a>-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>AttributeValueValidation</span>-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>XmlRE</span>-<a name="line-31"></a>-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-33"></a>-<a name="line-34"></a><span class='comment'>-- |</span>-<a name="line-35"></a><span class='comment'>-- Lookup-table which maps element names to their validation functions. The</span>-<a name="line-36"></a><span class='comment'>-- validation functions are XmlFilters.</span>-<a name="line-37"></a>-<a name="line-38"></a><a name="ValiEnvTable"></a><span class='keyword'>type</span> <span class='conid'>ValiEnvTable</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>ValiEnv</span><span class='keyglyph'>]</span>-<a name="line-39"></a><a name="ValiEnv"></a><span class='keyword'>type</span> <span class='conid'>ValiEnv</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conid'>ElemName</span><span class='layout'>,</span> <span class='conid'>ValFct</span><span class='layout'>)</span>-<a name="line-40"></a><a name="ElemName"></a><span class='keyword'>type</span> <span class='conid'>ElemName</span> <span class='keyglyph'>=</span> <span class='conid'>String</span>-<a name="line-41"></a><a name="ValFct"></a><span class='keyword'>type</span> <span class='conid'>ValFct</span> <span class='keyglyph'>=</span> <span class='conid'>XmlFilter</span>-<a name="line-42"></a>-<a name="line-43"></a>-<a name="line-44"></a>-<a name="line-45"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-46"></a>-<a name="line-47"></a>-<a name="line-48"></a><span class='comment'>-- |</span>-<a name="line-49"></a><span class='comment'>-- Validate a document.</span>-<a name="line-50"></a><span class='comment'>--</span>-<a name="line-51"></a><span class='comment'>-- * 1.parameter dtdPart : the DTD subset (Node @DOCTYPE@) of the XmlTree</span>-<a name="line-52"></a><span class='comment'>--</span>-<a name="line-53"></a><span class='comment'>-- - 2.parameter doc : the document subset of the XmlTree</span>-<a name="line-54"></a><span class='comment'>--</span>-<a name="line-55"></a><span class='comment'>-- - returns : a list of errors</span>-<a name="line-56"></a>-<a name="line-57"></a><a name="validateDoc"></a><span class='definition'>validateDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-58"></a><span class='definition'>validateDoc</span> <span class='varid'>dtdPart</span> <span class='varid'>doc</span>-<a name="line-59"></a> <span class='keyglyph'>=</span> <span class='varid'>traverseTree</span> <span class='varid'>valTable</span> <span class='varid'>doc</span>-<a name="line-60"></a> <span class='keyword'>where</span>-<a name="line-61"></a> <span class='varid'>valTable</span> <span class='keyglyph'>=</span> <span class='comment'>{-# SCC "buildAllValFcts" #-}</span> <span class='varid'>buildAllValidationFunctions</span> <span class='varid'>dtdPart</span>-<a name="line-62"></a>-<a name="line-63"></a>-<a name="line-64"></a><span class='comment'>-- |</span>-<a name="line-65"></a><span class='comment'>-- Traverse the XmlTree in preorder.</span>-<a name="line-66"></a><span class='comment'>--</span>-<a name="line-67"></a><span class='comment'>-- * 1.parameter valiEnv : lookup-table which maps element names to their validation functions</span>-<a name="line-68"></a><span class='comment'>--</span>-<a name="line-69"></a><span class='comment'>-- - returns : list of errors</span>-<a name="line-70"></a>-<a name="line-71"></a><a name="traverseTree"></a><span class='definition'>traverseTree</span> <span class='keyglyph'>::</span> <span class='conid'>ValiEnvTable</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-72"></a><span class='definition'>traverseTree</span> <span class='varid'>valiEnv</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-73"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>valFct</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>traverseTree</span> <span class='varid'>valiEnv</span><span class='layout'>)</span> <span class='varid'>cs</span>-<a name="line-74"></a> <span class='keyword'>where</span>-<a name="line-75"></a> <span class='varid'>valFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-76"></a> <span class='varid'>valFct</span>-<a name="line-77"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varid'>valiEnv</span><span class='layout'>)</span> <span class='keyword'>of</span>-<a name="line-78"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" not declared in DTD."</span><span class='layout'>)</span>-<a name="line-79"></a> <span class='conid'>Just</span> <span class='varid'>f</span> <span class='keyglyph'>-></span> <span class='varid'>f</span>-<a name="line-80"></a>-<a name="line-81"></a><span class='definition'>traverseTree</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-82"></a>-<a name="line-83"></a>-<a name="line-84"></a>-<a name="line-85"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-86"></a>-<a name="line-87"></a>-<a name="line-88"></a><span class='comment'>-- |</span>-<a name="line-89"></a><span class='comment'>-- Build all validation functions.</span>-<a name="line-90"></a><span class='comment'>--</span>-<a name="line-91"></a><span class='comment'>-- * 1.parameter dtdPart : DTD subset, root node should be of type @DOCTYPE@</span>-<a name="line-92"></a><span class='comment'>--</span>-<a name="line-93"></a><span class='comment'>-- - returns : lookup-table which maps element names to their validation functions</span>-<a name="line-94"></a>-<a name="line-95"></a><a name="buildAllValidationFunctions"></a><span class='definition'>buildAllValidationFunctions</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>ValiEnvTable</span>-<a name="line-96"></a><span class='definition'>buildAllValidationFunctions</span> <span class='varid'>dtdPart</span>-<a name="line-97"></a> <span class='keyglyph'>=</span> <span class='varid'>buildValidateRoot</span> <span class='varid'>dtdPart</span>-<a name="line-98"></a> <span class='conop'>:</span>-<a name="line-99"></a> <span class='comment'>-- construct a list of validation filters for all element declarations</span>-<a name="line-100"></a> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>buildValidateFunctions</span> <span class='varid'>dtdNodes</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>isElement</span> <span class='varop'>$$</span> <span class='varid'>dtdNodes</span><span class='layout'>)</span>-<a name="line-101"></a> <span class='keyword'>where</span>-<a name="line-102"></a> <span class='varid'>dtdNodes</span> <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varid'>dtdPart</span>-<a name="line-103"></a>-<a name="line-104"></a>-<a name="line-105"></a><span class='comment'>-- |</span>-<a name="line-106"></a><span class='comment'>-- Build a validation function for the document root. By root node @\/@</span>-<a name="line-107"></a><span class='comment'>-- is meant, which is the topmost dummy created by the parser.</span>-<a name="line-108"></a><span class='comment'>--</span>-<a name="line-109"></a><span class='comment'>-- * 1.parameter dtdPart : DTD subset, root node should be of type @DOCTYPE@</span>-<a name="line-110"></a><span class='comment'>--</span>-<a name="line-111"></a><span class='comment'>-- - returns : entry for the lookup-table</span>-<a name="line-112"></a>-<a name="line-113"></a><a name="buildValidateRoot"></a><span class='definition'>buildValidateRoot</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>ValiEnv</span>-<a name="line-114"></a><span class='definition'>buildValidateRoot</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>DOCTYPE</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-115"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>t_root</span><span class='layout'>,</span> <span class='varid'>valFct</span><span class='layout'>)</span>-<a name="line-116"></a> <span class='keyword'>where</span>-<a name="line-117"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-118"></a>-<a name="line-119"></a> <span class='varid'>valFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-120"></a> <span class='varid'>valFct</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-121"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>-<a name="line-122"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-123"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Root Element must be "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>". "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>nd</span>-<a name="line-124"></a> <span class='keyword'>where</span>-<a name="line-125"></a> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>re_sym</span> <span class='layout'>(</span><span class='varid'>name</span><span class='layout'>)</span>-<a name="line-126"></a> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-127"></a>-<a name="line-128"></a> <span class='varid'>valFct</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildValidateRoot: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-129"></a>-<a name="line-130"></a><span class='definition'>buildValidateRoot</span> <span class='varid'>nd</span>-<a name="line-131"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildValidateRoot: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-132"></a>-<a name="line-133"></a>-<a name="line-134"></a><span class='comment'>-- |</span>-<a name="line-135"></a><span class='comment'>-- Build validation functions for an element.</span>-<a name="line-136"></a><span class='comment'>--</span>-<a name="line-137"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-138"></a><span class='comment'>--</span>-<a name="line-139"></a><span class='comment'>-- - 2.parameter nd : element declaration for which the validation functions are</span>-<a name="line-140"></a><span class='comment'>-- created</span>-<a name="line-141"></a><span class='comment'>--</span>-<a name="line-142"></a><span class='comment'>-- - returns : entry for the lookup-table</span>-<a name="line-143"></a>-<a name="line-144"></a><a name="buildValidateFunctions"></a><span class='definition'>buildValidateFunctions</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>ValiEnv</span>-<a name="line-145"></a>-<a name="line-146"></a><span class='definition'>buildValidateFunctions</span> <span class='varid'>dtdPart</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-147"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>elemName</span><span class='layout'>,</span> <span class='varid'>valFct</span><span class='layout'>)</span>-<a name="line-148"></a> <span class='keyword'>where</span>-<a name="line-149"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-150"></a>-<a name="line-151"></a> <span class='varid'>valFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-152"></a> <span class='varid'>valFct</span> <span class='keyglyph'>=</span> <span class='varid'>buildContentValidation</span> <span class='varid'>nd</span>-<a name="line-153"></a> <span class='varop'>+++</span>-<a name="line-154"></a> <span class='varid'>buildAttributeValidation</span> <span class='varid'>dtdPart</span> <span class='varid'>nd</span>-<a name="line-155"></a>-<a name="line-156"></a><span class='definition'>buildValidateFunctions</span> <span class='keyword'>_</span> <span class='varid'>nd</span>-<a name="line-157"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildValidateFunctions: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-158"></a>-<a name="line-159"></a>-<a name="line-160"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-161"></a>-<a name="line-162"></a>-<a name="line-163"></a><span class='comment'>-- |</span>-<a name="line-164"></a><span class='comment'>-- Build validation functions for the content model of an element.</span>-<a name="line-165"></a><span class='comment'>-- Validity constraint: Element Valid (3 \/ p.18 in Spec)</span>-<a name="line-166"></a><span class='comment'>--</span>-<a name="line-167"></a><span class='comment'>-- * 1.parameter nd : element declaration for which the content validation functions</span>-<a name="line-168"></a><span class='comment'>-- are built</span>-<a name="line-169"></a><span class='comment'>--</span>-<a name="line-170"></a><span class='comment'>-- - returns : a function which takes an element (XTag), checks if its</span>-<a name="line-171"></a><span class='comment'>-- children match its content model and returns a list of errors</span>-<a name="line-172"></a>-<a name="line-173"></a><a name="buildContentValidation"></a><span class='definition'>buildContentValidation</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-174"></a><span class='definition'>buildContentValidation</span> <span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-175"></a> <span class='keyglyph'>=</span> <span class='varid'>contentValidation</span> <span class='varid'>attrType</span> <span class='varid'>nd</span>-<a name="line-176"></a> <span class='keyword'>where</span>-<a name="line-177"></a> <span class='varid'>attrType</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span>-<a name="line-178"></a>-<a name="line-179"></a>-<a name="line-180"></a> <span class='comment'>-- Delegates construction of the validation function on the basis of the</span>-<a name="line-181"></a> <span class='comment'>-- content model type</span>-<a name="line-182"></a> <span class='varid'>contentValidation</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-183"></a> <span class='varid'>contentValidation</span> <span class='varid'>typ</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-184"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_pcdata</span> <span class='keyglyph'>=</span> <span class='varid'>contentValidationPcdata</span>-<a name="line-185"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_empty</span> <span class='keyglyph'>=</span> <span class='varid'>contentValidationEmpty</span>-<a name="line-186"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>k_any</span> <span class='keyglyph'>=</span> <span class='varid'>contentValidationAny</span>-<a name="line-187"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>v_children</span> <span class='keyglyph'>=</span> <span class='varid'>contentValidationChildren</span> <span class='varid'>cs</span>-<a name="line-188"></a> <span class='keyglyph'>|</span> <span class='varid'>typ</span> <span class='varop'>==</span> <span class='varid'>v_mixed</span> <span class='keyglyph'>=</span> <span class='varid'>contentValidationMixed</span> <span class='varid'>cs</span>-<a name="line-189"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidation: unknown type: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>typ</span><span class='layout'>)</span>-<a name="line-190"></a>-<a name="line-191"></a> <span class='varid'>contentValidation</span> <span class='keyword'>_</span> <span class='varid'>nd'</span>-<a name="line-192"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidation: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd'</span><span class='layout'>)</span>-<a name="line-193"></a>-<a name="line-194"></a>-<a name="line-195"></a> <span class='comment'>-- Checks #PCDATA content models</span>-<a name="line-196"></a> <span class='varid'>contentValidationPcdata</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-197"></a> <span class='varid'>contentValidationPcdata</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-198"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>-<a name="line-199"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-200"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The content of element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>-<a name="line-201"></a> <span class='str'>" must match (#PCDATA). "</span><span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-202"></a> <span class='keyword'>where</span>-<a name="line-203"></a> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>re_rep</span> <span class='layout'>(</span><span class='varid'>re_sym</span> <span class='varid'>k_pcdata</span><span class='layout'>)</span>-<a name="line-204"></a> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-205"></a>-<a name="line-206"></a> <span class='varid'>contentValidationPcdata</span> <span class='varid'>n</span>-<a name="line-207"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidationPcdata: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-208"></a>-<a name="line-209"></a>-<a name="line-210"></a> <span class='comment'>-- Checks EMPTY content models</span>-<a name="line-211"></a> <span class='varid'>contentValidationEmpty</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-212"></a> <span class='varid'>contentValidationEmpty</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-213"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>-<a name="line-214"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-215"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The content of element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>-<a name="line-216"></a> <span class='str'>" must match EMPTY. "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-217"></a> <span class='keyword'>where</span>-<a name="line-218"></a> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>re_unit</span>-<a name="line-219"></a> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-220"></a>-<a name="line-221"></a> <span class='varid'>contentValidationEmpty</span> <span class='varid'>n</span>-<a name="line-222"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidationEmpty: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-223"></a>-<a name="line-224"></a>-<a name="line-225"></a> <span class='comment'>-- Checks ANY content models</span>-<a name="line-226"></a> <span class='varid'>contentValidationAny</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-227"></a> <span class='varid'>contentValidationAny</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-228"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>-<a name="line-229"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-230"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The content of element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>-<a name="line-231"></a> <span class='str'>" must match ANY. "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-232"></a> <span class='keyword'>where</span>-<a name="line-233"></a> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>re_rep</span> <span class='layout'>(</span><span class='varid'>re_dot</span><span class='layout'>)</span>-<a name="line-234"></a> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-235"></a>-<a name="line-236"></a> <span class='varid'>contentValidationAny</span> <span class='varid'>n</span>-<a name="line-237"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidationAny: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-238"></a>-<a name="line-239"></a>-<a name="line-240"></a> <span class='comment'>-- Checks "children" content models</span>-<a name="line-241"></a> <span class='varid'>contentValidationChildren</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-242"></a> <span class='varid'>contentValidationChildren</span> <span class='varid'>cm</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-243"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>-<a name="line-244"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-245"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The content of element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>-<a name="line-246"></a> <span class='str'>" must match "</span> <span class='varop'>++</span> <span class='varid'>printRE</span> <span class='varid'>re</span> <span class='varop'>++</span> <span class='str'>". "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-247"></a> <span class='keyword'>where</span>-<a name="line-248"></a> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>createRE</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cm</span><span class='layout'>)</span>-<a name="line-249"></a> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-250"></a>-<a name="line-251"></a> <span class='varid'>contentValidationChildren</span> <span class='keyword'>_</span> <span class='varid'>n</span>-<a name="line-252"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidationChildren: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-253"></a>-<a name="line-254"></a>-<a name="line-255"></a> <span class='comment'>-- Checks "mixed content" content models</span>-<a name="line-256"></a> <span class='varid'>contentValidationMixed</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-257"></a> <span class='varid'>contentValidationMixed</span> <span class='varid'>cm</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-258"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>msg</span> <span class='varop'>==</span> <span class='str'>""</span>-<a name="line-259"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-260"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"The content of element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>-<a name="line-261"></a> <span class='str'>" must match "</span> <span class='varop'>++</span> <span class='varid'>printRE</span> <span class='varid'>re</span> <span class='varop'>++</span> <span class='str'>". "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-262"></a> <span class='keyword'>where</span>-<a name="line-263"></a> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>re_rep</span> <span class='layout'>(</span><span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>re_sym</span> <span class='varid'>k_pcdata</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>createRE</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cm</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-264"></a> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>checkRE</span> <span class='layout'>(</span><span class='varid'>matches</span> <span class='varid'>re</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-265"></a>-<a name="line-266"></a> <span class='varid'>contentValidationMixed</span> <span class='keyword'>_</span> <span class='varid'>n</span>-<a name="line-267"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"contentValidationMixed: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-268"></a>-<a name="line-269"></a>-<a name="line-270"></a><span class='definition'>buildContentValidation</span> <span class='varid'>nd</span>-<a name="line-271"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildContentValidation: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-272"></a>-<a name="line-273"></a>-<a name="line-274"></a>-<a name="line-275"></a><span class='comment'>-- |</span>-<a name="line-276"></a><span class='comment'>-- Build a regular expression from the content model. The regular expression</span>-<a name="line-277"></a><span class='comment'>-- is provided by the module XmlRE.</span>-<a name="line-278"></a><span class='comment'>--</span>-<a name="line-279"></a><span class='comment'>-- * 1.parameter nd : node of the content model. Expected: @CONTENT@ or</span>-<a name="line-280"></a><span class='comment'>-- @NAME@</span>-<a name="line-281"></a><span class='comment'>--</span>-<a name="line-282"></a><span class='comment'>-- - returns : regular expression of the content model</span>-<a name="line-283"></a>-<a name="line-284"></a><a name="createRE"></a><span class='definition'>createRE</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='conid'>String</span>-<a name="line-285"></a><span class='definition'>createRE</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>CONTENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-286"></a> <span class='keyglyph'>=</span> <span class='varid'>processModifier</span> <span class='varid'>modifier</span>-<a name="line-287"></a> <span class='keyword'>where</span>-<a name="line-288"></a> <span class='varid'>modifier</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_modifier</span> <span class='varid'>al</span>-<a name="line-289"></a> <span class='varid'>kind</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_kind</span> <span class='varid'>al</span>-<a name="line-290"></a>-<a name="line-291"></a> <span class='varid'>processModifier</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='conid'>String</span>-<a name="line-292"></a> <span class='varid'>processModifier</span> <span class='varid'>m</span>-<a name="line-293"></a> <span class='keyglyph'>|</span> <span class='varid'>m</span> <span class='varop'>==</span> <span class='varid'>v_plus</span> <span class='keyglyph'>=</span> <span class='varid'>re_plus</span> <span class='layout'>(</span><span class='varid'>processKind</span> <span class='varid'>kind</span><span class='layout'>)</span>-<a name="line-294"></a> <span class='keyglyph'>|</span> <span class='varid'>m</span> <span class='varop'>==</span> <span class='varid'>v_star</span> <span class='keyglyph'>=</span> <span class='varid'>re_rep</span> <span class='layout'>(</span><span class='varid'>processKind</span> <span class='varid'>kind</span><span class='layout'>)</span>-<a name="line-295"></a> <span class='keyglyph'>|</span> <span class='varid'>m</span> <span class='varop'>==</span> <span class='varid'>v_option</span> <span class='keyglyph'>=</span> <span class='varid'>re_opt</span> <span class='layout'>(</span><span class='varid'>processKind</span> <span class='varid'>kind</span><span class='layout'>)</span>-<a name="line-296"></a> <span class='keyglyph'>|</span> <span class='varid'>m</span> <span class='varop'>==</span> <span class='varid'>v_null</span> <span class='keyglyph'>=</span> <span class='varid'>processKind</span> <span class='varid'>kind</span>-<a name="line-297"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"Unknown modifier: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>m</span><span class='layout'>)</span>-<a name="line-298"></a>-<a name="line-299"></a> <span class='varid'>processKind</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='conid'>String</span>-<a name="line-300"></a> <span class='varid'>processKind</span> <span class='varid'>k</span>-<a name="line-301"></a> <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>v_seq</span> <span class='keyglyph'>=</span> <span class='varid'>makeSequence</span> <span class='varid'>cs</span>-<a name="line-302"></a> <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>v_choice</span> <span class='keyglyph'>=</span> <span class='varid'>makeChoice</span> <span class='varid'>cs</span>-<a name="line-303"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"Unknown kind: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>k</span><span class='layout'>)</span>-<a name="line-304"></a>-<a name="line-305"></a> <span class='varid'>makeSequence</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='conid'>String</span>-<a name="line-306"></a> <span class='varid'>makeSequence</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='varid'>re_unit</span>-<a name="line-307"></a> <span class='varid'>makeSequence</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>createRE</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>makeSequence</span> <span class='varid'>xs</span><span class='layout'>)</span>-<a name="line-308"></a>-<a name="line-309"></a> <span class='varid'>makeChoice</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='conid'>String</span>-<a name="line-310"></a> <span class='varid'>makeChoice</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='varid'>re_zero</span> <span class='str'>""</span>-<a name="line-311"></a> <span class='varid'>makeChoice</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>createRE</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>makeChoice</span> <span class='varid'>xs</span><span class='layout'>)</span>-<a name="line-312"></a>-<a name="line-313"></a><span class='definition'>createRE</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>NAME</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-314"></a> <span class='keyglyph'>=</span> <span class='varid'>re_sym</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-315"></a>-<a name="line-316"></a><span class='definition'>createRE</span> <span class='varid'>nd</span>-<a name="line-317"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"createRE: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-318"></a>-<a name="line-319"></a>-<a name="line-320"></a>-<a name="line-321"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-322"></a>-<a name="line-323"></a>-<a name="line-324"></a>-<a name="line-325"></a><span class='comment'>-- |</span>-<a name="line-326"></a><span class='comment'>-- Build validation functions for the attributes of an element.</span>-<a name="line-327"></a><span class='comment'>--</span>-<a name="line-328"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-329"></a><span class='comment'>--</span>-<a name="line-330"></a><span class='comment'>-- - 2.parameter nd : element declaration for which the attribute validation functions</span>-<a name="line-331"></a><span class='comment'>-- are created</span>-<a name="line-332"></a><span class='comment'>--</span>-<a name="line-333"></a><span class='comment'>-- - returns : a function which takes an element (XTag), checks if its</span>-<a name="line-334"></a><span class='comment'>-- attributes are valid and returns a list of errors</span>-<a name="line-335"></a>-<a name="line-336"></a><a name="buildAttributeValidation"></a><span class='definition'>buildAttributeValidation</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-337"></a><span class='definition'>buildAttributeValidation</span> <span class='varid'>dtdPart</span> <span class='varid'>nd</span> <span class='keyglyph'>=</span>-<a name="line-338"></a> <span class='varid'>noDoublicateAttributes</span>-<a name="line-339"></a> <span class='varop'>+++</span>-<a name="line-340"></a> <span class='varid'>checkNotDeclardAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>nd</span>-<a name="line-341"></a> <span class='varop'>+++</span>-<a name="line-342"></a> <span class='varid'>checkRequiredAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>nd</span>-<a name="line-343"></a> <span class='varop'>+++</span>-<a name="line-344"></a> <span class='varid'>checkFixedAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>nd</span>-<a name="line-345"></a> <span class='varop'>+++</span>-<a name="line-346"></a> <span class='varid'>checkValuesOfAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>dtdPart</span> <span class='varid'>nd</span>-<a name="line-347"></a> <span class='keyword'>where</span>-<a name="line-348"></a> <span class='varid'>attrDecls</span> <span class='keyglyph'>=</span> <span class='varid'>isAttlist</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>-<a name="line-349"></a>-<a name="line-350"></a>-<a name="line-351"></a><span class='comment'>-- |</span>-<a name="line-352"></a><span class='comment'>-- Validate that all attributes of an element are unique.</span>-<a name="line-353"></a><span class='comment'>-- Well-formdness constraint: Unique AttSpec (3.1 \/ p.19 in Spec)</span>-<a name="line-354"></a><span class='comment'>--</span>-<a name="line-355"></a><span class='comment'>-- - returns : a function which takes an element (XTag), checks if its</span>-<a name="line-356"></a><span class='comment'>-- attributes are unique and returns a list of errors</span>-<a name="line-357"></a>-<a name="line-358"></a><a name="noDoublicateAttributes"></a><span class='definition'>noDoublicateAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-359"></a><span class='definition'>noDoublicateAttributes</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-360"></a> <span class='keyglyph'>=</span> <span class='varid'>doubles</span> <span class='varop'>.</span> <span class='varid'>reverse</span> <span class='varop'>$</span> <span class='varid'>names</span>-<a name="line-361"></a> <span class='keyword'>where</span>-<a name="line-362"></a> <span class='varid'>tagname</span> <span class='keyglyph'>=</span> <span class='varid'>nameOf</span> <span class='varid'>n</span>-<a name="line-363"></a> <span class='varid'>names</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>nameOf</span> <span class='varop'>.</span> <span class='varid'>getAttrl</span> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-364"></a>-<a name="line-365"></a> <span class='varid'>doubles</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-366"></a> <span class='varid'>doubles</span> <span class='conid'>[]</span>-<a name="line-367"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-368"></a> <span class='varid'>doubles</span> <span class='layout'>(</span><span class='varid'>n1</span><span class='conop'>:</span><span class='varid'>ns</span><span class='layout'>)</span>-<a name="line-369"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>n1</span> <span class='varop'>`elem`</span> <span class='varid'>ns</span>-<a name="line-370"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n1</span> <span class='varop'>++</span> <span class='str'>" was already specified for element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>tagname</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-371"></a> <span class='keyword'>else</span> <span class='conid'>[]</span>-<a name="line-372"></a> <span class='layout'>)</span> <span class='varop'>++</span> <span class='varid'>doubles</span> <span class='varid'>ns</span>-<a name="line-373"></a>-<a name="line-374"></a><span class='definition'>noDoublicateAttributes</span> <span class='varid'>n</span>-<a name="line-375"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"noDoublicateAttributes: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-376"></a>-<a name="line-377"></a>-<a name="line-378"></a><span class='comment'>-- |</span>-<a name="line-379"></a><span class='comment'>-- Validate that all \#REQUIRED attributes are provided.</span>-<a name="line-380"></a><span class='comment'>-- Validity constraint: Required Attributes (3.3.2 \/ p.28 in Spec)</span>-<a name="line-381"></a><span class='comment'>--</span>-<a name="line-382"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-383"></a><span class='comment'>--</span>-<a name="line-384"></a><span class='comment'>-- - 2.parameter nd : element declaration which attributes have to be checked</span>-<a name="line-385"></a><span class='comment'>--</span>-<a name="line-386"></a><span class='comment'>-- - returns : a function which takes an element (XTag), checks if all</span>-<a name="line-387"></a><span class='comment'>-- required attributes are provided and returns a list of errors</span>-<a name="line-388"></a>-<a name="line-389"></a><a name="checkRequiredAttributes"></a><span class='definition'>checkRequiredAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-390"></a><span class='definition'>checkRequiredAttributes</span> <span class='varid'>attrDecls</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-391"></a> <span class='keyglyph'>=</span> <span class='varid'>checkRequired</span> <span class='varid'>requiredAtts</span>-<a name="line-392"></a> <span class='keyword'>where</span>-<a name="line-393"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-394"></a> <span class='varid'>requiredAtts</span> <span class='keyglyph'>=</span> <span class='varid'>isRequiredAttrKind</span> <span class='varop'>$$</span> <span class='layout'>(</span><span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>attrDecls</span><span class='layout'>)</span>-<a name="line-395"></a>-<a name="line-396"></a>-<a name="line-397"></a> <span class='varid'>checkRequired</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-398"></a> <span class='varid'>checkRequired</span> <span class='layout'>(</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-399"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>satisfies</span> <span class='layout'>(</span><span class='varid'>hasAttr</span> <span class='varid'>attName</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-400"></a> <span class='keyword'>then</span> <span class='varid'>checkRequired</span> <span class='varid'>xs</span> <span class='varid'>n</span>-<a name="line-401"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attName</span> <span class='varop'>++</span> <span class='str'>" must be declared for element type "</span> <span class='varop'>++</span>-<a name="line-402"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-403"></a> <span class='varop'>++</span>-<a name="line-404"></a> <span class='varid'>checkRequired</span> <span class='varid'>xs</span> <span class='varid'>n</span>-<a name="line-405"></a> <span class='keyword'>where</span>-<a name="line-406"></a> <span class='varid'>attName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al'</span>-<a name="line-407"></a>-<a name="line-408"></a> <span class='varid'>checkRequired</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-409"></a>-<a name="line-410"></a> <span class='varid'>checkRequired</span> <span class='varid'>nd</span> <span class='varid'>n</span>-<a name="line-411"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkRequired: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-412"></a>-<a name="line-413"></a>-<a name="line-414"></a><span class='definition'>checkRequiredAttributes</span> <span class='keyword'>_</span> <span class='varid'>nd</span>-<a name="line-415"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkRequiredAttributes: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-416"></a>-<a name="line-417"></a>-<a name="line-418"></a>-<a name="line-419"></a><span class='comment'>-- |</span>-<a name="line-420"></a><span class='comment'>-- Validate that \#FIXED attributes match the default value.</span>-<a name="line-421"></a><span class='comment'>-- Validity constraint: Fixed Attribute Default (3.3.2 \/ p.28 in Spec)</span>-<a name="line-422"></a><span class='comment'>--</span>-<a name="line-423"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-424"></a><span class='comment'>--</span>-<a name="line-425"></a><span class='comment'>-- - 2.parameter nd : element declaration which attributes have to be checked</span>-<a name="line-426"></a><span class='comment'>--</span>-<a name="line-427"></a><span class='comment'>-- - returns : a function which takes an element (XTag), checks if all</span>-<a name="line-428"></a><span class='comment'>-- fixed attributes match the default value and returns a list of errors</span>-<a name="line-429"></a>-<a name="line-430"></a><a name="checkFixedAttributes"></a><span class='definition'>checkFixedAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-431"></a><span class='definition'>checkFixedAttributes</span> <span class='varid'>attrDecls</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-432"></a> <span class='keyglyph'>=</span> <span class='varid'>checkFixed</span> <span class='varid'>fixedAtts</span>-<a name="line-433"></a> <span class='keyword'>where</span>-<a name="line-434"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-435"></a> <span class='varid'>fixedAtts</span> <span class='keyglyph'>=</span> <span class='varid'>isFixedAttrKind</span> <span class='varop'>$$</span> <span class='layout'>(</span><span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>attrDecls</span><span class='layout'>)</span>-<a name="line-436"></a>-<a name="line-437"></a>-<a name="line-438"></a> <span class='varid'>checkFixed</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-439"></a> <span class='varid'>checkFixed</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-440"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>satisfies</span> <span class='layout'>(</span><span class='varid'>hasAttr</span> <span class='varid'>attName</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-441"></a> <span class='keyword'>then</span> <span class='keyword'>if</span> <span class='varid'>attValue</span> <span class='varop'>==</span> <span class='varid'>fixedValue</span>-<a name="line-442"></a> <span class='keyword'>then</span> <span class='varid'>checkFixed</span> <span class='varid'>xs</span> <span class='varid'>n</span>-<a name="line-443"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attName</span> <span class='varop'>++</span> <span class='str'>" of element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>-<a name="line-444"></a> <span class='str'>" with value "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attValue</span> <span class='varop'>++</span> <span class='str'>" must have a value of "</span> <span class='varop'>++</span>-<a name="line-445"></a> <span class='varid'>show</span> <span class='varid'>fixedValue</span> <span class='varop'>++</span> <span class='str'>"."</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-446"></a> <span class='varop'>++</span>-<a name="line-447"></a> <span class='varid'>checkFixed</span> <span class='varid'>xs</span> <span class='varid'>n</span>-<a name="line-448"></a> <span class='keyword'>else</span> <span class='varid'>checkFixed</span> <span class='varid'>xs</span> <span class='varid'>n</span>-<a name="line-449"></a> <span class='keyword'>where</span>-<a name="line-450"></a> <span class='varid'>attName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al'</span>-<a name="line-451"></a> <span class='varid'>fixedValue</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_default</span> <span class='varid'>al'</span><span class='layout'>)</span>-<a name="line-452"></a> <span class='varid'>attValue</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>valueOf</span> <span class='varid'>attName</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-453"></a>-<a name="line-454"></a> <span class='varid'>checkFixed</span> <span class='conid'>[]</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-455"></a>-<a name="line-456"></a> <span class='varid'>checkFixed</span> <span class='varid'>nd</span> <span class='varid'>n</span>-<a name="line-457"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkFixed: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-458"></a>-<a name="line-459"></a>-<a name="line-460"></a><span class='definition'>checkFixedAttributes</span> <span class='keyword'>_</span> <span class='varid'>nd</span>-<a name="line-461"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkFixedAttributes: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-462"></a>-<a name="line-463"></a>-<a name="line-464"></a><span class='comment'>-- |</span>-<a name="line-465"></a><span class='comment'>-- Validate that an element has no attributes which are not declared.</span>-<a name="line-466"></a><span class='comment'>-- Validity constraint: Attribute Value Type (3.1 \/ p.19 in Spec)</span>-<a name="line-467"></a><span class='comment'>--</span>-<a name="line-468"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-469"></a><span class='comment'>--</span>-<a name="line-470"></a><span class='comment'>-- - 2.parameter nd : element declaration which attributes have to be checked</span>-<a name="line-471"></a><span class='comment'>--</span>-<a name="line-472"></a><span class='comment'>-- - returns : a function which takes an element (XTag), checks if all</span>-<a name="line-473"></a><span class='comment'>-- attributes are declared and returns a list of errors</span>-<a name="line-474"></a>-<a name="line-475"></a><a name="checkNotDeclardAttributes"></a><span class='definition'>checkNotDeclardAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-476"></a><span class='definition'>checkNotDeclardAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>elemDescr</span>-<a name="line-477"></a> <span class='keyglyph'>=</span> <span class='varid'>checkNotDeclared</span>-<a name="line-478"></a> <span class='keyword'>where</span>-<a name="line-479"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>elemDescr</span>-<a name="line-480"></a> <span class='varid'>decls</span> <span class='keyglyph'>=</span> <span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>attrDecls</span>-<a name="line-481"></a>-<a name="line-482"></a> <span class='varid'>checkNotDeclared</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-483"></a> <span class='varid'>checkNotDeclared</span> <span class='varid'>n</span>-<a name="line-484"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>isXTag</span>-<a name="line-485"></a> <span class='varop'>`guards`</span>-<a name="line-486"></a> <span class='varid'>cat</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>searchForDeclaredAtt</span> <span class='varid'>elemName</span> <span class='varid'>decls</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-487"></a> <span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-488"></a>-<a name="line-489"></a> <span class='varid'>searchForDeclaredAtt</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-490"></a> <span class='varid'>searchForDeclaredAtt</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>att</span>-<a name="line-491"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>nameOf</span> <span class='varid'>att</span>-<a name="line-492"></a> <span class='keyword'>then</span> <span class='varid'>none</span>-<a name="line-493"></a> <span class='keyword'>else</span> <span class='varid'>searchForDeclaredAtt</span> <span class='varid'>name</span> <span class='varid'>xs</span> <span class='varid'>att</span>-<a name="line-494"></a>-<a name="line-495"></a> <span class='varid'>searchForDeclaredAtt</span> <span class='varid'>name</span> <span class='conid'>[]</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>attrName</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-496"></a> <span class='keyglyph'>=</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>attrName</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" of element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <span class='varop'>++</span> <span class='str'>" is not declared in DTD."</span><span class='layout'>)</span>-<a name="line-497"></a>-<a name="line-498"></a> <span class='varid'>searchForDeclaredAtt</span> <span class='keyword'>_</span> <span class='varid'>nd</span> <span class='varid'>a</span>-<a name="line-499"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"searchForDeclaredAtt: illegeal paramter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>a</span><span class='layout'>)</span>-<a name="line-500"></a>-<a name="line-501"></a><span class='comment'>-- |</span>-<a name="line-502"></a><span class='comment'>-- Validate that the attribute value meets the lexical constraints of its type.</span>-<a name="line-503"></a><span class='comment'>-- Validity constaint: Attribute Value Type (3.1 \/ p.19 in Spec)</span>-<a name="line-504"></a><span class='comment'>--</span>-<a name="line-505"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-506"></a><span class='comment'>--</span>-<a name="line-507"></a><span class='comment'>-- - 2.parameter nd : element declaration which attributes have to be checked</span>-<a name="line-508"></a><span class='comment'>--</span>-<a name="line-509"></a><span class='comment'>-- - returns : a function which takes an element (XTag), checks if all</span>-<a name="line-510"></a><span class='comment'>-- attributes meet the lexical constraints and returns a list of errors</span>-<a name="line-511"></a>-<a name="line-512"></a><a name="checkValuesOfAttributes"></a><span class='definition'>checkValuesOfAttributes</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-513"></a><span class='definition'>checkValuesOfAttributes</span> <span class='varid'>attrDecls</span> <span class='varid'>dtdPart</span> <span class='varid'>elemDescr</span>-<a name="line-514"></a> <span class='keyglyph'>=</span> <span class='varid'>checkValues</span>-<a name="line-515"></a> <span class='keyword'>where</span>-<a name="line-516"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>valueOfDTD</span> <span class='varid'>a_name</span> <span class='varid'>elemDescr</span>-<a name="line-517"></a> <span class='varid'>decls</span> <span class='keyglyph'>=</span> <span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span> <span class='varop'>$$</span> <span class='varid'>attrDecls</span>-<a name="line-518"></a>-<a name="line-519"></a> <span class='varid'>checkValues</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-520"></a> <span class='varid'>checkValues</span> <span class='varid'>n</span>-<a name="line-521"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>isXTag</span>-<a name="line-522"></a> <span class='varop'>`guards`</span>-<a name="line-523"></a> <span class='varid'>cat</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>checkValue</span> <span class='varid'>decls</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-524"></a> <span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-525"></a>-<a name="line-526"></a> <span class='varid'>checkValue</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-527"></a> <span class='varid'>checkValue</span> <span class='layout'>(</span><span class='varid'>attrDecl</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>att</span>-<a name="line-528"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al'</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>nameOf</span> <span class='varid'>att</span>-<a name="line-529"></a> <span class='keyword'>then</span> <span class='varid'>checkAttributeValue</span> <span class='varid'>dtdPart</span> <span class='varid'>attrDecl</span>-<a name="line-530"></a> <span class='keyword'>else</span> <span class='varid'>checkValue</span> <span class='varid'>xs</span> <span class='varid'>att</span>-<a name="line-531"></a>-<a name="line-532"></a> <span class='varid'>checkValue</span> <span class='conid'>[]</span> <span class='keyword'>_</span>-<a name="line-533"></a> <span class='keyglyph'>=</span> <span class='varid'>none</span> <span class='comment'>-- undeclared attribute, reported by separate function</span>-<a name="line-534"></a>-<a name="line-535"></a> <span class='varid'>checkValue</span> <span class='varid'>n</span> <span class='keyword'>_</span>-<a name="line-536"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"checkValue: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-537"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Validator-IdValidation.html
@@ -1,278 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- This module provides functions for checking special ID/IDREF/IDREFS constraints.</span>-<a name="line-3"></a>-<a name="line-4"></a><span class='comment'>-- Checking special ID/IDREF/IDREFS constraints means:</span>-<a name="line-5"></a><span class='comment'>--</span>-<a name="line-6"></a><span class='comment'>-- - checking that all ID values are unique.</span>-<a name="line-7"></a><span class='comment'>--</span>-<a name="line-8"></a><span class='comment'>-- - checking that all IDREF/IDREFS values match the value of some ID attribute</span>-<a name="line-9"></a><span class='comment'>--</span>-<a name="line-10"></a>-<a name="line-11"></a>-<a name="line-12"></a><span class='comment'>-- ID-Validation should be started before or after validating the document.</span>-<a name="line-13"></a>-<a name="line-14"></a>-<a name="line-15"></a><span class='comment'>-- First all nodes with ID attributes are collected from the document, then</span>-<a name="line-16"></a><span class='comment'>-- it is validated that values of ID attributes do not occure more than once.</span>-<a name="line-17"></a><span class='comment'>-- During a second iteration over the document it is validated that there exists</span>-<a name="line-18"></a><span class='comment'>-- an ID attribute value for IDREF/IDREFS attribute values.</span>-<a name="line-19"></a>-<a name="line-20"></a><span class='comment'>-- Special namings in source code:</span>-<a name="line-21"></a><span class='comment'>--</span>-<a name="line-22"></a><span class='comment'>-- - nd - XDTD node</span>-<a name="line-23"></a><span class='comment'>--</span>-<a name="line-24"></a><span class='comment'>-- - n - XTag node</span>-<a name="line-25"></a><span class='comment'>--</span>-<a name="line-26"></a><span class='comment'>-- Author : .\\artin Schmidt</span>-<a name="line-27"></a>-<a name="line-28"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>IdValidation</span>-<a name="line-29"></a> <span class='layout'>(</span> <span class='varid'>validateIds</span>-<a name="line-30"></a> <span class='layout'>)</span>-<a name="line-31"></a><span class='keyword'>where</span>-<a name="line-32"></a>-<a name="line-33"></a>-<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>AttributeValueValidation</span>-<a name="line-36"></a>-<a name="line-37"></a>-<a name="line-38"></a>-<a name="line-39"></a><span class='comment'>-- |</span>-<a name="line-40"></a><span class='comment'>-- Lookup-table which maps element names to their validation functions. The</span>-<a name="line-41"></a><span class='comment'>-- validation functions are XmlFilters.</span>-<a name="line-42"></a>-<a name="line-43"></a><a name="IdEnvTable"></a><span class='keyword'>type</span> <span class='conid'>IdEnvTable</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>IdEnv</span><span class='keyglyph'>]</span>-<a name="line-44"></a><a name="IdEnv"></a><span class='keyword'>type</span> <span class='conid'>IdEnv</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conid'>ElemName</span><span class='layout'>,</span> <span class='conid'>IdFct</span><span class='layout'>)</span>-<a name="line-45"></a><a name="ElemName"></a><span class='keyword'>type</span> <span class='conid'>ElemName</span> <span class='keyglyph'>=</span> <span class='conid'>String</span>-<a name="line-46"></a><a name="IdFct"></a><span class='keyword'>type</span> <span class='conid'>IdFct</span> <span class='keyglyph'>=</span> <span class='conid'>XmlFilter</span>-<a name="line-47"></a>-<a name="line-48"></a>-<a name="line-49"></a>-<a name="line-50"></a><span class='comment'>-- |</span>-<a name="line-51"></a><span class='comment'>-- Perform the validation of the ID/IDREF/IDREFS constraints.</span>-<a name="line-52"></a><span class='comment'>--</span>-<a name="line-53"></a><span class='comment'>-- * 1.parameter dtdPart : the DTD subset (Node @DOCTYPE@) of the XmlTree</span>-<a name="line-54"></a><span class='comment'>--</span>-<a name="line-55"></a><span class='comment'>-- - 2.parameter doc : the document subset of the XmlTree</span>-<a name="line-56"></a><span class='comment'>--</span>-<a name="line-57"></a><span class='comment'>-- - returns : a list of errors</span>-<a name="line-58"></a>-<a name="line-59"></a><a name="validateIds"></a><span class='definition'>validateIds</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-60"></a><span class='definition'>validateIds</span> <span class='varid'>dtdPart</span> <span class='varid'>doc</span>-<a name="line-61"></a> <span class='keyglyph'>=</span> <span class='comment'>{-# SCC "checkForUniqueIds" #-}</span> <span class='varid'>checkForUniqueIds</span> <span class='varid'>idNodeList</span> <span class='varid'>dtdNodes</span>-<a name="line-62"></a> <span class='varop'>++</span>-<a name="line-63"></a> <span class='comment'>{-# SCC "checkIdReferences" #-}</span> <span class='varid'>checkIdReferences</span> <span class='varid'>idRefEnv</span> <span class='varid'>doc</span>-<a name="line-64"></a> <span class='keyword'>where</span>-<a name="line-65"></a> <span class='varid'>idEnv</span> <span class='keyglyph'>=</span> <span class='varid'>buildIdCollectorFcts</span> <span class='varid'>dtdNodes</span>-<a name="line-66"></a> <span class='varid'>idRefEnv</span> <span class='keyglyph'>=</span> <span class='varid'>buildIdrefValidationFcts</span> <span class='varid'>dtdNodes</span> <span class='varid'>idNodeList</span>-<a name="line-67"></a> <span class='varid'>idNodeList</span> <span class='keyglyph'>=</span> <span class='varid'>traverseTree</span> <span class='varid'>idEnv</span> <span class='varid'>doc</span>-<a name="line-68"></a> <span class='varid'>dtdNodes</span> <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varid'>dtdPart</span>-<a name="line-69"></a>-<a name="line-70"></a>-<a name="line-71"></a><span class='comment'>-- |</span>-<a name="line-72"></a><span class='comment'>-- Traverse the XmlTree in preorder.</span>-<a name="line-73"></a><span class='comment'>--</span>-<a name="line-74"></a><span class='comment'>-- * 1.parameter idEnv : lookup-table which maps element names to their validation functions</span>-<a name="line-75"></a><span class='comment'>--</span>-<a name="line-76"></a><span class='comment'>-- - returns : list of errors</span>-<a name="line-77"></a>-<a name="line-78"></a><a name="traverseTree"></a><span class='definition'>traverseTree</span> <span class='keyglyph'>::</span> <span class='conid'>IdEnvTable</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-79"></a><span class='definition'>traverseTree</span> <span class='varid'>idEnv</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-80"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>idFct</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>traverseTree</span> <span class='varid'>idEnv</span><span class='layout'>)</span> <span class='varid'>cs</span>-<a name="line-81"></a> <span class='keyword'>where</span>-<a name="line-82"></a> <span class='varid'>idFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-83"></a> <span class='varid'>idFct</span>-<a name="line-84"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varid'>idEnv</span><span class='layout'>)</span> <span class='keyword'>of</span>-<a name="line-85"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='varid'>none</span>-<a name="line-86"></a> <span class='conid'>Just</span> <span class='varid'>f</span> <span class='keyglyph'>-></span> <span class='varid'>f</span>-<a name="line-87"></a>-<a name="line-88"></a><span class='definition'>traverseTree</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-89"></a>-<a name="line-90"></a>-<a name="line-91"></a>-<a name="line-92"></a><span class='comment'>-- |</span>-<a name="line-93"></a><span class='comment'>-- Returns the value of an element's ID attribute. The attribute name has to be</span>-<a name="line-94"></a><span class='comment'>-- retrieved first from the DTD.</span>-<a name="line-95"></a><span class='comment'>--</span>-<a name="line-96"></a><span class='comment'>-- * 1.parameter dtdPart : list of ID attribute definitions from the DTD</span>-<a name="line-97"></a><span class='comment'>--</span>-<a name="line-98"></a><span class='comment'>-- - 2.parameter n : element which ID attribute value should be returned</span>-<a name="line-99"></a><span class='comment'>--</span>-<a name="line-100"></a><span class='comment'>-- - returns : normalized value of the ID attribute</span>-<a name="line-101"></a>-<a name="line-102"></a><a name="getIdValue"></a><span class='definition'>getIdValue</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-103"></a><span class='definition'>getIdValue</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='sel'>_al'</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-104"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>elemName</span>-<a name="line-105"></a> <span class='keyword'>then</span> <span class='varid'>attrValue</span>-<a name="line-106"></a> <span class='keyword'>else</span> <span class='varid'>getIdValue</span> <span class='varid'>xs</span> <span class='varid'>n</span>-<a name="line-107"></a> <span class='keyword'>where</span>-<a name="line-108"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-109"></a> <span class='varid'>attrName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al</span>-<a name="line-110"></a> <span class='varid'>attrValue</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>valueOf</span> <span class='varid'>attrName</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-111"></a>-<a name="line-112"></a><span class='definition'>getIdValue</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-113"></a>-<a name="line-114"></a>-<a name="line-115"></a>-<a name="line-116"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-117"></a>-<a name="line-118"></a>-<a name="line-119"></a><span class='comment'>-- |</span>-<a name="line-120"></a><span class='comment'>-- Build collector functions which return XTag nodes with ID attributes from</span>-<a name="line-121"></a><span class='comment'>-- a document.</span>-<a name="line-122"></a><span class='comment'>--</span>-<a name="line-123"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-124"></a><span class='comment'>--</span>-<a name="line-125"></a><span class='comment'>-- - returns : lookup-table which maps element names to their collector function</span>-<a name="line-126"></a>-<a name="line-127"></a><a name="buildIdCollectorFcts"></a><span class='definition'>buildIdCollectorFcts</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>IdEnvTable</span>-<a name="line-128"></a><span class='definition'>buildIdCollectorFcts</span> <span class='varid'>dtdPart</span>-<a name="line-129"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>buildIdCollectorFct</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>isIdAttrType</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span><span class='layout'>)</span>-<a name="line-130"></a> <span class='keyword'>where</span>-<a name="line-131"></a> <span class='varid'>buildIdCollectorFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>IdEnv</span>-<a name="line-132"></a> <span class='varid'>buildIdCollectorFct</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-133"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>elemName</span><span class='layout'>,</span> <span class='varid'>hasAttr</span> <span class='varid'>attrName</span><span class='layout'>)</span>-<a name="line-134"></a> <span class='keyword'>where</span>-<a name="line-135"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-136"></a> <span class='varid'>attrName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al</span>-<a name="line-137"></a>-<a name="line-138"></a> <span class='varid'>buildIdCollectorFct</span> <span class='varid'>nd</span>-<a name="line-139"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildIdCollectorFct: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-140"></a>-<a name="line-141"></a>-<a name="line-142"></a><span class='comment'>-- |</span>-<a name="line-143"></a><span class='comment'>-- Build validation functions for checking if IDREF\/IDREFS values match a value</span>-<a name="line-144"></a><span class='comment'>-- of some ID attributes.</span>-<a name="line-145"></a><span class='comment'>--</span>-<a name="line-146"></a><span class='comment'>-- * 1.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-147"></a><span class='comment'>--</span>-<a name="line-148"></a><span class='comment'>-- - 2.parameter idNodeList : list of all XTag nodes with ID attributes</span>-<a name="line-149"></a><span class='comment'>--</span>-<a name="line-150"></a><span class='comment'>-- - returns : lookup-table which maps element names to their validation function</span>-<a name="line-151"></a>-<a name="line-152"></a><a name="buildIdrefValidationFcts"></a><span class='definition'>buildIdrefValidationFcts</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>IdEnvTable</span>-<a name="line-153"></a><span class='definition'>buildIdrefValidationFcts</span> <span class='varid'>dtdPart</span> <span class='varid'>idNodeList</span>-<a name="line-154"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>buildElemValidationFct</span> <span class='varid'>elements</span>-<a name="line-155"></a> <span class='keyword'>where</span>-<a name="line-156"></a> <span class='varid'>elements</span> <span class='keyglyph'>=</span> <span class='varid'>isElement</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>-<a name="line-157"></a> <span class='varid'>idValueList</span> <span class='keyglyph'>=</span> <span class='varid'>getIdValues</span> <span class='layout'>(</span><span class='varid'>isIdAttrType</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span><span class='layout'>)</span>-<a name="line-158"></a>-<a name="line-159"></a> <span class='varid'>getIdValues</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-160"></a> <span class='varid'>getIdValues</span> <span class='varid'>idAttrTypes</span>-<a name="line-161"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>getIdValue</span> <span class='varid'>idAttrTypes</span><span class='layout'>)</span> <span class='varid'>idNodeList</span>-<a name="line-162"></a>-<a name="line-163"></a>-<a name="line-164"></a> <span class='varid'>buildElemValidationFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>IdEnv</span>-<a name="line-165"></a> <span class='varid'>buildElemValidationFct</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-166"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>elemName</span><span class='layout'>,</span> <span class='varid'>buildIdrefValidationFct</span> <span class='varid'>idRefAttrTypes</span><span class='layout'>)</span>-<a name="line-167"></a> <span class='keyword'>where</span>-<a name="line-168"></a> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-169"></a> <span class='varid'>idRefAttrTypes</span> <span class='keyglyph'>=</span> <span class='varid'>isIdRefAttrType</span> <span class='varop'>$$</span> <span class='layout'>(</span><span class='varid'>isAttlistOfElement</span> <span class='varid'>elemName</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>-<a name="line-170"></a>-<a name="line-171"></a> <span class='varid'>buildElemValidationFct</span> <span class='varid'>nd</span>-<a name="line-172"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildIdrefValidationFct: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-173"></a>-<a name="line-174"></a>-<a name="line-175"></a> <span class='varid'>buildIdrefValidationFct</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlFilter</span>-<a name="line-176"></a> <span class='varid'>buildIdrefValidationFct</span> <span class='layout'>(</span><span class='varid'>nd</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span>-<a name="line-177"></a> <span class='keyglyph'>=</span> <span class='varid'>checkIdref</span> <span class='varop'>+++</span> <span class='varid'>buildIdrefValidationFct</span> <span class='varid'>xs</span>-<a name="line-178"></a> <span class='keyword'>where</span>-<a name="line-179"></a> <span class='varid'>attrName</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_value</span> <span class='varid'>al</span>-<a name="line-180"></a> <span class='varid'>attrType</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_type</span> <span class='varid'>al</span>-<a name="line-181"></a>-<a name="line-182"></a> <span class='varid'>checkIdref</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-183"></a> <span class='varid'>checkIdref</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-184"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>satisfies</span> <span class='layout'>(</span><span class='varid'>hasAttr</span> <span class='varid'>attrName</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-185"></a> <span class='keyword'>then</span> <span class='keyword'>if</span> <span class='varid'>attrType</span> <span class='varop'>==</span> <span class='varid'>k_idref</span>-<a name="line-186"></a> <span class='keyword'>then</span> <span class='varid'>checkValueDeclared</span> <span class='varid'>n</span> <span class='varid'>attrValue</span>-<a name="line-187"></a> <span class='keyword'>else</span> <span class='keyword'>let</span> <span class='varid'>valueList</span> <span class='keyglyph'>=</span> <span class='varid'>words</span> <span class='varid'>attrValue</span>-<a name="line-188"></a> <span class='keyword'>in</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>valueList</span>-<a name="line-189"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrName</span> <span class='varop'>++</span>-<a name="line-190"></a> <span class='str'>" of Element "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span>-<a name="line-191"></a> <span class='str'>" must have at least one name."</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-192"></a> <span class='keyword'>else</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>checkValueDeclared</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>words</span> <span class='varid'>attrValue</span><span class='layout'>)</span>-<a name="line-193"></a> <span class='keyword'>else</span> <span class='conid'>[]</span>-<a name="line-194"></a> <span class='keyword'>where</span>-<a name="line-195"></a> <span class='varid'>attrValue</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeAttributeValue</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>nd</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>valueOf</span> <span class='varid'>attrName</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-196"></a>-<a name="line-197"></a> <span class='varid'>checkIdref</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-198"></a>-<a name="line-199"></a>-<a name="line-200"></a> <span class='varid'>checkValueDeclared</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-201"></a> <span class='varid'>checkValueDeclared</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>attrValue</span>-<a name="line-202"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>attrValue</span> <span class='varop'>`elem`</span> <span class='varid'>idValueList</span>-<a name="line-203"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-204"></a> <span class='keyword'>else</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"An Element with identifier "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrValue</span> <span class='varop'>++</span>-<a name="line-205"></a> <span class='str'>" must appear in the document."</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-206"></a>-<a name="line-207"></a> <span class='varid'>checkValueDeclared</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-208"></a>-<a name="line-209"></a> <span class='varid'>buildIdrefValidationFct</span> <span class='conid'>[]</span>-<a name="line-210"></a> <span class='keyglyph'>=</span> <span class='varid'>none</span>-<a name="line-211"></a>-<a name="line-212"></a> <span class='varid'>buildIdrefValidationFct</span> <span class='varid'>nd</span>-<a name="line-213"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"buildIdCollectorFct: illegeal parameter:\n"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>nd</span><span class='layout'>)</span>-<a name="line-214"></a>-<a name="line-215"></a>-<a name="line-216"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-217"></a>-<a name="line-218"></a>-<a name="line-219"></a><span class='comment'>-- |</span>-<a name="line-220"></a><span class='comment'>-- Validate that all ID values are unique within a document.</span>-<a name="line-221"></a><span class='comment'>-- Validity constraint: ID (3.3.1 \/p. 25 in Spec)</span>-<a name="line-222"></a><span class='comment'>--</span>-<a name="line-223"></a><span class='comment'>-- * 1.parameter idNodeList : list of all XTag nodes with ID attributes</span>-<a name="line-224"></a><span class='comment'>--</span>-<a name="line-225"></a><span class='comment'>-- - 2.parameter dtdPart : the children of the @DOCTYPE@ node</span>-<a name="line-226"></a><span class='comment'>--</span>-<a name="line-227"></a><span class='comment'>-- - returns : a list of errors</span>-<a name="line-228"></a>-<a name="line-229"></a><a name="checkForUniqueIds"></a><span class='definition'>checkForUniqueIds</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-230"></a><span class='definition'>checkForUniqueIds</span> <span class='varid'>idNodeList</span> <span class='varid'>dtdPart</span>-<a name="line-231"></a> <span class='keyglyph'>=</span> <span class='varid'>checkForUniqueId</span> <span class='varid'>idNodeList</span> <span class='conid'>[]</span>-<a name="line-232"></a> <span class='keyword'>where</span>-<a name="line-233"></a> <span class='varid'>idAttrTypes</span> <span class='keyglyph'>=</span> <span class='varid'>isIdAttrType</span> <span class='varop'>$$</span> <span class='varid'>dtdPart</span>-<a name="line-234"></a>-<a name="line-235"></a> <span class='varid'>checkForUniqueId</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-236"></a> <span class='varid'>checkForUniqueId</span> <span class='layout'>(</span><span class='varid'>x</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>name</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>used</span>-<a name="line-237"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>attrValue</span> <span class='varop'>`elem`</span> <span class='varid'>used</span>-<a name="line-238"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='layout'>(</span><span class='str'>"Attribute value "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>attrValue</span> <span class='varop'>++</span> <span class='str'>" of type ID for element "</span> <span class='varop'>++</span>-<a name="line-239"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" must be unique within the document."</span><span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-240"></a> <span class='varop'>++</span>-<a name="line-241"></a> <span class='varid'>checkForUniqueId</span> <span class='varid'>xs</span> <span class='varid'>used</span>-<a name="line-242"></a>-<a name="line-243"></a> <span class='keyword'>else</span> <span class='varid'>checkForUniqueId</span> <span class='varid'>xs</span> <span class='layout'>(</span><span class='varid'>attrValue</span> <span class='conop'>:</span> <span class='varid'>used</span><span class='layout'>)</span>-<a name="line-244"></a> <span class='keyword'>where</span>-<a name="line-245"></a> <span class='varid'>attrValue</span> <span class='keyglyph'>=</span> <span class='varid'>getIdValue</span> <span class='layout'>(</span><span class='varid'>isAttlistOfElement</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varop'>$$</span> <span class='varid'>idAttrTypes</span><span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-246"></a>-<a name="line-247"></a> <span class='varid'>checkForUniqueId</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-248"></a>-<a name="line-249"></a>-<a name="line-250"></a>-<a name="line-251"></a><span class='comment'>-- |</span>-<a name="line-252"></a><span class='comment'>-- Validate that all IDREF\/IDREFS values match the value of some ID attribute.</span>-<a name="line-253"></a><span class='comment'>-- Validity constraint: IDREF (3.3.1 \/ p.26 in Spec)</span>-<a name="line-254"></a><span class='comment'>--</span>-<a name="line-255"></a><span class='comment'>-- * 1.parameter idRefEnv : lookup-table which maps element names to their validation function</span>-<a name="line-256"></a><span class='comment'>--</span>-<a name="line-257"></a><span class='comment'>-- - 2.parameter doc : the document to validate</span>-<a name="line-258"></a><span class='comment'>--</span>-<a name="line-259"></a><span class='comment'>-- - returns : a list of errors</span>-<a name="line-260"></a>-<a name="line-261"></a><a name="checkIdReferences"></a><span class='definition'>checkIdReferences</span> <span class='keyglyph'>::</span> <span class='conid'>IdEnvTable</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-262"></a><span class='definition'>checkIdReferences</span> <span class='varid'>idRefEnv</span> <span class='varid'>doc</span>-<a name="line-263"></a> <span class='keyglyph'>=</span> <span class='varid'>traverseTree</span> <span class='varid'>idRefEnv</span> <span class='varid'>doc</span>-<a name="line-264"></a>-<a name="line-265"></a>-<a name="line-266"></a>-<a name="line-267"></a>-<a name="line-268"></a>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Validator-RE.html
@@ -1,340 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- A module for regular expression matching based on derivatives of regular expressions.</span>-<a name="line-3"></a><span class='comment'>--</span>-<a name="line-4"></a><span class='comment'>-- The code was taken from Joe English (<<a href="http://www.flightlab.com/~joe/sgml/validate.html">http://www.flightlab.com/~joe/sgml/validate.html</a>>).</span>-<a name="line-5"></a><span class='comment'>-- Tested and extended by Martin Schmidt.</span>-<a name="line-6"></a><span class='comment'>--</span>-<a name="line-7"></a><span class='comment'>-- Further references for the algorithm:</span>-<a name="line-8"></a><span class='comment'>--</span>-<a name="line-9"></a><span class='comment'>-- Janusz A. Brzozowski.</span>-<a name="line-10"></a><span class='comment'>--</span>-<a name="line-11"></a><span class='comment'>-- Derivatives of Regular Expressions. Journal of the ACM, Volume 11, Issue 4, 1964. </span>-<a name="line-12"></a><span class='comment'>--</span>-<a name="line-13"></a><span class='comment'>-- Mark Hopkins.</span>-<a name="line-14"></a><span class='comment'>--</span>-<a name="line-15"></a><span class='comment'>-- Regular Expression Package. Posted to comp.compilers, 1994.</span>-<a name="line-16"></a><span class='comment'>-- Available per FTP at <ftp://iecc.com/pub/file/regex.tar.gz>.</span>-<a name="line-17"></a>-<a name="line-18"></a>-<a name="line-19"></a>-<a name="line-20"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>RE</span>-<a name="line-21"></a> <span class='layout'>(</span> <span class='conid'>RE</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-22"></a>-<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>re_unit</span>-<a name="line-24"></a> <span class='layout'>,</span> <span class='varid'>re_zero</span>-<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>re_sym</span>-<a name="line-26"></a> <span class='layout'>,</span> <span class='varid'>re_rep</span>-<a name="line-27"></a> <span class='layout'>,</span> <span class='varid'>re_plus</span>-<a name="line-28"></a> <span class='layout'>,</span> <span class='varid'>re_opt</span>-<a name="line-29"></a> <span class='layout'>,</span> <span class='varid'>re_seq</span>-<a name="line-30"></a> <span class='layout'>,</span> <span class='varid'>re_alt</span>-<a name="line-31"></a> <span class='layout'>,</span> <span class='varid'>re_dot</span>-<a name="line-32"></a>-<a name="line-33"></a> <span class='layout'>,</span> <span class='varid'>checkRE</span>-<a name="line-34"></a> <span class='layout'>,</span> <span class='varid'>matches</span>-<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>nullable</span>-<a name="line-36"></a> <span class='layout'>,</span> <span class='varid'>printRE</span>-<a name="line-37"></a> <span class='layout'>)</span>-<a name="line-38"></a><span class='keyword'>where</span>-<a name="line-39"></a>-<a name="line-40"></a><span class='comment'>-- |</span>-<a name="line-41"></a><span class='comment'>-- Data type for regular expressions.</span>-<a name="line-42"></a>-<a name="line-43"></a><a name="RE"></a><span class='keyword'>data</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>=</span>-<a name="line-44"></a> <span class='conid'>RE_ZERO</span> <span class='conid'>String</span> <span class='comment'>--' L(0) = {} (empty set)</span>-<a name="line-45"></a> <span class='keyglyph'>|</span> <span class='conid'>RE_UNIT</span> <span class='comment'>--' L(1) = { [] } (empty sequence)</span>-<a name="line-46"></a> <span class='keyglyph'>|</span> <span class='conid'>RE_SYM</span> <span class='varid'>a</span> <span class='comment'>--' L(x) = { [x] }</span>-<a name="line-47"></a> <span class='keyglyph'>|</span> <span class='conid'>RE_DOT</span> <span class='comment'>--' accept any single symbol</span>-<a name="line-48"></a> <span class='keyglyph'>|</span> <span class='conid'>RE_REP</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='comment'>--' L(e*) = { [] } `union` L(e+)</span>-<a name="line-49"></a> <span class='keyglyph'>|</span> <span class='conid'>RE_PLUS</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='comment'>--' L(e+) = { x ++ y | x <- L(e), y <- L(e*) }</span>-<a name="line-50"></a> <span class='keyglyph'>|</span> <span class='conid'>RE_OPT</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='comment'>--' L(e?) = L(e) `union` { [] }</span>-<a name="line-51"></a> <span class='keyglyph'>|</span> <span class='conid'>RE_SEQ</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='comment'>--' L(e,f) = { x ++ y | x <- L(e), y <- L(f) }</span>-<a name="line-52"></a> <span class='keyglyph'>|</span> <span class='conid'>RE_ALT</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>RE</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='comment'>--' L(e|f) = L(e) `union` L(f)</span>-<a name="line-53"></a> <span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Show</span><span class='layout'>,</span> <span class='conid'>Eq</span><span class='layout'>)</span>-<a name="line-54"></a>-<a name="line-55"></a>-<a name="line-56"></a>-<a name="line-57"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-58"></a><span class='comment'>-- Constructor functions to simplify regular expressions when constructing them.</span>-<a name="line-59"></a>-<a name="line-60"></a><span class='comment'>-- |</span>-<a name="line-61"></a><span class='comment'>-- Constructs a regular expression for an empty set.</span>-<a name="line-62"></a><span class='comment'>--</span>-<a name="line-63"></a><span class='comment'>-- * 1.parameter errMsg : error message</span>-<a name="line-64"></a><span class='comment'>--</span>-<a name="line-65"></a><span class='comment'>-- - returns : regular expression for an empty set</span>-<a name="line-66"></a>-<a name="line-67"></a><a name="re_zero"></a><span class='definition'>re_zero</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-68"></a><span class='definition'>re_zero</span> <span class='varid'>m</span> <span class='keyglyph'>=</span> <span class='conid'>RE_ZERO</span> <span class='varid'>m</span>-<a name="line-69"></a>-<a name="line-70"></a>-<a name="line-71"></a><span class='comment'>-- |</span>-<a name="line-72"></a><span class='comment'>-- Constructs a regular expression for an empty sequence.</span>-<a name="line-73"></a><span class='comment'>--</span>-<a name="line-74"></a><span class='comment'>-- - returns : regular expression for an empty sequence</span>-<a name="line-75"></a>-<a name="line-76"></a><a name="re_unit"></a><span class='definition'>re_unit</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-77"></a><span class='definition'>re_unit</span> <span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>-<a name="line-78"></a>-<a name="line-79"></a>-<a name="line-80"></a><span class='comment'>-- |</span>-<a name="line-81"></a><span class='comment'>-- Constructs a regular expression for accepting a symbol</span>-<a name="line-82"></a><span class='comment'>--</span>-<a name="line-83"></a><span class='comment'>-- * 1.parameter sym : the symbol to be accepted</span>-<a name="line-84"></a><span class='comment'>--</span>-<a name="line-85"></a><span class='comment'>-- - returns : regular expression for accepting a symbol</span>-<a name="line-86"></a>-<a name="line-87"></a><a name="re_sym"></a><span class='definition'>re_sym</span> <span class='keyglyph'>::</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-88"></a><span class='definition'>re_sym</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='conid'>RE_SYM</span> <span class='varid'>x</span>-<a name="line-89"></a>-<a name="line-90"></a>-<a name="line-91"></a><span class='comment'>-- |</span>-<a name="line-92"></a><span class='comment'>-- Constructs a regular expression for accepting any singel symbol</span>-<a name="line-93"></a><span class='comment'>--</span>-<a name="line-94"></a><span class='comment'>-- - returns : regular expression for accepting any singel symbol</span>-<a name="line-95"></a>-<a name="line-96"></a><a name="re_dot"></a><span class='definition'>re_dot</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-97"></a><span class='definition'>re_dot</span> <span class='keyglyph'>=</span> <span class='conid'>RE_DOT</span>-<a name="line-98"></a>-<a name="line-99"></a>-<a name="line-100"></a><span class='comment'>-- |</span>-<a name="line-101"></a><span class='comment'>-- Constructs an optional repetition (*) of a regular expression</span>-<a name="line-102"></a><span class='comment'>--</span>-<a name="line-103"></a><span class='comment'>-- * 1.parameter re_a : regular expression to be repeted</span>-<a name="line-104"></a><span class='comment'>--</span>-<a name="line-105"></a><span class='comment'>-- - returns : new regular expression</span>-<a name="line-106"></a>-<a name="line-107"></a><a name="re_rep"></a><span class='definition'>re_rep</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-108"></a><span class='definition'>re_rep</span> <span class='conid'>RE_UNIT</span> <span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>-<a name="line-109"></a><span class='definition'>re_rep</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>-<a name="line-110"></a><span class='definition'>re_rep</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>RE_REP</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>RE_REP</span> <span class='layout'>(</span><span class='varid'>rem_rep</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='comment'>-- remove nested reps</span>-<a name="line-111"></a><span class='definition'>re_rep</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>RE_ALT</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>RE_REP</span> <span class='layout'>(</span><span class='varid'>rem_rep</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='comment'>-- remove nested reps in alternatives</span>-<a name="line-112"></a><span class='definition'>re_rep</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='conid'>RE_REP</span> <span class='varid'>e</span>-<a name="line-113"></a>-<a name="line-114"></a><span class='comment'>-- |</span>-<a name="line-115"></a><span class='comment'>-- remove redundant nested *'s in RE</span>-<a name="line-116"></a><span class='comment'>-- theoretically this is unneccessary,</span>-<a name="line-117"></a><span class='comment'>-- but without this simplification the runtime can increase exponentally</span>-<a name="line-118"></a><span class='comment'>-- when computing deltas, e.g. for a** or (a|b*)* which is the same as (a|b)*</span>-<a name="line-119"></a>-<a name="line-120"></a><a name="rem_rep"></a><span class='definition'>rem_rep</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-121"></a><span class='definition'>rem_rep</span> <span class='layout'>(</span><span class='conid'>RE_ALT</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>RE_ALT</span> <span class='layout'>(</span><span class='varid'>rem_rep</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>rem_rep</span> <span class='varid'>e2</span><span class='layout'>)</span>-<a name="line-122"></a><span class='definition'>rem_rep</span> <span class='layout'>(</span><span class='conid'>RE_REP</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rem_rep</span> <span class='varid'>e1</span>-<a name="line-123"></a><span class='definition'>rem_rep</span> <span class='varid'>e1</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>-<a name="line-124"></a>-<a name="line-125"></a>-<a name="line-126"></a><span class='comment'>-- |</span>-<a name="line-127"></a><span class='comment'>-- Constructs a repetition (+) of a regular expression</span>-<a name="line-128"></a><span class='comment'>--</span>-<a name="line-129"></a><span class='comment'>-- * 1.parameter re_a : regular expression to be repeted</span>-<a name="line-130"></a><span class='comment'>--</span>-<a name="line-131"></a><span class='comment'>-- - returns : new regular expression</span>-<a name="line-132"></a>-<a name="line-133"></a><a name="re_plus"></a><span class='definition'>re_plus</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-134"></a><span class='definition'>re_plus</span> <span class='conid'>RE_UNIT</span> <span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>-<a name="line-135"></a><span class='definition'>re_plus</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='varid'>m</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>RE_ZERO</span> <span class='varid'>m</span>-<a name="line-136"></a><span class='definition'>re_plus</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='conid'>RE_PLUS</span> <span class='varid'>e</span>-<a name="line-137"></a>-<a name="line-138"></a>-<a name="line-139"></a><span class='comment'>-- |</span>-<a name="line-140"></a><span class='comment'>-- Constructs an option (?) of a regular expression</span>-<a name="line-141"></a><span class='comment'>--</span>-<a name="line-142"></a><span class='comment'>-- * 1.parameter re_a : regular expression to be optional</span>-<a name="line-143"></a><span class='comment'>--</span>-<a name="line-144"></a><span class='comment'>-- - returns : new regular expression</span>-<a name="line-145"></a>-<a name="line-146"></a><a name="re_opt"></a><span class='definition'>re_opt</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-147"></a><span class='definition'>re_opt</span> <span class='conid'>RE_UNIT</span> <span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>-<a name="line-148"></a><span class='definition'>re_opt</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>RE_UNIT</span>-<a name="line-149"></a><span class='definition'>re_opt</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='conid'>RE_OPT</span> <span class='varid'>e</span>-<a name="line-150"></a>-<a name="line-151"></a>-<a name="line-152"></a><span class='comment'>-- |</span>-<a name="line-153"></a><span class='comment'>-- Constructs a sequence (,) of two regular expressions</span>-<a name="line-154"></a><span class='comment'>--</span>-<a name="line-155"></a><span class='comment'>-- * 1.parameter re_a : first regular expression in sequence</span>-<a name="line-156"></a><span class='comment'>--</span>-<a name="line-157"></a><span class='comment'>-- - 2.parameter re_b : second regular expression in sequence</span>-<a name="line-158"></a><span class='comment'>--</span>-<a name="line-159"></a><span class='comment'>-- - returns : new regular expression</span>-<a name="line-160"></a>-<a name="line-161"></a><a name="re_seq"></a><span class='definition'>re_seq</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-162"></a><span class='definition'>re_seq</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='varid'>m</span><span class='layout'>)</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>RE_ZERO</span> <span class='varid'>m</span>-<a name="line-163"></a><span class='definition'>re_seq</span> <span class='conid'>RE_UNIT</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>f</span>-<a name="line-164"></a><span class='definition'>re_seq</span> <span class='keyword'>_</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='varid'>m</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>RE_ZERO</span> <span class='varid'>m</span>-<a name="line-165"></a><span class='definition'>re_seq</span> <span class='varid'>e</span> <span class='conid'>RE_UNIT</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>-<a name="line-166"></a><span class='definition'>re_seq</span> <span class='varid'>e</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='conid'>RE_SEQ</span> <span class='varid'>e</span> <span class='varid'>f</span>-<a name="line-167"></a>-<a name="line-168"></a>-<a name="line-169"></a><span class='comment'>-- |</span>-<a name="line-170"></a><span class='comment'>-- Constructs an alternative (|) of two regular expressions</span>-<a name="line-171"></a><span class='comment'>--</span>-<a name="line-172"></a><span class='comment'>-- * 1.parameter re_a : first regular expression of alternative</span>-<a name="line-173"></a><span class='comment'>--</span>-<a name="line-174"></a><span class='comment'>-- - 2.parameter re_b : second regular expression of alternative</span>-<a name="line-175"></a><span class='comment'>--</span>-<a name="line-176"></a><span class='comment'>-- - returns : new regular expression</span>-<a name="line-177"></a>-<a name="line-178"></a><a name="re_alt"></a><span class='definition'>re_alt</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-179"></a><span class='definition'>re_alt</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>f</span>-<a name="line-180"></a><span class='definition'>re_alt</span> <span class='varid'>e</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>-<a name="line-181"></a><span class='definition'>re_alt</span> <span class='varid'>e</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='conid'>RE_ALT</span> <span class='varid'>e</span> <span class='varid'>f</span>-<a name="line-182"></a>-<a name="line-183"></a>-<a name="line-184"></a>-<a name="line-185"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-186"></a>-<a name="line-187"></a>-<a name="line-188"></a><span class='comment'>-- |</span>-<a name="line-189"></a><span class='comment'>-- Checks if a regular expression matches the empty sequence.</span>-<a name="line-190"></a><span class='comment'>--</span>-<a name="line-191"></a><span class='comment'>-- nullable e == [] `in` L(e)</span>-<a name="line-192"></a><span class='comment'>--</span>-<a name="line-193"></a><span class='comment'>-- This check indicates if a regular expression fits to a sentence or not.</span>-<a name="line-194"></a><span class='comment'>--</span>-<a name="line-195"></a><span class='comment'>-- * 1.parameter re : regular expression to be checked</span>-<a name="line-196"></a><span class='comment'>--</span>-<a name="line-197"></a><span class='comment'>-- - returns : true if regular expression matches the empty sequence,</span>-<a name="line-198"></a><span class='comment'>-- otherwise false</span>-<a name="line-199"></a>-<a name="line-200"></a><a name="nullable"></a><span class='definition'>nullable</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-201"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-202"></a><span class='definition'>nullable</span> <span class='conid'>RE_UNIT</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-203"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_SYM</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-204"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_REP</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-205"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_PLUS</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e</span>-<a name="line-206"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_OPT</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-207"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_SEQ</span> <span class='varid'>e</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e</span> <span class='varop'>&&</span> <span class='varid'>nullable</span> <span class='varid'>f</span>-<a name="line-208"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>RE_ALT</span> <span class='varid'>e</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e</span> <span class='varop'>||</span> <span class='varid'>nullable</span> <span class='varid'>f</span>-<a name="line-209"></a><span class='definition'>nullable</span> <span class='conid'>RE_DOT</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-210"></a>-<a name="line-211"></a>-<a name="line-212"></a><span class='comment'>-- |</span>-<a name="line-213"></a><span class='comment'>-- Derives a regular expression with respect to one symbol.</span>-<a name="line-214"></a><span class='comment'>--</span>-<a name="line-215"></a><span class='comment'>-- L(delta e x) = x \ L(e)</span>-<a name="line-216"></a><span class='comment'>--</span>-<a name="line-217"></a><span class='comment'>-- * 1.parameter re : regular expression to be derived</span>-<a name="line-218"></a><span class='comment'>--</span>-<a name="line-219"></a><span class='comment'>-- - 2.parameter sym : the symbol on which the regular expression is applied</span>-<a name="line-220"></a><span class='comment'>--</span>-<a name="line-221"></a><span class='comment'>-- - returns : the derived regular expression</span>-<a name="line-222"></a>-<a name="line-223"></a><a name="delta"></a><span class='definition'>delta</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Eq</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-224"></a><span class='definition'>delta</span> <span class='varid'>re</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>re</span> <span class='keyword'>of</span>-<a name="line-225"></a> <span class='conid'>RE_ZERO</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>re</span> <span class='comment'>-- re_zero m</span>-<a name="line-226"></a> <span class='conid'>RE_UNIT</span> <span class='keyglyph'>-></span> <span class='varid'>re_zero</span> <span class='layout'>(</span><span class='str'>"Symbol "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>x</span> <span class='varop'>++</span> <span class='str'>" unexpected."</span><span class='layout'>)</span>-<a name="line-227"></a> <span class='conid'>RE_SYM</span> <span class='varid'>sym</span>-<a name="line-228"></a> <span class='keyglyph'>|</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>sym</span> <span class='keyglyph'>-></span> <span class='varid'>re_unit</span>-<a name="line-229"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>-></span> <span class='varid'>re_zero</span> <span class='layout'>(</span><span class='str'>"Symbol "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>sym</span> <span class='varop'>++</span> <span class='str'>" expected, but symbol "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>x</span> <span class='varop'>++</span> <span class='str'>" found."</span><span class='layout'>)</span>-<a name="line-230"></a> <span class='conid'>RE_REP</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='varid'>re</span> <span class='comment'>-- (re_rep e)</span>-<a name="line-231"></a> <span class='conid'>RE_PLUS</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>re_rep</span> <span class='varid'>e</span><span class='layout'>)</span>-<a name="line-232"></a> <span class='conid'>RE_OPT</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span>-<a name="line-233"></a> <span class='conid'>RE_SEQ</span> <span class='varid'>e</span> <span class='varid'>f</span>-<a name="line-234"></a> <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>f</span> <span class='varid'>x</span><span class='layout'>)</span>-<a name="line-235"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>-></span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='varid'>f</span>-<a name="line-236"></a> <span class='conid'>RE_ALT</span> <span class='varid'>e</span> <span class='varid'>f</span> <span class='keyglyph'>-></span> <span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>f</span> <span class='varid'>x</span><span class='layout'>)</span>-<a name="line-237"></a> <span class='conid'>RE_DOT</span> <span class='keyglyph'>-></span> <span class='varid'>re_unit</span>-<a name="line-238"></a>-<a name="line-239"></a>-<a name="line-240"></a><span class='comment'>-- |</span>-<a name="line-241"></a><span class='comment'>-- Derives a regular expression with respect to a sentence.</span>-<a name="line-242"></a><span class='comment'>--</span>-<a name="line-243"></a><span class='comment'>-- * 1.parameter re : regular expression</span>-<a name="line-244"></a><span class='comment'>--</span>-<a name="line-245"></a><span class='comment'>-- - 2.parameter s : sentence to which the regular expression is applied</span>-<a name="line-246"></a><span class='comment'>--</span>-<a name="line-247"></a><span class='comment'>-- - returns : the derived regular expression</span>-<a name="line-248"></a>-<a name="line-249"></a><a name="matches"></a><span class='definition'>matches</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Eq</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='varid'>a</span>-<a name="line-250"></a><span class='definition'>matches</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='varid'>foldl</span> <span class='varid'>delta</span> <span class='varid'>e</span>-<a name="line-251"></a>-<a name="line-252"></a>-<a name="line-253"></a><span class='comment'>-- |</span>-<a name="line-254"></a><span class='comment'>-- Checks if an input matched a regular expression. The function should be</span>-<a name="line-255"></a><span class='comment'>-- called after matches.</span>-<a name="line-256"></a><span class='comment'>--</span>-<a name="line-257"></a><span class='comment'>-- Was the sentence used in @matches@ in the language of the regular expression?</span>-<a name="line-258"></a><span class='comment'>-- -> matches e s == s `in` L(e)?</span>-<a name="line-259"></a><span class='comment'>--</span>-<a name="line-260"></a><span class='comment'>-- * 1.parameter re : the derived regular expression</span>-<a name="line-261"></a><span class='comment'>--</span>-<a name="line-262"></a><span class='comment'>-- - returns : empty String if input matched the regular expression, otherwise</span>-<a name="line-263"></a><span class='comment'>-- an error message is returned</span>-<a name="line-264"></a>-<a name="line-265"></a><a name="checkRE"></a><span class='definition'>checkRE</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-266"></a><span class='definition'>checkRE</span> <span class='layout'>(</span><span class='conid'>RE_UNIT</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-267"></a><span class='definition'>checkRE</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='varid'>m</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>m</span>-<a name="line-268"></a><span class='definition'>checkRE</span> <span class='varid'>re</span>-<a name="line-269"></a> <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-270"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='str'>"Input must match "</span> <span class='varop'>++</span> <span class='varid'>printRE</span> <span class='varid'>re</span>-<a name="line-271"></a>-<a name="line-272"></a>-<a name="line-273"></a>-<a name="line-274"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-275"></a>-<a name="line-276"></a>-<a name="line-277"></a>-<a name="line-278"></a><span class='comment'>-- |</span>-<a name="line-279"></a><span class='comment'>-- Constructs a string representation of a regular expression.</span>-<a name="line-280"></a><span class='comment'>--</span>-<a name="line-281"></a><span class='comment'>-- * 1.parameter re : a regular expression</span>-<a name="line-282"></a><span class='comment'>--</span>-<a name="line-283"></a><span class='comment'>-- - returns : the string representation of the regular expression</span>-<a name="line-284"></a>-<a name="line-285"></a><a name="printRE"></a><span class='definition'>printRE</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-286"></a><span class='definition'>printRE</span> <span class='varid'>re'</span>-<a name="line-287"></a> <span class='keyglyph'>=</span> <span class='str'>"( "</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>re'</span> <span class='varop'>++</span> <span class='str'>" )"</span>-<a name="line-288"></a> <span class='keyword'>where</span>-<a name="line-289"></a> <span class='varid'>printRE1</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-290"></a> <span class='varid'>printRE1</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>re</span> <span class='keyword'>of</span>-<a name="line-291"></a> <span class='conid'>RE_ZERO</span> <span class='varid'>m</span> <span class='keyglyph'>-></span> <span class='str'>"ERROR: "</span> <span class='varop'>++</span> <span class='varid'>m</span>-<a name="line-292"></a> <span class='conid'>RE_UNIT</span> <span class='keyglyph'>-></span> <span class='str'>""</span>-<a name="line-293"></a> <span class='conid'>RE_SYM</span> <span class='varid'>sym</span> <span class='keyglyph'>-></span> <span class='varid'>show</span> <span class='varid'>sym</span>-<a name="line-294"></a> <span class='conid'>RE_DOT</span> <span class='keyglyph'>-></span> <span class='str'>"."</span>-<a name="line-295"></a> <span class='conid'>RE_REP</span> <span class='varid'>e</span>-<a name="line-296"></a> <span class='keyglyph'>|</span> <span class='varid'>isSingle</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>"*"</span>-<a name="line-297"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>-></span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>")*"</span>-<a name="line-298"></a> <span class='conid'>RE_PLUS</span> <span class='varid'>e</span>-<a name="line-299"></a> <span class='keyglyph'>|</span> <span class='varid'>isSingle</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>"+"</span>-<a name="line-300"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>-></span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>")+"</span>-<a name="line-301"></a> <span class='conid'>RE_OPT</span> <span class='varid'>e</span>-<a name="line-302"></a> <span class='keyglyph'>|</span> <span class='varid'>isSingle</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>"?"</span>-<a name="line-303"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>-></span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>")?"</span>-<a name="line-304"></a> <span class='conid'>RE_SEQ</span> <span class='varid'>e</span> <span class='varid'>f</span>-<a name="line-305"></a> <span class='keyglyph'>|</span> <span class='varid'>isAlt</span> <span class='varid'>e</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isAlt</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>") , "</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span>-<a name="line-306"></a> <span class='keyglyph'>|</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isAlt</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>isAlt</span> <span class='varid'>f</span> <span class='keyglyph'>-></span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>" , ("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span> <span class='varop'>++</span> <span class='str'>")"</span>-<a name="line-307"></a> <span class='keyglyph'>|</span> <span class='varid'>isAlt</span> <span class='varid'>e</span> <span class='varop'>&&</span> <span class='varid'>isAlt</span> <span class='varid'>f</span> <span class='keyglyph'>-></span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>") , ("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span> <span class='varop'>++</span> <span class='str'>")"</span>-<a name="line-308"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>-></span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>" , "</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span>-<a name="line-309"></a> <span class='conid'>RE_ALT</span> <span class='varid'>e</span> <span class='varid'>f</span>-<a name="line-310"></a> <span class='keyglyph'>|</span> <span class='varid'>isSeq</span> <span class='varid'>e</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isSeq</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>") | "</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span>-<a name="line-311"></a> <span class='keyglyph'>|</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isSeq</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>isSeq</span> <span class='varid'>f</span> <span class='keyglyph'>-></span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>" | ("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span> <span class='varop'>++</span> <span class='str'>")"</span>-<a name="line-312"></a> <span class='keyglyph'>|</span> <span class='varid'>isSeq</span> <span class='varid'>e</span> <span class='varop'>&&</span> <span class='varid'>isSeq</span> <span class='varid'>f</span> <span class='keyglyph'>-></span> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>") | ("</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span> <span class='varop'>++</span> <span class='str'>")"</span>-<a name="line-313"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>-></span> <span class='varid'>printRE1</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>" | "</span> <span class='varop'>++</span> <span class='varid'>printRE1</span> <span class='varid'>f</span>-<a name="line-314"></a>-<a name="line-315"></a>-<a name="line-316"></a> <span class='varid'>isSingle</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-317"></a> <span class='varid'>isSingle</span> <span class='layout'>(</span><span class='conid'>RE_ZERO</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-318"></a> <span class='varid'>isSingle</span> <span class='conid'>RE_UNIT</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-319"></a> <span class='varid'>isSingle</span> <span class='layout'>(</span><span class='conid'>RE_SYM</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-320"></a> <span class='varid'>isSingle</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-321"></a>-<a name="line-322"></a>-<a name="line-323"></a> <span class='varid'>isSeq</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-324"></a> <span class='varid'>isSeq</span> <span class='layout'>(</span><span class='conid'>RE_SEQ</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-325"></a> <span class='varid'>isSeq</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-326"></a>-<a name="line-327"></a>-<a name="line-328"></a> <span class='varid'>isAlt</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-329"></a> <span class='varid'>isAlt</span> <span class='layout'>(</span><span class='conid'>RE_ALT</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-330"></a> <span class='varid'>isAlt</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Validator-Validation.html
@@ -1,74 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- This module provides a state filter as a main function for validating XML documents.</span>-<a name="line-3"></a><span class='comment'>--</span>-<a name="line-4"></a><span class='comment'>-- The real validation is done with pure filters from module 'Text.XML.HXT.Validator.ValidationFilter'</span>-<a name="line-5"></a><span class='comment'>--</span>-<a name="line-6"></a><span class='comment'>-- Author : .\\artin Schmidt</span>-<a name="line-7"></a>-<a name="line-8"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>Validation</span>-<a name="line-9"></a> <span class='layout'>(</span> <span class='varid'>getValidatedDoc</span>-<a name="line-10"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>ValidationFilter</span>-<a name="line-11"></a> <span class='layout'>)</span>-<a name="line-12"></a>-<a name="line-13"></a><span class='keyword'>where</span>-<a name="line-14"></a>-<a name="line-15"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-16"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlState</span>-<a name="line-17"></a>-<a name="line-18"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>ValidationFilter</span>-<a name="line-19"></a>-<a name="line-20"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlOutput</span>-<a name="line-21"></a> <span class='layout'>(</span> <span class='varid'>traceTree</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>traceSource</span>-<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>traceMsg</span>-<a name="line-24"></a> <span class='layout'>)</span>-<a name="line-25"></a>-<a name="line-26"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-27"></a>-<a name="line-28"></a><span class='comment'>-- |</span>-<a name="line-29"></a><span class='comment'>-- monadic filter for validating and transforming a wellformed document.</span>-<a name="line-30"></a><span class='comment'>--</span>-<a name="line-31"></a><span class='comment'>-- the "main" function for validation.</span>-<a name="line-32"></a><span class='comment'>--</span>-<a name="line-33"></a><span class='comment'>-- the input tree must consist of a root node with a complete document and DTD.</span>-<a name="line-34"></a><span class='comment'>-- Result is the single element list containing same tree but tranformed with respect to the DTD,</span>-<a name="line-35"></a><span class='comment'>-- or, in case of errors, the root with an empty list of children</span>-<a name="line-36"></a>-<a name="line-37"></a><a name="getValidatedDoc"></a><span class='definition'>getValidatedDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlStateFilter</span> <span class='varid'>state</span>-<a name="line-38"></a><span class='definition'>getValidatedDoc</span>-<a name="line-39"></a> <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"validating document"</span>-<a name="line-40"></a> <span class='varop'>.>></span>-<a name="line-41"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>runValidation</span>-<a name="line-42"></a> <span class='varop'>.>></span>-<a name="line-43"></a> <span class='varid'>traceTree</span>-<a name="line-44"></a> <span class='varop'>.>></span>-<a name="line-45"></a> <span class='varid'>traceSource</span>-<a name="line-46"></a> <span class='layout'>)</span>-<a name="line-47"></a> <span class='varop'>`whenM`</span> <span class='layout'>(</span><span class='varid'>isRoot</span> <span class='varop'>.></span> <span class='varid'>getChildren</span><span class='layout'>)</span>-<a name="line-48"></a> <span class='layout'>)</span>-<a name="line-49"></a> <span class='keyword'>where</span>-<a name="line-50"></a> <span class='varid'>runValidation</span> <span class='varid'>t</span>-<a name="line-51"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-52"></a> <span class='varid'>issueError</span> <span class='varop'>$$<</span> <span class='varid'>res</span>-<a name="line-53"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>errs</span>-<a name="line-54"></a> <span class='keyword'>then</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"transforming validated document"</span>-<a name="line-55"></a> <span class='varop'>.>></span>-<a name="line-56"></a> <span class='varid'>liftMf</span> <span class='varid'>transform</span>-<a name="line-57"></a> <span class='layout'>)</span>-<a name="line-58"></a> <span class='keyword'>else</span> <span class='varid'>liftMf</span> <span class='layout'>(</span><span class='varid'>setStatus</span> <span class='varid'>c_err</span> <span class='str'>"validating document"</span><span class='layout'>)</span>-<a name="line-59"></a> <span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-60"></a> <span class='keyword'>where</span>-<a name="line-61"></a> <span class='varid'>res</span> <span class='keyglyph'>=</span> <span class='varid'>validate</span> <span class='varid'>t</span>-<a name="line-62"></a> <span class='varid'>errs</span> <span class='keyglyph'>=</span> <span class='varid'>isXError</span> <span class='varop'>.></span> <span class='varid'>neg</span> <span class='varid'>isWarning</span> <span class='varop'>$$</span> <span class='varid'>res</span>-<a name="line-63"></a>-<a name="line-64"></a><span class='comment'>-- ------------------------------------------------------------</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Validator-ValidationFilter.html
@@ -1,135 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- This module provides functions for validating XML documents represented as</span>-<a name="line-3"></a><span class='comment'>-- XmlTree.</span>-<a name="line-4"></a>-<a name="line-5"></a><span class='comment'>-- Unlike other popular XML validation tools the validation functions return</span>-<a name="line-6"></a><span class='comment'>-- a list of errors instead of aborting after the first error was found.</span>-<a name="line-7"></a><span class='comment'>-- </span>-<a name="line-8"></a><span class='comment'>-- Note: The validation process has been split into validation and transformation!</span>-<a name="line-9"></a><span class='comment'>-- If @validate@ did not report any errors, @transform@</span>-<a name="line-10"></a><span class='comment'>-- should be called, to change the document the way a validating parser</span>-<a name="line-11"></a><span class='comment'>-- is expected to do.</span>-<a name="line-12"></a>-<a name="line-13"></a><span class='comment'>--</span>-<a name="line-14"></a><span class='comment'>-- Author : .\\artin Schmidt</span>-<a name="line-15"></a>-<a name="line-16"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>ValidationFilter</span>-<a name="line-17"></a> <span class='layout'>(</span> <span class='varid'>getDTDSubset</span>-<a name="line-18"></a> <span class='layout'>,</span> <span class='varid'>validate</span>-<a name="line-19"></a> <span class='layout'>,</span> <span class='varid'>validateDTD</span>-<a name="line-20"></a> <span class='layout'>,</span> <span class='varid'>validateDoc</span>-<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>removeDoublicateDefs</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>transform</span>-<a name="line-23"></a> <span class='layout'>)</span>-<a name="line-24"></a>-<a name="line-25"></a><span class='keyword'>where</span>-<a name="line-26"></a>-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-28"></a>-<a name="line-29"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DTDValidation</span> <span class='keyword'>as</span> <span class='conid'>DTDValidation</span>-<a name="line-30"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DocValidation</span> <span class='keyword'>as</span> <span class='conid'>DocValidation</span>-<a name="line-31"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>IdValidation</span> <span class='keyword'>as</span> <span class='conid'>IdValidation</span>-<a name="line-32"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>DocTransformation</span> <span class='keyword'>as</span> <span class='conid'>DocTransformation</span>-<a name="line-33"></a>-<a name="line-34"></a><span class='comment'>-- |</span>-<a name="line-35"></a><span class='comment'>-- Main validation filter. Check if the DTD and the document are valid.</span>-<a name="line-36"></a><span class='comment'>--</span>-<a name="line-37"></a><span class='comment'>--</span>-<a name="line-38"></a><span class='comment'>-- - returns : a function which expects a complete document as XmlTree input</span>-<a name="line-39"></a><span class='comment'>-- and returns a list of all errors found.</span>-<a name="line-40"></a>-<a name="line-41"></a><a name="validate"></a><span class='definition'>validate</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-42"></a><span class='definition'>validate</span> <span class='keyglyph'>=</span> <span class='varid'>validateDTD</span> <span class='varop'>+++</span> <span class='varid'>validateDoc</span>-<a name="line-43"></a>-<a name="line-44"></a><span class='comment'>-- |</span>-<a name="line-45"></a><span class='comment'>-- Check if the DTD is valid.</span>-<a name="line-46"></a><span class='comment'>--</span>-<a name="line-47"></a><span class='comment'>--</span>-<a name="line-48"></a><span class='comment'>-- - returns : a function which expects an XmlTree from the parser as input</span>-<a name="line-49"></a><span class='comment'>-- and returns a list of all errors found in the DTD.</span>-<a name="line-50"></a>-<a name="line-51"></a><a name="validateDTD"></a><span class='definition'>validateDTD</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-52"></a><span class='definition'>validateDTD</span>-<a name="line-53"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>getDTDSubset</span>-<a name="line-54"></a> <span class='conop'>:-></span> <span class='conid'>DTDValidation</span><span class='varop'>.</span><span class='varid'>validateDTD</span>-<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>this</span>-<a name="line-56"></a> <span class='conop'>:-></span> <span class='varid'>err</span> <span class='str'>"Can't validate DTD: There is no DOCTYPE declaration in the document."</span>-<a name="line-57"></a> <span class='keyglyph'>]</span>-<a name="line-58"></a><span class='comment'>-- |</span>-<a name="line-59"></a><span class='comment'>-- Check if the document corresponds to the given DTD.</span>-<a name="line-60"></a><span class='comment'>--</span>-<a name="line-61"></a><span class='comment'>--</span>-<a name="line-62"></a><span class='comment'>-- - returns : a function which expects a complete document as XmlTree input</span>-<a name="line-63"></a><span class='comment'>-- and returns a list of all errors found in the content part.</span>-<a name="line-64"></a>-<a name="line-65"></a><a name="validateDoc"></a><span class='definition'>validateDoc</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-66"></a><span class='definition'>validateDoc</span> <span class='varid'>t</span>-<a name="line-67"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>dtds</span>-<a name="line-68"></a> <span class='keyword'>then</span> <span class='varid'>err</span> <span class='str'>"Can't validate document: There is no DOCTYPE declaration in the document."</span>-<a name="line-69"></a> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='conid'>DocValidation</span><span class='varop'>.</span><span class='varid'>validateDoc</span> <span class='varid'>dtdPart</span>-<a name="line-70"></a> <span class='varop'>+++</span>-<a name="line-71"></a> <span class='conid'>IdValidation</span><span class='varop'>.</span><span class='varid'>validateIds</span> <span class='varid'>dtdPart</span>-<a name="line-72"></a> <span class='layout'>)</span>-<a name="line-73"></a> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-74"></a> <span class='keyword'>where</span>-<a name="line-75"></a> <span class='varid'>dtds</span> <span class='keyglyph'>=</span> <span class='varid'>getDTDSubset</span> <span class='varop'>.></span> <span class='varid'>processBottomUp</span> <span class='varid'>removeDoublicateDefs</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-76"></a> <span class='varid'>dtdPart</span> <span class='keyglyph'>=</span> <span class='varid'>head</span> <span class='varid'>dtds</span>-<a name="line-77"></a>-<a name="line-78"></a><span class='comment'>-- |</span>-<a name="line-79"></a><span class='comment'>-- filter for transforming a document with respect to the given DTD.</span>-<a name="line-80"></a><span class='comment'>--</span>-<a name="line-81"></a><span class='comment'>-- Validating parsers</span>-<a name="line-82"></a><span class='comment'>-- are expected to normalize attribute values and add default values.</span>-<a name="line-83"></a><span class='comment'>-- This function should be called after a successful validation.</span>-<a name="line-84"></a><span class='comment'>--</span>-<a name="line-85"></a><span class='comment'>--</span>-<a name="line-86"></a><span class='comment'>-- - returns : a function which expects a complete XML document tree</span>-<a name="line-87"></a><span class='comment'>-- and returns the transformed XmlTree</span>-<a name="line-88"></a>-<a name="line-89"></a><a name="transform"></a><span class='definition'>transform</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-90"></a><span class='definition'>transform</span>-<a name="line-91"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>isRoot</span>-<a name="line-92"></a> <span class='conop'>:-></span> <span class='varid'>transformDoc</span>-<a name="line-93"></a> <span class='layout'>,</span> <span class='varid'>this</span>-<a name="line-94"></a> <span class='conop'>:-></span> <span class='varid'>fatal</span> <span class='str'>"Can't transform document: No document root given"</span>-<a name="line-95"></a> <span class='keyglyph'>]</span>-<a name="line-96"></a> <span class='keyword'>where</span>-<a name="line-97"></a> <span class='varid'>transformDoc</span> <span class='varid'>t</span>-<a name="line-98"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>dtds</span>-<a name="line-99"></a> <span class='keyglyph'>=</span> <span class='varid'>this</span> <span class='varid'>t</span>-<a name="line-100"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-101"></a> <span class='keyglyph'>=</span> <span class='conid'>DocTransformation</span><span class='varop'>.</span><span class='varid'>transform</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>dtds</span><span class='layout'>)</span> <span class='varid'>t</span>-<a name="line-102"></a> <span class='keyword'>where</span>-<a name="line-103"></a> <span class='varid'>dtds</span> <span class='keyglyph'>=</span> <span class='varid'>getDTDSubset</span> <span class='varop'>.></span> <span class='varid'>processBottomUp</span> <span class='varid'>removeDoublicateDefs</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-104"></a>-<a name="line-105"></a><span class='comment'>-- |</span>-<a name="line-106"></a><span class='comment'>-- Removes doublicate declarations from the DTD which first declaration is</span>-<a name="line-107"></a><span class='comment'>-- binding. This is the case for ATTLIST and ENTITY declarations.</span>-<a name="line-108"></a><span class='comment'>--</span>-<a name="line-109"></a><span class='comment'>--</span>-<a name="line-110"></a><span class='comment'>-- - returns : A function that replaces the children of DOCTYPE nodes by a list</span>-<a name="line-111"></a><span class='comment'>-- where all multiple declarations are removed.</span>-<a name="line-112"></a>-<a name="line-113"></a><a name="removeDoublicateDefs"></a><span class='definition'>removeDoublicateDefs</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-114"></a><span class='definition'>removeDoublicateDefs</span>-<a name="line-115"></a> <span class='keyglyph'>=</span> <span class='conid'>DTDValidation</span><span class='varop'>.</span><span class='varid'>removeDoublicateDefs</span>-<a name="line-116"></a>-<a name="line-117"></a><span class='comment'>--</span>-<a name="line-118"></a><span class='comment'>-- selects the DTD part of a document</span>-<a name="line-119"></a><span class='comment'>-- but only, if there is more than the internal part for the 4 predefined XML entities</span>-<a name="line-120"></a>-<a name="line-121"></a><a name="getDTDSubset"></a><span class='definition'>getDTDSubset</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-122"></a><span class='definition'>getDTDSubset</span>-<a name="line-123"></a> <span class='keyglyph'>=</span> <span class='varid'>getChildren</span> <span class='varop'>.></span> <span class='varid'>isDoctype</span> <span class='varop'>.></span> <span class='varid'>hasRootName</span>-<a name="line-124"></a> <span class='keyword'>where</span>-<a name="line-125"></a> <span class='varid'>hasRootName</span> <span class='keyglyph'>=</span> <span class='varid'>isOf</span> <span class='layout'>(</span><span class='varid'>hasEntry</span> <span class='varid'>a_name</span> <span class='varop'>.</span> <span class='varid'>attrlOfDTD</span><span class='layout'>)</span>-</pre></body>-</html>
− doc/hxt-filter/src/Text-XML-HXT-Validator-XmlRE.html
@@ -1,113 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html>-<head>-<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->-<title>Haskell Code by HsColour</title>-<link type='text/css' rel='stylesheet' href='hscolour.css' />-</head>-<body>-<pre><a name="line-1"></a><span class='comment'>-- |</span>-<a name="line-2"></a><span class='comment'>-- A module for regular expression matching, adapted for XML DTDs.</span>-<a name="line-3"></a><span class='comment'>--</span>-<a name="line-4"></a><span class='comment'>-- This module is based on the module RE.</span>-<a name="line-5"></a><span class='comment'>--</span>-<a name="line-6"></a><span class='comment'>-- Author .\\artin Schmidt</span>-<a name="line-7"></a>-<a name="line-8"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>XmlRE</span>-<a name="line-9"></a> <span class='layout'>(</span> <span class='conid'>RE</span>-<a name="line-10"></a>-<a name="line-11"></a> <span class='layout'>,</span> <span class='varid'>checkRE</span>-<a name="line-12"></a> <span class='layout'>,</span> <span class='varid'>matches</span>-<a name="line-13"></a> <span class='layout'>,</span> <span class='varid'>printRE</span>-<a name="line-14"></a>-<a name="line-15"></a> <span class='layout'>,</span> <span class='varid'>re_unit</span>-<a name="line-16"></a> <span class='layout'>,</span> <span class='varid'>re_zero</span>-<a name="line-17"></a> <span class='layout'>,</span> <span class='varid'>re_sym</span>-<a name="line-18"></a> <span class='layout'>,</span> <span class='varid'>re_rep</span>-<a name="line-19"></a> <span class='layout'>,</span> <span class='varid'>re_plus</span>-<a name="line-20"></a> <span class='layout'>,</span> <span class='varid'>re_opt</span>-<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>re_seq</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>re_alt</span>-<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>re_dot</span>-<a name="line-24"></a> <span class='layout'>)</span>-<a name="line-25"></a><span class='keyword'>where</span>-<a name="line-26"></a>-<a name="line-27"></a><span class='comment'>-- import Debug.Trace(trace)</span>-<a name="line-28"></a>-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Validator</span><span class='varop'>.</span><span class='conid'>RE</span> <span class='varid'>hiding</span> <span class='layout'>(</span><span class='varid'>matches</span><span class='layout'>)</span>-<a name="line-30"></a>-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlTree</span>-<a name="line-32"></a>-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>EditFilters</span>-<a name="line-34"></a> <span class='layout'>(</span> <span class='varid'>removeComment</span>-<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>removeWhiteSpace</span>-<a name="line-36"></a> <span class='layout'>)</span>-<a name="line-37"></a>-<a name="line-38"></a><span class='comment'>-- |</span>-<a name="line-39"></a><span class='comment'>-- Derives a regular expression with respect to a list of elements.</span>-<a name="line-40"></a><span class='comment'>--</span>-<a name="line-41"></a><span class='comment'>-- * 1.parameter re : regular expression</span>-<a name="line-42"></a><span class='comment'>--</span>-<a name="line-43"></a><span class='comment'>-- - 2.parameter list : list of elements to which the regular expression is applied</span>-<a name="line-44"></a><span class='comment'>--</span>-<a name="line-45"></a><span class='comment'>-- - returns : the derived regular expression</span>-<a name="line-46"></a>-<a name="line-47"></a><a name="matches"></a><span class='definition'>matches</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='conid'>String</span>-<a name="line-48"></a><span class='definition'>matches</span> <span class='varid'>re</span> <span class='varid'>list</span>-<a name="line-49"></a> <span class='keyglyph'>=</span> <span class='varid'>foldl</span> <span class='varid'>delta</span> <span class='varid'>re</span> <span class='layout'>(</span><span class='varid'>removeUnimportantStuff</span> <span class='varop'>$$</span> <span class='varid'>list</span><span class='layout'>)</span>-<a name="line-50"></a> <span class='keyword'>where</span>-<a name="line-51"></a> <span class='varid'>removeUnimportantStuff</span> <span class='keyglyph'>::</span> <span class='conid'>XmlFilter</span>-<a name="line-52"></a> <span class='varid'>removeUnimportantStuff</span> <span class='keyglyph'>=</span> <span class='varid'>processBottomUp</span> <span class='layout'>(</span><span class='varid'>removeWhiteSpace</span> <span class='varop'>`o`</span> <span class='varid'>removeComment</span><span class='layout'>)</span>-<a name="line-53"></a> <span class='comment'>-- trace of growth of REs</span>-<a name="line-54"></a> <span class='comment'>-- delta' re el = delta (trace (("RE : " ++) . (++ "\n" ) . show $ re) re) el</span>-<a name="line-55"></a>-<a name="line-56"></a>-<a name="line-57"></a><span class='comment'>-- |</span>-<a name="line-58"></a><span class='comment'>-- Derives a regular expression with respect to one element.</span>-<a name="line-59"></a><span class='comment'>--</span>-<a name="line-60"></a><span class='comment'>-- L(delta e x) = x \ L(e)</span>-<a name="line-61"></a><span class='comment'>--</span>-<a name="line-62"></a><span class='comment'>-- * 1.parameter re : regular expression to be derived</span>-<a name="line-63"></a><span class='comment'>--</span>-<a name="line-64"></a><span class='comment'>-- - 2.parameter el : the element on which the regular expression is applied</span>-<a name="line-65"></a><span class='comment'>--</span>-<a name="line-66"></a><span class='comment'>-- - returns : the derived regular expression</span>-<a name="line-67"></a>-<a name="line-68"></a><a name="delta"></a><span class='definition'>delta</span> <span class='keyglyph'>::</span> <span class='conid'>RE</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>RE</span> <span class='conid'>String</span>-<a name="line-69"></a><span class='definition'>delta</span> <span class='varid'>re</span> <span class='varid'>el</span>-<a name="line-70"></a> <span class='keyglyph'>|</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>allowed</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>re</span>-<a name="line-71"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>re</span> <span class='keyword'>of</span>-<a name="line-72"></a> <span class='conid'>RE_ZERO</span> <span class='varid'>m</span> <span class='keyglyph'>-></span> <span class='varid'>re_zero</span> <span class='varid'>m</span>-<a name="line-73"></a> <span class='conid'>RE_UNIT</span> <span class='keyglyph'>-></span> <span class='varid'>re_zero</span> <span class='layout'>(</span><span class='varid'>elemName</span> <span class='varid'>el</span> <span class='varop'>++</span><span class='str'>" unexpected."</span><span class='layout'>)</span>-<a name="line-74"></a> <span class='conid'>RE_SYM</span> <span class='varid'>sym</span>-<a name="line-75"></a> <span class='keyglyph'>|</span> <span class='varid'>sym</span> <span class='varop'>==</span> <span class='varid'>k_pcdata</span> <span class='keyglyph'>-></span> <span class='keyword'>let</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>getNode</span> <span class='varid'>el</span> <span class='keyword'>in</span>-<a name="line-76"></a> <span class='keyword'>if</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>isXTextNode</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='varid'>isXCdataNode</span> <span class='varid'>node</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-77"></a> <span class='keyword'>then</span> <span class='varid'>re_unit</span>-<a name="line-78"></a> <span class='keyword'>else</span> <span class='varid'>re_zero</span> <span class='layout'>(</span><span class='str'>"Character data expected, but "</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>el</span> <span class='varop'>++</span><span class='str'>" found."</span><span class='layout'>)</span>-<a name="line-79"></a> <span class='keyglyph'>|</span> <span class='varid'>expectedNode</span> <span class='varid'>el</span> <span class='varid'>sym</span> <span class='keyglyph'>-></span> <span class='varid'>re_unit</span>-<a name="line-80"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>-></span> <span class='varid'>re_zero</span> <span class='layout'>(</span><span class='str'>"Element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>sym</span> <span class='varop'>++</span><span class='str'>" expected, but "</span><span class='varop'>++</span> <span class='varid'>elemName</span> <span class='varid'>el</span> <span class='varop'>++</span><span class='str'>" found."</span><span class='layout'>)</span>-<a name="line-81"></a> <span class='conid'>RE_REP</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>re_rep</span> <span class='varid'>e</span><span class='layout'>)</span>-<a name="line-82"></a> <span class='conid'>RE_PLUS</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>re_rep</span> <span class='varid'>e</span><span class='layout'>)</span>-<a name="line-83"></a> <span class='conid'>RE_OPT</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span>-<a name="line-84"></a> <span class='conid'>RE_SEQ</span> <span class='varid'>e</span> <span class='varid'>f</span>-<a name="line-85"></a> <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>f</span> <span class='varid'>el</span><span class='layout'>)</span>-<a name="line-86"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>-></span> <span class='varid'>re_seq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='varid'>f</span>-<a name="line-87"></a> <span class='conid'>RE_ALT</span> <span class='varid'>e</span> <span class='varid'>f</span> <span class='keyglyph'>-></span> <span class='varid'>re_alt</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>el</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>f</span> <span class='varid'>el</span><span class='layout'>)</span>-<a name="line-88"></a> <span class='conid'>RE_DOT</span> <span class='keyglyph'>-></span> <span class='varid'>re_unit</span>-<a name="line-89"></a>-<a name="line-90"></a> <span class='keyword'>where</span>-<a name="line-91"></a> <span class='varid'>expectedNode</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-92"></a> <span class='varid'>expectedNode</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>sym</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>sym</span>-<a name="line-93"></a> <span class='varid'>expectedNode</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-94"></a>-<a name="line-95"></a> <span class='varid'>elemName</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-96"></a> <span class='varid'>elemName</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>n</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"element "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-97"></a> <span class='varid'>elemName</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>"character data"</span>-<a name="line-98"></a>-<a name="line-99"></a> <span class='varid'>allowed</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-100"></a> <span class='varid'>allowed</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-101"></a> <span class='varid'>allowed</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-102"></a> <span class='varid'>allowed</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XCdata</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-103"></a> <span class='varid'>allowed</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-</pre></body>-</html>
− doc/hxt-filter/src/hscolour.css
@@ -1,5 +0,0 @@-.keyglyph, .layout {color: red;}-.keyword {color: blue;}-.comment, .comment a {color: green;}-.str, .chr {color: teal;}-.keyword,.conid, .varid, .conop, .varop, .num, .cpp, .sel, .definition {}
− examples/Makefile
@@ -1,40 +0,0 @@-# Example Applications-#--include ../Version.mk--HXT_HOME = ..--EXAMPLES = mini hparser hfilter hunit hsvg dtd2haskell-MORE_SAMPLES = blutgraetsche photoalbum-DIST = ../$(DIST_NAME)-DIST_DIR = $(DIST)/examples--all :- if [ -f $(HXT_HOME)/lib/$(SOFTWARE)/package.conf ] ; \- then $(MAKE) alllocal ; \- else $(MAKE) alldist ; \- fi --alllocal :- $(foreach i,$(EXAMPLES),$(MAKE) -C $i PKGFLAGS="-ignore-package $(SOFTWARE)-$(LASTVERSION) -package-conf `pwd`/$(HXT_HOME)/lib/$(SOFTWARE)/package.conf -package $(SOFTWARE)" all ;)--alldist :- $(foreach i,$(EXAMPLES),$(MAKE) -C $i all ;)--test :- $(foreach i,$(EXAMPLES),$(MAKE) -C $i $@ ;)--dist :- [ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)- $(foreach i,$(EXAMPLES),$(MAKE) -C $i dist DIST=../$(DIST_DIR);)- [ -d $(DIST_DIR)/xhtml ] || mkdir -p $(DIST_DIR)/xhtml- cp xhtml/xhtml*.dtd xhtml/xhtml*.ent xhtml/xhtml*.xml $(DIST_DIR)/xhtml- cp Makefile $(DIST_DIR)--clean :- $(foreach i,$(EXAMPLES),$(MAKE) -C $i $@ ;)---.PHONY : all clean test dist-
− examples/dtd2haskell/DTDtoHXT.hs
@@ -1,434 +0,0 @@--- |--- DTDtoHXml - A program for generating access functions for the Haskell XML Toolbox--- from a DTD------ Author : Uwe Schmidt------ Version : $Id: DTDtoHXT.hs,v 1.2 2005/04/14 12:52:51 hxml Exp $------ this program may be used as example main program for the--- Haskell XML Toolbox--module Main-where--import Text.XML.HXT.Parser -- import all stuff for parsing, validating, and transforming XML--import System.IO -- import the IO and commandline option stuff-import System.Environment-import System.Console.GetOpt-import System.Exit--import Data.Maybe-import Data.Char-import Data.List---- ---------------------------------------------------------------- |--- the main program--main :: IO ()-main- = do- argv <- getArgs -- get the commandline arguments- al <- cmdlineOpts argv -- and evaluate them, return a key-value list- res <- run' -- build a XML root from the list and start parsing- $ getDocumentAndGenerateHaskellCode al emptyRoot- exitProg (null res) -- set return code and terminate---- --------------------------------------------------------------exitProg :: Bool -> IO a-exitProg True = exitWith (ExitFailure (-1))-exitProg False = exitWith ExitSuccess---- --------------------------------------------------------------uppercaseInitials, namespaceAware, prefixUnderline :: String--uppercaseInitials = "uppercase-initials"-namespaceAware = "namespace-aware"-prefixUnderline = "prefix-underline"---- --------------------------------------------------------------generateHXmlToolboxAccessFuntions :: XmlFilter-generateHXmlToolboxAccessFuntions t- = processChildren (isXDTD `guards` genHaskell) t- where- genHaskell dt- = cat- [ code [ sepl- , "--"- , "-- don't edit this module"- , "-- generated with " ++ progName- , "-- simple access function for Haskell XML Toolbox"- , "-- generated from DTD of document: " ++ show source- , ""- , "module " ++ hsmodul- , "where"- , ""- , "import Text.XML.HXT.DOM.XmlTree (XmlFilter)"- , "import qualified Text.XML.HXT.DOM.XmlTree as X hiding (XmlFilter)"- ]-- , comm "namespace declarations"- , code (map nsType nsPrefixes)- , comm ""- , code (zipWith nsDef nsPrefixes nsUris)-- , comm "element names (tag names)"- , code (map (constNameType maxElemLen "tag") elements)- , comm ""- , code (map (constNameDef maxElemLen "tag") elements)-- , comm "isTag test filter"- , code (map isTagType elements)- , comm ""- , code (map isTagDef elements)-- , comm "make tag nodes constructor filter"- , code (map mkTagType elements)- , comm ""- , code (map mkTagDef elements)-- , comm "attribute names"- , code (map (constNameType maxAttrLen "attr") attributes)- , comm ""- , code (map (constNameDef maxAttrLen "attr") attributes)-- , comm "get attribute value access filter"- , code (map getValueType attributes)- , comm ""- , code (map getValueDef attributes)-- , comm "has attribute test filter"- , code (map hasAttrType attributes)- , comm ""- , code (map hasAttrDef attributes)-- , comm "make attribute nodes constructor filter for computed attribute values"- , code (map mkAttrType attributes)- , comm ""- , code (map mkAttrDef attributes)- , comm "make attribute nodes constructor filter for string attribute values"- , code (map mkSAttrType attributes)- , comm ""- , code (map mkSAttrDef attributes)-- , comm ("end of module " ++ hsmodul)-- ]- $ dt- where- code = txt . concatMap (++ "\n")-- comm cm = code [ "", sepl, "--", "-- " ++ cm, ""] -- generate a headline comment-- sepl = "-- ----------------------------------------"-- nn = trInitial . concatMap nc -- normalize names-- nc c- | c `elem` ['a'..'z'] ++ ['A'..'Z'] ++ ['0'..'9'] ++ "_" = [c]- | c == ':' || c == '-' = "_" - | otherwise = ("_" ++) . show . fromEnum $ c-- trInitial str- | null str = str- | underLn = '_' : str- | upperCs = toUpper (head str) : tail str- | otherwise = str-- modname = reverse- . (\ n -> if '.' `elem` n -- remove extension- then drop 1 . dropWhile (/= '.') $ n- else n- )- . takeWhile (/= '/') -- remove dir path- . reverse-- maxLen = maximum . (0 :) . map length-- padd n x = take n (x ++ repeat ' ')-- tagPrefix = "tag"- attrPrefix = "attr"- nsPrefix = "ns"-- tagName n = tagPrefix ++ nn n- attName a = attrPrefix ++ nn a- nspName n = nsPrefix ++ nn n-- constNameType ln prefix n- = prefix ++ padd ln (nn n) ++ " :: String"-- constNameDef ln prefix n- = prefix ++ padd ln (nn n) ++ " = " ++ show n-- isTagType n- = "is" ++ padd maxElemLen (nn n) ++ " :: XmlFilter"-- isTagDef n- = "is" ++ padd maxElemLen (nn n) ++ " = " ++- ( either- (const ("X.isTag " ++ tagPrefix ++ nn n))- (\ (ns, pr, lp)- -> "X.isNsTag " ++ ( if null pr- then tagName n- else show lp- ) ++ " " ++ nspName ns- )- . quName- $ n- )-- mkTagType n- = "t" ++ padd maxElemLen (nn n) ++ " :: XmlFilter"-- mkTagDef n- = "t" ++ padd maxElemLen (nn n) ++ " = " ++- ( either- (const ("X.etag " ++ tagName n))- (\ (ns, _pr, _lp)- -> "X.mkXNsTag " ++ tagName n ++ " " ++ nspName ns ++ " X.none X.none"- )- . quName- $ n- )-- hasAttrType n- = "has" ++ padd maxAttrLen (nn n) ++ " :: XmlFilter"-- hasAttrDef n- = "has" ++ padd maxAttrLen (nn n) ++ " = " ++- ( either- (const ("X.hasAttr " ++ attName n))- (\ (ns, _pr, lp)- -> "X.hasNsAttr " ++ show lp ++ " " ++ nspName ns- )- . quNameAttr- $ n- )-- mkAttrType n- = "af" ++ padd maxAttrLen (nn n) ++ " :: XmlFilter -> XmlFilter"-- mkAttrDef n- = "af" ++ padd maxAttrLen (nn n) ++ " = " ++- ( either- (const ("X.mkXAttr " ++ attName n))- (\ (ns, _pr, _lp)- -> "X.mkXNsAttr " ++ attName n ++ " " ++ nspName ns- )- . quNameAttr- $ n- )-- mkSAttrType n- = "a" ++ padd maxAttrLen (nn n) ++ " :: String -> XmlFilter"-- mkSAttrDef n- = "a" ++ padd maxAttrLen (nn n) ++ " = \\ v -> " ++- ( either- (const ( "X.mkXAttr " ++ attName n ++ " (X.txt v)" ))- (\ (ns, _pr, _lp)- -> "X.mkXNsAttr " ++ attName n ++ " " ++ nspName ns ++ " (X.txt v)"- )- . quNameAttr- $ n- )-- getValueType n- = "get" ++ padd maxAttrLen (nn n) ++ " :: XmlFilter"-- getValueDef n- = "get" ++ padd maxAttrLen (nn n) ++ " = " ++- ( either- (const ("X.getValue " ++ attName n))- (\ (ns, _pr, lp)- -> "X.getNsValue " ++ show lp ++ " " ++ nspName ns- )- . quNameAttr- $ n- )-- nsType n- = nsPrefix ++ padd maxNsLen (nn n) ++ " :: String"-- nsDef n v- = nsPrefix ++ padd maxNsLen (nn n) ++ " = " ++ show v-- source = xshow . getValue a_source $ t - modul = modname . xshow . getValue a_output_file $ t- root = xshow . (isDoctype .> getDTDValue a_name) $ dt- hsmodul- | null modul = "DTD" ++ nn root- | otherwise = modul-- upperCs = satisfies (hasAttr uppercaseInitials) $ t- underLn = satisfies (hasAttr prefixUnderline) $ t- nsAware = satisfies (hasAttr namespaceAware) $ t-- elements -- select all element names from dtd - = nub- . sort- . map ( xshow . this)- . (deep isElement .> getDTDValue a_name)- $ dt-- maxElemLen = maxLen . map nn $ elements-- attributes- = nub- . sort- . map ( xshow . this)- . (deep isAttlist .> getDTDValue a_value)- $ dt-- maxAttrLen = maxLen . map nn $ attributes-- nsName [] = root- nsName n = n-- namespaces- = map (\ (n,v) -> (drop 6 n, v))- . map (\ t' -> (xshow . getDTDValue a_value $ t', xshow . getDTDValue a_default $ t'))- . isNSAttr- $ dt- - nsPrefixes = map (nsName . fst) namespaces- nsUris = map snd namespaces-- maxNsLen = maxLen . map nn $ nsPrefixes-- quName :: String -> Either String (String, String, String)- quName n- | not nsAware = Left n- | null lp && isNothing defns = Left n- | null lp = Right (nsName "", "", pr)- | isNothing expns = Left n- | otherwise = Right (nsName pr, pr, tail lp)- where- (pr, lp) = span (/= ':') n- defns = lookup "" namespaces- expns = lookup pr namespaces-- quNameAttr :: String -> Either String (String, String, String)- quNameAttr an- | ':' `elem` an = quName an- | otherwise = Left an-- isNSAttr :: XmlFilter- isNSAttr- = deep isAttlist- .>- ( ( getDTDValue a_value- .>- isOfText (\ s' -> s' == "xmlns" || "xmlns:" `isPrefixOf` s')- )- `guards`- ( isFixedAttrKind `guards` this)- )- --- ---------------------------------------------------------------- |--- the /real/ main program------ get wellformed document, validates document, propagates and check namespaces--- and controls output--getDocumentAndGenerateHaskellCode :: Attributes -> XmlStateFilter state-getDocumentAndGenerateHaskellCode al- = parseDocument ( al- ++- [ (a_parse_html, v_0)- , (a_canonicalize, v_0)- , (a_remove_whitespace, v_0)- ]- )- .>>- traceMsg 1 "start processing"- .>>- liftMf generateHXmlToolboxAccessFuntions- .>>- traceMsg 1 "processing finished"- .>>- traceSource- .>>- traceTree- .>>- writeDocument [ (a_output_xml, v_0)- ]- .>>- checkStatus---- ------------------------------------------------------------------ the boring option definition and evaluation part------ see doc for System.Console.GetOpt--progName :: String-progName = "DTDtoHXml"- -options :: [OptDescr (String, String)]-options- = selectOptions [ a_help- ] generalOptions- ++- selectOptions [ a_trace- , a_proxy- , a_use_curl- , a_options_curl- , a_encoding- , a_validate- , a_check_namespaces- ] inputOptions- ++- selectOptions [ a_output_file- ] outputOptions- ++- [ Option "u" [prefixUnderline] (NoArg (prefixUnderline, v_1)) "separate tag and attribute names with a '_'"- , Option "U" [uppercaseInitials] (NoArg (uppercaseInitials, v_1)) "transform the first char of tag and attribute names to uppercase"- , Option "N" [namespaceAware] (NoArg (namespaceAware, v_1)) "filter are namespace aware, if namespace attributes occur in the DTD"- ]- ++- showOptions--usage :: [String] -> IO a-usage errl- | null errl- = do- hPutStrLn stdout use- exitProg False- | otherwise- = do- hPutStrLn stderr (concat errl ++ "\n" ++ use)- exitProg True- where- header = "DTDtoHXml - Generation of access function for the Haskell XML Toolbox from a DTD\n" ++- "Usage: " ++ progName ++ " [OPTION...] [URI or FILE]"- use = usageInfo header options--cmdlineOpts :: [String] -> IO (Attributes)-cmdlineOpts argv- = case (getOpt Permute options argv) of- (ol,n,[] )- -> do- sa <- src n- help (lookup a_help ol)- return (ol ++ sa)- (_,_,errs)- -> usage errs- where- src [] = return [(a_source, "")]- src [uri] = return [(a_source, uri)]- src _ = usage ["only one input url or file allowed\n"]-- help Nothing = return ()- help (Just _) = usage []---- ------------------------------------------------------------
− examples/dtd2haskell/Makefile
@@ -1,56 +0,0 @@-# $Id: Makefile,v 1.5 2005/04/14 12:52:51 hxml Exp $--HXT_HOME = ../..-PKGFLAGS = -GHCFLAGS = -Wall -O2-GHC = ghc $(GHCFLAGS) $(PKGFLAGS)--prog = ./DTDtoHXT--all : $(prog)--$(prog) : $(prog).hs- $(GHC) --make -o $@ $<--force :- $(GHC) --make -o $(prog) $(prog).hs--test :- @echo "===> run a few generation examples"- $(MAKE) XHTML.o XHTML2.o XHTML3.o- @echo "===> the generated modules"- ls -l XHTML*.hs XHTML*.o--EX1 = ../xhtml/xhtml.xml-EX2 = ../photoalbum/photos.xml--XHTML.o : $(prog) $(EX1)- @echo "===> generate a module for XHTML access function from the XHTML DTD with naming convention is<Tag>, get<Attr>, ..."- $(prog) --output-file XHTML.hs --uppercase-initials $(EX1)- $(GHC) -c XHTML.hs--XHTML2.o : $(prog) $(EX1)- @echo "===> generate a module for XHTML access function from the XHTML DTD with naming convention is_<tag>, get_<attr>, ..."- $(prog) --output-file XHTML2.hs --prefix-underline $(EX1)- $(GHC) -c XHTML2.hs--XHTML3.o : $(prog) $(EX1)- @echo "===> same as test2, but with namespace aware access functions, if xmlns is used in DTD"- $(prog) --output-file XHTML3.hs --prefix-underline --namespace-aware $(EX1)- $(GHC) -c XHTML3.hs--Photo.hs : $(prog) $(EX2)- $(prog) --output-file $@ --uppercase-initials $(EX2)---DIST = $(HXT_HOME)/dist/examples-DIST_DIR = $(DIST)/dtd2haskell-DIST_FILES = $(prog).hs Makefile--dist :- [ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)- cp $(DIST_FILES) $(DIST_DIR)--clean :- rm -f $(prog) XHTML*.hs *.o *.hi-
− examples/hfilter/FilterExample.hs
@@ -1,172 +0,0 @@--- |--- HXPath - XPath Evaluator of the Haskell XML Toolbox------ Author : Torben Kuseler, Uwe Schmidt------ Version : $Id: FilterExample.hs,v 1.9 2004/09/02 19:11:50 hxml Exp $--module Main(main)-where--import Text.XML.HXT.Parser -- import all stuff for parsing, validating, and transforming XML--import System.IO -- import the IO and commandline option stuff-import System.Environment-import System.Console.GetOpt-import System.Exit--import Network.URI--import Data.Maybe----- ---------------------------------------------------------------- |--- the main program of the Filter example --main :: IO ()-main- = do- argv <- getArgs- al <- cmdlineOpts argv- res <- run' $ filterEx al emptyRoot- exitProg (null res) -- set return code and terminate---- --------------------------------------------------------------exitProg :: Bool -> IO a-exitProg True = exitWith (ExitFailure (-1))-exitProg False = exitWith ExitSuccess---- ---------------------------------------------------------------- |--- the /real/ main program------ runs in the trivial XmlState monad (with user state set to ())--- so IO and access to global options is possible--filterEx :: Attributes -> XmlStateFilter state-filterEx al- = parseDocument al- .>>- liftMf filterDocument- .>>- writeDocument []- .>>- checkStatus---- ------------------------------------------------------------------ some simple selection and editing filter--filterDocument :: XmlFilter -- the main processing filter-filterDocument t- = processChildren (filterexamples xf) t- where- xf = xshow . getValue "filter" $ t--filterexamples :: String -> XmlFilter-filterexamples "all-text" = deep isXText-filterexamples "all-body-text-without-whitespace" = getAllBodyText-filterexamples "all-a-tags-with-href-attr" = getAllTagsWithAttr "a" "href"-filterexamples "all-href-values-of-a-tags" = getAllAttrValues "a" "href"-filterexamples "change-img-src-to-abs-uri" = changeToAbsolutURIs "http://localhost/images/" "img" "src"-filterexamples f = cmt ("error: " ++ f ++ " not defined") +++ this--getAllBodyText :: XmlFilter-getAllBodyText- = isTag "html" .> getChildren .> isTag "body" .> getChildren .> deep (isOfText noWhiteSpace)- where- noWhiteSpace = not . all (`elem` " \t\n")--getAllTagsWithAttr :: String -> String -> XmlFilter-getAllTagsWithAttr tn an- = multi (isTag tn .> hasAttr an)--getAllAttrValues :: String -> String -> XmlFilter-getAllAttrValues tn an- = multi (isTag tn .> getValue an)--changeToAbsolutURIs :: String -> String -> String -> XmlFilter-changeToAbsolutURIs base tn an- = processTopDown (changeURI `when` isTag tn)- where- changeURI = modifyAttr an (toAbsURI base)--toAbsURI :: String -> String -> String-toAbsURI base uri- = fromMaybe "" $ expand- where- expand = do- base' <- parseURI base- uri' <- parseURI uri- abs' <- relativeTo uri' base'- return $ show abs'---- ------------------------------------------------------------------ the options definition part--- see doc for System.Console.GetOpt--progName :: String-progName = "HXmlFilter"- -options :: [OptDescr (String, String)]-options- = generalOptions- ++- inputOptions- ++- outputOptions- ++- [ Option "f" ["filter"] (ReqArg flt "FILTER") ( "filter to be applied, one of: " ++ nl ++- "\"all-text\"," ++ nl ++- "\"all-body-text-without-whitespace\"," ++ nl ++- "\"all-a-tags-with-href-attr\"," ++ nl ++- "\"all-href-values-of-a-tags\"," ++ nl ++- "\"change-img-src-to-abs-uri\"" )- ]- ++- showOptions- where- nl = "\n\t\t\t\t\t "- att n v = (n, v)- flt = att "filter"---usage :: [String] -> IO a-usage errl- | null errl- = do- hPutStrLn stdout use- exitProg False- | otherwise- = do- hPutStrLn stderr (concat errl ++ "\n" ++ use)- exitProg True- where- header = "FilterExamples - Examples for applying XML filter from the Haskell XML Toolbox\n" ++- "Usage: " ++ progName ++ " [OPTION...] [URI or FILE]"- use = usageInfo header options--cmdlineOpts :: [String] -> IO (Attributes)-cmdlineOpts argv- = case (getOpt Permute options argv) of- (ol,n,[] )- -> do- sa <- src n- help (lookup a_help ol)- return (ol ++ sa)- (_,_,errs)- -> usage errs- where- src [] = return [("source", "")]- src [uri] = return [("source", uri)]- src _ = usage ["only one input uri or file allowed\n"]-- help Nothing = return ()- help (Just _) = usage []---- ------------------------------------------------------------
− examples/hfilter/Makefile
@@ -1,63 +0,0 @@-# $Id: Makefile,v 1.7 2005/04/14 12:52:51 hxml Exp $--HXT_HOME = ../..-PKGFLAGS = -GHCFLAGS = -Wall -O2-GHC = ghc $(GHCFLAGS) $(PKGFLAGS)--prog = ./FilterExample-opts = --parse-html --do-not-issue-warnings-runprog = $(prog) $(opts)--all : $(prog)--force :- $(GHC) --make -o $(prog) $(prog).hs--$(prog) : $(prog).hs- $(GHC) --make -o $@ $<--EX = ./lousy.html--test : $(prog)- @echo "===> Filter examples"- @echo ; echo "===> the filter parses a document and selects or modifies parts of it"- @echo ; echo "===> usage" ; echo- ./FilterExample --help- @echo ; sleep 2- @$(MAKE) test1 test2 test3 test4 test5--test1 :- @sleep 2 ; echo ; echo "===> extract all a tags with a href attribute" ; echo ; sleep 2- $(runprog) --filter=all-a-tags-with-href-attr $(EX)- @echo--test2 :- @sleep 2 ; echo ; echo "===> extract all href attribute values for a tags" ; echo ; sleep 2- $(runprog) --filter=all-href-values-of-a-tags $(EX)- @echo--test3 :- @sleep 2 ; echo ; echo "===> change all src attribute values of img tags to absolut uris" ; echo ; sleep 2- $(runprog) --filter=change-img-src-to-abs-uri $(EX)- @echo--test4 :- @sleep 2 ; echo ; echo "===> select all text" ; echo ; sleep 2- $(runprog) --filter=all-text $(EX)- @echo--test5 :- @sleep 2 ; echo ; echo "===> select all text within body, but remove whitespace" ; echo ; sleep 2- $(runprog) --filter=all-body-text-without-whitespace $(EX)- @echo--DIST = $(HXT_HOME)/dist/examples-DIST_DIR = $(DIST)/hfilter--dist :- [ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)- cp $(EX) Makefile $(prog).hs $(DIST_DIR)--clean :- rm -f $(prog) *.o *.hi
− examples/hfilter/lousy.html
@@ -1,26 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">-<html>- <head>- <title>A HTML Documents with some Errors</title>- </head>-- <body>- <h1>HTML- <h2>html- <p>some text and a &xxx;- <p>more text- </p- <img alt='< &yyy; >' src="abc.gif">- <table border>- <tr><td>1<td>2<td>3- </table>--- <hr>- <address><a href="mailto:uwe@muehle.welt.all">Uwe- Schmidt</a></address>-<!-- Created: Tue Apr 29 16:07:57 CEST 2003 -->-<!-- hhmts start -->-Last modified: Mon May 12 13:11:29 CEST 2003-<!-- hhmts end -->-</html>
− examples/hparser/HXmlParser.hs
@@ -1,136 +0,0 @@--- |--- HXmlParser - Validating XML Parser of the Haskell XML Toolbox--- XML well-formed checker and validator.------ Author : .\\artin Schmidt and Uwe Schmidt------ Version : $Id: HXmlParser.hs,v 1.14 2005/04/14 12:52:51 hxml Exp $------ this program may be used as example main program for the--- Haskell XML Toolbox--module Main-where--import Text.XML.HXT.Parser -- import all stuff for parsing, validating, and transforming XML--import System.IO -- import the IO and commandline option stuff-import System.Environment-import System.Console.GetOpt-import System.Exit--import Data.Maybe---- ---------------------------------------------------------------- |--- the main program of the Haskell XML Validating Parser--main :: IO ()-main- = do- argv <- getArgs -- get the commandline arguments- al <- cmdlineOpts argv -- and evaluate them, return a key-value list- res <- run' $ parser al emptyRoot -- build a XML root from the list and start parsing- exitProg (null res) -- set return code and terminate---- --------------------------------------------------------------exitProg :: Bool -> IO a-exitProg True = exitWith (ExitFailure (-1))-exitProg False = exitWith ExitSuccess---- ---------------------------------------------------------------- |--- the /real/ main program------ get wellformed document, validates document, propagates and check namespaces--- and controls output--parser :: Attributes -> XmlStateFilter state-parser al- = parseDocument al -- read document- .>>- traceMsg 1 "start processing"- .>>- liftMf processDocument -- process document: in this case rather simple, just apply a pure filter- .>>- traceMsg 1 "processing finished"- .>>- traceSource- .>>- traceTree- .>>- ( writeDocument [] -- write result, all options already set with parseDocument- `whenNotM`- hasAttr "no-output"- )- .>>- checkStatus -- check status--processDocument :: XmlFilter-processDocument- = ( processChildren (deep isXText) -- process document, just select text when option \"show-text\" is set- `when`- hasAttr "show-text"- )---- ------------------------------------------------------------------ the options definition part--- see doc for System.Console.GetOpt--progName :: String-progName = "HXmlParser"- -options :: [OptDescr (String, String)]-options- = generalOptions- ++- inputOptions- ++- outputOptions- ++- [ Option "q" ["no-output"] (NoArg ("no-output", "1")) "no output of resulting document"- , Option "x" ["show-text"] (NoArg ("show-text", "1")) "output only the raw text, remove all markup"- ]- ++- showOptions--usage :: [String] -> IO a-usage errl- | null errl- = do- hPutStrLn stdout use- exitProg False- | otherwise- = do- hPutStrLn stderr (concat errl ++ "\n" ++ use)- exitProg True- where- header = "HXmlParser - Validating XML Parser of the Haskell XML Toolbox\n" ++- "XML well-formed checker and validator.\n\n" ++- "Usage: " ++ progName ++ " [OPTION...] [URI or FILE]"- use = usageInfo header options--cmdlineOpts :: [String] -> IO (Attributes)-cmdlineOpts argv- = case (getOpt Permute options argv) of- (ol,n,[])- -> do- sa <- src n- help (lookup a_help ol) sa- return (ol ++ sa)- (_,_,errs)- -> usage errs- where- src [] = return []- src [uri] = return [("source", uri)]- src _ = usage ["only one input uri or file allowed\n"]-- help (Just _) _ = usage []- help Nothing [] = usage ["no input uri or file given\n"]- help Nothing _ = return ()---- ------------------------------------------------------------
− examples/hparser/Makefile
@@ -1,111 +0,0 @@-# $Id: Makefile,v 1.7 2005/04/14 12:52:51 hxml Exp $--HXT_HOME = ../..-PKGFLAGS =-GHCFLAGS = -Wall -O2-GHC = ghc $(GHCFLAGS) $(PKGFLAGS)--prog = ./HXmlParser--all : $(prog)--HXmlParser : HXmlParser.hs- $(GHC) --make -o $@ $<--force :- $(GHC) --make -o $(prog) $(prog).hs--test :- @echo "===> run a few simple test cases with the validating parser"- @echo "===> first see all command line options"- ./HXmlParser --help- @echo- $(MAKE) test0 test1 test2 test3 test4--EX1 = ./example1.xml-EXi = ./invalid.xml-EX2 = ../xhtml/xhtml.xml-EX3 = ./namespace0.xml-EX3a = ./namespace1.xml-EX4 = ./lousy.html--EX = $(EX1) $(EXi) $(EX3) $(EX3a) $(EX4)--test0 : HXmlParser- @echo "===> a 1. simple valid document"- ./HXmlParser $(EX1)- @echo- @echo "===> the dom tree of the same document (without any redundant whitespace)"- ./HXmlParser --show-tree --remove-whitespace $(EX1)- @echo- @echo "===> the next test case contains validation erors, it must fail"- ./HXmlParser --verbose $(EXi) || true- @echo- @echo "===> same source, but only wellformed check"- ./HXmlParser --do-not-validate $(EXi) || true- @echo- @echo "===> only validation, no output of an XHTML source"- ./HXmlParser --verbose --no-output $(EX2)- @echo--test1 : HXmlParser- @echo "===> the source of a very simple valid document" ; echo ; sleep 2- cat $(EX1)- @sleep 2 ; echo ; echo "===> parser will emit UTF-8" ; echo ; sleep 2- ./HXmlParser --output-encoding=UTF-8 $(EX1)- @echo- @sleep 2 ; echo ; echo "===> once again with ISO-8859-1 (latin1) output" ; echo ; sleep 2- ./HXmlParser --output-encoding=ISO-8859-1 $(EX1)- @echo- @sleep 2 ; echo ; echo "===> once again with US-ASCII output" ; echo ; sleep 2- ./HXmlParser --output-encoding=US-ASCII $(EX1)- @echo- @sleep 2 ; echo ; echo "===> once again with hdom tree output" ; echo ; sleep 2- ./HXmlParser --show-tree --output-encoding=ISO-8859-1 $(EX1)- @echo- @sleep 2 ; echo ; echo "===> once again, but without any markup" ; echo ; sleep 2- ./HXmlParser --show-text --output-encoding=ISO-8859-1 $(EX1)- @echo--test2 : HXmlParser- @echo "===> the source of a xhtml document" ; echo ; sleep 2- cat $(EX2)- @echo "that document has" `cat $(EX2) | wc -l` "lines"- @sleep 2 ; echo ; echo "===> parser will validate this document and try to indent the output" ; echo ; sleep 2- ./HXmlParser --indent $(EX2)- @sleep 2 ; echo ; echo "===> once again, but remove all markup" ; echo ; sleep 2- ./HXmlParser --show-text --remove-whitespace $(EX2)- @sleep 2 ; echo ; echo "===> once again with hdom tree output" ; echo ; sleep 2- ./HXmlParser --show-tree --remove-whitespace $(EX2)--test3 : HXmlParser- @echo "===> namespace processing examples" ; echo ; sleep 2- @echo "===> namespace propagation test" ; echo ; sleep 2- ./HXmlParser --verbose --check-namespaces --indent --output-encoding=ISO-8859-1 $(EX3)- @echo- @echo ; sleep 2 ; echo "===> namespace propagation test: tree output with attached namespaces" ; echo ; sleep 2- ./HXmlParser --verbose --check-namespaces --remove-whitespace --show-tree --output-encoding=ISO-8859-1 $(EX3)- @echo- @echo ; sleep 2 ; echo "===> namespace validation test: this test produces namespace errors" ; echo ; sleep 2- ./HXmlParser --verbose --do-not-validate --check-namespaces --indent --output-encoding=ISO-8859-1 $(EX3a) || true- @echo---test4 : HXmlParser- @echo "===> HTML parsing examples" ; echo ; sleep 2- @echo "===> the source of a lousy html document" ; echo ; sleep 2- cat $(EX4)- @sleep 2 ; echo ; echo "===> parser accepts this document and tries to build a document tree" ; echo ; sleep 2- ./HXmlParser --indent --preserve-comment --parse-html $(EX4)- @echo--DIST = $(HXT_HOME)/dist/examples-DIST_DIR = $(DIST)/hparser--dist :- [ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)- cp $(EX) Makefile $(prog).hs $(DIST_DIR)--clean :- rm -f $(prog) *.o *.hi-
− examples/hparser/example1.xml
@@ -1,22 +0,0 @@-<?xml version="1.0" encoding="ISO-8859-1" ?>--<!DOCTYPE a [-<!ATTLIST a att1 NMTOKENS #IMPLIED- att2 ID #REQUIRED>-<!ATTLIST b btt2 ID #REQUIRED- btt3 IDREF #REQUIRED>-<!ELEMENT a (b, cü?)>-<!ELEMENT b EMPTY>-<!ELEMENT cü (#PCDATA)>-]>--<?pi a processing instruction?>--<a att1=" test- äöüß- test "- att2="root"->- <b btt2="b1" btt3="root"/>- <cü>hello world äöüß test</cü>-</a>
− examples/hparser/invalid.xml
@@ -1,13 +0,0 @@-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>--<!DOCTYPE a [-<!ATTLIST a att1 CDATA #IMPLIED>-<!ELEMENT a (z, c?)>-<!ELEMENT b EMPTY>-<!ELEMENT c (#PCDATA)>-]>--<a att2="test">- <y/>- <c>hello world</c>-</a>
− examples/hparser/lousy.html
@@ -1,26 +0,0 @@-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">-<html>- <head>- <title>A HTML Documents with some Errors</title>- </head>-- <body>- <h1>HTML- <h2>html- <p>some text and a &xxx;- <p>more text- </p- <img alt='< &yyy; >' src="abc.gif">- <table border>- <tr><td>1<td>2<td>3- </table>--- <hr>- <address><a href="mailto:uwe@muehle.welt.all">Uwe- Schmidt</a></address>-<!-- Created: Tue Apr 29 16:07:57 CEST 2003 -->-<!-- hhmts start -->-Last modified: Mon May 12 13:11:29 CEST 2003-<!-- hhmts end -->-</html>
− examples/hparser/namespace0.xml
@@ -1,31 +0,0 @@-<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>--<!DOCTYPE a [-<!ATTLIST a x:att1 NMTOKENS #IMPLIED>-<!ATTLIST a x:att2 NMTOKENS #IMPLIED>-<!ATTLIST a y:att3 CDATA #FIXED "a fixed value">-<!ATTLIST a att4 CDATA "< default >">-<!ATTLIST a att5 CDATA #IMPLIED>-<!ATTLIST a xmlns CDATA #IMPLIED>-<!ATTLIST a xmlns:x CDATA #IMPLIED>-<!ATTLIST a xmlns:y CDATA #IMPLIED>-<!ELEMENT a (x:b, cü?)>-<!ELEMENT x:b EMPTY>-<!ELEMENT cü (#PCDATA)>-]>--<!-- some namespace declarations for testing namespace propagation -->-<a xmlns="default namespace"- xmlns:x="namespace for x"- xmlns:y="namespace for y"- x:att2="xxx- yyy"- y:att3="a fixed value"- x:att1=" test- äöüß- test "- att5="< >"->- <x:b/>- <cü>hello world äöüß test</cü>-</a>
− examples/hparser/namespace1.xml
@@ -1,60 +0,0 @@-<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>--<!-- $Id: namespace1.xml,v 1.1 2004/03/03 12:52:19 hxml Exp $ -->--<!DOCTYPE a [-<!ATTLIST a xmlns CDATA #IMPLIED>-<!ATTLIST a xmlns:d CDATA #IMPLIED>-<!ATTLIST a xmlns:x CDATA #IMPLIED>-<!ATTLIST a xmlns:y CDATA #IMPLIED>-<!ATTLIST a xmlns:z CDATA #IMPLIED>-<!ELEMENT a ANY>--<!-- error: a DTD part contains a not wellformed qualified Name: "a:b:c" -->-<!ELEMENT a:b:c ANY>--<!-- error: an ATTLIST declaration contains as attribute name a not wellformed qualified Name: "x:y:z" -->-<!ATTLIST a:b:c x:y:z CDATA #IMPLIED>--<!-- error: an entity or notation declaration contains a not wellformed NCName: "xyz:abc" -->-<!ENTITY xyz:abc "123">-<!ENTITY % xxx:yyy "zzz">--]>--<!-- everythin is legal here -->-<a- xmlns ="default namespace"- xmlns:d="default namespace"- xmlns:x="namespace for x"- xmlns:y="namespace common for y and z"- xmlns:z="namespace common for y and z"-- att1="abc"- x:att1="xxx yyy"- y:att1="abc">-- <!-- legal -->- <d:b attr2="xxx" d:attr2="yyy" xml:lang="de"/>-- <!-- 4 x error: tag name "..." is not a wellformed qualified name -->- <d:tag:name/><:tag/><:/><:::/>-- <!-- error: namespace for prefix in tag name "a:a" is undefined -->- <a:a/>-- <!-- error: multiple occurences of universal names for attributes of tag "d:b" : "{namespace common for y and z}att2" -->- <d:b y:att2="y" z:att2="z"/>-- <!-- 4 x error: attribute name "..." is not a wellformed qualified name -->- <d:b d:attr:name="" :attr="" :="" :::=""/>-- <!-- error: namespace value of namespace declaration for "xmlns:x" has no value -->- <d:b xmlns:x=""/>-- <!-- error: illegal namespace declaration with reserved prefix "..." starting with "xml" -->- <d:b xmlns:xml="something else"/><d:b xmlns:xml123="something else"/>-- <!-- error: a PI contains a not wellformed NCName: "pi:pi" -->- <?pi:pi ?>-</a>
− examples/hsvg/.ghci
@@ -1,11 +0,0 @@-:set -package-conf ../../lib/hxt/package.conf-:set -package hxt-:set -Wall--:def ex0 (\ _ -> return ":set args --trace=1 --encoding=ISO-8859-1 --do-not-validate -o ISO-8859-1 example1.xml")--:def x (\ _ -> return ":load TreeVisualisation\n:ex0\nmain")--:x--:module + IO Main
− examples/hsvg/Makefile
@@ -1,83 +0,0 @@-# $Id: Makefile,v 1.7 2006/06/01 15:03:21 hxml Exp $--HXT_HOME = ../..-PKGFLAGS = -GHCFLAGS = -Wall -O2-GHC = ghc $(GHCFLAGS) $(PKGFLAGS)--prog = ./TreeVisualisation--all : $(prog)--force :- $(GHC) --make -o $(prog) $(prog).hs--$(prog) : $(prog).hs- $(GHC) --make -o $@ $<--# Tree Visualisation Examples--proxy := $(shell if [ `hostname` = "si" ] ; then echo -n "--proxy=www-cache.fh-wedel.de:3128" ; else echo -n ; fi)--HTV = $(prog) -t1 --use-curl --options-curl="-L" --encoding=ISO-8859-1 --parse-html --do-not-issue-warnings --remove-whitespace-XTV = $(prog) -t1 --use-curl --do-not-validate --do-not-issue-warnings --remove-whitespace--JPGS = index.html.jpg \- www.fh-wedel.de.index.html.jpg \- www.w3.org.index.html.jpg \- www.haskell.org.index.html.jpg--vtree : $(prog) $(JPGS)--index.html.svg : $(HXT_HOME)/doc/index.html- @echo "get Haskell XML Toolbox homepage"- $(HTV) --width=800 --height=400 \- $< > $@--www.fh-wedel.de.index.html.svg :- @echo "get FH Wedel homepage"- $(HTV) --horizontalTree --horizontalLines --width=600 --height=800 --border 30 \- http://www.fh-wedel.de/ > $@--www.w3.org.index.html.svg :- @echo "get www.w3.org"- $(XTV) --centricTree --withAttr --width=1000 --height=1000 $(proxy) \- http://www.w3.org/ > $@--www.haskell.org.index.html.svg :- @echo "get www.haskell.org"- $(HTV) --horizontalLines --withAttr --width=600 --height=400 $(proxy) \- http://www.haskell.org/haskellwiki/Haskell > $@--%.jpg : %.svg- svgtoraster -m image/jpeg -q 0.7 `pwd`/$<--%.png : %.svg- svgtoraster -m image/png `pwd`/$<---test :- $(MAKE) index.html.svg--DIST = $(HXT_HOME)/dist/examples-DIST_DIR = $(DIST)/hsvg-DIST_FILES = $(prog).hs Makefile .ghci--dist :- [ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)- cp $(DIST_FILES) $(DIST_DIR)--clean :- rm -f $(prog) *.o *.hi *.jpg *.png--cleanvt :- rm -f \- index.html.jpg \- www.fh-wedel.de.index.html.jpg \- www.w3.org.index.html.jpg \- www.haskell.org.index.html.jpg \- index.html.svg \- www.fh-wedel.de.index.html.svg \- www.w3.org.index.html.svg \- www.haskell.org.index.html.svg-
− examples/hsvg/TreeVisualisation.hs
@@ -1,449 +0,0 @@--- |--- TreeVisualisation - A Haskell XML Toolbox application for--- a graphic representation of n-ary trees, e.g. XmlTrees--- with SGML. Input is a XML or HTML document, output a SGML document--- consisting of a graphical representation of the tree------ Author: Uwe Schmidt uwe@fh-wedel.de------ Version : $Id: TreeVisualisation.hs,v 1.9 2004/09/02 19:11:50 hxml Exp $--module Main where--import Text.XML.HXT.Parser--import System.IO-import System.Environment-import System.Console.GetOpt--import System.Exit--import Data.Maybe---- -------------------------------------------------------------- |--- compute a layout tree for a given NTree------ the layout tree has a stucture isomophic to the input tree--- the layout is a pair of (x,y) coordinates. for every node--- a weight is computed, the space for a tree will be proprtional to--- the sum of the weight in the tree--treeToWeightedTree :: (Num b) => (a -> b) -> NTree a -> NTree (b, b)-treeToWeightedTree wf (NTree n cs)- = (NTree (wot, woc) cs')- where- cs' = map (treeToWeightedTree wf) cs- woc = sum . map (\ (NTree (sum', _) _) -> sum') $ cs'- wot = woc + wf n---- |--- auxiliary function called by 'horizontalLayout' for doint the hard work--weightedTreeToHLayout :: (Fractional a) => a -> a -> NTree (a,a) -> NTree (a,a)-weightedTreeToHLayout from to (NTree (_wot, woc) cs)- = NTree (from, to) cs'- where- len = to - from- cs' = layoutChildren (fromInteger 0) cs- layoutChildren _ []- = []- layoutChildren start (t1@(NTree (wot1, _woc1) _cs1) : ts)- = weightedTreeToHLayout from' to' t1 : layoutChildren start' ts- where- from' = (start / woc) * len + from- to' = (start' / woc) * len + from- start' = start + wot1- --- |--- A horizontal layout for a tree generated with 'treeToWeightedTree'--- is computed. The nodes are positioned in the unit square ((0,0),(1,1))--- with the origin in the left upper corner. The root node is centered--- at the top of the square--horizontalLayout :: (Fractional b) => (a -> b) -> NTree a -> NTree (b,b)-horizontalLayout weightFct- = weightedTreeToHLayout (fromInteger 0) (fromInteger 1) . treeToWeightedTree weightFct---- |--- layout of a tree in a 1.0 x 1.0 square--- with the root node centered at the top and the--- deepest leaves at the bottom--vTreeLayout :: (Fractional b) => (a -> b) -> NTree a -> NTree (b,b)-vTreeLayout weightFct t- = vLayout (0::Int) . horizontalLayout weightFct $ t- where- d = (depthNTree t - 1) `max` 1- vLayout i (NTree (l,u) cs)- = NTree (x, y) cs'- where- x = (l + u) / fromInteger 2- y = fromInteger (toInteger i) / fromInteger (toInteger d)- cs' = map (vLayout (i + 1)) cs--mirrorLayout :: NTree (a,a) -> NTree (a,a)-mirrorLayout- = mapNTree (\ (x,y) -> (y, x))- -scaleLayout :: (RealFrac a) => Int -> Int -> Int -> NTree (a,a) -> NTree (Int,Int)-scaleLayout border dx dy- = mapNTree scale- where- scale (x,y) = (truncate (x * dx') + border, truncate (y * dy') + border)- dx' = fromIntegral (dx - 2 * border)- dy' = fromIntegral (dy - 2 * border)--centricLayout :: (Floating a) => NTree (a,a) -> NTree (a,a)-centricLayout- = mapNTree center- where- center (x, y)- = ((x' + 1) /2, (y' + 1) /2)- where- phi = (2 * x - 0.5) * pi- r = y- x' = cos phi * r- y' = sin phi * r--- |--- map nodes of a NTree to SVG tags--mapNodesToXml :: (a -> (Int, Int) -> XmlTrees) -> NTree a -> NTree (Int, Int) -> XmlTrees-mapNodesToXml formatNode layoutTree orgTree- = concat . zipWith formatNode (nTreeToList layoutTree) $ (nTreeToList orgTree)--mapNodesToSVG :: (a -> XmlFilter) -> NTree a -> NTree (Int, Int) -> XmlTrees-mapNodesToSVG circleLayout- = mapNodesToXml drawNode- where- drawNode n (x,y)- = atag "circle" [ sattr "cx" (show x)- , sattr "cy" (show y)- , circleLayout n- ] $ undefined--mapEdgesToSVG :: ((Int, Int) -> (Int, Int) -> XmlTrees) -> NTree (Int, Int) -> XmlTrees-mapEdgesToSVG draw (NTree p1 cs)- = concatMap (\ t' -> mkLine t' ++ mapEdgesToSVG draw t') cs- where- mkLine (NTree p2 _) = draw p1 p2--drawLine :: XmlFilter -> (Int, Int) -> (Int, Int) -> XmlTrees-drawLine lineAttrl p1 p2- = drawLines lineAttrl [p1,p2]--drawHPath :: XmlFilter -> (Int, Int) -> (Int, Int) -> XmlTrees-drawHPath lineAttrl p1@(x1, y1) p2@(x2, y2)- = drawLines lineAttrl [p1, (x1,y12), (x2,y12), p2]- where- y12 = (y1 + y2) `div` 2--drawVPath :: XmlFilter -> (Int, Int) -> (Int, Int) -> XmlTrees-drawVPath lineAttrl p1@(x1, y1) p2@(x2, y2)- = drawLines lineAttrl [p1, (x12,y1), (x12,y2), p2]- where- x12 = (x1 + x2) `div` 2--drawLines :: XmlFilter -> [(Int, Int)] -> XmlTrees-drawLines attl ps- = concat . zipWith draw ps $ tail ps- where- draw (x1, y1) (x2, y2)- = atag "line" [ sattr "x1" (show x1)- , sattr "y1" (show y1)- , sattr "x2" (show x2)- , sattr "y2" (show y2)- , attl- ] $ undefined---- |--- filter for copying the attributes into the content part--- the result does not correspont to a wellformed XML document--- but for drawing the tree inclusive attributes this works fine--moveAttrlToContent :: XmlFilter-moveAttrlToContent- = processChildren- ( processBottomUp- ( substChildren (getAttrl +++ getChildren) `when` isXTag ) )---- |--- the main transformation filter--xmlTreeToSVG :: XmlFilter-xmlTreeToSVG t- = rootTag [ getAttrl ]- [ getChildren- .>- isXTag -- get the root tag- .>- cat [ dtd DOCTYPE [ sattr a_name "svg"- , sattr k_public "-//W3C//DTD SVG 1.1//EN"- , sattr k_system "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"- ] []- , tag "svg"- [ sattr "width" (show widthInt)- , sattr "height" (show heightInt)- , sattr "version" "1.1"- , sattr "xmlns" "http://www.w3.org/2000/svg"- , sattr "xmlns:xlink" "http://www.w3.org/1999/xlink" -- currently not used- ]- [ stag "title" [ txt source]- , tag "text" [ sattr "x" "10" -- draw source uri- , sattr "y" "22"- , sattr "font-size" "12"- , sattr "fill" "grey"- ] [ txt ("source: " ++ source)- ]- , legend (10, heightInt - 5 * pixelPerLine - 10)- [ (tagColor, "tag")- , (textColor, "text")- , (attrColor, "attribute")- , (cmtColor, "comment")- , (defColor, "others")- ]- , nodesToSVG- . scaleLayout borderWidthInt widthInt heightInt- . layoutFct- . vTreeLayout nSize- ]- ]- ] .> addXmlPiToDoc $ t- where- t1 = head . (getChildren .> isXTag) $ t -- the root tag- - pixelPerLine = 15-- legend :: (Int, Int) -> [(String, String)] -> XmlFilter- legend (x1, y1) ls- = cat (zipWith legend1 ps ls)- where- ps = map (\ y' -> (x1, y1 + y' * pixelPerLine)) [0..]- legend1 (x', y') (color, text)- = cat [ atag "circle" [ sattr "cx" (show (x' + 5))- , sattr "cy" (show (y' + 10))- , sattr "r" "5"- , sattr "fill" color- , sattr "stroke-width" lineWidth- , sattr "stroke" lineColor- ]- , tag "text" [ sattr "x" (show (x' + pixelPerLine))- , sattr "y" (show (y' + pixelPerLine))- , sattr "font-size" "12"- , sattr "fill" "grey"- ] [ txt text- ]- ]- - defValueOf attr' def' t'- | null res = def'- | otherwise = res- where- res = valueOf attr' t'-- width = defValueOf "width" "800" t- height = defValueOf "height" "600" t- nodeScale = defValueOf "nodeSize" "1" t- borderWidth = defValueOf "borderWidth" "20" t- lineWidth = defValueOf "lineWidht" "1" t- lineColor = defValueOf "lineColor" "grey" t- textColor = defValueOf "textNodeColor" "blue" t- tagColor = defValueOf "tagNodeColor" "red" t- attrColor = defValueOf "attrNodeColor" "green" t- cmtColor = defValueOf "cmtNodeColor" "magenta" t- defColor = defValueOf "defaultNodeColor" "grey" t- layout = defValueOf "layout" "vertical" t- lineStyle = defValueOf "lineStyle" "line" t- source = valueOf a_source t-- widthInt, heightInt, borderWidthInt :: Int-- widthInt = read width `max` 100- heightInt = read height `max` 100- borderWidthInt= read borderWidth-- nodesToSVG t' = mapEdgesToSVG (edgeLayoutFct edgeLayout) t'- ++- mapNodesToSVG nodeLayout t1 t'-- nodeLayout n- = cat [ sattr "fill" nColor- , sattr "stroke" ( if r < 5 -- if circle too small- then nColor -- border is drawn in the same color as cirle- else lineColor- )- , sattr "stroke-width" lineWidth- , sattr "r" (show r)- ]- where- (nColor, nSz) = nLayout n- nSz1 = nSz * (read nodeScale)- r = (round (sqrt (fromInteger (toInteger nSz1))::Double))::Int-- nSize :: XNode -> Double- nSize = fromInteger . toInteger . snd . nLayout-- nLayout (XTag _tn _) = (tagColor, 9) -- constant size for tags- nLayout (XText tx) = (textColor, length tx)- nLayout (XAttr _an) = (attrColor, 4) -- attributes are smaller than tags- nLayout (XCmt c) = (cmtColor, length c)- nLayout _ = (defColor, 1) -- entities, PI's, dtd stuff, ...-- layoutFct :: NTree (Double,Double) -> NTree (Double,Double)- layoutFct- = fromJust . lookup layout- $ [ ("vertical", id)- , ("horizontal", mirrorLayout )- , ("centric", centricLayout )- ]-- edgeLayoutFct- = fromJust . lookup (layout, lineStyle)- $ [ (("vertical", "line"), drawLine )- , (("vertical", "fork"), drawHPath )- , (("horizontal", "line"), drawLine )- , (("horizontal", "fork"), drawVPath )- , (("centric", "line"), drawLine )- , (("centric", "fork"), drawLine )- ]-- edgeLayout- = cat [ sattr "stroke" lineColor- , sattr "stroke-width" "1"- ]---- -------------------------------------------------------------- |--- the main program of the Haskell XML Validating Parser--main :: IO ()-main- = do- argv <- getArgs- al <- cmdlineOpts argv- res <- run' (xmlToSVG al emptyRoot)- exitProg (null res) -- set return code and terminate---- --------------------------------------------------------------exitProg :: Bool -> IO a-exitProg True = exitWith (ExitFailure (-1))-exitProg False = exitWith ExitSuccess---- ---------------------------------------------------------------- |--- the /real/ main program------ runs in the trivial XmlState monad (with user state set to ())--- so IO and access to global options is possible--xmlToSVG :: Attributes -> XmlStateFilter state-xmlToSVG al- = parseDocument al -- read document- .>>- traceMsg 1 "start processing"- .>>- liftMf- ( canonicalizeAllNodes- .>- ( moveAttrlToContent `when` hasAttr "withAttr" )- .>- xmlTreeToSVG- .>- indentDoc- )- .>>- traceMsg 1 "processing finished"- .>>- traceSource- .>>- traceTree- .>>- ( writeDocument [ (a_indent, v_1) ]- `whenM`- getChildren- )- .>>- checkStatus---- ------------------------------------------------------------------ the options definition part--- see doc for System.Console.GetOpt--progName :: String-progName = "TreeVisualisation"- -options :: [OptDescr (String, String)]-options- = generalOptions- ++- inputOptions- ++- outputOptions- ++- showOptions- ++- [ Option "" ["width"] (ReqArg (nat "width") "NUM") "SVG image width in pixel, default: 800"- , Option "" ["height"] (ReqArg (nat "height") "NUM") "SVG image height in pixel, default: 600"- , Option "" ["withAttr"] (NoArg (att "withAttr" "1")) "show tag attributes, default: no"- , Option "" ["nodeSize"] (ReqArg (nat "nodeSize") "NUM") "scale size of nodes, default: 1"- , Option "" ["lineWidth"] (ReqArg (nat "lineWidth") "NUM") "width of edges in pixel, default: 1\n"- , Option "" ["border"] (ReqArg (nat "borderWidth") "NUM") "border around tree in pixel, default: 20\n"-- , Option "" ["verticalTree"] (NoArg (att "layout" "vertical")) "vertical tree layout, root centered at the top border"- , Option "" ["horizontalTree"] (NoArg (att "layout" "horizontal")) "horizontal tree layout, root centered at the left border"- , Option "" ["centricTree"] (NoArg (att "layout" "centric")) "layout with root in the center"- , Option "" ["directLines"] (NoArg (att "lineStyle" "line")) "edges are drawn as direct lines"- , Option "" ["horizontalLines"] (NoArg (att "lineStyle" "fork")) "edges are drawn as a path of horizontal and vertical lines\n"-- , Option "" ["textNodeColor"] (ReqArg (att "textNodeColor") "COLOR") "text node: color name or RGB value in format \"#RRGGBB\""- , Option "" ["tagNodeColor"] (ReqArg (att "tagNodeColor") "COLOR") "tag node color"- , Option "" ["attrNodeColor"] (ReqArg (att "attrNodeColor") "COLOR") "attribute node color"- , Option "" ["cmtNodeColor"] (ReqArg (att "cmtNodeColor") "COLOR") "comment node color"- , Option "" ["defaultNodeColor"] (ReqArg (att "defNodeColor") "COLOR") "other node color"- ]- where- att n v = (n, v)- nat n v = (n, filter (`elem` "0123456789") v)--usage :: [String] -> IO a-usage errl- | null errl- = do- hPutStrLn stdout use- exitProg False- | otherwise- = do- hPutStrLn stderr (concat errl ++ "\n" ++ use)- exitProg True- where- header = "TreeVisualisation - An example application of the Haskell XML Toolbox\n" ++- "for the visualisation of the structure of a XML document with SVG\n" ++- "Usage: " ++ progName ++ " [OPTION...] [URI or FILE]"- use = usageInfo header options--cmdlineOpts :: [String] -> IO (Attributes)-cmdlineOpts argv- = case (getOpt Permute options argv) of- (ol,n,[] )- -> do- sa <- src n- help (lookup a_help ol)- return (ol ++ sa)- (_,_,errs)- -> usage errs- where- src [] = usage ["no input url or file given\n"]- src [url] = return [("source", url)]- src _ = usage ["only one input uri or file allowed\n"]-- help Nothing = return ()- help (Just _) = usage []---- --------------------------------------------------------------
− examples/hunit/HUnitExample.hs
@@ -1,616 +0,0 @@--- |--- HUnit - Haskell XML Toolbox examples and tests------ Author: Uwe Schmidt uwe@fh-wedel.de------ Version : $Id: HUnitExample.hs,v 1.8 2005/04/14 12:52:51 hxml Exp $--module Main where--import System-import Test.HUnit-import Text.XML.HXT.Parser-import Data.Char--aMinimalDoc :: XmlTree-aMinimalDoc = mkRootTree [] (xtext "<?xml version='1.0'?><x/>")--aSimpleXHTMLDoc :: XmlTree-aSimpleXHTMLDoc- = mkRootTree- ( xattr a_source "simple.xml" )- ( xtext - ( concatMap (++ "\n")- [ "<?xml version='1.0'?>"- , "<html>"- , " <head><title>A Simple XHTML Document</title></head>"- , " <body>"- , " </body>"- , "</html>"- ]- )- )--mkMinimalDoc :: String -> XmlTree-mkMinimalDoc cont- = mkRootTree [] (xtext cont)--mkInputDoc :: String -> XmlTree-mkInputDoc src- = mkRootTree ( xattr a_source src) []--mkDoc :: String -> XmlTree-mkDoc cont- = mkRootTree- ( xattr a_source "a test")- ( xtext ("<?xml version='1.0' encoding='" ++ isoLatin1 ++ "'?>\n" ++ cont) )---- |--- compare trees--testEqualTrees :: XmlTrees -> XmlTrees -> Test-testEqualTrees e1 e2- = TestCase $- assertEqual "" e1 e2---- |--- testDocFilter creates a test for the application of a pure--- functional filter to a XML tree. The result is converted into--- the external string representation and compared with the expected--- result.------ see also: 'testStateFilter' and 'testEditFilter'--testDocFilter :: String -> XmlFilter -> XmlTree -> Test-testDocFilter expected xfilter doc- = TestCase $- assertEqual "" expected (xshow $ xfilter doc)---- |--- testStateFilter creates a test for monadic filters, doing IO and using--- the internal state, consisting of program options and status information--- The filter is applied to a XML tree, the result is converted to a string--- and this result is compared with the expected result.------ see also: 'testEditFilter' for pure functional filters--testStateFilter :: String -> XmlStateFilter () -> XmlTree -> Test-testStateFilter expected xfilter input- = TestCase $- do- res <- run' $ xfilter input- assertEqual "" expected (xshow res)---- |--- The test bed for edit filter for external documents.--- The input tree must specify the external document to be read.--- This document is checked for wellformedness, canonicalized--- (char refs substituted, ...) and processed with the edit filter.--- The result is transformed into the string representation and compared--- with the expected string.--testEditFilter :: String -> XmlFilter -> XmlTree -> Test-testEditFilter expected xfilter input- = TestCase $- do- res <- run'- $ ( getWellformedDoc -- read the document- .>>- liftMf canonicalizeAllNodes -- normalize the document and remove <?xml ... ?> decl- .>>- liftMf ( processChildren xfilter ) -- apply the editing filter only to the 'real' document- .>> -- nodes, not to nodes surrounding the document tag- putXmlTree -- just trace output- .>>- liftMf getChildren -- just for comparing the document contents- )- input- assertEqual "" expected (xshow res)----- |--- ausiliary function to make haskell string constants with quotes more readable--singleToDoubleQuote :: String -> String-singleToDoubleQuote- = map (\ c -> if c == '\'' then '"' else c)---- |--- the complete set of test cases--allTests :: Test-allTests- = TestList- [ constructionTests- , treeConstructionTests- , parseTests- , inputTests- , removeTests- , simpleSelectionTests- , namespaceTests- ]---- |--- tree versus filter construction tests--- documents may be constructed by tree operations--- or with the more flexible filter operations applied to an arbitray tree--treeConstructionTests :: Test-treeConstructionTests- = TestLabel "tree and filter construction tests" $- TestList $- map (\ (t, f) -> testEqualTrees t (f undefined) )- [ (xtext "xyz", txt "xyz" )- , (xcmt "cmt", cmt "cmt" )- , (xtag "img" [] [], tag "img" [] [] )- , (xtag "img" [] [], etag "img" )-- , (xtag "img" (xattr "b" "13") [], tag "img" [sattr "b" "13"] [] )-- , (xtag "img" (xattr "b" "13") [], atag "img" [sattr "b" "13"] )-- , (xtag "t" (xattr "a" "42" ++ xattr "b" "id")- (xtext "abc"),- tag "t" [sattr "a" "42", sattr "b" "id"]- [txt "abc"] )- ]---- |--- construction tests are all applied to the empty document,--- no information is used from that document,--- but construction is lifted to the filter level.--- this is more general than explicit construction.--- in more complex examples some information may be extracted from--- the source, some can be constant.--- --- see also: 'testDocFilter'--constructionTests :: Test-constructionTests- = TestLabel "document construction tests" $- TestList $- map (\ (res, f) -> testDocFilter res f undefined) -- undefined or something else, e.g. emptyRoot- [ ("<x/>" , mkXTag "x" none none )- , ("<x/>" , tag "x" [] [] ) -- syntactically more comfortable shortcut for mkXTag- , ("<x/>" , stag "x" [] ) -- shortcut for tags without attributes- , ("<x/>" , atag "x" [] ) -- shortcut for empty tags with attributes- , ("<x/>" , etag "x" ) -- shortcut for empty tags without attributes-- , ("<x a=\"1\"/>"- , mkXTag "x" (mkXAttr "a" (mkXText "1")) none )- , ("<x a=\"1\">42</x>"- , mkXTag "x" (mkXAttr "a" (mkXText "1")) (mkXText "42") )- , ("<x a=\"1\">42</x>"- , tag "x" [ attr "a" $ txt "1" ] [ txt "42" ] )- , ("<x a=\"1\">42</x>"- , tag "x" [ sattr "a" "1" ] [ txt "42" ] )-- , ("<x a=\"1\"/>" , atag "x" [ sattr "a" "1" ] )-- , ("<x a=\"1\" b=\"2\">42<y/>43</x>"- , tag "x" [ sattr "a" "1"- , sattr "b" "2"- ] [ txt "42"- , etag "y"- , txt "43"- ] )- , ("<!-- a comment -->"- , mkXCmt $ txt " a comment " )- , ("<!--a comment-->"- , cmt "a comment" ) -- short cut for uncomputed comment-- , ("<!-- an illegal XML comment containing 2 -- in comment text -->"- , cmt " an illegal XML comment containing 2 -- in comment text " )-- , ("*" , mkXCharRef 42 )- , ("<" , mkXEntityRef "lt" )- , ("<![CDATA[<abc>]]>"- , mkXCdata $ txt "<abc>")- , ("<![CDATA[<abc>]]>" -- short cut for uncomputed cdata content- , cdata "<abc>")- , ("<?abc xyz?>" , mkXPi "abc" $ txt "xyz" )- , ("<?abc xyz?>" , spi "abc" "xyz" ) -- short cut for an uncomputed pi content- ]---- |--- simple selection tests--simpleSelectionTests :: Test-simpleSelectionTests- = TestLabel "simple tree selection tests" $- TestList $- map (\ (res, f) -> testDocFilter (singleToDoubleQuote res) f simpleDoc)- [ (src , this )- , ("1" , getValue "a" )- , ("" , getValue "b" )- , (body1 , getChildren )-- -- text selection- , ("xyz" , getChildren .> isXText )- , ("xyz" , getChildren .> isText "xyz" )- , ("" , getChildren .> isText "abc" )- , ("xyz" , getChildren .> isOfText (>="x") )- , ("" , getChildren .> isOfText (<"x") )- , ("" , getChildren .> isWhiteSpace )-- -- tag selection- , ("<t a='42' b='id'>abc</t><img b='13'/><y x='0'/><z/>"- , getChildren .> isXTag )-- -- comment selection- , ("<!--cmt-->" , getChildren .> isXCmt )-- -- text OR tag selection- , ("<t a='42' b='id'>abc</t><img b='13'/>xyz<y x='0'/><z/>"- , getChildren .> (isXTag +++ isXText) )-- -- generalised OR- , ("<t a='42' b='id'>abc</t><img b='13'/>xyz<y x='0'/><z/>"- , getChildren .> cat [isXTag, isXText] )-- , ("abc" , getChildren .> getChildren )-- -- atribute value selection- , ("1" , getValue "a" )-- , ("<t a='42' b='id'>abc</t>"- , getChildren .> isTag "t" )-- -- attribute selection- , ("<t a='42' b='id'>abc</t>"- , getChildren .> hasAttr "a" )-- , ("42" , getChildren .> getValue "a" )- , ("42" , getChildren .> hasValue "a" (all isDigit) )- , ("13" , getChildren .> hasValue "b" (all isDigit) )- , ("" , getChildren .> isTag "t" .> hasValue "b" (all isDigit) )- , ("42" , getChildren .> hasValue "a" (== "42") )- , ("" , getChildren .> hasValue "a" (== "43") )- , ("42" , getChildren .> hasValue "a" (\ str -> ((read str)::Int) > 40) )- , ("42" , getChildren .> hasValue "a" (not . null) )- , ("id13" , getChildren .> hasValue "b" (const True) )- , ("13" , getChildren .> isTag "img" .> hasValue "b" (const True) )- , ("" , getChildren .> hasValue "c" (const True) )-- , (" a='42' b='id' b='13' x='0'"- , getChildren .> getAttrl )-- , (" a='42' b='id'"- , getChildren .> isTag "t" .> getAttrl )-- , ("42id" , getChildren .> isTag "t" .> getAttrl .> getChildren )-- , (" b='id' b='13'"- , getChildren .> getAttrl .> isAttr "b" )-- , (" b='13'" , getChildren .> isTag "img" .> getAttrl .> isAttr "b" )- , ("13" , getChildren .> isTag "img" .> getAttrl .> isAttr "b" .> getChildren )- , ("13" , getChildren .> isTag "img" .> getValue "b" )- , ("timgyz" , getChildren .> getName )- , ("t" , getChildren .> isTag "t" .> getName )- , ("abbx" , getChildren .> getAttrl .> getName )- , ("bb" , getChildren .> getAttrl .> isAttr "b" .> getName )- , ("ab" , getChildren .> isTag "t" .> getAttrl .> getName )- , ("b" , getChildren .> isTag "t" .> getAttrl .> isAttr "b" .> getName )-- -- deep search for text or tags- , ("abcxyz" , deep isXText )- , ("abc" , deep (isTag "t") .> deep isXText )- ]- where- src = "<r a='1'>" ++ body1 ++ "</r>"- body1 = "<!--cmt-->"- ++ "<t a='42' b='id'>abc</t>"- ++ "<img b='13'/>"- ++ "xyz"- ++ "<y x='0'/>"- ++ "<z/>"-- sDocFilter- = tag "r" [ sattr "a" "1" ]- [ cmt "cmt"- , tag "t" [ sattr "a" "42", sattr "b" "id" ]- [ txt "abc"- ]- , atag "img" [ sattr "b" "13" ]- , txt "xyz"- , atag "y" [ sattr "x" "0" ]- , etag "z"- ]- simpleDoc = head $ sDocFilter undefined---- |--- simple tests with namespaces--namespaceTests :: Test-namespaceTests- = TestLabel "namespace tests" $- TestList $- map (\ (res, f) -> testDocFilter (singleToDoubleQuote res) f simpleDoc)- [ (src , this )- -- select all "t" tags, even nested ones (multi) and extract the text from the body- , ("sssaaa" , multi (isTag "t" .> getChildren .> isXText) )-- -- select all text within all tags of a specific namespace- , ("sssaaazzzeee" , multi (isXTag .> hasNamespace "dns" .> getChildren .> isXText) )- , ("bbb" , multi (isXTag .> hasNamespace "n1" .> getChildren .> isXText) )- , ("cccdddfffggg" , multi (isXTag .> hasNamespace "n2" .> getChildren .> isXText) )-- -- select all text within all tags with a specific local name- , ("sssaaabbbcccdddzzz"- , multi (isXTag .> hasLocalPart "t" .> getChildren .> isXText) )- , ("eee" , multi (isXTag .> hasLocalPart "e" .> getChildren .> isXText) )-- -- select all text within all tags with a specific prefix- , ("bbbddd" , multi (isXTag .> hasPrefix "x" .> getChildren .> isXText) )- , ("ccc" , multi (isXTag .> hasPrefix "y" .> getChildren .> isXText) )- , ("zzz" , multi (isXTag .> hasPrefix "z" .> getChildren .> isXText) )- , ("sssaaaeeefffggg"- , multi (isXTag .> hasPrefix "" .> getChildren .> isXText) )-- -- select all attribute values of a specific namespace- -- !!! the default namespace is not propagated to attribute names- , ("z5" , multi (isXTag .> getAttrl .> hasNamespace "dns" .> getChildren) )- , ("2z4" , multi (isXTag .> getAttrl .> hasNamespace "n1" .> getChildren) )- , ("x3y3u4" , multi (isXTag .> getAttrl .> hasNamespace "n2" .> getChildren) )- , ("dnsn2" , multi (isXTag .> getAttrl .> hasLocalPart "xmlns" .> getChildren) )-- -- select namespaces from all namespace declarations- , ("dnsn1n2dnsn2n2"- , multi (isXTag .> getAttrl .> isNamespaceDecl .> getChildren) )-- -- all default namespace declarations- , ("dnsn2" , multi (isXTag .> getAttrl .> hasLocalPart "xmlns" .> getChildren) )-- -- all none default namespace declarations- , ("n1n2dnsn2" , multi (isXTag .> getAttrl .> hasPrefix "xmlns" .> getChildren) )- , ("n1n2" , multi (isXTag .> getAttrl .> hasPrefix "xmlns" .> hasLocalPart "x" .> getChildren) )- , ("n2" , multi (isXTag .> getAttrl .> hasPrefix "xmlns" .> hasLocalPart "y" .> getChildren) )- , ("dns" , multi (isXTag .> getAttrl .> hasPrefix "xmlns" .> hasLocalPart "z" .> getChildren) )- ]- where- -- the text representation of the tree- -- with ' instead of " for readablility of the string constants- src = "<t xmlns='dns' xmlns:x='n1' xmlns:y='n2' xmlns:z='dns'>"- ++ "sss"- ++ "<t a='1' x:a='2'>aaa</t>"- ++ "<x:t a='x1' y:a='x3'>bbb</x:t>"- ++ "<y:t a='y1' y:a='y3'>ccc</y:t>"- ++ "<x:t xmlns:x='n2' x:a='u4'>ddd</x:t>"- ++ "<z:t x:a='z4' z:a='z5'>zzz</z:t>"- ++ "<e b='42'>eee</e>"- ++ "<f xmlns='n2'>fff<g>ggg</g></f>" ++- "</t>"-- -- the filter for generating the test document- sDocFilter- = tag "t" [ sattr "xmlns" "dns" -- 4 namespace declarations- , sattr "xmlns:x" "n1"- , sattr "xmlns:y" "n2"- , sattr "xmlns:z" "dns"- ]- [ txt "sss"- , tag "t" [ sattr "a" "1"- , sattr "x:a" "2" ]- [ txt "aaa"- ]- , tag "x:t" [ sattr "a" "x1"- , sattr "y:a" "x3"- ]- [ txt "bbb"- ]- , tag "y:t" [ sattr "a" "y1"- , sattr "y:a" "y3"- ]- [ txt "ccc"- ]- , tag "x:t" [ sattr "xmlns:x" "n2" -- redefinition of prefix x:- , sattr "x:a" "u4"- ]- [ txt "ddd"- ]- , tag "z:t" [ sattr "x:a" "z4"- , sattr "z:a" "z5"- ]- [ txt "zzz"- ]- , tag "e" [ sattr "b" "42" ]- [ txt "eee"- ]- , tag "f" [ sattr "xmlns" "n2" -- redefinition of default namespace- ]- [ txt "fff"- , tag "g" [ ]- [ txt "ggg" ]- ]- ]- -- create document and propagate namespaces- simpleDoc = head $ (sDocFilter .> propagateNamespaces) undefined---- |--- minimal tests for parsing data.------ the tests are document trees with a root--- node containing a single text node with the document source.--- That tree is passed to the parser, which substitutes the text node with the parsed xml tree.--- In general this may be a list of trees containing also the--- surrounding parts like the xml declaraion, the document type definition--- possibly comments and processing instructions.------ see also: 'testStateFilter'--parseTests :: Test-parseTests- = TestLabel "minimal parser tests" $- TestList - [ testStateFilter "</><x/><//>" parseXmlDoc mini -- the tree inclusive root node- , testStateFilter "<x/>" (parseXmlDoc .>> liftMf getChildren) mini -- only the content- , testStateFilter "<x/>" (parseXmlDoc .>> liftMf getChildren) min2 -- same content- , testStateFilter "" (parseXmlDoc .>> liftMf getChildren) minErr -- syntax error: content empty- , testStateFilter errr (parseXmlDoc .>> liftMf (getValue a_status)) minErr -- syntax error reported in a_status- ]- where- errr = show c_err- mini = mkMinimalDoc "<x/>"- min2 = mkMinimalDoc "<x></x>"- minErr = mkMinimalDoc "<x>"----- |--- simple external file containing one tag--mini1 :: XmlTree-mini1 = newDocument "mini1.xml" -- test documents---- |--- simple external file containing one tag--mini2 :: XmlTree-mini2 = newDocument "mini2.xml"---- |--- simple not existing external file--notThere :: XmlTree-notThere = newDocument "notThere.xml" -- does not exist---- |--- These test check the access to external files--- and error reporting in case of input or parse errors--- Some test issue tree like trace output of the documents read--- to show the internal structure and nesting--inputTests :: Test-inputTests- = TestLabel "input tests" $- TestList- [ testStateFilter "mini1.xml"- ( putXmlTree .>>- liftMf (getValue a_source)- ) mini1- , testStateFilter ok ( liftMf (getValue a_status)- ) mini1- , testStateFilter "" ( liftMf getChildren- ) mini1- , testStateFilter "<x/>" ( getXmlContents .>>- putXmlTree .>>- liftMf getChildren- ) mini1- , testStateFilter ok ( getXmlContents .>>- liftMf (getValue a_status)- ) mini1- , testStateFilter "4" ( getXmlContents .>>- liftMf getContentLength .>>- putXmlTree .>>- liftMf (getValue a_contentLength)- ) mini1- , testStateFilter ok ( getXmlContents .>>- liftMf (getValue a_status)- ) mini2- , testStateFilter "" ( getXmlContents .>>- putXmlTree .>>- liftMf getChildren- ) notThere- , testStateFilter fat ( getXmlContents .>>- liftMf (getValue a_status)- ) notThere- ]- where- ok = show c_ok- fat = show c_fatal---- |--- A few tests for removing parts of a document tree.--- As input tree the document in file mini2.xml is used.--removeTests :: Test-removeTests- = TestLabel "document transformation tests" $- TestList- [ testEditFilter allText getAllText mini2- , testEditFilter allData (removeAllWhiteSpace .> getAllText) mini2- , testEditFilter allImp (removeIgnorableData .> getAllText) mini2- , testEditFilter allDat (removeMeta .> getAllText) mini2- ]- where- getAllText = deep isXText- containsUnknownOrIgnore = getChildren .> ( isText "unknown"- +++- isText "ignore"- )- removeIgnorableData = processTopDown ( none- `when`- ( isTag "data" .> containsUnknownOrIgnore )- )- removeMeta = processTopDown ( none- `when`- ( isTag "data" .> hasValue "class" ( == "meta" ) )- )- allText = " ignore unknown important important "- allData = "ignoreunknownimportantimportant"- allImp = " important important "- allDat = " ignore important "---ys :: XmlTree-ys = head $- tag "s:Envelope"- [ sattr "xmlns:s" "http://schemas.xmlsoap.org/soap/envelope/",- sattr "xmlns:xenc" "http://www.w3.org/2001/04/xmlenc#",- sattr "xmlns:eg" "http://example.org/paymentv2",- sattr "xmlns:wsse" "http://schemas.xmlsoap.org/ws/2002/12/secext"- ]- [ stag "s:Header"- [ stag "wsse:Security"- [ tag "wsse:BinarySecurityToken"- [ sattr "ValueType" "wsse:Kerberosv5ST",- sattr "EncodingType" "wsse:Base64Binary"- ]- [ txt "QMwcAG ..."- ]- ]- ],- stag "s:Body"- [ stag "eg:OrderCurrency"- [ stag "eg:Name"- [ txt "John Smith" ],- tag "eg:Amount"- [ sattr "Currency" "'USD'" ]- [ txt "1000" ],- tag "eg:CreditCard"- [ sattr "Limit" "'5000'",- sattr "Currency" "'GBP'"- ]- [ stag "xenc:EncryptedData"- [ atag "xenc:EncryptionMethod"- [ sattr "Algorithm" "http://www.w3.org/2001/04/xmlenc#tripledes-cbc" ]- ],- stag "xenc:CipherData"- [ stag "xenc:CipherValue"- [ txt "r5KipsDV ..." ]- ]- ]- ]- ]- ]- .> propagateNamespaces- .> indentDoc- $ undefined---main :: IO ()-main- = do- c <- runTestTT allTests- putStrLn $ show c- let errs = errors c- fails = failures c- System.exitWith (codeGet errs fails)--codeGet :: Int -> Int -> ExitCode-codeGet errs fails- | fails > 0 = ExitFailure 2- | errs > 0 = ExitFailure 1- | otherwise = ExitSuccess---- ----------------------------------------------------------
− examples/hunit/Makefile
@@ -1,32 +0,0 @@-# $Id: Makefile,v 1.6 2005/04/14 12:52:51 hxml Exp $--HXT_HOME = ../..-PKGFLAGS =-GHCFLAGS = -Wall -O2-GHC = ghc $(GHCFLAGS) $(PKGFLAGS)--prog = ./HUnitExample--all : $(prog)--force :- $(GHC) --make $(GHCPACKAGES) -o $(prog) $(prog).hs--$(prog) : $(prog).hs- $(GHC) --make $(GHCPACKAGES) -o $@ $<--test : $(prog)- @echo "===> run HUnit examples" ; echo ; sleep 2- $(prog)--DIST = $(HXT_HOME)/dist/examples-DIST_DIR = $(DIST)/hunit-DIST_FILES = mini1.xml mini2.xml Makefile $(prog).hs--dist :- [ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)- cp $(DIST_FILES) $(DIST_DIR)--clean :- rm -f $(prog) $(prog).o $(prog).hi-
− examples/hunit/mini1.xml
@@ -1,1 +0,0 @@-<x/>
− examples/hunit/mini2.xml
@@ -1,1 +0,0 @@-<data> <data class="data">ignore</data> <data class="meta">unknown</data> <data><data class="data">important</data> <data class="meta">important</data></data> </data>
− examples/mini/Makefile
@@ -1,34 +0,0 @@-# $Id: Makefile,v 1.5 2005/04/14 12:52:52 hxml Exp $--HXT_HOME = ../..-PKGFLAGS =-GHCFLAGS = -Wall -O2-GHC = ghc $(GHCFLAGS) $(PKGFLAGS)--prog = ./ParseExample--all : $(prog)--force :- $(GHC) --make -o $(prog) $(prog).hs--$(prog) : $(prog).hs- $(GHC) --make -o $@ $<--test : $(prog)- @echo "===> a very simple test"- @echo "===> a xml source"- @cat example1.xml- @sleep 2; echo "===> parse, validate and normalise the document"- $(prog) example1.xml--DIST = $(HXT_HOME)/dist/examples-DIST_DIR = $(DIST)/mini--dist :- [ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)- cp example1.xml Makefile $(prog).hs $(DIST_DIR)--clean :- rm -f $(prog) *.o *.hi-
− examples/mini/ParseExample.hs
@@ -1,50 +0,0 @@--- |--- This is a simple example for parsing and validating an XML file and printing the generated--- XmlTree to standard out.------ Author : .\\artin Schmidt--- Version : $Id: ParseExample.hs,v 1.4 2004/09/02 19:11:53 hxml Exp $--module Main(main)-where--import Text.XML.HXT.Parser--import System.IO-import System------- call this program with a single parameter for the file or uri to be processed--- e.g. ParseExample example1.xml--main :: IO ()-main- = do- argv <- getArgs- -- take the first cmdline argument as source name- -- start the XState monad with the runParser command- res <- run' $ parser [(a_source, head argv)] emptyRoot- exitProg res---- run a command in the XState monad.--- this monad includes the IO monad, a system state for global options--- and a user definable state (type parameter state). This user state is--- set to () (the empty state) by the run' command.--- There are more general run commands: run, run0 in case of a proccessing--- function, that requires e.g. an environment--parser :: Attributes -> XmlStateFilter ()-parser al- = parseDocument al- .>>- writeDocument [(a_indent, v_1)] -- indent document and output to stdout- .>>- checkStatus -- check status---- --------------------------------------------------------------exitProg :: [a] -> IO ()-exitProg [] = exitWith (ExitFailure (-1))-exitProg _ = exitWith ExitSuccess---- ------------------------------------------------------------
− examples/mini/example1.xml
@@ -1,22 +0,0 @@-<?xml version="1.0" encoding="ISO-8859-1" ?>--<!DOCTYPE a [-<!ATTLIST a att1 NMTOKENS #IMPLIED- att2 ID #REQUIRED>-<!ATTLIST b btt2 ID #REQUIRED- btt3 IDREF #REQUIRED>-<!ELEMENT a (b, cü?)>-<!ELEMENT b EMPTY>-<!ELEMENT cü (#PCDATA)>-]>--<?pi a processing instruction?>--<a att1=" test- äöüß- test "- att2="root"->- <b btt2="b1" btt3="root"/>- <cü>hello world äöüß test</cü>-</a>
− examples/xhtml/xhtml-lat1.ent
@@ -1,196 +0,0 @@-<!-- Portions (C) International Organization for Standardization 1986- Permission to copy in any form is granted for use with- conforming SGML systems and applications as defined in- ISO 8879, provided this notice is included in all copies.--->-<!-- Character entity set. Typical invocation:- <!ENTITY % HTMLlat1 PUBLIC- "-//W3C//ENTITIES Latin 1 for XHTML//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">- %HTMLlat1;--->--<!ENTITY nbsp " "> <!-- no-break space = non-breaking space,- U+00A0 ISOnum -->-<!ENTITY iexcl "¡"> <!-- inverted exclamation mark, U+00A1 ISOnum -->-<!ENTITY cent "¢"> <!-- cent sign, U+00A2 ISOnum -->-<!ENTITY pound "£"> <!-- pound sign, U+00A3 ISOnum -->-<!ENTITY curren "¤"> <!-- currency sign, U+00A4 ISOnum -->-<!ENTITY yen "¥"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->-<!ENTITY brvbar "¦"> <!-- broken bar = broken vertical bar,- U+00A6 ISOnum -->-<!ENTITY sect "§"> <!-- section sign, U+00A7 ISOnum -->-<!ENTITY uml "¨"> <!-- diaeresis = spacing diaeresis,- U+00A8 ISOdia -->-<!ENTITY copy "©"> <!-- copyright sign, U+00A9 ISOnum -->-<!ENTITY ordf "ª"> <!-- feminine ordinal indicator, U+00AA ISOnum -->-<!ENTITY laquo "«"> <!-- left-pointing double angle quotation mark- = left pointing guillemet, U+00AB ISOnum -->-<!ENTITY not "¬"> <!-- not sign = discretionary hyphen,- U+00AC ISOnum -->-<!ENTITY shy "­"> <!-- soft hyphen = discretionary hyphen,- U+00AD ISOnum -->-<!ENTITY reg "®"> <!-- registered sign = registered trade mark sign,- U+00AE ISOnum -->-<!ENTITY macr "¯"> <!-- macron = spacing macron = overline- = APL overbar, U+00AF ISOdia -->-<!ENTITY deg "°"> <!-- degree sign, U+00B0 ISOnum -->-<!ENTITY plusmn "±"> <!-- plus-minus sign = plus-or-minus sign,- U+00B1 ISOnum -->-<!ENTITY sup2 "²"> <!-- superscript two = superscript digit two- = squared, U+00B2 ISOnum -->-<!ENTITY sup3 "³"> <!-- superscript three = superscript digit three- = cubed, U+00B3 ISOnum -->-<!ENTITY acute "´"> <!-- acute accent = spacing acute,- U+00B4 ISOdia -->-<!ENTITY micro "µ"> <!-- micro sign, U+00B5 ISOnum -->-<!ENTITY para "¶"> <!-- pilcrow sign = paragraph sign,- U+00B6 ISOnum -->-<!ENTITY middot "·"> <!-- middle dot = Georgian comma- = Greek middle dot, U+00B7 ISOnum -->-<!ENTITY cedil "¸"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->-<!ENTITY sup1 "¹"> <!-- superscript one = superscript digit one,- U+00B9 ISOnum -->-<!ENTITY ordm "º"> <!-- masculine ordinal indicator,- U+00BA ISOnum -->-<!ENTITY raquo "»"> <!-- right-pointing double angle quotation mark- = right pointing guillemet, U+00BB ISOnum -->-<!ENTITY frac14 "¼"> <!-- vulgar fraction one quarter- = fraction one quarter, U+00BC ISOnum -->-<!ENTITY frac12 "½"> <!-- vulgar fraction one half- = fraction one half, U+00BD ISOnum -->-<!ENTITY frac34 "¾"> <!-- vulgar fraction three quarters- = fraction three quarters, U+00BE ISOnum -->-<!ENTITY iquest "¿"> <!-- inverted question mark- = turned question mark, U+00BF ISOnum -->-<!ENTITY Agrave "À"> <!-- latin capital letter A with grave- = latin capital letter A grave,- U+00C0 ISOlat1 -->-<!ENTITY Aacute "Á"> <!-- latin capital letter A with acute,- U+00C1 ISOlat1 -->-<!ENTITY Acirc "Â"> <!-- latin capital letter A with circumflex,- U+00C2 ISOlat1 -->-<!ENTITY Atilde "Ã"> <!-- latin capital letter A with tilde,- U+00C3 ISOlat1 -->-<!ENTITY Auml "Ä"> <!-- latin capital letter A with diaeresis,- U+00C4 ISOlat1 -->-<!ENTITY Aring "Å"> <!-- latin capital letter A with ring above- = latin capital letter A ring,- U+00C5 ISOlat1 -->-<!ENTITY AElig "Æ"> <!-- latin capital letter AE- = latin capital ligature AE,- U+00C6 ISOlat1 -->-<!ENTITY Ccedil "Ç"> <!-- latin capital letter C with cedilla,- U+00C7 ISOlat1 -->-<!ENTITY Egrave "È"> <!-- latin capital letter E with grave,- U+00C8 ISOlat1 -->-<!ENTITY Eacute "É"> <!-- latin capital letter E with acute,- U+00C9 ISOlat1 -->-<!ENTITY Ecirc "Ê"> <!-- latin capital letter E with circumflex,- U+00CA ISOlat1 -->-<!ENTITY Euml "Ë"> <!-- latin capital letter E with diaeresis,- U+00CB ISOlat1 -->-<!ENTITY Igrave "Ì"> <!-- latin capital letter I with grave,- U+00CC ISOlat1 -->-<!ENTITY Iacute "Í"> <!-- latin capital letter I with acute,- U+00CD ISOlat1 -->-<!ENTITY Icirc "Î"> <!-- latin capital letter I with circumflex,- U+00CE ISOlat1 -->-<!ENTITY Iuml "Ï"> <!-- latin capital letter I with diaeresis,- U+00CF ISOlat1 -->-<!ENTITY ETH "Ð"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->-<!ENTITY Ntilde "Ñ"> <!-- latin capital letter N with tilde,- U+00D1 ISOlat1 -->-<!ENTITY Ograve "Ò"> <!-- latin capital letter O with grave,- U+00D2 ISOlat1 -->-<!ENTITY Oacute "Ó"> <!-- latin capital letter O with acute,- U+00D3 ISOlat1 -->-<!ENTITY Ocirc "Ô"> <!-- latin capital letter O with circumflex,- U+00D4 ISOlat1 -->-<!ENTITY Otilde "Õ"> <!-- latin capital letter O with tilde,- U+00D5 ISOlat1 -->-<!ENTITY Ouml "Ö"> <!-- latin capital letter O with diaeresis,- U+00D6 ISOlat1 -->-<!ENTITY times "×"> <!-- multiplication sign, U+00D7 ISOnum -->-<!ENTITY Oslash "Ø"> <!-- latin capital letter O with stroke- = latin capital letter O slash,- U+00D8 ISOlat1 -->-<!ENTITY Ugrave "Ù"> <!-- latin capital letter U with grave,- U+00D9 ISOlat1 -->-<!ENTITY Uacute "Ú"> <!-- latin capital letter U with acute,- U+00DA ISOlat1 -->-<!ENTITY Ucirc "Û"> <!-- latin capital letter U with circumflex,- U+00DB ISOlat1 -->-<!ENTITY Uuml "Ü"> <!-- latin capital letter U with diaeresis,- U+00DC ISOlat1 -->-<!ENTITY Yacute "Ý"> <!-- latin capital letter Y with acute,- U+00DD ISOlat1 -->-<!ENTITY THORN "Þ"> <!-- latin capital letter THORN,- U+00DE ISOlat1 -->-<!ENTITY szlig "ß"> <!-- latin small letter sharp s = ess-zed,- U+00DF ISOlat1 -->-<!ENTITY agrave "à"> <!-- latin small letter a with grave- = latin small letter a grave,- U+00E0 ISOlat1 -->-<!ENTITY aacute "á"> <!-- latin small letter a with acute,- U+00E1 ISOlat1 -->-<!ENTITY acirc "â"> <!-- latin small letter a with circumflex,- U+00E2 ISOlat1 -->-<!ENTITY atilde "ã"> <!-- latin small letter a with tilde,- U+00E3 ISOlat1 -->-<!ENTITY auml "ä"> <!-- latin small letter a with diaeresis,- U+00E4 ISOlat1 -->-<!ENTITY aring "å"> <!-- latin small letter a with ring above- = latin small letter a ring,- U+00E5 ISOlat1 -->-<!ENTITY aelig "æ"> <!-- latin small letter ae- = latin small ligature ae, U+00E6 ISOlat1 -->-<!ENTITY ccedil "ç"> <!-- latin small letter c with cedilla,- U+00E7 ISOlat1 -->-<!ENTITY egrave "è"> <!-- latin small letter e with grave,- U+00E8 ISOlat1 -->-<!ENTITY eacute "é"> <!-- latin small letter e with acute,- U+00E9 ISOlat1 -->-<!ENTITY ecirc "ê"> <!-- latin small letter e with circumflex,- U+00EA ISOlat1 -->-<!ENTITY euml "ë"> <!-- latin small letter e with diaeresis,- U+00EB ISOlat1 -->-<!ENTITY igrave "ì"> <!-- latin small letter i with grave,- U+00EC ISOlat1 -->-<!ENTITY iacute "í"> <!-- latin small letter i with acute,- U+00ED ISOlat1 -->-<!ENTITY icirc "î"> <!-- latin small letter i with circumflex,- U+00EE ISOlat1 -->-<!ENTITY iuml "ï"> <!-- latin small letter i with diaeresis,- U+00EF ISOlat1 -->-<!ENTITY eth "ð"> <!-- latin small letter eth, U+00F0 ISOlat1 -->-<!ENTITY ntilde "ñ"> <!-- latin small letter n with tilde,- U+00F1 ISOlat1 -->-<!ENTITY ograve "ò"> <!-- latin small letter o with grave,- U+00F2 ISOlat1 -->-<!ENTITY oacute "ó"> <!-- latin small letter o with acute,- U+00F3 ISOlat1 -->-<!ENTITY ocirc "ô"> <!-- latin small letter o with circumflex,- U+00F4 ISOlat1 -->-<!ENTITY otilde "õ"> <!-- latin small letter o with tilde,- U+00F5 ISOlat1 -->-<!ENTITY ouml "ö"> <!-- latin small letter o with diaeresis,- U+00F6 ISOlat1 -->-<!ENTITY divide "÷"> <!-- division sign, U+00F7 ISOnum -->-<!ENTITY oslash "ø"> <!-- latin small letter o with stroke,- = latin small letter o slash,- U+00F8 ISOlat1 -->-<!ENTITY ugrave "ù"> <!-- latin small letter u with grave,- U+00F9 ISOlat1 -->-<!ENTITY uacute "ú"> <!-- latin small letter u with acute,- U+00FA ISOlat1 -->-<!ENTITY ucirc "û"> <!-- latin small letter u with circumflex,- U+00FB ISOlat1 -->-<!ENTITY uuml "ü"> <!-- latin small letter u with diaeresis,- U+00FC ISOlat1 -->-<!ENTITY yacute "ý"> <!-- latin small letter y with acute,- U+00FD ISOlat1 -->-<!ENTITY thorn "þ"> <!-- latin small letter thorn with,- U+00FE ISOlat1 -->-<!ENTITY yuml "ÿ"> <!-- latin small letter y with diaeresis,- U+00FF ISOlat1 -->
− examples/xhtml/xhtml-special.ent
@@ -1,79 +0,0 @@-<!-- Special characters for HTML -->--<!-- Character entity set. Typical invocation:- <!ENTITY % HTMLspecial PUBLIC- "-//W3C//ENTITIES Special for XHTML//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">- %HTMLspecial;--->--<!-- Portions (C) International Organization for Standardization 1986:- Permission to copy in any form is granted for use with- conforming SGML systems and applications as defined in- ISO 8879, provided this notice is included in all copies.--->--<!-- Relevant ISO entity set is given unless names are newly introduced.- New names (i.e., not in ISO 8879 list) do not clash with any- existing ISO 8879 entity names. ISO 10646 character numbers- are given for each character, in hex. values are decimal- conversions of the ISO 10646 values and refer to the document- character set. Names are Unicode names. --->--<!-- C0 Controls and Basic Latin -->-<!ENTITY quot """> <!-- quotation mark = APL quote,- U+0022 ISOnum -->-<!ENTITY amp "&#38;"> <!-- ampersand, U+0026 ISOnum -->-<!ENTITY lt "&#60;"> <!-- less-than sign, U+003C ISOnum -->-<!ENTITY gt ">"> <!-- greater-than sign, U+003E ISOnum -->-<!ENTITY apos "'"> <!-- apostrophe mark, U+0027 ISOnum -->--<!-- Latin Extended-A -->-<!ENTITY OElig "Œ"> <!-- latin capital ligature OE,- U+0152 ISOlat2 -->-<!ENTITY oelig "œ"> <!-- latin small ligature oe, U+0153 ISOlat2 -->-<!-- ligature is a misnomer, this is a separate character in some languages -->-<!ENTITY Scaron "Š"> <!-- latin capital letter S with caron,- U+0160 ISOlat2 -->-<!ENTITY scaron "š"> <!-- latin small letter s with caron,- U+0161 ISOlat2 -->-<!ENTITY Yuml "Ÿ"> <!-- latin capital letter Y with diaeresis,- U+0178 ISOlat2 -->--<!-- Spacing Modifier Letters -->-<!ENTITY circ "ˆ"> <!-- modifier letter circumflex accent,- U+02C6 ISOpub -->-<!ENTITY tilde "˜"> <!-- small tilde, U+02DC ISOdia -->--<!-- General Punctuation -->-<!ENTITY ensp " "> <!-- en space, U+2002 ISOpub -->-<!ENTITY emsp " "> <!-- em space, U+2003 ISOpub -->-<!ENTITY thinsp " "> <!-- thin space, U+2009 ISOpub -->-<!ENTITY zwnj "‌"> <!-- zero width non-joiner,- U+200C NEW RFC 2070 -->-<!ENTITY zwj "‍"> <!-- zero width joiner, U+200D NEW RFC 2070 -->-<!ENTITY lrm "‎"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->-<!ENTITY rlm "‏"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->-<!ENTITY ndash "–"> <!-- en dash, U+2013 ISOpub -->-<!ENTITY mdash "—"> <!-- em dash, U+2014 ISOpub -->-<!ENTITY lsquo "‘"> <!-- left single quotation mark,- U+2018 ISOnum -->-<!ENTITY rsquo "’"> <!-- right single quotation mark,- U+2019 ISOnum -->-<!ENTITY sbquo "‚"> <!-- single low-9 quotation mark, U+201A NEW -->-<!ENTITY ldquo "“"> <!-- left double quotation mark,- U+201C ISOnum -->-<!ENTITY rdquo "”"> <!-- right double quotation mark,- U+201D ISOnum -->-<!ENTITY bdquo "„"> <!-- double low-9 quotation mark, U+201E NEW -->-<!ENTITY dagger "†"> <!-- dagger, U+2020 ISOpub -->-<!ENTITY Dagger "‡"> <!-- double dagger, U+2021 ISOpub -->-<!ENTITY permil "‰"> <!-- per mille sign, U+2030 ISOtech -->-<!ENTITY lsaquo "‹"> <!-- single left-pointing angle quotation mark,- U+2039 ISO proposed -->-<!-- lsaquo is proposed but not yet ISO standardized -->-<!ENTITY rsaquo "›"> <!-- single right-pointing angle quotation mark,- U+203A ISO proposed -->-<!-- rsaquo is proposed but not yet ISO standardized -->-<!ENTITY euro "€"> <!-- euro sign, U+20AC NEW -->
− examples/xhtml/xhtml-symbol.ent
@@ -1,242 +0,0 @@-<!-- Mathematical, Greek and Symbolic characters for HTML -->--<!-- Character entity set. Typical invocation:- <!ENTITY % HTMLsymbol PUBLIC- "-//W3C//ENTITIES Symbols for XHTML//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">- %HTMLsymbol;--->--<!-- Portions (C) International Organization for Standardization 1986:- Permission to copy in any form is granted for use with- conforming SGML systems and applications as defined in- ISO 8879, provided this notice is included in all copies.--->--<!-- Relevant ISO entity set is given unless names are newly introduced.- New names (i.e., not in ISO 8879 list) do not clash with any- existing ISO 8879 entity names. ISO 10646 character numbers- are given for each character, in hex. values are decimal- conversions of the ISO 10646 values and refer to the document- character set. Names are Unicode names. --->--<!-- Latin Extended-B -->-<!ENTITY fnof "ƒ"> <!-- latin small f with hook = function- = florin, U+0192 ISOtech -->--<!-- Greek -->-<!ENTITY Alpha "Α"> <!-- greek capital letter alpha, U+0391 -->-<!ENTITY Beta "Β"> <!-- greek capital letter beta, U+0392 -->-<!ENTITY Gamma "Γ"> <!-- greek capital letter gamma,- U+0393 ISOgrk3 -->-<!ENTITY Delta "Δ"> <!-- greek capital letter delta,- U+0394 ISOgrk3 -->-<!ENTITY Epsilon "Ε"> <!-- greek capital letter epsilon, U+0395 -->-<!ENTITY Zeta "Ζ"> <!-- greek capital letter zeta, U+0396 -->-<!ENTITY Eta "Η"> <!-- greek capital letter eta, U+0397 -->-<!ENTITY Theta "Θ"> <!-- greek capital letter theta,- U+0398 ISOgrk3 -->-<!ENTITY Iota "Ι"> <!-- greek capital letter iota, U+0399 -->-<!ENTITY Kappa "Κ"> <!-- greek capital letter kappa, U+039A -->-<!ENTITY Lambda "Λ"> <!-- greek capital letter lambda,- U+039B ISOgrk3 -->-<!ENTITY Mu "Μ"> <!-- greek capital letter mu, U+039C -->-<!ENTITY Nu "Ν"> <!-- greek capital letter nu, U+039D -->-<!ENTITY Xi "Ξ"> <!-- greek capital letter xi, U+039E ISOgrk3 -->-<!ENTITY Omicron "Ο"> <!-- greek capital letter omicron, U+039F -->-<!ENTITY Pi "Π"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->-<!ENTITY Rho "Ρ"> <!-- greek capital letter rho, U+03A1 -->-<!-- there is no Sigmaf, and no U+03A2 character either -->-<!ENTITY Sigma "Σ"> <!-- greek capital letter sigma,- U+03A3 ISOgrk3 -->-<!ENTITY Tau "Τ"> <!-- greek capital letter tau, U+03A4 -->-<!ENTITY Upsilon "Υ"> <!-- greek capital letter upsilon,- U+03A5 ISOgrk3 -->-<!ENTITY Phi "Φ"> <!-- greek capital letter phi,- U+03A6 ISOgrk3 -->-<!ENTITY Chi "Χ"> <!-- greek capital letter chi, U+03A7 -->-<!ENTITY Psi "Ψ"> <!-- greek capital letter psi,- U+03A8 ISOgrk3 -->-<!ENTITY Omega "Ω"> <!-- greek capital letter omega,- U+03A9 ISOgrk3 -->--<!ENTITY alpha "α"> <!-- greek small letter alpha,- U+03B1 ISOgrk3 -->-<!ENTITY beta "β"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->-<!ENTITY gamma "γ"> <!-- greek small letter gamma,- U+03B3 ISOgrk3 -->-<!ENTITY delta "δ"> <!-- greek small letter delta,- U+03B4 ISOgrk3 -->-<!ENTITY epsilon "ε"> <!-- greek small letter epsilon,- U+03B5 ISOgrk3 -->-<!ENTITY zeta "ζ"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->-<!ENTITY eta "η"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->-<!ENTITY theta "θ"> <!-- greek small letter theta,- U+03B8 ISOgrk3 -->-<!ENTITY iota "ι"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->-<!ENTITY kappa "κ"> <!-- greek small letter kappa,- U+03BA ISOgrk3 -->-<!ENTITY lambda "λ"> <!-- greek small letter lambda,- U+03BB ISOgrk3 -->-<!ENTITY mu "μ"> <!-- greek small letter mu, U+03BC ISOgrk3 -->-<!ENTITY nu "ν"> <!-- greek small letter nu, U+03BD ISOgrk3 -->-<!ENTITY xi "ξ"> <!-- greek small letter xi, U+03BE ISOgrk3 -->-<!ENTITY omicron "ο"> <!-- greek small letter omicron, U+03BF NEW -->-<!ENTITY pi "π"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->-<!ENTITY rho "ρ"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->-<!ENTITY sigmaf "ς"> <!-- greek small letter final sigma,- U+03C2 ISOgrk3 -->-<!ENTITY sigma "σ"> <!-- greek small letter sigma,- U+03C3 ISOgrk3 -->-<!ENTITY tau "τ"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->-<!ENTITY upsilon "υ"> <!-- greek small letter upsilon,- U+03C5 ISOgrk3 -->-<!ENTITY phi "φ"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->-<!ENTITY chi "χ"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->-<!ENTITY psi "ψ"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->-<!ENTITY omega "ω"> <!-- greek small letter omega,- U+03C9 ISOgrk3 -->-<!ENTITY thetasym "ϑ"> <!-- greek small letter theta symbol,- U+03D1 NEW -->-<!ENTITY upsih "ϒ"> <!-- greek upsilon with hook symbol,- U+03D2 NEW -->-<!ENTITY piv "ϖ"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->--<!-- General Punctuation -->-<!ENTITY bull "•"> <!-- bullet = black small circle,- U+2022 ISOpub -->-<!-- bullet is NOT the same as bullet operator, U+2219 -->-<!ENTITY hellip "…"> <!-- horizontal ellipsis = three dot leader,- U+2026 ISOpub -->-<!ENTITY prime "′"> <!-- prime = minutes = feet, U+2032 ISOtech -->-<!ENTITY Prime "″"> <!-- double prime = seconds = inches,- U+2033 ISOtech -->-<!ENTITY oline "‾"> <!-- overline = spacing overscore,- U+203E NEW -->-<!ENTITY frasl "⁄"> <!-- fraction slash, U+2044 NEW -->--<!-- Letterlike Symbols -->-<!ENTITY weierp "℘"> <!-- script capital P = power set- = Weierstrass p, U+2118 ISOamso -->-<!ENTITY image "ℑ"> <!-- blackletter capital I = imaginary part,- U+2111 ISOamso -->-<!ENTITY real "ℜ"> <!-- blackletter capital R = real part symbol,- U+211C ISOamso -->-<!ENTITY trade "™"> <!-- trade mark sign, U+2122 ISOnum -->-<!ENTITY alefsym "ℵ"> <!-- alef symbol = first transfinite cardinal,- U+2135 NEW -->-<!-- alef symbol is NOT the same as hebrew letter alef,- U+05D0 although the same glyph could be used to depict both characters -->--<!-- Arrows -->-<!ENTITY larr "←"> <!-- leftwards arrow, U+2190 ISOnum -->-<!ENTITY uarr "↑"> <!-- upwards arrow, U+2191 ISOnum-->-<!ENTITY rarr "→"> <!-- rightwards arrow, U+2192 ISOnum -->-<!ENTITY darr "↓"> <!-- downwards arrow, U+2193 ISOnum -->-<!ENTITY harr "↔"> <!-- left right arrow, U+2194 ISOamsa -->-<!ENTITY crarr "↵"> <!-- downwards arrow with corner leftwards- = carriage return, U+21B5 NEW -->-<!ENTITY lArr "⇐"> <!-- leftwards double arrow, U+21D0 ISOtech -->-<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow- but also does not have any other character for that function. So ? lArr can- be used for 'is implied by' as ISOtech suggests -->-<!ENTITY uArr "⇑"> <!-- upwards double arrow, U+21D1 ISOamsa -->-<!ENTITY rArr "⇒"> <!-- rightwards double arrow,- U+21D2 ISOtech -->-<!-- Unicode does not say this is the 'implies' character but does not have - another character with this function so ?- rArr can be used for 'implies' as ISOtech suggests -->-<!ENTITY dArr "⇓"> <!-- downwards double arrow, U+21D3 ISOamsa -->-<!ENTITY hArr "⇔"> <!-- left right double arrow,- U+21D4 ISOamsa -->--<!-- Mathematical Operators -->-<!ENTITY forall "∀"> <!-- for all, U+2200 ISOtech -->-<!ENTITY part "∂"> <!-- partial differential, U+2202 ISOtech -->-<!ENTITY exist "∃"> <!-- there exists, U+2203 ISOtech -->-<!ENTITY empty "∅"> <!-- empty set = null set = diameter,- U+2205 ISOamso -->-<!ENTITY nabla "∇"> <!-- nabla = backward difference,- U+2207 ISOtech -->-<!ENTITY isin "∈"> <!-- element of, U+2208 ISOtech -->-<!ENTITY notin "∉"> <!-- not an element of, U+2209 ISOtech -->-<!ENTITY ni "∋"> <!-- contains as member, U+220B ISOtech -->-<!-- should there be a more memorable name than 'ni'? -->-<!ENTITY prod "∏"> <!-- n-ary product = product sign,- U+220F ISOamsb -->-<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though- the same glyph might be used for both -->-<!ENTITY sum "∑"> <!-- n-ary sumation, U+2211 ISOamsb -->-<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'- though the same glyph might be used for both -->-<!ENTITY minus "−"> <!-- minus sign, U+2212 ISOtech -->-<!ENTITY lowast "∗"> <!-- asterisk operator, U+2217 ISOtech -->-<!ENTITY radic "√"> <!-- square root = radical sign,- U+221A ISOtech -->-<!ENTITY prop "∝"> <!-- proportional to, U+221D ISOtech -->-<!ENTITY infin "∞"> <!-- infinity, U+221E ISOtech -->-<!ENTITY ang "∠"> <!-- angle, U+2220 ISOamso -->-<!ENTITY and "∧"> <!-- logical and = wedge, U+2227 ISOtech -->-<!ENTITY or "∨"> <!-- logical or = vee, U+2228 ISOtech -->-<!ENTITY cap "∩"> <!-- intersection = cap, U+2229 ISOtech -->-<!ENTITY cup "∪"> <!-- union = cup, U+222A ISOtech -->-<!ENTITY int "∫"> <!-- integral, U+222B ISOtech -->-<!ENTITY there4 "∴"> <!-- therefore, U+2234 ISOtech -->-<!ENTITY sim "∼"> <!-- tilde operator = varies with = similar to,- U+223C ISOtech -->-<!-- tilde operator is NOT the same character as the tilde, U+007E,- although the same glyph might be used to represent both -->-<!ENTITY cong "≅"> <!-- approximately equal to, U+2245 ISOtech -->-<!ENTITY asymp "≈"> <!-- almost equal to = asymptotic to,- U+2248 ISOamsr -->-<!ENTITY ne "≠"> <!-- not equal to, U+2260 ISOtech -->-<!ENTITY equiv "≡"> <!-- identical to, U+2261 ISOtech -->-<!ENTITY le "≤"> <!-- less-than or equal to, U+2264 ISOtech -->-<!ENTITY ge "≥"> <!-- greater-than or equal to,- U+2265 ISOtech -->-<!ENTITY sub "⊂"> <!-- subset of, U+2282 ISOtech -->-<!ENTITY sup "⊃"> <!-- superset of, U+2283 ISOtech -->-<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol - font encoding and is not included. Should it be, for symmetry?- It is in ISOamsn --> -<!ENTITY nsub "⊄"> <!-- not a subset of, U+2284 ISOamsn -->-<!ENTITY sube "⊆"> <!-- subset of or equal to, U+2286 ISOtech -->-<!ENTITY supe "⊇"> <!-- superset of or equal to,- U+2287 ISOtech -->-<!ENTITY oplus "⊕"> <!-- circled plus = direct sum,- U+2295 ISOamsb -->-<!ENTITY otimes "⊗"> <!-- circled times = vector product,- U+2297 ISOamsb -->-<!ENTITY perp "⊥"> <!-- up tack = orthogonal to = perpendicular,- U+22A5 ISOtech -->-<!ENTITY sdot "⋅"> <!-- dot operator, U+22C5 ISOamsb -->-<!-- dot operator is NOT the same character as U+00B7 middle dot -->--<!-- Miscellaneous Technical -->-<!ENTITY lceil "⌈"> <!-- left ceiling = apl upstile,- U+2308 ISOamsc -->-<!ENTITY rceil "⌉"> <!-- right ceiling, U+2309 ISOamsc -->-<!ENTITY lfloor "⌊"> <!-- left floor = apl downstile,- U+230A ISOamsc -->-<!ENTITY rfloor "⌋"> <!-- right floor, U+230B ISOamsc -->-<!ENTITY lang "〈"> <!-- left-pointing angle bracket = bra,- U+2329 ISOtech -->-<!-- lang is NOT the same character as U+003C 'less than' - or U+2039 'single left-pointing angle quotation mark' -->-<!ENTITY rang "〉"> <!-- right-pointing angle bracket = ket,- U+232A ISOtech -->-<!-- rang is NOT the same character as U+003E 'greater than' - or U+203A 'single right-pointing angle quotation mark' -->--<!-- Geometric Shapes -->-<!ENTITY loz "◊"> <!-- lozenge, U+25CA ISOpub -->--<!-- Miscellaneous Symbols -->-<!ENTITY spades "♠"> <!-- black spade suit, U+2660 ISOpub -->-<!-- black here seems to mean filled as opposed to hollow -->-<!ENTITY clubs "♣"> <!-- black club suit = shamrock,- U+2663 ISOpub -->-<!ENTITY hearts "♥"> <!-- black heart suit = valentine,- U+2665 ISOpub -->-<!ENTITY diams "♦"> <!-- black diamond suit, U+2666 ISOpub -->
− examples/xhtml/xhtml.xml
@@ -1,1484 +0,0 @@-<!DOCTYPE html SYSTEM "xhtml1-strict.dtd">-<?xml-stylesheet href="http://www.w3.org/StyleSheets/TR/W3C-REC.css" type="text/css"?>-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">-<head>-<title>XHTML 1.0: The Extensible HyperText Markup-Language</title>-<link rel="stylesheet"-href="http://www.w3.org/StyleSheets/TR/W3C-REC.css" type="text/css" />-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />-<style type="text/css">-span.term { font-style: italic; color: rgb(0, 0, 192) }-code {- color: green;- font-family: monospace;- font-weight: bold;-}--code.greenmono {- color: green;- font-family: monospace;- font-weight: bold;-}-.good {- border: solid green;- border-width: 2px;- color: green;- font-weight: bold;- margin-right: 5%;- margin-left: 0;-}-.bad {- border: solid red;- border-width: 2px;- margin-left: 0;- margin-right: 5%;- color: rgb(192, 101, 101);-}--img {- color: white;- border: none;-}--div.navbar { text-align: center; }-div.contents {- background-color: rgb(204,204,255);- padding: 0.5em;- border: none;- margin-right: 5%;-}-.tocline { list-style: none; }-table.exceptions { background-color: rgb(255,255,153); }-</style>-</head>-<body>-<div class="navbar">- <a href="#toc">table of contents</a>- <hr />-</div>-<div class="head"><p><a href="http://www.w3.org/"><img class="head"-src="http://www.w3.org/Icons/WWW/w3c_home.gif" alt="W3C" /></a></p>--<h1 class="head"><a name="title" id="title">XHTML</a><sup>™</sup> 1.0:-The Extensible HyperText Markup Language</h1>--<h2>A Reformulation of HTML 4 in XML 1.0</h2>--<h3>W3C Recommendation 26 January 2000</h3>--<dl>-<dt>This version:</dt>--<dd><a href=-"http://www.w3.org/TR/2000/REC-xhtml1-20000126">-http://www.w3.org/TR/2000/REC-xhtml1-20000126</a> <br />-(<a href="xhtml1.ps">Postscript version</a>,-<a href="xhtml1.pdf">PDF version</a>,-<a href="xhtml1.zip">ZIP archive</a>, or-<a href="xhtml1.tgz">Gzip'd TAR archive</a>)-</dd>--<dt>Latest version:</dt>--<dd><a href="http://www.w3.org/TR/xhtml1">-http://www.w3.org/TR/xhtml1</a></dd>--<dt>Previous version:</dt>--<dd><a href=-"http://www.w3.org/TR/1999/PR-xhtml1-19991210">-http://www.w3.org/TR/1999/PR-xhtml1-19991210</a></dd>--<dt>Authors:</dt>--<dd>See <a href="#acks">acknowledgements</a>.</dd>-</dl>--<p class="copyright"><a-href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright"> Copyright</a>-©2000 <a href="http://www.w3.org/"><abbr title="World Wide Web-Consortium">W3C</abbr></a><sup>®</sup> (<a-href="http://www.lcs.mit.edu/"><abbr-title="Massachusetts Institute of Technology">MIT</abbr></a>, <a-href="http://www.inria.fr/"><abbr-lang="fr" title="Institut National de Recherche en Informatique et-Automatique">INRIA</abbr></a>, <a-href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a-href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,-<a-href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,-<a-href="http://www.w3.org/Consortium/Legal/copyright-documents-19990405">document-use</a> and <a-href="http://www.w3.org/Consortium/Legal/copyright-software-19980720">software-licensing</a> rules-apply.</p>-<hr />-</div>--<h2 class="notoc">Abstract</h2>--<p>This specification defines <abbr title="Extensible Hypertext Markup-Language">XHTML</abbr> 1.0, a reformulation of HTML 4-as an XML 1.0 application, and three <abbr title="Document Type-Definition">DTDs</abbr> corresponding to-the ones defined by HTML 4. The semantics of the elements and-their attributes are defined in the W3C Recommendation for HTML 4.-These semantics provide the foundation for future-extensibility of XHTML. Compatibility with existing HTML user-agents is possible by following a small set of guidelines.</p>--<h2>Status of this document</h2>--<p><em>This section describes the status of this document at the time-of its publication. Other documents may supersede this document. The-latest status of this document series is maintained at the W3C.</em></p>--<p>-This document has been reviewed by W3C Members and other-interested parties and has been endorsed by the Director-as a W3C Recommendation. It is a stable document and may be-used as reference material or cited as a normative-reference from another document. W3C's role in making the-Recommendation is to draw attention to the specification and-to promote its widespread deployment. This enhances the-functionality and interoperability of the Web.-</p>-<p>This document has been produced as part of the <a href=-"http://www.w3.org/MarkUp/">W3C HTML Activity</a>. The goals of-the <a href="http://www.w3.org/MarkUp/Group/">HTML Working-Group</a> <i>(<a href="http://cgi.w3.org/MemberAccess/">members-only</a>)</i> are discussed in the <a href=-"http://www.w3.org/MarkUp/Group/HTMLcharter">HTML Working Group-charter</a> <i>(<a href="http://cgi.w3.org/MemberAccess/">members-only</a>)</i>.</p>--<p>A list of current W3C Recommendations and other technical documents-can be found at <a-href="http://www.w3.org/TR">http://www.w3.org/TR</a>.</p>--<p>Public discussion on <abbr title="HyperText Markup-Language">HTML</abbr> features takes place on the mailing list <a-href="mailto:www-html@w3.org"> www-html@w3.org</a> (<a href=-"http://lists.w3.org/Archives/Public/www-html/">archive</a>).</p>--<p>Please report errors in this document to <a-href="mailto:www-html-editor@w3.org">www-html-editor@w3.org</a>.</p>--<p>The list of known errors in this specification is available at <a-href="http://www.w3.org/2000/01/REC-xhtml1-20000126-errata">http://www.w3.org/2000/01/REC-xhtml1-20000126-errata</a>.</p>--<h2 class="notoc"><a id="toc" name="toc">Contents</a></h2>--<div class="contents">-<ul class="toc">-<li class="tocline">1. <a href="#xhtml">What is XHTML?</a>--<ul class="toc">-<li class="tocline">1.1 <a href="#html4">What is HTML 4?</a></li>--<li class="tocline">1.2 <a href="#xml">What is XML?</a></li>--<li class="tocline">1.3 <a href="#why">Why the need for XHTML?</a></li>-</ul>-</li>--<li class="tocline">2. <a href="#defs">Definitions</a>--<ul class="toc">-<li class="tocline">2.1 <a href="#terms">Terminology</a></li>--<li class="tocline">2.2 <a href="#general">General Terms</a></li>-</ul>-</li>--<li class="tocline">3. <a href="#normative">Normative Definition of XHTML 1.0</a>---<ul class="toc">-<li class="tocline">3.1 <a href="#docconf">Document Conformance</a></li>--<li class="tocline">3.2 <a href="#uaconf">User Agent Conformance</a></li>-</ul>-</li>--<li class="tocline">4. <a href="#diffs">Differences with HTML 4</a>--</li>--<li class="tocline">5. <a href="#issues">Compatibility Issues</a>--<ul class="toc">-<li class="tocline">5.1 <a href="#media">Internet Media Types</a></li>-</ul>-</li>--<li class="tocline">6. <a href="#future">Future Directions</a>--<ul class="toc">-<li class="tocline">6.1 <a href="#mods">Modularizing HTML</a></li>--<li class="tocline">6.2 <a href="#extensions">Subsets and Extensibility</a></li>--<li class="tocline">6.3 <a href="#profiles">Document Profiles</a></li>-</ul>-</li>--<li class="tocline"><a href="#dtds">Appendix A. DTDs</a></li>--<li class="tocline"><a href="#prohibitions">Appendix B. Element-Prohibitions</a></li>--<li class="tocline"><a href="#guidelines">Appendix C. HTML Compatibility Guidelines</a></li>--<li class="tocline"><a href="#acks">Appendix D. Acknowledgements</a></li>--<li class="tocline"><a href="#refs">Appendix E. References</a></li>-</ul>-</div>--<!--OddPage-->-<h1><a name="xhtml" id="xhtml">1. What is XHTML?</a></h1>--<p>XHTML is a family of current and future document types and modules that-reproduce, subset, and extend HTML 4 <a href="#ref-html4">[HTML]</a>. XHTML family document types are <abbr title="Extensible Markup Language">XML</abbr> based,-and ultimately are designed to work in conjunction with XML-based user agents.-The details of this family and its evolution are-discussed in more detail in the section on <a href="#future">Future-Directions</a>. </p>--<p>XHTML 1.0 (this specification) is the first document type in the XHTML-family. It is a reformulation of the three HTML 4 document types as-applications of XML 1.0 <a href="#ref-xml"> [XML]</a>. It is intended-to be used as a language for content that is both XML-conforming and, if some-simple <a href="#guidelines">guidelines</a> are followed,-operates in HTML 4 conforming user agents. Developers who migrate-their content to XHTML 1.0 will realize the following benefits:</p>--<ul>-<li>XHTML documents are XML conforming. As such, they are readily viewed,-edited, and validated with standard XML tools.</li>-<li>XHTML documents can be written to-to operate as well or better than they did before in existing-HTML 4-conforming user agents as well as in new, XHTML 1.0 conforming user-agents.</li>-<li>XHTML documents can utilize applications (e.g. scripts and applets) that rely-upon either the HTML Document Object Model or the XML Document Object Model <a-href="#ref-dom">[DOM]</a>.</li>-<li>As the XHTML family evolves, documents conforming to XHTML 1.0 will be more-likely to interoperate within and among various XHTML environments.</li>-</ul>--<p>The XHTML family is the next step in the evolution of the Internet. By-migrating to XHTML today, content developers can enter the XML world with all-of its attendant benefits, while still remaining confident in their-content's backward and future compatibility.</p>--<h2><a name="html4" id="html4">1.1 What is HTML 4?</a></h2>--<p>HTML 4 <a href="#ref-html4">[HTML]</a> is an <abbr title="Standard-Generalized Markup Language">SGML</abbr> (Standard-Generalized Markup Language) application conforming to-International Standard <abbr title="Organization for International-Standardization">ISO</abbr> 8879, and is widely regarded as the-standard publishing language of the World Wide Web.</p>--<p>SGML is a language for describing markup languages,-particularly those used in electronic document exchange, document-management, and document publishing. HTML is an example of a-language defined in SGML.</p>--<p>SGML has been around since the middle 1980's and has remained-quite stable. Much of this stability stems from the fact that the-language is both feature-rich and flexible. This flexibility,-however, comes at a price, and that price is a level of-complexity that has inhibited its adoption in a diversity of-environments, including the World Wide Web.</p>--<p>HTML, as originally conceived, was to be a language for the-exchange of scientific and other technical documents, suitable-for use by non-document specialists. HTML addressed the problem-of SGML complexity by specifying a small set of structural and-semantic tags suitable for authoring relatively simple documents.-In addition to simplifying the document structure, HTML added-support for hypertext. Multimedia capabilities were added-later.</p>--<p>In a remarkably short space of time, HTML became wildly-popular and rapidly outgrew its original purpose. Since HTML's-inception, there has been rapid invention of new elements for use-within HTML (as a standard) and for adapting HTML to vertical,-highly specialized, markets. This plethora of new elements has-led to compatibility problems for documents across different-platforms.</p>--<p>As the heterogeneity of both software and platforms rapidly-proliferate, it is clear that the suitability of 'classic' HTML 4-for use on these platforms is somewhat limited.</p>--<h2><a name="xml" id="xml">1.2 What is XML?</a></h2>--<p>XML<sup>™</sup> is the shorthand for Extensible Markup-Language, and is an acronym of Extensible Markup Language <a-href="#ref-xml">[XML]</a>.</p>--<p>XML was conceived as a means of regaining the power and-flexibility of SGML without most of its complexity. Although a-restricted form of SGML, XML nonetheless preserves most of SGML's-power and richness, and yet still retains all of SGML's commonly-used features.</p>--<p>While retaining these beneficial features, XML removes many of-the more complex features of SGML that make the authoring and-design of suitable software both difficult and costly.</p>--<h2><a name="why" id="why">1.3 Why the need for XHTML?</a></h2>--<p>The benefits of migrating to XHTML 1.0 are described above. Some of the-benefits of migrating to XHTML in general are:</p>--<ul>-<li>Document developers and user agent designers are constantly-discovering new ways to express their ideas through new markup. In XML, it is-relatively easy to introduce new elements or additional element-attributes. The XHTML family is designed to accommodate these extensions-through XHTML modules and techniques for developing new XHTML-conforming-modules (described in the forthcoming XHTML Modularization specification).-These modules will permit the combination of existing and-new feature sets when developing content and when designing new user-agents.</li>--<li>Alternate ways of accessing the Internet are constantly being-introduced. Some estimates indicate that by the year 2002, 75% of-Internet document viewing will be carried out on these alternate-platforms. The XHTML family is designed with general user agent-interoperability in mind. Through a new user agent and document profiling-mechanism, servers, proxies, and user agents will be able to perform-best effort content transformation. Ultimately, it will be possible to-develop XHTML-conforming content that is usable by any XHTML-conforming-user agent.</li>--</ul>-<!--OddPage-->-<h1><a name="defs" id="defs">2. Definitions</a></h1>--<h2><a name="terms" id="terms">2.1 Terminology</a></h2>--<p>The following terms are used in this specification. These-terms extend the definitions in <a href="#ref-rfc2119">-[RFC2119]</a> in ways based upon similar definitions in ISO/<abbr-title="International Electro-technical Commission">IEC</abbr>-9945-1:1990 <a href="#ref-posix">[POSIX.1]</a>:</p>--<dl>-<dt>Implementation-defined</dt>--<dd>A value or behavior is implementation-defined when it is left-to the implementation to define [and document] the corresponding-requirements for correct document construction.</dd>--<dt>May</dt>--<dd>With respect to implementations, the word "may" is to be-interpreted as an optional feature that is not required in this-specification but can be provided. With respect to <a href=-"#docconf">Document Conformance</a>, the word "may" means that-the optional feature must not be used. The term "optional" has-the same definition as "may".</dd>--<dt>Must</dt>--<dd>In this specification, the word "must" is to be interpreted-as a mandatory requirement on the implementation or on Strictly-Conforming XHTML Documents, depending upon the context. The term-"shall" has the same definition as "must".</dd>--<dt>Reserved</dt>--<dd>A value or behavior is unspecified, but it is not allowed to-be used by Conforming Documents nor to be supported by a-Conforming User Agents.</dd>--<dt>Should</dt>--<dd>With respect to implementations, the word "should" is to be-interpreted as an implementation recommendation, but not a-requirement. With respect to documents, the word "should" is to-be interpreted as recommended programming practice for documents-and a requirement for Strictly Conforming XHTML Documents.</dd>--<dt>Supported</dt>--<dd>Certain facilities in this specification are optional. If a-facility is supported, it behaves as specified by this-specification.</dd>--<dt>Unspecified</dt>--<dd>When a value or behavior is unspecified, the specification-defines no portability requirements for a facility on an-implementation even when faced with a document that uses the-facility. A document that requires specific behavior in such an-instance, rather than tolerating any behavior when using that-facility, is not a Strictly Conforming XHTML Document.</dd>-</dl>--<h2><a name="general" id="general">2.2 General Terms</a></h2>--<dl>-<dt>Attribute</dt>--<dd>An attribute is a parameter to an element declared in the-DTD. An attribute's type and value range, including a possible-default value, are defined in the DTD.</dd>--<dt>DTD</dt>--<dd>A DTD, or document type definition, is a collection of XML-declarations that, as a collection, defines the legal structure,-<span class="term">elements</span>, and <span class="term">-attributes</span> that are available for use in a document that-complies to the DTD.</dd>--<dt>Document</dt>--<dd>A document is a stream of data that, after being combined-with any other streams it references, is structured such that it-holds information contained within <span class="term">-elements</span> that are organized as defined in the associated-<span class="term">DTD</span>. See <a href="#docconf">Document-Conformance</a> for more information.</dd>--<dt>Element</dt>--<dd>An element is a document structuring unit declared in the-<span class="term">DTD</span>. The element's content model is-defined in the <span class="term">DTD</span>, and additional-semantics may be defined in the prose description of the-element.</dd>--<dt><a name="facilities" id="facilities">Facilities</a></dt>--<dd>Functionality includes <span class="term">elements</span>,-<span class="term">attributes</span>, and the semantics-associated with those <span class="term">elements</span> and-<span class="term">attributes</span>. An implementation-supporting that functionality is said to provide the necessary-facilities.</dd>--<dt>Implementation</dt>--<dd>An implementation is a system that provides collection of-<span class="term">facilities</span> and services that supports-this specification. See <a href="#uaconf">User Agent-Conformance</a> for more information.</dd>--<dt>Parsing</dt>--<dd>Parsing is the act whereby a <span class="term">-document</span> is scanned, and the information contained within-the <span class="term">document</span> is filtered into the-context of the <span class="term">elements</span> in which the-information is structured.</dd>--<dt>Rendering</dt>--<dd>Rendering is the act whereby the information in a <span-class="term">document</span> is presented. This presentation is-done in the form most appropriate to the environment (e.g.-aurally, visually, in print).</dd>--<dt>User Agent</dt>--<dd>A user agent is an <span class="term">implementation</span>-that retrieves and processes XHTML documents. See <a href=-"#uaconf">User Agent Conformance</a> for more information.</dd>--<dt>Validation</dt>--<dd>Validation is a process whereby <span class="term">-documents</span> are verified against the associated <span class=-"term">DTD</span>, ensuring that the structure, use of <span-class="term">elements</span>, and use of <span class="term">-attributes</span> are consistent with the definitions in the-<span class="term">DTD</span>.</dd>--<dt><a name="wellformed" id="wellformed">Well-formed</a></dt>--<dd>A <span class="term">document</span> is well-formed when it-is structured according to the rules defined in <a href=-"http://www.w3.org/TR/REC-xml#sec-well-formed">Section 2.1</a> of-the XML 1.0 Recommendation <a href="#ref-xml">[XML]</a>.-Basically, this definition states that elements, delimited by-their start and end tags, are nested properly within one-another.</dd>-</dl>--<!--OddPage-->-<h1><a name="normative" id="normative">3. Normative Definition of-XHTML 1.0</a></h1>--<h2><a name="docconf" id="docconf">3.1 Document-Conformance</a></h2>--<p>This version of XHTML provides a definition of strictly-conforming XHTML documents, which are restricted to tags and-attributes from the XHTML namespace. See <a href=-"#well-formed">Section 3.1.2</a> for information on using XHTML-with other namespaces, for instance, to include metadata-expressed in <abbr title="Resource Description Format">RDF</abbr> within XHTML documents.</p>--<h3><a name="strict" id="strict">3.1.1 Strictly Conforming-Documents</a></h3>--<p>A Strictly Conforming XHTML Document is a document that-requires only the facilities described as mandatory in this-specification. Such a document must meet all of the following-criteria:</p>--<ol>-<li>-<p>It must validate against one of the three DTDs found in <a-href="#dtds">Appendix A</a>.</p>-</li>--<li>-<p>The root element of the document must be <code>-<html></code>.</p>-</li>--<li>-<p>The root element of the document must designate the XHTML-namespace using the <code>xmlns</code> attribute <a href=-"#ref-xmlns">[XMLNAMES]</a>. The namespace for XHTML is-defined to be-<code>http://www.w3.org/1999/xhtml</code>.</p>-</li>--<li>-<p>There must be a DOCTYPE declaration in the document prior to-the root element. The public identifier included in-the DOCTYPE declaration must reference one of the three DTDs-found in <a href="#dtds">Appendix A</a> using the respective-Formal Public Identifier. The system identifier may be changed to reflect-local system conventions.</p>--<pre>-<!DOCTYPE html- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "DTD/xhtml1-strict.dtd">--<!DOCTYPE html- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"- "DTD/xhtml1-transitional.dtd">--<!DOCTYPE html- PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"- "DTD/xhtml1-frameset.dtd">-</pre>-</li>-</ol>--<p>Here is an example of a minimal XHTML document.</p>--<div class="good">-<pre>-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE html- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">- <head>- <title>Virtual Library</title>- </head>- <body>- <p>Moved to <a href="http://vlib.org/">vlib.org</a>.</p>- </body>-</html></pre>-</div>--<p>Note that in this example, the XML declaration is included. An XML-declaration like the one above is-not required in all XML documents. XHTML document authors are strongly encouraged to use XML declarations in all their documents. Such a declaration is required-when the character encoding of the document is other than the default UTF-8 or-UTF-16.</p>--<h3><a name="well-formed" id="well-formed">3.1.2 Using XHTML with-other namespaces</a></h3>--<p>The XHTML namespace may be used with other XML namespaces-as per <a href="#ref-xmlns">[XMLNAMES]</a>, although such-documents are not strictly conforming XHTML 1.0 documents as-defined above. Future work by W3C will address ways to specify-conformance for documents involving multiple namespaces.</p>--<p>The following example shows the way in which XHTML 1.0 could-be used in conjunction with the MathML Recommendation:</p>--<div class="good">-<pre>-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">- <head>- <title>A Math Example</title>- </head>- <body>- <p>The following is MathML markup:</p>- <math xmlns="http://www.w3.org/1998/Math/MathML">- <apply> <log/>- <logbase>- <cn> 3 </cn>- </logbase>- <ci> x </ci>- </apply>- </math>- </body>-</html>-</pre>-</div>--<p>The following example shows the way in which XHTML 1.0 markup-could be incorporated into another XML namespace:</p>--<div class="good">-<pre>-<?xml version="1.0" encoding="UTF-8"?>-<!-- initially, the default namespace is "books" -->-<book xmlns='urn:loc.gov:books'- xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en">- <title>Cheaper by the Dozen</title>- <isbn:number>1568491379</isbn:number>- <notes>- <!-- make HTML the default namespace for a hypertext commentary -->- <p xmlns='http://www.w3.org/1999/xhtml'>- This is also available <a href="http://www.w3.org/">online</a>.- </p>- </notes>-</book>-</pre>-</div>--<h2><a name="uaconf" id="uaconf">3.2 User Agent-Conformance</a></h2>--<p>A conforming user agent must meet all of the following-criteria:</p>--<ol>-<li>In order to be consistent with the XML 1.0 Recommendation <a-href="#ref-xml">[XML]</a>, the user agent must parse and evaluate-an XHTML document for well-formedness. If the user agent claims-to be a validating user agent, it must also validate documents-against their referenced DTDs according to <a href="#ref-xml">-[XML]</a>.</li>--<li>When the user agent claims to support <a href="#facilities">-facilities</a> defined within this specification or required by-this specification through normative reference, it must do so in-ways consistent with the facilities' definition.</li>--<li>When a user agent processes an XHTML document as generic XML,-it shall only recognize attributes of type-<code>ID</code> (e.g. the <code>id</code> attribute on most XHTML elements)-as fragment identifiers.</li>--<li>If a user agent encounters an element it does not recognize,-it must render the element's content.</li>--<li>If a user agent encounters an attribute it does not-recognize, it must ignore the entire attribute specification-(i.e., the attribute and its value).</li>--<li>If a user agent encounters an attribute value it doesn't-recognize, it must use the default attribute value.</li>--<li>If it encounters an entity reference (other than one-of the predefined entities) for which the User Agent has-processed no declaration (which could happen if the declaration-is in the external subset which the User Agent hasn't read), the entity-reference should be rendered as the characters (starting-with the ampersand and ending with the semi-colon) that-make up the entity reference.</li>--<li>When rendering content, User Agents that encounter-characters or character entity references that are recognized but not renderable should display the document in such a way that it is obvious to the user that normal rendering has not taken place.</li>--<li>-The following characters are defined in [XML] as whitespace characters:--<ul>-<li>Space (&#x0020;)</li>-<li>Tab (&#x0009;)</li>-<li>Carriage return (&#x000D;)</li>-<li>Line feed (&#x000A;)</li>-</ul>--<p>-The XML processor normalizes different system's line end codes into one-single line-feed character, that is passed up to the application. The XHTML-user agent in addition, must treat the following characters as whitespace:-</p>--<ul>-<li>Form feed (&#x000C;)</li>-<li>Zero-width space (&#x200B;)</li>-</ul>--<p>-In elements where the 'xml:space' attribute is set to 'preserve', the user-agent must leave all whitespace characters intact (with the exception of-leading and trailing whitespace characters, which should be removed).-Otherwise, whitespace-is handled according to the following rules:-</p>--<ul>-<li>-All whitespace surrounding block elements should be removed.-</li>-<li>-Comments are removed entirely and do not affect whitespace handling. One-whitespace character on either side of a comment is treated as two white-space characters.-</li>-<li>-Leading and trailing whitespace inside a block element must be removed.-</li>-<li>Line feed characters within a block element must be converted into a-space (except when the 'xml:space' attribute is set to 'preserve').-</li>-<li>-A sequence of white space characters must be reduced to a single space-character (except when the 'xml:space' attribute is set to 'preserve').-</li>-<li>-With regard to rendition,-the User Agent should render the content in a-manner appropriate to the language in which the content is written.-In languages whose primary script is Latinate, the ASCII space-character is typically used to encode both grammatical word boundaries and-typographic whitespace; in languages whose script is related to Nagari-(e.g., Sanskrit, Thai, etc.), grammatical boundaries may be encoded using-the ZW 'space' character, but will not typically be represented by-typographic whitespace in rendered output; languages using Arabiform scripts-may encode typographic whitespace using a space character, but may also use-the ZW space character to delimit 'internal' grammatical boundaries (what-look like words in Arabic to an English eye frequently encode several words,-e.g. 'kitAbuhum' = 'kitAbu-hum' = 'book them' == their book); and languages-in the Chinese script tradition typically neither encode such delimiters nor-use typographic whitespace in this way.-</li>-</ul>--<p>Whitespace in attribute values is processed according to <a-href="#ref-xml">[XML]</a>.</p>-</li>-</ol>--<!--OddPage-->-<h1><a name="diffs" id="diffs">4. Differences with HTML 4</a></h1>--<p>Due to the fact that XHTML is an XML application, certain-practices that were perfectly legal in SGML-based HTML 4 <a-href="#ref-html4">[HTML]</a> must be changed.</p>--<h2><a name="h-4.1" id="h-4.1">4.1 Documents must be-well-formed</a></h2>--<p><a href="#wellformed">Well-formedness</a> is a new concept-introduced by <a href="#ref-xml">[XML]</a>. Essentially this-means that all elements must either have closing tags or be-written in a special form (as described below), and that all the-elements must nest.</p>--<p>Although overlapping is illegal in SGML, it was widely-tolerated in existing browsers.</p>--<div class="good">-<p><strong><em>CORRECT: nested elements.</em></strong></p>--<p><p>here is an emphasized-<em>paragraph</em>.</p></p>-</div>--<div class="bad">-<p><strong><em>INCORRECT: overlapping elements</em></strong></p>--<p><p>here is an emphasized-<em>paragraph.</p></em></p>-</div>--<h2><a name="h-4.2" id="h-4.2">4.2 Element and attribute-names must be in lower case</a></h2>--<p>XHTML documents must use lower case for all HTML element and-attribute names. This difference is necessary because XML is-case-sensitive e.g. <li> and <LI> are different-tags.</p>--<h2><a name="h-4.3" id="h-4.3">4.3 For non-empty elements,-end tags are required</a></h2>--<p>In SGML-based HTML 4 certain elements were permitted to omit-the end tag; with the elements that followed implying closure.-This omission is not permitted in XML-based XHTML. All elements-other than those declared in the DTD as <code>EMPTY</code> must-have an end tag.</p>--<div class="good">-<p><strong><em>CORRECT: terminated elements</em></strong></p>--<p><p>here is a paragraph.</p><p>here is-another paragraph.</p></p>-</div>--<div class="bad">-<p><strong><em>INCORRECT: unterminated elements</em></strong></p>--<p><p>here is a paragraph.<p>here is another-paragraph.</p>-</div>--<h2><a name="h-4.4" id="h-4.4">4.4 Attribute values must-always be quoted</a></h2>--<p>All attribute values must be quoted, even those which appear-to be numeric.</p>--<div class="good">-<p><strong><em>CORRECT: quoted attribute values</em></strong></p>--<p><table rows="3"></p>-</div>--<div class="bad">-<p><strong><em>INCORRECT: unquoted attribute values</em></strong></p>--<p><table rows=3></p>-</div>--<h2><a name="h-4.5" id="h-4.5">4.5 Attribute-Minimization</a></h2>--<p>XML does not support attribute minimization. Attribute-value-pairs must be written in full. Attribute names such as <code>-compact</code> and <code>checked</code> cannot occur in elements-without their value being specified.</p>--<div class="good">-<p><strong><em>CORRECT: unminimized attributes</em></strong></p>--<p><dl compact="compact"></p>-</div>--<div class="bad">-<p><strong><em>INCORRECT: minimized attributes</em></strong></p>--<p><dl compact></p>-</div>--<h2><a name="h-4.6" id="h-4.6">4.6 Empty Elements</a></h2>--<p>Empty elements must either have an end tag or the start tag must end with <code>/></code>. For instance,-<code><br/></code> or <code><hr></hr></code>. See <a-href="#guidelines">HTML Compatibility Guidelines</a> for information on ways to-ensure this is backward compatible with HTML 4 user agents.</p>--<div class="good">-<p><strong><em>CORRECT: terminated empty tags</em></strong></p>--<p><br/><hr/></p>-</div>--<div class="bad">-<p><strong><em>INCORRECT: unterminated empty tags</em></strong></p>--<p><br><hr></p>-</div>--<h2><a name="h-4.7" id="h-4.7">4.7 Whitespace handling in-attribute values</a></h2>--<p>In attribute values, user agents will strip leading and-trailing whitespace from attribute values and map sequences-of one or more whitespace characters (including line breaks) to-a single inter-word space (an ASCII space character for western-scripts). See <a href="http://www.w3.org/TR/REC-xml#AVNormalize">-Section 3.3.3</a> of <a href="#ref-xml">[XML]</a>.</p>--<h2><a name="h-4.8" id="h-4.8">4.8 Script and Style-elements</a></h2>--<p>In XHTML, the script and style elements are declared as having-<code>#PCDATA</code> content. As a result, <code><</code> and-<code>&</code> will be treated as the start of markup, and-entities such as <code>&lt;</code> and <code>&amp;</code>-will be recognized as entity references by the XML processor to-<code><</code> and <code>&</code> respectively. Wrapping-the content of the script or style element within a <code>-CDATA</code> marked section avoids the expansion of these-entities.</p>--<div class="good">-<pre>-<script>- <![CDATA[- ... unescaped script content ...- ]]>- </script>-</pre>-</div>--<p><code>CDATA</code> sections are recognized by the XML-processor and appear as nodes in the Document Object Model, see-<a href=-"http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-E067D597">-Section 1.3</a> of the DOM Level 1 Recommendation <a href=-"#ref-dom">[DOM]</a>.</p>--<p>An alternative is to use external script and style-documents.</p>--<h2><a name="h-4.9" id="h-4.9">4.9 SGML exclusions</a></h2>--<p>SGML gives the writer of a DTD the ability to exclude specific-elements from being contained within an element. Such-prohibitions (called "exclusions") are not possible in XML.</p>--<p>For example, the HTML 4 Strict DTD forbids the nesting of an-'<code>a</code>' element within another '<code>a</code>' element-to any descendant depth. It is not possible to spell out such-prohibitions in XML. Even though these prohibitions cannot be-defined in the DTD, certain elements should not be nested. A-summary of such elements and the elements that should not be-nested in them is found in the normative <a href="#prohibitions">-Appendix B</a>.</p>--<h2><a name="h-4.10" id="h-4.10">4.10 The elements with 'id' and 'name'-attributes</a></h2>--<p>HTML 4 defined the <code>name</code> attribute for the elements-<code>a</code>,-<code>applet</code>, <code>form</code>, <code>frame</code>,-<code>iframe</code>, <code>img</code>, and <code>map</code>.-HTML 4 also introduced-the <code>id</code> attribute. Both of these attributes are designed to be-used as fragment identifiers.</p>-<p>In XML, fragment identifiers are of type <code>ID</code>, and-there can only be a single attribute of type <code>ID</code> per element.-Therefore, in XHTML 1.0 the <code>id</code>-attribute is defined to be of type <code>ID</code>. In order to-ensure that XHTML 1.0 documents are well-structured XML documents, XHTML 1.0-documents MUST use the <code>id</code> attribute when defining fragment-identifiers, even on elements that historically have also had a-<code>name</code> attribute.-See the <a href="#guidelines">HTML Compatibility-Guidelines</a> for information on ensuring such anchors are backwards-compatible when serving XHTML documents as media type <code>text/html</code>.-</p>-<p>Note that in XHTML 1.0, the <code>name</code> attribute of these-elements is formally deprecated, and will be removed in a-subsequent version of XHTML.</p>--<!--OddPage-->-<h1><a name="issues" id="issues">5. Compatibility Issues</a></h1>--<p>Although there is no requirement for XHTML 1.0 documents to be-compatible with existing user agents, in practice this is easy to-accomplish. Guidelines for creating compatible documents can be-found in <a href="#guidelines">Appendix C</a>.</p>--<h2><a name="media" id="media">5.1 Internet Media Type</a></h2>-<p>As of the publication of this recommendation, the general-recommended MIME labeling for XML-based applications-has yet to be resolved.</p>--<p>However, XHTML Documents which follow the guidelines set forth-in <a href="#guidelines">Appendix C</a>, "HTML Compatibility Guidelines" may be-labeled with the Internet Media Type "text/html", as they-are compatible with most HTML browsers. This document-makes no recommendation about MIME labeling of other-XHTML documents.</p>--<!--OddPage-->-<h1><a name="future" id="future">6. Future Directions</a></h1>--<p>XHTML 1.0 provides the basis for a family of document types-that will extend and subset XHTML, in order to support a wide-range of new devices and applications, by defining modules and-specifying a mechanism for combining these modules. This-mechanism will enable the extension and sub-setting of XHTML 1.0-in a uniform way through the definition of new modules.</p>--<h2><a name="mods" id="mods">6.1 Modularizing HTML</a></h2>--<p>As the use of XHTML moves from the traditional desktop user-agents to other platforms, it is clear that not all of the XHTML-elements will be required on all platforms. For example a hand-held device or a cell-phone may only support a subset of XHTML-elements.</p>--<p>The process of modularization breaks XHTML up into a series of-smaller element sets. These elements can then be recombined to-meet the needs of different communities.</p>--<p>These modules will be defined in a later W3C document.</p>--<h2><a name="extensions" id="extensions">6.2 Subsets and-Extensibility</a></h2>--<p>Modularization brings with it several advantages:</p>--<ul>-<li>-<p>It provides a formal mechanism for sub-setting XHTML.</p>-</li>--<li>-<p>It provides a formal mechanism for extending XHTML.</p>-</li>--<li>-<p>It simplifies the transformation between document types.</p>-</li>--<li>-<p>It promotes the reuse of modules in new document types.</p>-</li>-</ul>--<h2><a name="profiles" id="profiles">6.3 Document-Profiles</a></h2>--<p>A document profile specifies the syntax and semantics of a set-of documents. Conformance to a document profile provides a basis-for interoperability guarantees. The document profile specifies-the facilities required to process documents of that type, e.g.-which image formats can be used, levels of scripting, style sheet-support, and so on.</p>--<p>For product designers this enables various groups to define-their own standard profile.</p>--<p>For authors this will obviate the need to write several-different versions of documents for different clients.</p>--<p>For special groups such as chemists, medical doctors, or-mathematicians this allows a special profile to be built using-standard HTML elements plus a group of elements geared to the-specialist's needs.</p>--<!--OddPage-->-<h1><a name="appendices" id="appendices"></a>-<a name="dtds" id="dtds">Appendix A. DTDs</a></h1>--<p><b>This appendix is normative.</b></p>--<p>These DTDs and entity sets form a normative part of this-specification. The complete set of DTD files together with an XML-declaration and SGML Open Catalog is included in the <a href=-"xhtml1.zip">zip file</a> for this specification.</p>--<h2><a name="h-A1" id="h-A1">A.1 Document Type-Definitions</a></h2>--<p>These DTDs approximate the HTML 4 DTDs. It is likely that-when the DTDs are modularized, a method of DTD construction will-be employed that corresponds more closely to HTML 4.</p>--<ul>-<li>-<p><a href="DTD/xhtml1-strict.dtd" type="text/plain">-XHTML-1.0-Strict</a></p>-</li>--<li>-<p><a href="DTD/xhtml1-transitional.dtd" type="text/plain">-XHTML-1.0-Transitional</a></p>-</li>--<li>-<p><a href="DTD/xhtml1-frameset.dtd" type="text/plain">-XHTML-1.0-Frameset</a></p>-</li>-</ul>--<h2><a name="h-A2" id="h-A2">A.2 Entity Sets</a></h2>--<p>The XHTML entity sets are the same as for HTML 4, but have-been modified to be valid XML 1.0 entity declarations. Note the-entity for the Euro currency sign (<code>&euro;</code> or-<code>&#8364;</code> or <code>&#x20AC;</code>) is defined-as part of the special characters.</p>--<ul>-<li>-<p><a href="DTD/xhtml-lat1.ent">Latin-1 characters</a></p>-</li>--<li>-<p><a href="DTD/xhtml-special.ent">Special characters</a></p>-</li>--<li>-<p><a href="DTD/xhtml-symbol.ent">Symbols</a></p>-</li>-</ul>--<!--OddPage-->-<h1><a name="prohibitions" id="prohibitions">Appendix B. Element-Prohibitions</a></h1>--<p><b>This appendix is normative.</b></p>--<p>The following elements have prohibitions on which elements-they can contain (see <a href="#h-4.9">Section 4.9</a>). This-prohibition applies to all depths of nesting, i.e. it contains-all the descendant elements.</p>--<dl><dt><code class="tag">a</code></dt>-<dd>-cannot contain other <code>a</code> elements.</dd>-<dt><code class="tag">pre</code></dt>-<dd>cannot contain the <code>img</code>, <code>object</code>,-<code>big</code>, <code>small</code>, <code>sub</code>, or <code>-sup</code> elements.</dd>--<dt><code class="tag">button</code></dt>-<dd>cannot contain the <code>input</code>, <code>select</code>,-<code>textarea</code>, <code>label</code>, <code>button</code>,-<code>form</code>, <code>fieldset</code>, <code>iframe</code> or-<code>isindex</code> elements.</dd>-<dt><code class="tag">label</code></dt>-<dd>cannot contain other <code class="tag">label</code> elements.</dd>-<dt><code class="tag">form</code></dt>-<dd>cannot contain other <code>form</code> elements.</dd>-</dl>--<!--OddPage-->-<h1><a name="guidelines" id="guidelines">Appendix C.-HTML Compatibility Guidelines</a></h1>--<p><b>This appendix is informative.</b></p>--<p>This appendix summarizes design guidelines for authors who-wish their XHTML documents to render on existing HTML user-agents.</p>--<h2>C.1 Processing Instructions</h2>-<p>Be aware that processing instructions are rendered on some-user agents. However, also note that when the XML declaration is not included-in a document, the document can only use the default character encodings UTF-8-or UTF-16.</p>--<h2>C.2 Empty Elements</h2>-<p>Include a space before the trailing <code>/</code> and <code>-></code> of empty elements, e.g. <code class="greenmono">-<br /></code>, <code class="greenmono">-<hr /></code> and <code class="greenmono"><img-src="karen.jpg" alt="Karen" /></code>. Also, use the-minimized tag syntax for empty elements, e.g. <code class=-"greenmono"><br /></code>, as the alternative syntax <code-class="greenmono"><br></br></code> allowed by XML-gives uncertain results in many existing user agents.</p>--<h2>C.3 Element Minimization and Empty Element Content</h2>-<p>Given an empty instance of an element whose content model is-not <code>EMPTY</code> (for example, an empty title or paragraph)-do not use the minimized form (e.g. use <code class="greenmono">-<p> </p></code> and not <code class="greenmono">-<p /></code>).</p>--<h2>C.4 Embedded Style Sheets and Scripts</h2>-<p>Use external style sheets if your style sheet uses <code>-<</code> or <code>&</code> or <code>]]></code> or <code>--</code>. Use-external scripts if your script uses <code><</code> or <code>-&</code> or <code>]]></code> or <code>--</code>. Note that XML parsers-are permitted to silently remove the contents of comments. Therefore, the historical-practice of "hiding" scripts and style sheets within comments to make the-documents backward compatible is likely to not work as expected in XML-based-implementations.</p>--<h2>C.5 Line Breaks within Attribute Values</h2>-<p>Avoid line breaks and multiple whitespace characters within-attribute values. These are handled inconsistently by user-agents.</p>--<h2>C.6 Isindex</h2>-<p>Don't include more than one <code>isindex</code> element in-the document <code>head</code>. The <code>isindex</code> element-is deprecated in favor of the <code>input</code> element.</p>--<h2>C.7 The <code>lang</code> and <code>xml:lang</code> Attributes</h2>-<p>Use both the <code>lang</code> and <code>xml:lang</code>-attributes when specifying the language of an element. The value-of the <code>xml:lang</code> attribute takes precedence.</p>--<h2>C.8 Fragment Identifiers</h2>-<p>In XML, <abbr title="Uniform Resource Identifiers">URIs</abbr> [<a href="#ref-rfc2396">RFC2396</a>] that end with fragment identifiers of the form-<code>"#foo"</code> do not refer to elements with an attribute-<code>name="foo"</code>; rather, they refer to elements with an-attribute defined to be of type <code>ID</code>, e.g., the <code>-id</code> attribute in HTML 4. Many existing HTML clients don't-support the use of <code>ID</code>-type attributes in this way,-so identical values may be supplied for both of these attributes to ensure-maximum forward and backward compatibility (e.g., <code class=-"greenmono"><a id="foo" name="foo">...</a></code>).</p>--<p>Further, since the set of-legal values for attributes of type <code>ID</code> is much smaller than-for those of type <code>CDATA</code>, the type of the <code>name</code>-attribute has been changed to <code>NMTOKEN</code>. This attribute is-constrained such that it can only have the same values as type-<code>ID</code>, or as the <code>Name</code> production in XML 1.0 Section-2.5, production 5. Unfortunately, this constraint cannot be expressed in the-XHTML 1.0 DTDs. Because of this change, care must be taken when-converting existing HTML documents. The values of these attributes-must be unique within the document, valid, and any references to these-fragment identifiers (both-internal and external) must be updated should the values be changed during-conversion.</p>-<p>Finally, note that XHTML 1.0 has deprecated the-<code>name</code> attribute of the <code>a</code>, <code>applet</code>, <code>form</code>, <code>frame</code>, <code>iframe</code>, <code>img</code>, and <code>map</code>-elements, and it will be-removed from XHTML in subsequent versions.</p>--<h2>C.9 Character Encoding</h2>-<p>To specify a character encoding in the document, use both the-encoding attribute specification on the xml declaration (e.g.-<code class="greenmono"><?xml version="1.0"-encoding="EUC-JP"?></code>) and a meta http-equiv statement-(e.g. <code class="greenmono"><meta http-equiv="Content-type"-content='text/html; charset="EUC-JP"' /></code>). The-value of the encoding attribute of the xml processing instruction-takes precedence.</p>--<h2>C.10 Boolean Attributes</h2>-<p>Some HTML user agents are unable to interpret boolean-attributes when these appear in their full (non-minimized) form,-as required by XML 1.0. Note this problem doesn't affect user-agents compliant with HTML 4. The following attributes are-involved: <code>compact</code>, <code>nowrap</code>, <code>-ismap</code>, <code>declare</code>, <code>noshade</code>, <code>-checked</code>, <code>disabled</code>, <code>readonly</code>,-<code>multiple</code>, <code>selected</code>, <code>-noresize</code>, <code>defer</code>.</p>--<h2>C.11 Document Object Model and XHTML</h2>-<p>-The Document Object Model level 1 Recommendation [<a href="#ref-dom">DOM</a>]-defines document object model interfaces for XML and HTML 4. The HTML 4-document object model specifies that HTML element and attribute names are-returned in upper-case. The XML document object model specifies that-element and attribute names are returned in the case they are specified. In-XHTML 1.0, elements and attributes are specified in lower-case. This apparent difference can be-addressed in two ways:-</p>-<ol>-<li>Applications that access XHTML documents served as Internet media type-<code>text/html</code>-via the <abbr title="Document Object Model">DOM</abbr> can use the HTML DOM,-and can rely upon element and attribute names being returned in-upper-case from those interfaces.</li>-<li>Applications that access XHTML documents served as Internet media types-<code>text/xml</code> or <code>application/xml</code>-can also use the XML DOM. Elements and attributes will be returned in lower-case.-Also, some XHTML elements may or may-not appear-in the object tree because they are optional in the content model-(e.g. the <code>tbody</code> element within-<code>table</code>). This occurs because in HTML 4 some elements were-permitted to be minimized such that their start and end tags are both omitted-(an SGML feature).-This is not possible in XML. Rather than require document authors to insert-extraneous elements, XHTML has made the elements optional.-Applications need to adapt to this-accordingly.</li>-</ol>--<h2>C.12 Using Ampersands in Attribute Values</h2>-<p>-When an attribute value contains an ampersand, it must be expressed as a character-entity reference-(e.g. "<code>&amp;</code>"). For example, when the-<code>href</code> attribute-of the <code>a</code> element refers to a-CGI script that takes parameters, it must be expressed as-<code>http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=user</code>-rather than as-<code>http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user</code>.-</p>--<h2>C.13 Cascading Style Sheets (CSS) and XHTML</h2>--<p>The Cascading Style Sheets level 2 Recommendation [<a href="#ref-css2">CSS2</a>] defines style-properties which are applied to the parse tree of the HTML or XML-document. Differences in parsing will produce different visual or-aural results, depending on the selectors used. The following hints-will reduce this effect for documents which are served without-modification as both media types:</p>--<ol>-<li>-CSS style sheets for XHTML should use lower case element and-attribute names.</li>---<li>In tables, the tbody element will be inferred by the parser of an-HTML user agent, but not by the parser of an XML user agent. Therefore-you should always explicitly add a tbody element if it is referred to-in a CSS selector.</li>--<li>Within the XHTML name space, user agents are expected to-recognize the "id" attribute as an attribute of type ID.-Therefore, style sheets should be able to continue using the-shorthand "#" selector syntax even if the user agent does not read-the DTD.</li>--<li>Within the XHTML name space, user agents are expected to-recognize the "class" attribute. Therefore, style sheets should be-able to continue using the shorthand "." selector syntax.</li>--<li>-CSS defines different conformance rules for HTML and XML documents;-be aware that the HTML rules apply to XHTML documents delivered as-HTML and the XML rules apply to XHTML documents delivered as XML.</li>-</ol>-<!--OddPage-->-<h1><a name="acks" id="acks">Appendix D.-Acknowledgements</a></h1>--<p><b>This appendix is informative.</b></p>--<p>This specification was written with the participation of the-members of the W3C HTML working group:</p>--<dl>-<dd>Steven Pemberton, CWI (HTML Working Group Chair)<br />-Murray Altheim, Sun Microsystems<br />-Daniel Austin, AskJeeves (CNET: The Computer Network through July 1999)<br />-Frank Boumphrey, HTML Writers Guild<br />-John Burger, Mitre<br />-Andrew W. Donoho, IBM<br />-Sam Dooley, IBM<br />-Klaus Hofrichter, GMD<br />-Philipp Hoschka, W3C<br />-Masayasu Ishikawa, W3C<br />-Warner ten Kate, Philips Electronics<br />-Peter King, Phone.com<br />-Paula Klante, JetForm<br />-Shin'ichi Matsui, Panasonic (W3C visiting engineer through September 1999)<br />-Shane McCarron, Applied Testing and Technology (The Open Group through August-1999)<br />-Ann Navarro, HTML Writers Guild<br />-Zach Nies, Quark<br />-Dave Raggett, W3C/HP (W3C lead for HTML)<br />-Patrick Schmitz, Microsoft<br />-Sebastian Schnitzenbaumer, Stack Overflow<br />-Peter Stark, Phone.com<br />-Chris Wilson, Microsoft<br />-Ted Wugofski, Gateway 2000<br />-Dan Zigmond, WebTV Networks</dd>-</dl>--<!--OddPage-->-<h1><a name="refs" id="refs">Appendix E. References</a></h1>--<p><b>This appendix is informative.</b></p>--<dl>--<dt><a name="ref-css2" id="ref-css2"><b>[CSS2]</b></a></dt>--<dd><a href="http://www.w3.org/TR/1998/REC-CSS2-19980512">"Cascading Style Sheets, level 2 (CSS2) Specification"</a>, B.-Bos, H. W. Lie, C. Lilley, I. Jacobs, 12 May 1998.<br />-Latest version available at: <a href="http://www.w3.org/TR/REC-CSS2">-http://www.w3.org/TR/REC-CSS2</a></dd>--<dt><a name="ref-dom" id="ref-dom"><b>[DOM]</b></a></dt>--<dd><a href="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001">"Document Object Model (DOM) Level 1 Specification"</a>, Lauren-Wood <i>et al.</i>, 1 October 1998.<br />-Latest version available at: <a href="http://www.w3.org/TR/REC-DOM-Level-1">-http://www.w3.org/TR/REC-DOM-Level-1</a></dd>--<dt><a name="ref-html4" id="ref-html4"><b>[HTML]</b></a></dt>--<dd><a href="http://www.w3.org/TR/1999/REC-html401-19991224">"HTML 4.01 Specification"</a>, D. Raggett, A. Le Hors, I.-Jacobs, 24 December 1999.<br />-Latest version available at: <a href="http://www.w3.org/TR/html401">-http://www.w3.org/TR/html401</a></dd>--<dt><a name="ref-posix" id="ref-posix"><b>[POSIX.1]</b></a></dt>--<dd>"ISO/IEC 9945-1:1990 Information Technology - Portable-Operating System Interface (POSIX) - Part 1: System Application-Program Interface (API) [C Language]", Institute of Electrical-and Electronics Engineers, Inc, 1990.</dd>--<dt><a name="ref-rfc2046" id="ref-rfc2046"><b>-[RFC2046]</b></a></dt>--<dd><a href="http://www.ietf.org/rfc/rfc2046.txt">"RFC2046: Multipurpose Internet Mail Extensions (MIME) Part-Two: Media Types"</a>, N. Freed and N. Borenstein, November-1996.<br />-Available at <a href="http://www.ietf.org/rfc/rfc2046.txt">-http://www.ietf.org/rfc/rfc2046.txt</a>. Note that this RFC-obsoletes RFC1521, RFC1522, and RFC1590.</dd>--<dt><a name="ref-rfc2119" id="ref-rfc2119"><b>-[RFC2119]</b></a></dt>--<dd><a href="http://www.ietf.org/rfc/rfc2119.txt">"RFC2119: Key words for use in RFCs to Indicate Requirement-Levels"</a>, S. Bradner, March 1997.<br />-Available at: <a href="http://www.ietf.org/rfc/rfc2119.txt">-http://www.ietf.org/rfc/rfc2119.txt</a></dd>--<dt><a name="ref-rfc2376" id="ref-rfc2376"><b>-[RFC2376]</b></a></dt>--<dd><a href="http://www.ietf.org/rfc/rfc2376.txt">"RFC2376: XML Media Types"</a>, E. Whitehead, M. Murata, July-1998.<br />-Available at: <a href="http://www.ietf.org/rfc/rfc2376.txt">-http://www.ietf.org/rfc/rfc2376.txt</a></dd>--<dt><a name="ref-rfc2396" id="ref-rfc2396"><b>-[RFC2396]</b></a></dt>--<dd><a href="http://www.ietf.org/rfc/rfc2396.txt">"RFC2396: Uniform Resource Identifiers (URI): Generic-Syntax"</a>, T. Berners-Lee, R. Fielding, L. Masinter, August-1998.<br />-This document updates RFC1738 and RFC1808.<br />-Available at: <a href="http://www.ietf.org/rfc/rfc2396.txt">-http://www.ietf.org/rfc/rfc2396.txt</a></dd>--<dt><a name="ref-xml" id="ref-xml"><b>[XML]</b></a></dt>--<dd><a href="http://www.w3.org/TR/1998/REC-xml-19980210">"Extensible Markup Language (XML) 1.0 Specification"</a>, T.-Bray, J. Paoli, C. M. Sperberg-McQueen, 10 February 1998.<br />-Latest version available at: <a href="http://www.w3.org/TR/REC-xml">-http://www.w3.org/TR/REC-xml</a></dd>--<dt><a name="ref-xmlns" id="ref-xmlns"><b>[XMLNAMES]</b></a></dt>--<dd><a href="http://www.w3.org/TR/1999/REC-xml-names-19990114">"Namespaces in XML"</a>, T. Bray, D. Hollander, A. Layman, 14-January 1999.<br />-XML namespaces provide a simple method for qualifying names used-in XML documents by associating them with namespaces identified-by URI.<br />-Latest version available at: <a href="http://www.w3.org/TR/REC-xml-names">-http://www.w3.org/TR/REC-xml-names</a></dd>--</dl>-<p><a href="http://www.w3.org/WAI/WCAG1AAA-Conformance"-title="Explanation of Level Triple-A Conformance">-<img height="32" width="88"-src="http://www.w3.org/WAI/wcag1AAA.gif"-alt="Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0" /></a></p>-<div class="navbar">- <hr />- <a href="#toc">table of contents</a>-</div>-</body>-</html>-
− examples/xhtml/xhtml1-frameset.dtd
@@ -1,1225 +0,0 @@-<!--- Extensible HTML version 1.0 Frameset DTD-- This is the same as HTML 4.0 Frameset except for- changes due to the differences between XML and SGML.-- Namespace = http://www.w3.org/1999/xhtml-- For further information, see: http://www.w3.org/TR/xhtml1-- Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),- All Rights Reserved. -- This DTD module is identified by the PUBLIC and SYSTEM identifiers:-- PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"- SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"-- $Revision: 1.1 $- $Date: 2002/10/01 13:47:08 $---->--<!--================ Character mnemonic entities =========================-->--<!ENTITY % HTMLlat1 PUBLIC- "-//W3C//ENTITIES Latin 1 for XHTML//EN"- "xhtml-lat1.ent">-%HTMLlat1;--<!ENTITY % HTMLsymbol PUBLIC- "-//W3C//ENTITIES Symbols for XHTML//EN"- "xhtml-symbol.ent">-%HTMLsymbol;--<!ENTITY % HTMLspecial PUBLIC- "-//W3C//ENTITIES Special for XHTML//EN"- "xhtml-special.ent">-%HTMLspecial;--<!--================== Imported Names ====================================-->--<!ENTITY % ContentType "CDATA">- <!-- media type, as per [RFC2045] -->--<!ENTITY % ContentTypes "CDATA">- <!-- comma-separated list of media types, as per [RFC2045] -->--<!ENTITY % Charset "CDATA">- <!-- a character encoding, as per [RFC2045] -->--<!ENTITY % Charsets "CDATA">- <!-- a space separated list of character encodings, as per [RFC2045] -->--<!ENTITY % LanguageCode "NMTOKEN">- <!-- a language code, as per [RFC1766] -->--<!ENTITY % Character "CDATA">- <!-- a single character from [ISO10646] -->--<!ENTITY % Number "CDATA">- <!-- one or more digits -->--<!ENTITY % LinkTypes "CDATA">- <!-- space-separated list of link types -->--<!ENTITY % MediaDesc "CDATA">- <!-- single or comma-separated list of media descriptors -->--<!ENTITY % URI "CDATA">- <!-- a Uniform Resource Identifier, see [RFC2396] -->--<!ENTITY % UriList "CDATA">- <!-- a space separated list of Uniform Resource Identifiers -->--<!ENTITY % Datetime "CDATA">- <!-- date and time information. ISO date format -->--<!ENTITY % Script "CDATA">- <!-- script expression -->--<!ENTITY % StyleSheet "CDATA">- <!-- style sheet data -->--<!ENTITY % Text "CDATA">- <!-- used for titles etc. -->--<!ENTITY % FrameTarget "NMTOKEN">- <!-- render in this frame -->--<!ENTITY % Length "CDATA">- <!-- nn for pixels or nn% for percentage length -->--<!ENTITY % MultiLength "CDATA">- <!-- pixel, percentage, or relative -->--<!ENTITY % MultiLengths "CDATA">- <!-- comma-separated list of MultiLength -->--<!ENTITY % Pixels "CDATA">- <!-- integer representing length in pixels -->--<!-- these are used for image maps -->--<!ENTITY % Shape "(rect|circle|poly|default)">--<!ENTITY % Coords "CDATA">- <!-- comma separated list of lengths -->--<!-- used for object, applet, img, input and iframe -->-<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">--<!-- a color using sRGB: #RRGGBB as Hex values -->-<!ENTITY % Color "CDATA">--<!-- There are also 16 widely known color names with their sRGB values:-- Black = #000000 Green = #008000- Silver = #C0C0C0 Lime = #00FF00- Gray = #808080 Olive = #808000- White = #FFFFFF Yellow = #FFFF00- Maroon = #800000 Navy = #000080- Red = #FF0000 Blue = #0000FF- Purple = #800080 Teal = #008080- Fuchsia= #FF00FF Aqua = #00FFFF--->--<!--=================== Generic Attributes ===============================-->--<!-- core attributes common to most elements- id document-wide unique id- class space separated list of classes- style associated style info- title advisory title/amplification--->-<!ENTITY % coreattrs- "id ID #IMPLIED- class CDATA #IMPLIED- style %StyleSheet; #IMPLIED- title %Text; #IMPLIED"- >--<!-- internationalization attributes- lang language code (backwards compatible)- xml:lang language code (as per XML 1.0 spec)- dir direction for weak/neutral text--->-<!ENTITY % i18n- "lang %LanguageCode; #IMPLIED- xml:lang %LanguageCode; #IMPLIED- dir (ltr|rtl) #IMPLIED"- >--<!-- attributes for common UI events- onclick a pointer button was clicked- ondblclick a pointer button was double clicked- onmousedown a pointer button was pressed down- onmouseup a pointer button was released- onmousemove a pointer was moved onto the element- onmouseout a pointer was moved away from the element- onkeypress a key was pressed and released- onkeydown a key was pressed down- onkeyup a key was released--->-<!ENTITY % events- "onclick %Script; #IMPLIED- ondblclick %Script; #IMPLIED- onmousedown %Script; #IMPLIED- onmouseup %Script; #IMPLIED- onmouseover %Script; #IMPLIED- onmousemove %Script; #IMPLIED- onmouseout %Script; #IMPLIED- onkeypress %Script; #IMPLIED- onkeydown %Script; #IMPLIED- onkeyup %Script; #IMPLIED"- >--<!-- attributes for elements that can get the focus- accesskey accessibility key character- tabindex position in tabbing order- onfocus the element got the focus- onblur the element lost the focus--->-<!ENTITY % focus- "accesskey %Character; #IMPLIED- tabindex %Number; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED"- >--<!ENTITY % attrs "%coreattrs; %i18n; %events;">--<!-- text alignment for p, div, h1-h6. The default is- align="left" for ltr headings, "right" for rtl -->--<!ENTITY % TextAlign "align (left|center|right) #IMPLIED">--<!--=================== Text Elements ====================================-->--<!ENTITY % special- "br | span | bdo |object | applet | img | map | iframe">--<!ENTITY % fontstyle "tt | i | b | big | small | u- | s | strike |font | basefont">--<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |- samp | kbd | var | cite | abbr | acronym">--<!ENTITY % inline.forms "input | select | textarea | label | button">--<!-- these can occur at block or inline level -->-<!ENTITY % misc "ins | del | script | noscript">--<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">--<!-- %Inline; covers inline or "text-level" elements -->-<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">--<!--================== Block level elements ==============================-->--<!ENTITY % heading "h1|h2|h3|h4|h5|h6">-<!ENTITY % lists "ul | ol | dl | menu | dir">-<!ENTITY % blocktext "pre | hr | blockquote | address | center">--<!ENTITY % block- "p | %heading; | div | %lists; | %blocktext; | isindex | fieldset | table">--<!ENTITY % Block "(%block; | form | %misc;)*">--<!-- %Flow; mixes Block and Inline and is used for list items etc. -->-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">--<!--================== Content models for exclusions =====================-->--<!-- a elements use %Inline; excluding a -->--<!ENTITY % a.content- "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">--<!-- pre uses %Inline excluding img, object, applet, big, small,- sub, sup, font, or basefont -->--<!ENTITY % pre.content- "(#PCDATA | a | br | span | bdo | map | tt | i | b | u | s |- %phrase; | %inline.forms;)*">--<!-- form uses %Flow; excluding form -->--<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">--<!-- button uses %Flow; but excludes a, form, form controls, iframe -->--<!ENTITY % button.content- "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |- table | br | span | bdo | object | applet | img | map |- %fontstyle; | %phrase; | %misc;)*">--<!--================ Document Structure ==================================-->--<!-- the namespace URI designates the document profile -->--<!ELEMENT html (head, frameset)>-<!ATTLIST html- %i18n;- xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'- >--<!--================ Document Head =======================================-->--<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">--<!-- content model is %head.misc; combined with a single- title and an optional base element in any order -->--<!ELEMENT head (%head.misc;,- ((title, %head.misc;, (base, %head.misc;)?) |- (base, %head.misc;, (title, %head.misc;))))>--<!ATTLIST head- %i18n;- profile %URI; #IMPLIED- >--<!-- The title element is not considered part of the flow of text.- It should be displayed, for example as the page header or- window title. Exactly one title is required per document.- -->-<!ELEMENT title (#PCDATA)>-<!ATTLIST title %i18n;>--<!-- document base URI -->--<!ELEMENT base EMPTY>-<!ATTLIST base- href %URI; #IMPLIED- target %FrameTarget; #IMPLIED- >--<!-- generic metainformation -->-<!ELEMENT meta EMPTY>-<!ATTLIST meta- %i18n;- http-equiv CDATA #IMPLIED- name CDATA #IMPLIED- content CDATA #REQUIRED- scheme CDATA #IMPLIED- >--<!--- Relationship values can be used in principle:-- a) for document specific toolbars/menus when used- with the link element in document head e.g.- start, contents, previous, next, index, end, help- b) to link to a separate style sheet (rel="stylesheet")- c) to make a link to a script (rel="script")- d) by stylesheets to control how collections of- html nodes are rendered into printed documents- e) to make a link to a printable version of this document- e.g. a PostScript or PDF version (rel="alternate" media="print")--->--<!ELEMENT link EMPTY>-<!ATTLIST link- %attrs;- charset %Charset; #IMPLIED- href %URI; #IMPLIED- hreflang %LanguageCode; #IMPLIED- type %ContentType; #IMPLIED- rel %LinkTypes; #IMPLIED- rev %LinkTypes; #IMPLIED- media %MediaDesc; #IMPLIED- target %FrameTarget; #IMPLIED- >--<!-- style info, which may include CDATA sections -->-<!ELEMENT style (#PCDATA)>-<!ATTLIST style- %i18n;- type %ContentType; #REQUIRED- media %MediaDesc; #IMPLIED- title %Text; #IMPLIED- xml:space (preserve) #FIXED 'preserve'- >--<!-- script statements, which may include CDATA sections -->-<!ELEMENT script (#PCDATA)>-<!ATTLIST script- charset %Charset; #IMPLIED- type %ContentType; #REQUIRED- language CDATA #IMPLIED- src %URI; #IMPLIED- defer (defer) #IMPLIED- xml:space (preserve) #FIXED 'preserve'- >--<!-- alternate content container for non script-based rendering -->--<!ELEMENT noscript %Flow;>-<!ATTLIST noscript- %attrs;- >--<!--======================= Frames =======================================-->--<!-- only one noframes element permitted per document -->--<!ELEMENT frameset (frameset|frame|noframes)*>-<!ATTLIST frameset- %coreattrs;- rows %MultiLengths; #IMPLIED- cols %MultiLengths; #IMPLIED- onload %Script; #IMPLIED- onunload %Script; #IMPLIED- >--<!-- reserved frame names start with "_" otherwise starts with letter -->--<!-- tiled window within frameset -->--<!ELEMENT frame EMPTY>-<!ATTLIST frame- %coreattrs;- longdesc %URI; #IMPLIED- name NMTOKEN #IMPLIED- src %URI; #IMPLIED- frameborder (1|0) "1"- marginwidth %Pixels; #IMPLIED- marginheight %Pixels; #IMPLIED- noresize (noresize) #IMPLIED- scrolling (yes|no|auto) "auto"- >--<!-- inline subwindow -->--<!ELEMENT iframe %Flow;>-<!ATTLIST iframe- %coreattrs;- longdesc %URI; #IMPLIED- name NMTOKEN #IMPLIED- src %URI; #IMPLIED- frameborder (1|0) "1"- marginwidth %Pixels; #IMPLIED- marginheight %Pixels; #IMPLIED- scrolling (yes|no|auto) "auto"- align %ImgAlign; #IMPLIED- height %Length; #IMPLIED- width %Length; #IMPLIED- >--<!-- alternate content container for non frame-based rendering -->--<!ELEMENT noframes (body)>-<!ATTLIST noframes- %attrs;- >--<!--=================== Document Body ====================================-->--<!ELEMENT body %Flow;>-<!ATTLIST body- %attrs;- onload %Script; #IMPLIED- onunload %Script; #IMPLIED- background %URI; #IMPLIED- bgcolor %Color; #IMPLIED- text %Color; #IMPLIED- link %Color; #IMPLIED- vlink %Color; #IMPLIED- alink %Color; #IMPLIED- >--<!ELEMENT div %Flow;> <!-- generic language/style container -->-<!ATTLIST div- %attrs;- %TextAlign;- >--<!--=================== Paragraphs =======================================-->--<!ELEMENT p %Inline;>-<!ATTLIST p- %attrs;- %TextAlign;- >--<!--=================== Headings =========================================-->--<!--- There are six levels of headings from h1 (the most important)- to h6 (the least important).--->--<!ELEMENT h1 %Inline;>-<!ATTLIST h1- %attrs;- %TextAlign;- >--<!ELEMENT h2 %Inline;>-<!ATTLIST h2- %attrs;- %TextAlign;- >--<!ELEMENT h3 %Inline;>-<!ATTLIST h3- %attrs;- %TextAlign;- >--<!ELEMENT h4 %Inline;>-<!ATTLIST h4- %attrs;- %TextAlign;- >--<!ELEMENT h5 %Inline;>-<!ATTLIST h5- %attrs;- %TextAlign;- >--<!ELEMENT h6 %Inline;>-<!ATTLIST h6- %attrs;- %TextAlign;- >--<!--=================== Lists ============================================-->--<!-- Unordered list bullet styles -->--<!ENTITY % ULStyle "(disc|square|circle)">--<!-- Unordered list -->--<!ELEMENT ul (li)+>-<!ATTLIST ul- %attrs;- type %ULStyle; #IMPLIED- compact (compact) #IMPLIED- >--<!-- Ordered list numbering style-- 1 arabic numbers 1, 2, 3, ...- a lower alpha a, b, c, ...- A upper alpha A, B, C, ...- i lower roman i, ii, iii, ...- I upper roman I, II, III, ...-- The style is applied to the sequence number which by default- is reset to 1 for the first list item in an ordered list.--->-<!ENTITY % OLStyle "CDATA">--<!-- Ordered (numbered) list -->--<!ELEMENT ol (li)+>-<!ATTLIST ol- %attrs;- type %OLStyle; #IMPLIED- compact (compact) #IMPLIED- start %Number; #IMPLIED- >--<!-- single column list (DEPRECATED) --> -<!ELEMENT menu (li)+>-<!ATTLIST menu- %attrs;- compact (compact) #IMPLIED- >--<!-- multiple column list (DEPRECATED) --> -<!ELEMENT dir (li)+>-<!ATTLIST dir- %attrs;- compact (compact) #IMPLIED- >--<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->-<!ENTITY % LIStyle "CDATA">--<!-- list item -->--<!ELEMENT li %Flow;>-<!ATTLIST li- %attrs;- type %LIStyle; #IMPLIED- value %Number; #IMPLIED- >--<!-- definition lists - dt for term, dd for its definition -->--<!ELEMENT dl (dt|dd)+>-<!ATTLIST dl- %attrs;- compact (compact) #IMPLIED- >--<!ELEMENT dt %Inline;>-<!ATTLIST dt- %attrs;- >--<!ELEMENT dd %Flow;>-<!ATTLIST dd- %attrs;- >--<!--=================== Address ==========================================-->--<!-- information on author -->--<!ELEMENT address %Inline;>-<!ATTLIST address- %attrs;- >--<!--=================== Horizontal Rule ==================================-->--<!ELEMENT hr EMPTY>-<!ATTLIST hr- %attrs;- align (left|center|right) #IMPLIED- noshade (noshade) #IMPLIED- size %Pixels; #IMPLIED- width %Length; #IMPLIED- >--<!--=================== Preformatted Text ================================-->--<!-- content is %Inline; excluding - "img|object|applet|big|small|sub|sup|font|basefont" -->--<!ELEMENT pre %pre.content;>-<!ATTLIST pre- %attrs;- width %Number; #IMPLIED- xml:space (preserve) #FIXED 'preserve'- >--<!--=================== Block-like Quotes ================================-->--<!ELEMENT blockquote %Flow;>-<!ATTLIST blockquote- %attrs;- cite %URI; #IMPLIED- >--<!--=================== Text alignment ===================================-->--<!-- center content -->-<!ELEMENT center %Flow;>-<!ATTLIST center- %attrs;- >--<!--=================== Inserted/Deleted Text ============================-->---<!--- ins/del are allowed in block and inline content, but its- inappropriate to include block content within an ins element- occurring in inline content.--->-<!ELEMENT ins %Flow;>-<!ATTLIST ins- %attrs;- cite %URI; #IMPLIED- datetime %Datetime; #IMPLIED- >--<!ELEMENT del %Flow;>-<!ATTLIST del- %attrs;- cite %URI; #IMPLIED- datetime %Datetime; #IMPLIED- >--<!--================== The Anchor Element ================================-->--<!-- content is %Inline; except that anchors shouldn't be nested -->--<!ELEMENT a %a.content;>-<!ATTLIST a- %attrs;- charset %Charset; #IMPLIED- type %ContentType; #IMPLIED- name NMTOKEN #IMPLIED- href %URI; #IMPLIED- hreflang %LanguageCode; #IMPLIED- rel %LinkTypes; #IMPLIED- rev %LinkTypes; #IMPLIED- accesskey %Character; #IMPLIED- shape %Shape; "rect"- coords %Coords; #IMPLIED- tabindex %Number; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- target %FrameTarget; #IMPLIED- >--<!--===================== Inline Elements ================================-->--<!ELEMENT span %Inline;> <!-- generic language/style container -->-<!ATTLIST span- %attrs;- >--<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->-<!ATTLIST bdo- %coreattrs;- %events;- lang %LanguageCode; #IMPLIED- xml:lang %LanguageCode; #IMPLIED- dir (ltr|rtl) #REQUIRED- >--<!ELEMENT br EMPTY> <!-- forced line break -->-<!ATTLIST br- %coreattrs;- clear (left|all|right|none) "none"- >--<!ELEMENT em %Inline;> <!-- emphasis -->-<!ATTLIST em %attrs;>--<!ELEMENT strong %Inline;> <!-- strong emphasis -->-<!ATTLIST strong %attrs;>--<!ELEMENT dfn %Inline;> <!-- definitional -->-<!ATTLIST dfn %attrs;>--<!ELEMENT code %Inline;> <!-- program code -->-<!ATTLIST code %attrs;>--<!ELEMENT samp %Inline;> <!-- sample -->-<!ATTLIST samp %attrs;>--<!ELEMENT kbd %Inline;> <!-- something user would type -->-<!ATTLIST kbd %attrs;>--<!ELEMENT var %Inline;> <!-- variable -->-<!ATTLIST var %attrs;>--<!ELEMENT cite %Inline;> <!-- citation -->-<!ATTLIST cite %attrs;>--<!ELEMENT abbr %Inline;> <!-- abbreviation -->-<!ATTLIST abbr %attrs;>--<!ELEMENT acronym %Inline;> <!-- acronym -->-<!ATTLIST acronym %attrs;>--<!ELEMENT q %Inline;> <!-- inlined quote -->-<!ATTLIST q- %attrs;- cite %URI; #IMPLIED- >--<!ELEMENT sub %Inline;> <!-- subscript -->-<!ATTLIST sub %attrs;>--<!ELEMENT sup %Inline;> <!-- superscript -->-<!ATTLIST sup %attrs;>--<!ELEMENT tt %Inline;> <!-- fixed pitch font -->-<!ATTLIST tt %attrs;>--<!ELEMENT i %Inline;> <!-- italic font -->-<!ATTLIST i %attrs;>--<!ELEMENT b %Inline;> <!-- bold font -->-<!ATTLIST b %attrs;>--<!ELEMENT big %Inline;> <!-- bigger font -->-<!ATTLIST big %attrs;>--<!ELEMENT small %Inline;> <!-- smaller font -->-<!ATTLIST small %attrs;>--<!ELEMENT u %Inline;> <!-- underline -->-<!ATTLIST u %attrs;>--<!ELEMENT s %Inline;> <!-- strike-through -->-<!ATTLIST s %attrs;>--<!ELEMENT strike %Inline;> <!-- strike-through -->-<!ATTLIST strike %attrs;>--<!ELEMENT basefont EMPTY> <!-- base font size -->-<!ATTLIST basefont- id ID #IMPLIED- size CDATA #REQUIRED- color %Color; #IMPLIED- face CDATA #IMPLIED- >--<!ELEMENT font %Inline;> <!-- local change to font -->-<!ATTLIST font- %coreattrs;- %i18n;- size CDATA #IMPLIED- color %Color; #IMPLIED- face CDATA #IMPLIED- >--<!--==================== Object ======================================-->-<!--- object is used to embed objects as part of HTML pages.- param elements should precede other content. Parameters- can also be expressed as attribute/value pairs on the- object element itself when brevity is desired.--->--<!ELEMENT object (#PCDATA | param | %block; | form |%inline; | %misc;)*>-<!ATTLIST object- %attrs;- declare (declare) #IMPLIED- classid %URI; #IMPLIED- codebase %URI; #IMPLIED- data %URI; #IMPLIED- type %ContentType; #IMPLIED- codetype %ContentType; #IMPLIED- archive %UriList; #IMPLIED- standby %Text; #IMPLIED- height %Length; #IMPLIED- width %Length; #IMPLIED- usemap %URI; #IMPLIED- name NMTOKEN #IMPLIED- tabindex %Number; #IMPLIED- align %ImgAlign; #IMPLIED- border %Pixels; #IMPLIED- hspace %Pixels; #IMPLIED- vspace %Pixels; #IMPLIED- >--<!--- param is used to supply a named property value.- In XML it would seem natural to follow RDF and support an- abbreviated syntax where the param elements are replaced- by attribute value pairs on the object start tag.--->-<!ELEMENT param EMPTY>-<!ATTLIST param- id ID #IMPLIED- name CDATA #REQUIRED- value CDATA #IMPLIED- valuetype (data|ref|object) "data"- type %ContentType; #IMPLIED- >--<!--=================== Java applet ==================================-->-<!--- One of code or object attributes must be present.- Place param elements before other content.--->-<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>-<!ATTLIST applet- %coreattrs;- codebase %URI; #IMPLIED- archive CDATA #IMPLIED- code CDATA #IMPLIED- object CDATA #IMPLIED- alt %Text; #IMPLIED- name NMTOKEN #IMPLIED- width %Length; #REQUIRED- height %Length; #REQUIRED- align %ImgAlign; #IMPLIED- hspace %Pixels; #IMPLIED- vspace %Pixels; #IMPLIED- >--<!--=================== Images ===========================================-->--<!--- To avoid accessibility problems for people who aren't- able to see the image, you should provide a text- description using the alt and longdesc attributes.- In addition, avoid the use of server-side image maps.--->--<!ELEMENT img EMPTY>-<!ATTLIST img- %attrs;- src %URI; #REQUIRED- alt %Text; #REQUIRED- name NMTOKEN #IMPLIED- longdesc %URI; #IMPLIED- height %Length; #IMPLIED- width %Length; #IMPLIED- usemap %URI; #IMPLIED- ismap (ismap) #IMPLIED- align %ImgAlign; #IMPLIED- border %Pixels; #IMPLIED- hspace %Pixels; #IMPLIED- vspace %Pixels; #IMPLIED- >--<!-- usemap points to a map element which may be in this document- or an external document, although the latter is not widely supported -->--<!--================== Client-side image maps ============================-->--<!-- These can be placed in the same document or grouped in a- separate document although this isn't yet widely supported -->--<!ELEMENT map ((%block; | form | %misc;)+ | area+)>-<!ATTLIST map- %i18n;- %events;- id ID #REQUIRED- class CDATA #IMPLIED- style %StyleSheet; #IMPLIED- title %Text; #IMPLIED- name NMTOKEN #IMPLIED- >--<!ELEMENT area EMPTY>-<!ATTLIST area- %attrs;- shape %Shape; "rect"- coords %Coords; #IMPLIED- href %URI; #IMPLIED- nohref (nohref) #IMPLIED- alt %Text; #REQUIRED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- target %FrameTarget; #IMPLIED- >--<!--================ Forms ===============================================-->--<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->--<!ATTLIST form- %attrs;- action %URI; #REQUIRED- method (get|post) "get"- name NMTOKEN #IMPLIED- enctype %ContentType; "application/x-www-form-urlencoded"- onsubmit %Script; #IMPLIED- onreset %Script; #IMPLIED- accept %ContentTypes; #IMPLIED- accept-charset %Charsets; #IMPLIED- target %FrameTarget; #IMPLIED- >--<!--- Each label must not contain more than ONE field- Label elements shouldn't be nested.--->-<!ELEMENT label %Inline;>-<!ATTLIST label- %attrs;- for IDREF #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- >--<!ENTITY % InputType- "(text | password | checkbox |- radio | submit | reset |- file | hidden | image | button)"- >--<!-- the name attribute is required for all but submit & reset -->--<!ELEMENT input EMPTY> <!-- form control -->-<!ATTLIST input- %attrs;- type %InputType; "text"- name CDATA #IMPLIED- value CDATA #IMPLIED- checked (checked) #IMPLIED- disabled (disabled) #IMPLIED- readonly (readonly) #IMPLIED- size CDATA #IMPLIED- maxlength %Number; #IMPLIED- src %URI; #IMPLIED- alt CDATA #IMPLIED- usemap %URI; #IMPLIED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- onselect %Script; #IMPLIED- onchange %Script; #IMPLIED- accept %ContentTypes; #IMPLIED- align %ImgAlign; #IMPLIED- >--<!ELEMENT select (optgroup|option)+> <!-- option selector -->-<!ATTLIST select- %attrs;- name CDATA #IMPLIED- size %Number; #IMPLIED- multiple (multiple) #IMPLIED- disabled (disabled) #IMPLIED- tabindex %Number; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- onchange %Script; #IMPLIED- >--<!ELEMENT optgroup (option)+> <!-- option group -->-<!ATTLIST optgroup- %attrs;- disabled (disabled) #IMPLIED- label %Text; #REQUIRED- >--<!ELEMENT option (#PCDATA)> <!-- selectable choice -->-<!ATTLIST option- %attrs;- selected (selected) #IMPLIED- disabled (disabled) #IMPLIED- label %Text; #IMPLIED- value CDATA #IMPLIED- >--<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->-<!ATTLIST textarea- %attrs;- name CDATA #IMPLIED- rows %Number; #REQUIRED- cols %Number; #REQUIRED- disabled (disabled) #IMPLIED- readonly (readonly) #IMPLIED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- onselect %Script; #IMPLIED- onchange %Script; #IMPLIED- >--<!--- The fieldset element is used to group form fields.- Only one legend element should occur in the content- and if present should only be preceded by whitespace.--->-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>-<!ATTLIST fieldset- %attrs;- >--<!ENTITY % LAlign "(top|bottom|left|right)">--<!ELEMENT legend %Inline;> <!-- fieldset label -->-<!ATTLIST legend- %attrs;- accesskey %Character; #IMPLIED- align %LAlign; #IMPLIED- >--<!--- Content is %Flow; excluding a, form, form controls, iframe---> -<!ELEMENT button %button.content;> <!-- push button -->-<!ATTLIST button- %attrs;- name CDATA #IMPLIED- value CDATA #IMPLIED- type (button|submit|reset) "submit"- disabled (disabled) #IMPLIED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- >--<!-- single-line text input control (DEPRECATED) -->-<!ELEMENT isindex EMPTY>-<!ATTLIST isindex- %coreattrs;- %i18n;- prompt %Text; #IMPLIED- >--<!--======================= Tables =======================================-->--<!-- Derived from IETF HTML table standard, see [RFC1942] -->--<!--- The border attribute sets the thickness of the frame around the- table. The default units are screen pixels.-- The frame attribute specifies which parts of the frame around- the table should be rendered. The values are not the same as- CALS to avoid a name clash with the valign attribute.--->-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">--<!--- The rules attribute defines which rules to draw between cells:-- If rules is absent then assume:- "none" if border is absent or border="0" otherwise "all"--->--<!ENTITY % TRules "(none | groups | rows | cols | all)">- -<!-- horizontal placement of table relative to document -->-<!ENTITY % TAlign "(left|center|right)">--<!-- horizontal alignment attributes for cell contents-- char alignment char, e.g. char=":"- charoff offset for alignment char--->-<!ENTITY % cellhalign- "align (left|center|right|justify|char) #IMPLIED- char %Character; #IMPLIED- charoff %Length; #IMPLIED"- >--<!-- vertical alignment attributes for cell contents -->-<!ENTITY % cellvalign- "valign (top|middle|bottom|baseline) #IMPLIED"- >--<!ELEMENT table- (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>-<!ELEMENT caption %Inline;>-<!ELEMENT thead (tr)+>-<!ELEMENT tfoot (tr)+>-<!ELEMENT tbody (tr)+>-<!ELEMENT colgroup (col)*>-<!ELEMENT col EMPTY>-<!ELEMENT tr (th|td)+>-<!ELEMENT th %Flow;>-<!ELEMENT td %Flow;>--<!ATTLIST table- %attrs;- summary %Text; #IMPLIED- width %Length; #IMPLIED- border %Pixels; #IMPLIED- frame %TFrame; #IMPLIED- rules %TRules; #IMPLIED- cellspacing %Length; #IMPLIED- cellpadding %Length; #IMPLIED- align %TAlign; #IMPLIED- bgcolor %Color; #IMPLIED- >--<!ENTITY % CAlign "(top|bottom|left|right)">--<!ATTLIST caption- %attrs;- align %CAlign; #IMPLIED- >--<!---colgroup groups a set of col elements. It allows you to group-several semantically related columns together.--->-<!ATTLIST colgroup- %attrs;- span %Number; "1"- width %MultiLength; #IMPLIED- %cellhalign;- %cellvalign;- >--<!--- col elements define the alignment properties for cells in- one or more columns.-- The width attribute specifies the width of the columns, e.g.-- width=64 width in screen pixels- width=0.5* relative width of 0.5-- The span attribute causes the attributes of one- col element to apply to more than one column.--->-<!ATTLIST col- %attrs;- span %Number; "1"- width %MultiLength; #IMPLIED- %cellhalign;- %cellvalign;- >--<!--- Use thead to duplicate headers when breaking table- across page boundaries, or for static headers when- tbody sections are rendered in scrolling panel.-- Use tfoot to duplicate footers when breaking table- across page boundaries, or for static footers when- tbody sections are rendered in scrolling panel.-- Use multiple tbody sections when rules are needed- between groups of table rows.--->-<!ATTLIST thead- %attrs;- %cellhalign;- %cellvalign;- >--<!ATTLIST tfoot- %attrs;- %cellhalign;- %cellvalign;- >--<!ATTLIST tbody- %attrs;- %cellhalign;- %cellvalign;- >--<!ATTLIST tr- %attrs;- %cellhalign;- %cellvalign;- bgcolor %Color; #IMPLIED- >--<!-- Scope is simpler than headers attribute for common tables -->-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">--<!-- th is for headers, td for data and for cells acting as both -->--<!ATTLIST th- %attrs;- abbr %Text; #IMPLIED- axis CDATA #IMPLIED- headers IDREFS #IMPLIED- scope %Scope; #IMPLIED- rowspan %Number; "1"- colspan %Number; "1"- %cellhalign;- %cellvalign;- nowrap (nowrap) #IMPLIED- bgcolor %Color; #IMPLIED- width %Pixels; #IMPLIED- height %Pixels; #IMPLIED- >--<!ATTLIST td- %attrs;- abbr %Text; #IMPLIED- axis CDATA #IMPLIED- headers IDREFS #IMPLIED- scope %Scope; #IMPLIED- rowspan %Number; "1"- colspan %Number; "1"- %cellhalign;- %cellvalign;- nowrap (nowrap) #IMPLIED- bgcolor %Color; #IMPLIED- width %Pixels; #IMPLIED- height %Pixels; #IMPLIED- >-
− examples/xhtml/xhtml1-strict.dtd
@@ -1,988 +0,0 @@-<!--- Extensible HTML version 1.0 Strict DTD-- This is the same as HTML 4.0 Strict except for- changes due to the differences between XML and SGML.-- Namespace = http://www.w3.org/1999/xhtml-- For further information, see: http://www.w3.org/TR/xhtml1-- Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),- All Rights Reserved. -- This DTD module is identified by the PUBLIC and SYSTEM identifiers:-- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"-- $Revision: 1.1 $- $Date: 2002/10/01 13:47:08 $---->--<!--================ Character mnemonic entities =========================-->--<!ENTITY % HTMLlat1 PUBLIC- "-//W3C//ENTITIES Latin 1 for XHTML//EN"- "xhtml-lat1.ent">-%HTMLlat1;--<!ENTITY % HTMLsymbol PUBLIC- "-//W3C//ENTITIES Symbols for XHTML//EN"- "xhtml-symbol.ent">-%HTMLsymbol;--<!ENTITY % HTMLspecial PUBLIC- "-//W3C//ENTITIES Special for XHTML//EN"- "xhtml-special.ent">-%HTMLspecial;--<!--================== Imported Names ====================================-->--<!ENTITY % ContentType "CDATA">- <!-- media type, as per [RFC2045] -->--<!ENTITY % ContentTypes "CDATA">- <!-- comma-separated list of media types, as per [RFC2045] -->--<!ENTITY % Charset "CDATA">- <!-- a character encoding, as per [RFC2045] -->--<!ENTITY % Charsets "CDATA">- <!-- a space separated list of character encodings, as per [RFC2045] -->--<!ENTITY % LanguageCode "NMTOKEN">- <!-- a language code, as per [RFC1766] -->--<!ENTITY % Character "CDATA">- <!-- a single character from [ISO10646] -->--<!ENTITY % Number "CDATA">- <!-- one or more digits -->--<!ENTITY % LinkTypes "CDATA">- <!-- space-separated list of link types -->--<!ENTITY % MediaDesc "CDATA">- <!-- single or comma-separated list of media descriptors -->--<!ENTITY % URI "CDATA">- <!-- a Uniform Resource Identifier, see [RFC2396] -->--<!ENTITY % UriList "CDATA">- <!-- a space separated list of Uniform Resource Identifiers -->--<!ENTITY % Datetime "CDATA">- <!-- date and time information. ISO date format -->--<!ENTITY % Script "CDATA">- <!-- script expression -->--<!ENTITY % StyleSheet "CDATA">- <!-- style sheet data -->--<!ENTITY % Text "CDATA">- <!-- used for titles etc. -->--<!ENTITY % FrameTarget "NMTOKEN">- <!-- render in this frame -->--<!ENTITY % Length "CDATA">- <!-- nn for pixels or nn% for percentage length -->--<!ENTITY % MultiLength "CDATA">- <!-- pixel, percentage, or relative -->--<!ENTITY % MultiLengths "CDATA">- <!-- comma-separated list of MultiLength -->--<!ENTITY % Pixels "CDATA">- <!-- integer representing length in pixels -->--<!-- these are used for image maps -->--<!ENTITY % Shape "(rect|circle|poly|default)">--<!ENTITY % Coords "CDATA">- <!-- comma separated list of lengths -->--<!--=================== Generic Attributes ===============================-->--<!-- core attributes common to most elements- id document-wide unique id- class space separated list of classes- style associated style info- title advisory title/amplification--->-<!ENTITY % coreattrs- "id ID #IMPLIED- class CDATA #IMPLIED- style %StyleSheet; #IMPLIED- title %Text; #IMPLIED"- >--<!-- internationalization attributes- lang language code (backwards compatible)- xml:lang language code (as per XML 1.0 spec)- dir direction for weak/neutral text--->-<!ENTITY % i18n- "lang %LanguageCode; #IMPLIED- xml:lang %LanguageCode; #IMPLIED- dir (ltr|rtl) #IMPLIED"- >--<!-- attributes for common UI events- onclick a pointer button was clicked- ondblclick a pointer button was double clicked- onmousedown a pointer button was pressed down- onmouseup a pointer button was released- onmousemove a pointer was moved onto the element- onmouseout a pointer was moved away from the element- onkeypress a key was pressed and released- onkeydown a key was pressed down- onkeyup a key was released--->-<!ENTITY % events- "onclick %Script; #IMPLIED- ondblclick %Script; #IMPLIED- onmousedown %Script; #IMPLIED- onmouseup %Script; #IMPLIED- onmouseover %Script; #IMPLIED- onmousemove %Script; #IMPLIED- onmouseout %Script; #IMPLIED- onkeypress %Script; #IMPLIED- onkeydown %Script; #IMPLIED- onkeyup %Script; #IMPLIED"- >--<!-- attributes for elements that can get the focus- accesskey accessibility key character- tabindex position in tabbing order- onfocus the element got the focus- onblur the element lost the focus--->-<!ENTITY % focus- "accesskey %Character; #IMPLIED- tabindex %Number; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED"- >--<!ENTITY % attrs "%coreattrs; %i18n; %events;">--<!--=================== Text Elements ====================================-->--<!ENTITY % special- "br | span | bdo | object | img | map">--<!ENTITY % fontstyle "tt | i | b | big | small">--<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |- samp | kbd | var | cite | abbr | acronym">--<!ENTITY % inline.forms "input | select | textarea | label | button">--<!-- these can occur at block or inline level -->-<!ENTITY % misc "ins | del | script | noscript">--<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">--<!-- %Inline; covers inline or "text-level" elements -->-<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">--<!--================== Block level elements ==============================-->--<!ENTITY % heading "h1|h2|h3|h4|h5|h6">-<!ENTITY % lists "ul | ol | dl">-<!ENTITY % blocktext "pre | hr | blockquote | address">--<!ENTITY % block- "p | %heading; | div | %lists; | %blocktext; | fieldset | table">--<!ENTITY % Block "(%block; | form | %misc;)*">--<!-- %Flow; mixes Block and Inline and is used for list items etc. -->-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">--<!--================== Content models for exclusions =====================-->--<!-- a elements use %Inline; excluding a -->--<!ENTITY % a.content- "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">--<!-- pre uses %Inline excluding img, object, big, small, sup or sup -->--<!ENTITY % pre.content- "(#PCDATA | a | br | span | bdo | map | tt | i | b |- %phrase; | %inline.forms;)*">--<!-- form uses %Block; excluding form -->--<!ENTITY % form.content "(%block; | %misc;)*">--<!-- button uses %Flow; but excludes a, form and form controls -->--<!ENTITY % button.content- "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |- table | %special; | %fontstyle; | %phrase; | %misc;)*">--<!--================ Document Structure ==================================-->--<!-- the namespace URI designates the document profile -->--<!ELEMENT html (head, body)>-<!ATTLIST html- %i18n;- xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'- >--<!--================ Document Head =======================================-->--<!ENTITY % head.misc "(script|style|meta|link|object)*">--<!-- content model is %head.misc; combined with a single- title and an optional base element in any order -->--<!ELEMENT head (%head.misc;,- ((title, %head.misc;, (base, %head.misc;)?) |- (base, %head.misc;, (title, %head.misc;))))>--<!ATTLIST head- %i18n;- profile %URI; #IMPLIED- >--<!-- The title element is not considered part of the flow of text.- It should be displayed, for example as the page header or- window title. Exactly one title is required per document.- -->-<!ELEMENT title (#PCDATA)>-<!ATTLIST title %i18n;>--<!-- document base URI -->--<!ELEMENT base EMPTY>-<!ATTLIST base- href %URI; #IMPLIED- >--<!-- generic metainformation -->-<!ELEMENT meta EMPTY>-<!ATTLIST meta- %i18n;- http-equiv CDATA #IMPLIED- name CDATA #IMPLIED- content CDATA #REQUIRED- scheme CDATA #IMPLIED- >--<!--- Relationship values can be used in principle:-- a) for document specific toolbars/menus when used- with the link element in document head e.g.- start, contents, previous, next, index, end, help- b) to link to a separate style sheet (rel="stylesheet")- c) to make a link to a script (rel="script")- d) by stylesheets to control how collections of- html nodes are rendered into printed documents- e) to make a link to a printable version of this document- e.g. a PostScript or PDF version (rel="alternate" media="print")--->--<!ELEMENT link EMPTY>-<!ATTLIST link- %attrs;- charset %Charset; #IMPLIED- href %URI; #IMPLIED- hreflang %LanguageCode; #IMPLIED- type %ContentType; #IMPLIED- rel %LinkTypes; #IMPLIED- rev %LinkTypes; #IMPLIED- media %MediaDesc; #IMPLIED- >--<!-- style info, which may include CDATA sections -->-<!ELEMENT style (#PCDATA)>-<!ATTLIST style- %i18n;- type %ContentType; #REQUIRED- media %MediaDesc; #IMPLIED- title %Text; #IMPLIED- xml:space (preserve) #FIXED 'preserve'- >--<!-- script statements, which may include CDATA sections -->-<!ELEMENT script (#PCDATA)>-<!ATTLIST script- charset %Charset; #IMPLIED- type %ContentType; #REQUIRED- src %URI; #IMPLIED- defer (defer) #IMPLIED- xml:space (preserve) #FIXED 'preserve'- >--<!-- alternate content container for non script-based rendering -->--<!ELEMENT noscript %Block;>-<!ATTLIST noscript- %attrs;- >--<!--=================== Document Body ====================================-->--<!ELEMENT body %Block;>-<!ATTLIST body- %attrs;- onload %Script; #IMPLIED- onunload %Script; #IMPLIED- >--<!ELEMENT div %Flow;> <!-- generic language/style container -->-<!ATTLIST div- %attrs;- >--<!--=================== Paragraphs =======================================-->--<!ELEMENT p %Inline;>-<!ATTLIST p- %attrs;- >--<!--=================== Headings =========================================-->--<!--- There are six levels of headings from h1 (the most important)- to h6 (the least important).--->--<!ELEMENT h1 %Inline;>-<!ATTLIST h1- %attrs;- >--<!ELEMENT h2 %Inline;>-<!ATTLIST h2- %attrs;- >--<!ELEMENT h3 %Inline;>-<!ATTLIST h3- %attrs;- >--<!ELEMENT h4 %Inline;>-<!ATTLIST h4- %attrs;- >--<!ELEMENT h5 %Inline;>-<!ATTLIST h5- %attrs;- >--<!ELEMENT h6 %Inline;>-<!ATTLIST h6- %attrs;- >--<!--=================== Lists ============================================-->--<!-- Unordered list -->--<!ELEMENT ul (li)+>-<!ATTLIST ul- %attrs;- >--<!-- Ordered (numbered) list -->--<!ELEMENT ol (li)+>-<!ATTLIST ol- %attrs;- >--<!-- list item -->--<!ELEMENT li %Flow;>-<!ATTLIST li- %attrs;- >--<!-- definition lists - dt for term, dd for its definition -->--<!ELEMENT dl (dt|dd)+>-<!ATTLIST dl- %attrs;- >--<!ELEMENT dt %Inline;>-<!ATTLIST dt- %attrs;- >--<!ELEMENT dd %Flow;>-<!ATTLIST dd- %attrs;- >--<!--=================== Address ==========================================-->--<!-- information on author -->--<!ELEMENT address %Inline;>-<!ATTLIST address- %attrs;- >--<!--=================== Horizontal Rule ==================================-->--<!ELEMENT hr EMPTY>-<!ATTLIST hr- %attrs;- >--<!--=================== Preformatted Text ================================-->--<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->--<!ELEMENT pre %pre.content;>-<!ATTLIST pre- %attrs;- xml:space (preserve) #FIXED 'preserve'- >--<!--=================== Block-like Quotes ================================-->--<!ELEMENT blockquote %Block;>-<!ATTLIST blockquote- %attrs;- cite %URI; #IMPLIED- >--<!--=================== Inserted/Deleted Text ============================-->--<!--- ins/del are allowed in block and inline content, but its- inappropriate to include block content within an ins element- occurring in inline content.--->-<!ELEMENT ins %Flow;>-<!ATTLIST ins- %attrs;- cite %URI; #IMPLIED- datetime %Datetime; #IMPLIED- >--<!ELEMENT del %Flow;>-<!ATTLIST del- %attrs;- cite %URI; #IMPLIED- datetime %Datetime; #IMPLIED- >--<!--================== The Anchor Element ================================-->--<!-- content is %Inline; except that anchors shouldn't be nested -->--<!ELEMENT a %a.content;>-<!ATTLIST a- %attrs;- charset %Charset; #IMPLIED- type %ContentType; #IMPLIED- name NMTOKEN #IMPLIED- href %URI; #IMPLIED- hreflang %LanguageCode; #IMPLIED- rel %LinkTypes; #IMPLIED- rev %LinkTypes; #IMPLIED- accesskey %Character; #IMPLIED- shape %Shape; "rect"- coords %Coords; #IMPLIED- tabindex %Number; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- >--<!--===================== Inline Elements ================================-->--<!ELEMENT span %Inline;> <!-- generic language/style container -->-<!ATTLIST span- %attrs;- >--<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->-<!ATTLIST bdo- %coreattrs;- %events;- lang %LanguageCode; #IMPLIED- xml:lang %LanguageCode; #IMPLIED- dir (ltr|rtl) #REQUIRED- >--<!ELEMENT br EMPTY> <!-- forced line break -->-<!ATTLIST br- %coreattrs;- >--<!ELEMENT em %Inline;> <!-- emphasis -->-<!ATTLIST em %attrs;>--<!ELEMENT strong %Inline;> <!-- strong emphasis -->-<!ATTLIST strong %attrs;>--<!ELEMENT dfn %Inline;> <!-- definitional -->-<!ATTLIST dfn %attrs;>--<!ELEMENT code %Inline;> <!-- program code -->-<!ATTLIST code %attrs;>--<!ELEMENT samp %Inline;> <!-- sample -->-<!ATTLIST samp %attrs;>--<!ELEMENT kbd %Inline;> <!-- something user would type -->-<!ATTLIST kbd %attrs;>--<!ELEMENT var %Inline;> <!-- variable -->-<!ATTLIST var %attrs;>--<!ELEMENT cite %Inline;> <!-- citation -->-<!ATTLIST cite %attrs;>--<!ELEMENT abbr %Inline;> <!-- abbreviation -->-<!ATTLIST abbr %attrs;>--<!ELEMENT acronym %Inline;> <!-- acronym -->-<!ATTLIST acronym %attrs;>--<!ELEMENT q %Inline;> <!-- inlined quote -->-<!ATTLIST q- %attrs;- cite %URI; #IMPLIED- >--<!ELEMENT sub %Inline;> <!-- subscript -->-<!ATTLIST sub %attrs;>--<!ELEMENT sup %Inline;> <!-- superscript -->-<!ATTLIST sup %attrs;>--<!ELEMENT tt %Inline;> <!-- fixed pitch font -->-<!ATTLIST tt %attrs;>--<!ELEMENT i %Inline;> <!-- italic font -->-<!ATTLIST i %attrs;>--<!ELEMENT b %Inline;> <!-- bold font -->-<!ATTLIST b %attrs;>--<!ELEMENT big %Inline;> <!-- bigger font -->-<!ATTLIST big %attrs;>--<!ELEMENT small %Inline;> <!-- smaller font -->-<!ATTLIST small %attrs;>--<!--==================== Object ======================================-->-<!--- object is used to embed objects as part of HTML pages.- param elements should precede other content. Parameters- can also be expressed as attribute/value pairs on the- object element itself when brevity is desired.--->--<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>-<!ATTLIST object- %attrs;- declare (declare) #IMPLIED- classid %URI; #IMPLIED- codebase %URI; #IMPLIED- data %URI; #IMPLIED- type %ContentType; #IMPLIED- codetype %ContentType; #IMPLIED- archive %UriList; #IMPLIED- standby %Text; #IMPLIED- height %Length; #IMPLIED- width %Length; #IMPLIED- usemap %URI; #IMPLIED- name NMTOKEN #IMPLIED- tabindex %Number; #IMPLIED- >--<!--- param is used to supply a named property value.- In XML it would seem natural to follow RDF and support an- abbreviated syntax where the param elements are replaced- by attribute value pairs on the object start tag.--->-<!ELEMENT param EMPTY>-<!ATTLIST param- id ID #IMPLIED- name CDATA #IMPLIED- value CDATA #IMPLIED- valuetype (data|ref|object) "data"- type %ContentType; #IMPLIED- >--<!--=================== Images ===========================================-->--<!--- To avoid accessibility problems for people who aren't- able to see the image, you should provide a text- description using the alt and longdesc attributes.- In addition, avoid the use of server-side image maps.- Note that in this DTD there is no name attribute. That- is only available in the transitional and frameset DTD.--->--<!ELEMENT img EMPTY>-<!ATTLIST img- %attrs;- src %URI; #REQUIRED- alt %Text; #REQUIRED- longdesc %URI; #IMPLIED- height %Length; #IMPLIED- width %Length; #IMPLIED- usemap %URI; #IMPLIED- ismap (ismap) #IMPLIED- >--<!-- usemap points to a map element which may be in this document- or an external document, although the latter is not widely supported -->--<!--================== Client-side image maps ============================-->--<!-- These can be placed in the same document or grouped in a- separate document although this isn't yet widely supported -->--<!ELEMENT map ((%block; | form | %misc;)+ | area+)>-<!ATTLIST map- %i18n;- %events;- id ID #REQUIRED- class CDATA #IMPLIED- style %StyleSheet; #IMPLIED- title %Text; #IMPLIED- name NMTOKEN #IMPLIED- >--<!ELEMENT area EMPTY>-<!ATTLIST area- %attrs;- shape %Shape; "rect"- coords %Coords; #IMPLIED- href %URI; #IMPLIED- nohref (nohref) #IMPLIED- alt %Text; #REQUIRED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- >--<!--================ Forms ===============================================-->-<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->--<!ATTLIST form- %attrs;- action %URI; #REQUIRED- method (get|post) "get"- enctype %ContentType; "application/x-www-form-urlencoded"- onsubmit %Script; #IMPLIED- onreset %Script; #IMPLIED- accept %ContentTypes; #IMPLIED- accept-charset %Charsets; #IMPLIED- >--<!--- Each label must not contain more than ONE field- Label elements shouldn't be nested.--->-<!ELEMENT label %Inline;>-<!ATTLIST label- %attrs;- for IDREF #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- >--<!ENTITY % InputType- "(text | password | checkbox |- radio | submit | reset |- file | hidden | image | button)"- >--<!-- the name attribute is required for all but submit & reset -->--<!ELEMENT input EMPTY> <!-- form control -->-<!ATTLIST input- %attrs;- type %InputType; "text"- name CDATA #IMPLIED- value CDATA #IMPLIED- checked (checked) #IMPLIED- disabled (disabled) #IMPLIED- readonly (readonly) #IMPLIED- size CDATA #IMPLIED- maxlength %Number; #IMPLIED- src %URI; #IMPLIED- alt CDATA #IMPLIED- usemap %URI; #IMPLIED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- onselect %Script; #IMPLIED- onchange %Script; #IMPLIED- accept %ContentTypes; #IMPLIED- >--<!ELEMENT select (optgroup|option)+> <!-- option selector -->-<!ATTLIST select- %attrs;- name CDATA #IMPLIED- size %Number; #IMPLIED- multiple (multiple) #IMPLIED- disabled (disabled) #IMPLIED- tabindex %Number; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- onchange %Script; #IMPLIED- >--<!ELEMENT optgroup (option)+> <!-- option group -->-<!ATTLIST optgroup- %attrs;- disabled (disabled) #IMPLIED- label %Text; #REQUIRED- >--<!ELEMENT option (#PCDATA)> <!-- selectable choice -->-<!ATTLIST option- %attrs;- selected (selected) #IMPLIED- disabled (disabled) #IMPLIED- label %Text; #IMPLIED- value CDATA #IMPLIED- >--<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->-<!ATTLIST textarea- %attrs;- name CDATA #IMPLIED- rows %Number; #REQUIRED- cols %Number; #REQUIRED- disabled (disabled) #IMPLIED- readonly (readonly) #IMPLIED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- onselect %Script; #IMPLIED- onchange %Script; #IMPLIED- >--<!--- The fieldset element is used to group form fields.- Only one legend element should occur in the content- and if present should only be preceded by whitespace.--->-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>-<!ATTLIST fieldset- %attrs;- >--<!ELEMENT legend %Inline;> <!-- fieldset label -->-<!ATTLIST legend- %attrs;- accesskey %Character; #IMPLIED- >--<!--- Content is %Flow; excluding a, form and form controls---> -<!ELEMENT button %button.content;> <!-- push button -->-<!ATTLIST button- %attrs;- name CDATA #IMPLIED- value CDATA #IMPLIED- type (button|submit|reset) "submit"- disabled (disabled) #IMPLIED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- >--<!--======================= Tables =======================================-->--<!-- Derived from IETF HTML table standard, see [RFC1942] -->--<!--- The border attribute sets the thickness of the frame around the- table. The default units are screen pixels.-- The frame attribute specifies which parts of the frame around- the table should be rendered. The values are not the same as- CALS to avoid a name clash with the valign attribute.--->-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">--<!--- The rules attribute defines which rules to draw between cells:-- If rules is absent then assume:- "none" if border is absent or border="0" otherwise "all"--->--<!ENTITY % TRules "(none | groups | rows | cols | all)">- -<!-- horizontal placement of table relative to document -->-<!ENTITY % TAlign "(left|center|right)">--<!-- horizontal alignment attributes for cell contents-- char alignment char, e.g. char=':'- charoff offset for alignment char--->-<!ENTITY % cellhalign- "align (left|center|right|justify|char) #IMPLIED- char %Character; #IMPLIED- charoff %Length; #IMPLIED"- >--<!-- vertical alignment attributes for cell contents -->-<!ENTITY % cellvalign- "valign (top|middle|bottom|baseline) #IMPLIED"- >--<!ELEMENT table- (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>-<!ELEMENT caption %Inline;>-<!ELEMENT thead (tr)+>-<!ELEMENT tfoot (tr)+>-<!ELEMENT tbody (tr)+>-<!ELEMENT colgroup (col)*>-<!ELEMENT col EMPTY>-<!ELEMENT tr (th|td)+>-<!ELEMENT th %Flow;>-<!ELEMENT td %Flow;>--<!ATTLIST table- %attrs;- summary %Text; #IMPLIED- width %Length; #IMPLIED- border %Pixels; #IMPLIED- frame %TFrame; #IMPLIED- rules %TRules; #IMPLIED- cellspacing %Length; #IMPLIED- cellpadding %Length; #IMPLIED- >--<!ENTITY % CAlign "(top|bottom|left|right)">--<!ATTLIST caption- %attrs;- >--<!---colgroup groups a set of col elements. It allows you to group-several semantically related columns together.--->-<!ATTLIST colgroup- %attrs;- span %Number; "1"- width %MultiLength; #IMPLIED- %cellhalign;- %cellvalign;- >--<!--- col elements define the alignment properties for cells in- one or more columns.-- The width attribute specifies the width of the columns, e.g.-- width=64 width in screen pixels- width=0.5* relative width of 0.5-- The span attribute causes the attributes of one- col element to apply to more than one column.--->-<!ATTLIST col- %attrs;- span %Number; "1"- width %MultiLength; #IMPLIED- %cellhalign;- %cellvalign;- >--<!--- Use thead to duplicate headers when breaking table- across page boundaries, or for static headers when- tbody sections are rendered in scrolling panel.-- Use tfoot to duplicate footers when breaking table- across page boundaries, or for static footers when- tbody sections are rendered in scrolling panel.-- Use multiple tbody sections when rules are needed- between groups of table rows.--->-<!ATTLIST thead- %attrs;- %cellhalign;- %cellvalign;- >--<!ATTLIST tfoot- %attrs;- %cellhalign;- %cellvalign;- >--<!ATTLIST tbody- %attrs;- %cellhalign;- %cellvalign;- >--<!ATTLIST tr- %attrs;- %cellhalign;- %cellvalign;- >---<!-- Scope is simpler than headers attribute for common tables -->-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">--<!-- th is for headers, td for data and for cells acting as both -->--<!ATTLIST th- %attrs;- abbr %Text; #IMPLIED- axis CDATA #IMPLIED- headers IDREFS #IMPLIED- scope %Scope; #IMPLIED- rowspan %Number; "1"- colspan %Number; "1"- %cellhalign;- %cellvalign;- >--<!ATTLIST td- %attrs;- abbr %Text; #IMPLIED- axis CDATA #IMPLIED- headers IDREFS #IMPLIED- scope %Scope; #IMPLIED- rowspan %Number; "1"- colspan %Number; "1"- %cellhalign;- %cellvalign;- >-
− examples/xhtml/xhtml1-transitional.dtd
@@ -1,1196 +0,0 @@-<!--- Extensible HTML version 1.0 Transitional DTD-- This is the same as HTML 4.0 Transitional except for- changes due to the differences between XML and SGML.-- Namespace = http://www.w3.org/1999/xhtml-- For further information, see: http://www.w3.org/TR/xhtml1-- Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),- All Rights Reserved. -- This DTD module is identified by the PUBLIC and SYSTEM identifiers:-- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"- SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"-- $Revision: 1.1 $- $Date: 2002/10/01 13:47:08 $---->--<!--================ Character mnemonic entities =========================-->--<!ENTITY % HTMLlat1 PUBLIC- "-//W3C//ENTITIES Latin 1 for XHTML//EN"- "xhtml-lat1.ent">-%HTMLlat1;--<!ENTITY % HTMLsymbol PUBLIC- "-//W3C//ENTITIES Symbols for XHTML//EN"- "xhtml-symbol.ent">-%HTMLsymbol;--<!ENTITY % HTMLspecial PUBLIC- "-//W3C//ENTITIES Special for XHTML//EN"- "xhtml-special.ent">-%HTMLspecial;--<!--================== Imported Names ====================================-->--<!ENTITY % ContentType "CDATA">- <!-- media type, as per [RFC2045] -->--<!ENTITY % ContentTypes "CDATA">- <!-- comma-separated list of media types, as per [RFC2045] -->--<!ENTITY % Charset "CDATA">- <!-- a character encoding, as per [RFC2045] -->--<!ENTITY % Charsets "CDATA">- <!-- a space separated list of character encodings, as per [RFC2045] -->--<!ENTITY % LanguageCode "NMTOKEN">- <!-- a language code, as per [RFC1766] -->--<!ENTITY % Character "CDATA">- <!-- a single character from [ISO10646] -->--<!ENTITY % Number "CDATA">- <!-- one or more digits -->--<!ENTITY % LinkTypes "CDATA">- <!-- space-separated list of link types -->--<!ENTITY % MediaDesc "CDATA">- <!-- single or comma-separated list of media descriptors -->--<!ENTITY % URI "CDATA">- <!-- a Uniform Resource Identifier, see [RFC2396] -->--<!ENTITY % UriList "CDATA">- <!-- a space separated list of Uniform Resource Identifiers -->--<!ENTITY % Datetime "CDATA">- <!-- date and time information. ISO date format -->--<!ENTITY % Script "CDATA">- <!-- script expression -->--<!ENTITY % StyleSheet "CDATA">- <!-- style sheet data -->--<!ENTITY % Text "CDATA">- <!-- used for titles etc. -->--<!ENTITY % FrameTarget "NMTOKEN">- <!-- render in this frame -->--<!ENTITY % Length "CDATA">- <!-- nn for pixels or nn% for percentage length -->--<!ENTITY % MultiLength "CDATA">- <!-- pixel, percentage, or relative -->--<!ENTITY % MultiLengths "CDATA">- <!-- comma-separated list of MultiLength -->--<!ENTITY % Pixels "CDATA">- <!-- integer representing length in pixels -->--<!-- these are used for image maps -->--<!ENTITY % Shape "(rect|circle|poly|default)">--<!ENTITY % Coords "CDATA">- <!-- comma separated list of lengths -->--<!-- used for object, applet, img, input and iframe -->-<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">--<!-- a color using sRGB: #RRGGBB as Hex values -->-<!ENTITY % Color "CDATA">--<!-- There are also 16 widely known color names with their sRGB values:-- Black = #000000 Green = #008000- Silver = #C0C0C0 Lime = #00FF00- Gray = #808080 Olive = #808000- White = #FFFFFF Yellow = #FFFF00- Maroon = #800000 Navy = #000080- Red = #FF0000 Blue = #0000FF- Purple = #800080 Teal = #008080- Fuchsia= #FF00FF Aqua = #00FFFF--->--<!--=================== Generic Attributes ===============================-->--<!-- core attributes common to most elements- id document-wide unique id- class space separated list of classes- style associated style info- title advisory title/amplification--->-<!ENTITY % coreattrs- "id ID #IMPLIED- class CDATA #IMPLIED- style %StyleSheet; #IMPLIED- title %Text; #IMPLIED"- >--<!-- internationalization attributes- lang language code (backwards compatible)- xml:lang language code (as per XML 1.0 spec)- dir direction for weak/neutral text--->-<!ENTITY % i18n- "lang %LanguageCode; #IMPLIED- xml:lang %LanguageCode; #IMPLIED- dir (ltr|rtl) #IMPLIED"- >--<!-- attributes for common UI events- onclick a pointer button was clicked- ondblclick a pointer button was double clicked- onmousedown a pointer button was pressed down- onmouseup a pointer button was released- onmousemove a pointer was moved onto the element- onmouseout a pointer was moved away from the element- onkeypress a key was pressed and released- onkeydown a key was pressed down- onkeyup a key was released--->-<!ENTITY % events- "onclick %Script; #IMPLIED- ondblclick %Script; #IMPLIED- onmousedown %Script; #IMPLIED- onmouseup %Script; #IMPLIED- onmouseover %Script; #IMPLIED- onmousemove %Script; #IMPLIED- onmouseout %Script; #IMPLIED- onkeypress %Script; #IMPLIED- onkeydown %Script; #IMPLIED- onkeyup %Script; #IMPLIED"- >--<!-- attributes for elements that can get the focus- accesskey accessibility key character- tabindex position in tabbing order- onfocus the element got the focus- onblur the element lost the focus--->-<!ENTITY % focus- "accesskey %Character; #IMPLIED- tabindex %Number; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED"- >--<!ENTITY % attrs "%coreattrs; %i18n; %events;">--<!-- text alignment for p, div, h1-h6. The default is- align="left" for ltr headings, "right" for rtl -->--<!ENTITY % TextAlign "align (left|center|right) #IMPLIED">--<!--=================== Text Elements ====================================-->--<!ENTITY % special- "br | span | bdo | object | applet | img | map | iframe">--<!ENTITY % fontstyle "tt | i | b | big | small | u- | s | strike |font | basefont">--<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |- samp | kbd | var | cite | abbr | acronym">--<!ENTITY % inline.forms "input | select | textarea | label | button">--<!-- these can occur at block or inline level -->-<!ENTITY % misc "ins | del | script | noscript">--<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">--<!-- %Inline; covers inline or "text-level" elements -->-<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">--<!--================== Block level elements ==============================-->--<!ENTITY % heading "h1|h2|h3|h4|h5|h6">-<!ENTITY % lists "ul | ol | dl | menu | dir">-<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">--<!ENTITY % block- "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">--<!ENTITY % Block "(%block; | form | %misc;)*">--<!-- %Flow; mixes Block and Inline and is used for list items etc. -->-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">--<!--================== Content models for exclusions =====================-->--<!-- a elements use %Inline; excluding a -->--<!ENTITY % a.content- "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">--<!-- pre uses %Inline excluding img, object, applet, big, small,- sub, sup, font, or basefont -->--<!ENTITY % pre.content- "(#PCDATA | a | br | span | bdo | map | tt | i | b | u | s |- %phrase; | %inline.forms;)*">--<!-- form uses %Flow; excluding form -->--<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">--<!-- button uses %Flow; but excludes a, form, form controls, iframe -->--<!ENTITY % button.content- "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |- table | br | span | bdo | object | applet | img | map |- %fontstyle; | %phrase; | %misc;)*">--<!--================ Document Structure ==================================-->--<!-- the namespace URI designates the document profile -->--<!ELEMENT html (head, body)>-<!ATTLIST html- %i18n;- xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'- >--<!--================ Document Head =======================================-->--<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">--<!-- content model is %head.misc; combined with a single- title and an optional base element in any order -->--<!ELEMENT head (%head.misc;,- ((title, %head.misc;, (base, %head.misc;)?) |- (base, %head.misc;, (title, %head.misc;))))>--<!ATTLIST head- %i18n;- profile %URI; #IMPLIED- >--<!-- The title element is not considered part of the flow of text.- It should be displayed, for example as the page header or- window title. Exactly one title is required per document.- -->-<!ELEMENT title (#PCDATA)>-<!ATTLIST title %i18n;>--<!-- document base URI -->--<!ELEMENT base EMPTY>-<!ATTLIST base- href %URI; #IMPLIED- target %FrameTarget; #IMPLIED- >--<!-- generic metainformation -->-<!ELEMENT meta EMPTY>-<!ATTLIST meta- %i18n;- http-equiv CDATA #IMPLIED- name CDATA #IMPLIED- content CDATA #REQUIRED- scheme CDATA #IMPLIED- >--<!--- Relationship values can be used in principle:-- a) for document specific toolbars/menus when used- with the link element in document head e.g.- start, contents, previous, next, index, end, help- b) to link to a separate style sheet (rel="stylesheet")- c) to make a link to a script (rel="script")- d) by stylesheets to control how collections of- html nodes are rendered into printed documents- e) to make a link to a printable version of this document- e.g. a PostScript or PDF version (rel="alternate" media="print")--->--<!ELEMENT link EMPTY>-<!ATTLIST link- %attrs;- charset %Charset; #IMPLIED- href %URI; #IMPLIED- hreflang %LanguageCode; #IMPLIED- type %ContentType; #IMPLIED- rel %LinkTypes; #IMPLIED- rev %LinkTypes; #IMPLIED- media %MediaDesc; #IMPLIED- target %FrameTarget; #IMPLIED- >--<!-- style info, which may include CDATA sections -->-<!ELEMENT style (#PCDATA)>-<!ATTLIST style- %i18n;- type %ContentType; #REQUIRED- media %MediaDesc; #IMPLIED- title %Text; #IMPLIED- xml:space (preserve) #FIXED 'preserve'- >--<!-- script statements, which may include CDATA sections -->-<!ELEMENT script (#PCDATA)>-<!ATTLIST script- charset %Charset; #IMPLIED- type %ContentType; #REQUIRED- language CDATA #IMPLIED- src %URI; #IMPLIED- defer (defer) #IMPLIED- xml:space (preserve) #FIXED 'preserve'- >--<!-- alternate content container for non script-based rendering -->--<!ELEMENT noscript %Flow;>-<!ATTLIST noscript- %attrs;- >--<!--======================= Frames =======================================-->--<!-- inline subwindow -->--<!ELEMENT iframe %Flow;>-<!ATTLIST iframe- %coreattrs;- longdesc %URI; #IMPLIED- name NMTOKEN #IMPLIED- src %URI; #IMPLIED- frameborder (1|0) "1"- marginwidth %Pixels; #IMPLIED- marginheight %Pixels; #IMPLIED- scrolling (yes|no|auto) "auto"- align %ImgAlign; #IMPLIED- height %Length; #IMPLIED- width %Length; #IMPLIED- >--<!-- alternate content container for non frame-based rendering -->--<!ELEMENT noframes %Flow;>-<!ATTLIST noframes- %attrs;- >--<!--=================== Document Body ====================================-->--<!ELEMENT body %Flow;>-<!ATTLIST body- %attrs;- onload %Script; #IMPLIED- onunload %Script; #IMPLIED- background %URI; #IMPLIED- bgcolor %Color; #IMPLIED- text %Color; #IMPLIED- link %Color; #IMPLIED- vlink %Color; #IMPLIED- alink %Color; #IMPLIED- >--<!ELEMENT div %Flow;> <!-- generic language/style container -->-<!ATTLIST div- %attrs;- %TextAlign;- >--<!--=================== Paragraphs =======================================-->--<!ELEMENT p %Inline;>-<!ATTLIST p- %attrs;- %TextAlign;- >--<!--=================== Headings =========================================-->--<!--- There are six levels of headings from h1 (the most important)- to h6 (the least important).--->--<!ELEMENT h1 %Inline;>-<!ATTLIST h1- %attrs;- %TextAlign;- >--<!ELEMENT h2 %Inline;>-<!ATTLIST h2- %attrs;- %TextAlign;- >--<!ELEMENT h3 %Inline;>-<!ATTLIST h3- %attrs;- %TextAlign;- >--<!ELEMENT h4 %Inline;>-<!ATTLIST h4- %attrs;- %TextAlign;- >--<!ELEMENT h5 %Inline;>-<!ATTLIST h5- %attrs;- %TextAlign;- >--<!ELEMENT h6 %Inline;>-<!ATTLIST h6- %attrs;- %TextAlign;- >--<!--=================== Lists ============================================-->--<!-- Unordered list bullet styles -->--<!ENTITY % ULStyle "(disc|square|circle)">--<!-- Unordered list -->--<!ELEMENT ul (li)+>-<!ATTLIST ul- %attrs;- type %ULStyle; #IMPLIED- compact (compact) #IMPLIED- >--<!-- Ordered list numbering style-- 1 arabic numbers 1, 2, 3, ...- a lower alpha a, b, c, ...- A upper alpha A, B, C, ...- i lower roman i, ii, iii, ...- I upper roman I, II, III, ...-- The style is applied to the sequence number which by default- is reset to 1 for the first list item in an ordered list.--->-<!ENTITY % OLStyle "CDATA">--<!-- Ordered (numbered) list -->--<!ELEMENT ol (li)+>-<!ATTLIST ol- %attrs;- type %OLStyle; #IMPLIED- compact (compact) #IMPLIED- start %Number; #IMPLIED- >--<!-- single column list (DEPRECATED) --> -<!ELEMENT menu (li)+>-<!ATTLIST menu- %attrs;- compact (compact) #IMPLIED- >--<!-- multiple column list (DEPRECATED) --> -<!ELEMENT dir (li)+>-<!ATTLIST dir- %attrs;- compact (compact) #IMPLIED- >--<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->-<!ENTITY % LIStyle "CDATA">--<!-- list item -->--<!ELEMENT li %Flow;>-<!ATTLIST li- %attrs;- type %LIStyle; #IMPLIED- value %Number; #IMPLIED- >--<!-- definition lists - dt for term, dd for its definition -->--<!ELEMENT dl (dt|dd)+>-<!ATTLIST dl- %attrs;- compact (compact) #IMPLIED- >--<!ELEMENT dt %Inline;>-<!ATTLIST dt- %attrs;- >--<!ELEMENT dd %Flow;>-<!ATTLIST dd- %attrs;- >--<!--=================== Address ==========================================-->--<!-- information on author -->--<!ELEMENT address %Inline;>-<!ATTLIST address- %attrs;- >--<!--=================== Horizontal Rule ==================================-->--<!ELEMENT hr EMPTY>-<!ATTLIST hr- %attrs;- align (left|center|right) #IMPLIED- noshade (noshade) #IMPLIED- size %Pixels; #IMPLIED- width %Length; #IMPLIED- >--<!--=================== Preformatted Text ================================-->--<!-- content is %Inline; excluding - "img|object|applet|big|small|sub|sup|font|basefont" -->--<!ELEMENT pre %pre.content;>-<!ATTLIST pre- %attrs;- width %Number; #IMPLIED- xml:space (preserve) #FIXED 'preserve'- >--<!--=================== Block-like Quotes ================================-->--<!ELEMENT blockquote %Flow;>-<!ATTLIST blockquote- %attrs;- cite %URI; #IMPLIED- >--<!--=================== Text alignment ===================================-->--<!-- center content -->-<!ELEMENT center %Flow;>-<!ATTLIST center- %attrs;- >--<!--=================== Inserted/Deleted Text ============================-->--<!--- ins/del are allowed in block and inline content, but its- inappropriate to include block content within an ins element- occurring in inline content.--->-<!ELEMENT ins %Flow;>-<!ATTLIST ins- %attrs;- cite %URI; #IMPLIED- datetime %Datetime; #IMPLIED- >--<!ELEMENT del %Flow;>-<!ATTLIST del- %attrs;- cite %URI; #IMPLIED- datetime %Datetime; #IMPLIED- >--<!--================== The Anchor Element ================================-->--<!-- content is %Inline; except that anchors shouldn't be nested -->--<!ELEMENT a %a.content;>-<!ATTLIST a- %attrs;- charset %Charset; #IMPLIED- type %ContentType; #IMPLIED- name NMTOKEN #IMPLIED- href %URI; #IMPLIED- hreflang %LanguageCode; #IMPLIED- rel %LinkTypes; #IMPLIED- rev %LinkTypes; #IMPLIED- accesskey %Character; #IMPLIED- shape %Shape; "rect"- coords %Coords; #IMPLIED- tabindex %Number; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- target %FrameTarget; #IMPLIED- >--<!--===================== Inline Elements ================================-->--<!ELEMENT span %Inline;> <!-- generic language/style container -->-<!ATTLIST span- %attrs;- >--<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->-<!ATTLIST bdo- %coreattrs;- %events;- lang %LanguageCode; #IMPLIED- xml:lang %LanguageCode; #IMPLIED- dir (ltr|rtl) #REQUIRED- >--<!ELEMENT br EMPTY> <!-- forced line break -->-<!ATTLIST br- %coreattrs;- clear (left|all|right|none) "none"- >--<!ELEMENT em %Inline;> <!-- emphasis -->-<!ATTLIST em %attrs;>--<!ELEMENT strong %Inline;> <!-- strong emphasis -->-<!ATTLIST strong %attrs;>--<!ELEMENT dfn %Inline;> <!-- definitional -->-<!ATTLIST dfn %attrs;>--<!ELEMENT code %Inline;> <!-- program code -->-<!ATTLIST code %attrs;>--<!ELEMENT samp %Inline;> <!-- sample -->-<!ATTLIST samp %attrs;>--<!ELEMENT kbd %Inline;> <!-- something user would type -->-<!ATTLIST kbd %attrs;>--<!ELEMENT var %Inline;> <!-- variable -->-<!ATTLIST var %attrs;>--<!ELEMENT cite %Inline;> <!-- citation -->-<!ATTLIST cite %attrs;>--<!ELEMENT abbr %Inline;> <!-- abbreviation -->-<!ATTLIST abbr %attrs;>--<!ELEMENT acronym %Inline;> <!-- acronym -->-<!ATTLIST acronym %attrs;>--<!ELEMENT q %Inline;> <!-- inlined quote -->-<!ATTLIST q- %attrs;- cite %URI; #IMPLIED- >--<!ELEMENT sub %Inline;> <!-- subscript -->-<!ATTLIST sub %attrs;>--<!ELEMENT sup %Inline;> <!-- superscript -->-<!ATTLIST sup %attrs;>--<!ELEMENT tt %Inline;> <!-- fixed pitch font -->-<!ATTLIST tt %attrs;>--<!ELEMENT i %Inline;> <!-- italic font -->-<!ATTLIST i %attrs;>--<!ELEMENT b %Inline;> <!-- bold font -->-<!ATTLIST b %attrs;>--<!ELEMENT big %Inline;> <!-- bigger font -->-<!ATTLIST big %attrs;>--<!ELEMENT small %Inline;> <!-- smaller font -->-<!ATTLIST small %attrs;>--<!ELEMENT u %Inline;> <!-- underline -->-<!ATTLIST u %attrs;>--<!ELEMENT s %Inline;> <!-- strike-through -->-<!ATTLIST s %attrs;>--<!ELEMENT strike %Inline;> <!-- strike-through -->-<!ATTLIST strike %attrs;>--<!ELEMENT basefont EMPTY> <!-- base font size -->-<!ATTLIST basefont- id ID #IMPLIED- size CDATA #REQUIRED- color %Color; #IMPLIED- face CDATA #IMPLIED- >--<!ELEMENT font %Inline;> <!-- local change to font -->-<!ATTLIST font- %coreattrs;- %i18n;- size CDATA #IMPLIED- color %Color; #IMPLIED- face CDATA #IMPLIED- >--<!--==================== Object ======================================-->-<!--- object is used to embed objects as part of HTML pages.- param elements should precede other content. Parameters- can also be expressed as attribute/value pairs on the- object element itself when brevity is desired.--->--<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>-<!ATTLIST object- %attrs;- declare (declare) #IMPLIED- classid %URI; #IMPLIED- codebase %URI; #IMPLIED- data %URI; #IMPLIED- type %ContentType; #IMPLIED- codetype %ContentType; #IMPLIED- archive %UriList; #IMPLIED- standby %Text; #IMPLIED- height %Length; #IMPLIED- width %Length; #IMPLIED- usemap %URI; #IMPLIED- name NMTOKEN #IMPLIED- tabindex %Number; #IMPLIED- align %ImgAlign; #IMPLIED- border %Pixels; #IMPLIED- hspace %Pixels; #IMPLIED- vspace %Pixels; #IMPLIED- >--<!--- param is used to supply a named property value.- In XML it would seem natural to follow RDF and support an- abbreviated syntax where the param elements are replaced- by attribute value pairs on the object start tag.--->-<!ELEMENT param EMPTY>-<!ATTLIST param- id ID #IMPLIED- name CDATA #REQUIRED- value CDATA #IMPLIED- valuetype (data|ref|object) "data"- type %ContentType; #IMPLIED- >--<!--=================== Java applet ==================================-->-<!--- One of code or object attributes must be present.- Place param elements before other content.--->-<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>-<!ATTLIST applet- %coreattrs;- codebase %URI; #IMPLIED- archive CDATA #IMPLIED- code CDATA #IMPLIED- object CDATA #IMPLIED- alt %Text; #IMPLIED- name NMTOKEN #IMPLIED- width %Length; #REQUIRED- height %Length; #REQUIRED- align %ImgAlign; #IMPLIED- hspace %Pixels; #IMPLIED- vspace %Pixels; #IMPLIED- >--<!--=================== Images ===========================================-->--<!--- To avoid accessibility problems for people who aren't- able to see the image, you should provide a text- description using the alt and longdesc attributes.- In addition, avoid the use of server-side image maps.--->--<!ELEMENT img EMPTY>-<!ATTLIST img- %attrs;- src %URI; #REQUIRED- alt %Text; #REQUIRED- name NMTOKEN #IMPLIED- longdesc %URI; #IMPLIED- height %Length; #IMPLIED- width %Length; #IMPLIED- usemap %URI; #IMPLIED- ismap (ismap) #IMPLIED- align %ImgAlign; #IMPLIED- border %Length; #IMPLIED- hspace %Pixels; #IMPLIED- vspace %Pixels; #IMPLIED- >--<!-- usemap points to a map element which may be in this document- or an external document, although the latter is not widely supported -->--<!--================== Client-side image maps ============================-->--<!-- These can be placed in the same document or grouped in a- separate document although this isn't yet widely supported -->--<!ELEMENT map ((%block; | form | %misc;)+ | area+)>-<!ATTLIST map- %i18n;- %events;- id ID #REQUIRED- class CDATA #IMPLIED- style %StyleSheet; #IMPLIED- title %Text; #IMPLIED- name CDATA #IMPLIED- >--<!ELEMENT area EMPTY>-<!ATTLIST area- %attrs;- shape %Shape; "rect"- coords %Coords; #IMPLIED- href %URI; #IMPLIED- nohref (nohref) #IMPLIED- alt %Text; #REQUIRED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- target %FrameTarget; #IMPLIED- >--<!--================ Forms ===============================================-->--<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->--<!ATTLIST form- %attrs;- action %URI; #REQUIRED- method (get|post) "get"- name NMTOKEN #IMPLIED- enctype %ContentType; "application/x-www-form-urlencoded"- onsubmit %Script; #IMPLIED- onreset %Script; #IMPLIED- accept %ContentTypes; #IMPLIED- accept-charset %Charsets; #IMPLIED- target %FrameTarget; #IMPLIED- >--<!--- Each label must not contain more than ONE field- Label elements shouldn't be nested.--->-<!ELEMENT label %Inline;>-<!ATTLIST label- %attrs;- for IDREF #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- >--<!ENTITY % InputType- "(text | password | checkbox |- radio | submit | reset |- file | hidden | image | button)"- >--<!-- the name attribute is required for all but submit & reset -->--<!ELEMENT input EMPTY> <!-- form control -->-<!ATTLIST input- %attrs;- type %InputType; "text"- name CDATA #IMPLIED- value CDATA #IMPLIED- checked (checked) #IMPLIED- disabled (disabled) #IMPLIED- readonly (readonly) #IMPLIED- size CDATA #IMPLIED- maxlength %Number; #IMPLIED- src %URI; #IMPLIED- alt CDATA #IMPLIED- usemap %URI; #IMPLIED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- onselect %Script; #IMPLIED- onchange %Script; #IMPLIED- accept %ContentTypes; #IMPLIED- align %ImgAlign; #IMPLIED- >--<!ELEMENT select (optgroup|option)+> <!-- option selector -->-<!ATTLIST select- %attrs;- name CDATA #IMPLIED- size %Number; #IMPLIED- multiple (multiple) #IMPLIED- disabled (disabled) #IMPLIED- tabindex %Number; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- onchange %Script; #IMPLIED- >--<!ELEMENT optgroup (option)+> <!-- option group -->-<!ATTLIST optgroup- %attrs;- disabled (disabled) #IMPLIED- label %Text; #REQUIRED- >--<!ELEMENT option (#PCDATA)> <!-- selectable choice -->-<!ATTLIST option- %attrs;- selected (selected) #IMPLIED- disabled (disabled) #IMPLIED- label %Text; #IMPLIED- value CDATA #IMPLIED- >--<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->-<!ATTLIST textarea- %attrs;- name CDATA #IMPLIED- rows %Number; #REQUIRED- cols %Number; #REQUIRED- disabled (disabled) #IMPLIED- readonly (readonly) #IMPLIED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- onselect %Script; #IMPLIED- onchange %Script; #IMPLIED- >--<!--- The fieldset element is used to group form fields.- Only one legend element should occur in the content- and if present should only be preceded by whitespace.--->-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>-<!ATTLIST fieldset- %attrs;- >--<!ENTITY % LAlign "(top|bottom|left|right)">--<!ELEMENT legend %Inline;> <!-- fieldset label -->-<!ATTLIST legend- %attrs;- accesskey %Character; #IMPLIED- align %LAlign; #IMPLIED- >--<!--- Content is %Flow; excluding a, form, form controls, iframe---> -<!ELEMENT button %button.content;> <!-- push button -->-<!ATTLIST button- %attrs;- name CDATA #IMPLIED- value CDATA #IMPLIED- type (button|submit|reset) "submit"- disabled (disabled) #IMPLIED- tabindex %Number; #IMPLIED- accesskey %Character; #IMPLIED- onfocus %Script; #IMPLIED- onblur %Script; #IMPLIED- >--<!-- single-line text input control (DEPRECATED) -->-<!ELEMENT isindex EMPTY>-<!ATTLIST isindex- %coreattrs;- %i18n;- prompt %Text; #IMPLIED- >--<!--======================= Tables =======================================-->--<!-- Derived from IETF HTML table standard, see [RFC1942] -->--<!--- The border attribute sets the thickness of the frame around the- table. The default units are screen pixels.-- The frame attribute specifies which parts of the frame around- the table should be rendered. The values are not the same as- CALS to avoid a name clash with the valign attribute.--->-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">--<!--- The rules attribute defines which rules to draw between cells:-- If rules is absent then assume:- "none" if border is absent or border="0" otherwise "all"--->--<!ENTITY % TRules "(none | groups | rows | cols | all)">- -<!-- horizontal placement of table relative to document -->-<!ENTITY % TAlign "(left|center|right)">--<!-- horizontal alignment attributes for cell contents-- char alignment char, e.g. char=':'- charoff offset for alignment char--->-<!ENTITY % cellhalign- "align (left|center|right|justify|char) #IMPLIED- char %Character; #IMPLIED- charoff %Length; #IMPLIED"- >--<!-- vertical alignment attributes for cell contents -->-<!ENTITY % cellvalign- "valign (top|middle|bottom|baseline) #IMPLIED"- >--<!ELEMENT table- (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>-<!ELEMENT caption %Inline;>-<!ELEMENT thead (tr)+>-<!ELEMENT tfoot (tr)+>-<!ELEMENT tbody (tr)+>-<!ELEMENT colgroup (col)*>-<!ELEMENT col EMPTY>-<!ELEMENT tr (th|td)+>-<!ELEMENT th %Flow;>-<!ELEMENT td %Flow;>--<!ATTLIST table- %attrs;- summary %Text; #IMPLIED- width %Length; #IMPLIED- border %Pixels; #IMPLIED- frame %TFrame; #IMPLIED- rules %TRules; #IMPLIED- cellspacing %Length; #IMPLIED- cellpadding %Length; #IMPLIED- align %TAlign; #IMPLIED- bgcolor %Color; #IMPLIED- >--<!ENTITY % CAlign "(top|bottom|left|right)">--<!ATTLIST caption- %attrs;- align %CAlign; #IMPLIED- >--<!---colgroup groups a set of col elements. It allows you to group-several semantically related columns together.--->-<!ATTLIST colgroup- %attrs;- span %Number; "1"- width %MultiLength; #IMPLIED- %cellhalign;- %cellvalign;- >--<!--- col elements define the alignment properties for cells in- one or more columns.-- The width attribute specifies the width of the columns, e.g.-- width=64 width in screen pixels- width=0.5* relative width of 0.5-- The span attribute causes the attributes of one- col element to apply to more than one column.--->-<!ATTLIST col- %attrs;- span %Number; "1"- width %MultiLength; #IMPLIED- %cellhalign;- %cellvalign;- >--<!--- Use thead to duplicate headers when breaking table- across page boundaries, or for static headers when- tbody sections are rendered in scrolling panel.-- Use tfoot to duplicate footers when breaking table- across page boundaries, or for static footers when- tbody sections are rendered in scrolling panel.-- Use multiple tbody sections when rules are needed- between groups of table rows.--->-<!ATTLIST thead- %attrs;- %cellhalign;- %cellvalign;- >--<!ATTLIST tfoot- %attrs;- %cellhalign;- %cellvalign;- >--<!ATTLIST tbody- %attrs;- %cellhalign;- %cellvalign;- >--<!ATTLIST tr- %attrs;- %cellhalign;- %cellvalign;- bgcolor %Color; #IMPLIED- >--<!-- Scope is simpler than headers attribute for common tables -->-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">--<!-- th is for headers, td for data and for cells acting as both -->--<!ATTLIST th- %attrs;- abbr %Text; #IMPLIED- axis CDATA #IMPLIED- headers IDREFS #IMPLIED- scope %Scope; #IMPLIED- rowspan %Number; "1"- colspan %Number; "1"- %cellhalign;- %cellvalign;- nowrap (nowrap) #IMPLIED- bgcolor %Color; #IMPLIED- width %Pixels; #IMPLIED- height %Pixels; #IMPLIED- >--<!ATTLIST td- %attrs;- abbr %Text; #IMPLIED- axis CDATA #IMPLIED- headers IDREFS #IMPLIED- scope %Scope; #IMPLIED- rowspan %Number; "1"- colspan %Number; "1"- %cellhalign;- %cellvalign;- nowrap (nowrap) #IMPLIED- bgcolor %Color; #IMPLIED- width %Pixels; #IMPLIED- height %Pixels; #IMPLIED- >-
hxt-filter.cabal view
@@ -1,6 +1,6 @@ -- arch-tag: Haskell XML Toolbox main description file name: hxt-filter-version: 8.3.0+version: 8.4.0 license: OtherLicense license-file: LICENCE maintainer: Uwe Schmidt <uwe@fh-wedel.de>@@ -53,15 +53,15 @@ ghc-options: -Wall extensions: MultiParamTypeClasses DeriveDataTypeable FunctionalDependencies FlexibleInstances - build-depends: base >= 4,- haskell98 >= 1,- containers >= 0.1,- directory >= 1,- filepath >= 1,- parsec >= 2.1 && < 3,- HUnit >= 1.2,- network >= 2.1,- HTTP >= 4000.0.4 && < 5000,- process >= 1.0.1,- hxt >= 8.3+ build-depends: base >= 4.2 && < 5,+ haskell98 >= 1 && < 2,+ containers >= 0.3 && < 1,+ directory >= 1 && < 2,+ filepath >= 1 && < 2,+ parsec >= 2.1 && < 4,+ HUnit >= 1.2 && < 2,+ network >= 2.1 && < 3,+ HTTP >= 4000 && < 5000,+ process >= 1.0.1 && < 2,+ hxt >= 8.4 && < 9
src/Data/Tree/NTree/Filter.hs view
@@ -905,8 +905,7 @@ performAction :: Monad m => (a -> m b) -> a -> m [a] performAction cmd t- = do- cmd t- return [t]+ = cmd t+ >> return [t] -- eof ------------------------------------------------------------
− src/HXT.hs
@@ -1,5 +0,0 @@-module HXT-where--import Text.XML.HXT.DOM as DOM ()-import Text.XML.HXT.Parser as P()
− src/Makefile
@@ -1,163 +0,0 @@-# -------------------------------------------------------------#-# global names and dirs--include ../Version.mk--HXT_HOME = ..-HXT_HOME_PATH = $(shell cd $(HXT_HOME) ; pwd)-PACKAGE_DIR = $(HXT_HOME_PATH)/lib/$(SOFTWARE)-IMPORT_DIR = imports-HXT_PACKAGE = $(SOFTWARE)--# -------------------------------------------------------------#-# commands--GHCFLAGS = -Wall -O2 -fglasgow-exts -ignore-package $(SOFTWARE)-GHC = ghc $(GHCFLAGS)-GHCVERSION = $(shell ghc -v 2>&1 | head -n 2 | tail -n 1 | cut -d " " -f 5 | sed 's|^.*ghc-\([0-9.]*\)/package.conf|\1|')--HXT_PACKAGE_NAME=$(DIST_NAME)--RM = rm -f--all :--packagename :- @echo $(HXT_PACKAGE_NAME)--# -------------------------------------------------------------#-# protocol handler config (for removing http or popen)--./Text/XML/HXT/Parser/ProtocolHandler.hs : ./Text/XML/HXT/ProtocolHandler/ProtocolHandler.hs- $(MAKE) -C ./Text/XML/HXT/ProtocolHandler default_http--# -------------------------------------------------------------#-# hxt package variables and rules--HXT_SRC = \- $(wildcard Control/Monad/*.hs) \- $(wildcard Data/Tree/NTree/*.hs) \- $(wildcard System/*.hs) \- $(wildcard Text/XML/HXT/*.hs) \- $(wildcard Text/XML/HXT/DOM/*.hs) \- $(wildcard Text/XML/HXT/Parser/*.hs) \- $(wildcard Text/XML/HXT/Validator/*.hs)--HXT_OBJ = $(HXT_SRC:.hs=.o)-HXT_HI = $(HXT_SRC:.hs=.hi)--HXT_DRIVER = HXT.o-HXT_LIBA = libHS$(HXT_PACKAGE).a-HXT_LIBO = HS$(HXT_PACKAGE).o-HXT_LIB = $(HXT_LIBA) $(HXT_LIBO)-HXT_REQ_PKG = -package parsec -package HTTP -package hxt-8.3.0--$(HXT_LIBA) : $(HXT_SRC)- $(GHC) -package-name $(HXT_PACKAGE_NAME) $(HXT_REQ_PKG) --make $(HXT_DRIVER:.o=.hs)- ar crs $@ $(HXT_OBJ)- @echo "# please note: !! GNU ar (at least 2.15.90) does not set exit code on missing .o files !!"--$(HXT_LIBO) : $(HXT_LIBA)- ld -r --whole-archive -o $@ $<--# -------------------------------------------------------------#--PROFFLAGS = -Wall -fglasgow-exts $(HXT_REQ_PKG) -prof -auto -ignore-package hxt -ignore-package HTTP -i../profiling--prof :- ghc $(PROFFLAGS) --make $(HXT_DRIVER:.o=.hs)--# --------------------------------------------------------------LOCAL_INSTALL_DIR = $(PACKAGE_DIR)-LOCAL_IMPORT_DIR = $(PACKAGE_DIR)/$(IMPORT_DIR)--PKG_LIB = -PKG_NAME =-PKG_HI =--install_local_$(HXT_PACKAGE) : $(HXT_LIB) $(SOFTWARE)-package.conf- $(MAKE) install_local_package PKG_NAME=$(HXT_PACKAGE) PKG_LIB="$(HXT_LIB)" PKG_HI="$(HXT_HI)"--install_local_package : $(PKG_NAME)-package.conf- [ -d $(LOCAL_INSTALL_DIR) ] || mkdir -p $(LOCAL_INSTALL_DIR)- [ -d $(LOCAL_IMPORT_DIR) ] || mkdir -p $(LOCAL_IMPORT_DIR)- cp -f $(PKG_LIB) $(LOCAL_INSTALL_DIR)- tar cvf - $(PKG_HI) | ( cd $(LOCAL_IMPORT_DIR) ; tar xf - )- [ -f $(LOCAL_INSTALL_DIR)/package.conf ] || echo "[]" > $(LOCAL_INSTALL_DIR)/package.conf- cat $(PKG_NAME)-package.conf \- | ghc-pkg update - --package-conf=$(LOCAL_INSTALL_DIR)/package.conf- @echo use package with: ghc\(i\) ... -package-conf $(LOCAL_INSTALL_DIR)/package.conf -package $(PKG_NAME) ...--GHC_INSTALL = $(shell ghc -v 2>&1 | head -n 2 | tail -n 1 | cut -d " " -f 5 | sed 's|/package.conf||')-GHC_INSTALL_DIR = $(GHC_INSTALL)/$(SOFTWARE)-GHC_PKG_CONF =--install : $(SOFTWARE)-package.conf- @[ -d $(GHC_INSTALL) ] || ( echo "ghc install dir not found" 1>&2 ; exit 1 )- @[ -w $(GHC_INSTALL) ] || ( echo "you need root access for this target" ; exit 1 )- [ -d $(GHC_INSTALL_DIR) ] || mkdir -p $(GHC_INSTALL_DIR)- cp -r $(LOCAL_INSTALL_DIR)/*.[ao] $(LOCAL_INSTALL_DIR)/imports $(GHC_INSTALL_DIR)- $(MAKE) install_packages- @echo- @echo use package with: ghc\(i\) ... -package $(HXT_PACKAGE) ...--uninstall :- @[ -d $(GHC_INSTALL) ] || ( echo "ghc install dir not found" 1>&2 ; exit 1 )- @[ -w $(GHC_INSTALL) ] || ( echo "you need root access for this target" ; exit 1 )- $(MAKE) uninstall_packages- rm -rf $(GHC_INSTALL_DIR)--# --------------------------------------------------------------all :- $(MAKE) install_local_$(HXT_PACKAGE)--$(SOFTWARE)-package.conf : $(SOFTWARE)-package.hs- ghc -o $(SOFTWARE)-package $(SOFTWARE)-package.hs- ./$(SOFTWARE)-package $(VERSION) "ghc" $(LOCAL_INSTALL_DIR) $(HXT_SRC) > $@--../$(SOFTWARE).cabal : $(SOFTWARE)-package.hs Makefile ../Makefile- ghc -o $(SOFTWARE)-package $(SOFTWARE)-package.hs- ./$(SOFTWARE)-package $(VERSION) "cabal" $(GHC_INSTALL_DIR) $(HXT_SRC) > $@--install_packages :- runghc $(SOFTWARE)-package.hs $(VERSION) "ghc" $(GHC_INSTALL_DIR) $(HXT_SRC) \- | ghc-pkg --update-package--uninstall_packages :- ghc-pkg --remove-package $(HXT_PACKAGE) || true--clean_packages :- $(MAKE) clean_$(HXT_PACKAGE)--clean :- $(MAKE) clean_packages- $(MAKE) -C ./Text/XML/HXT/ProtocolHandler clean- rm -rf $(LOCAL_INSTALL_DIR) $(SOFTWARE)-package.conf ../$(SOFTWARE).cabal--clean_$(HXT_PACKAGE) :- $(RM) $(HXT_DRIVER) $(HXT_DRIVER:.o=.hi) $(HXT_OBJ) $(HXT_HI) $(HXT_LIB)--# --------------------------------------------------------------DIST = ../$(DIST_NAME)-DIST_DIR = $(DIST)/src-DIST_FILES = Makefile \- $(HXT_SRC) $(HXT_DRIVER:.o=.hs) $(SOFTWARE)-package.hs \- ./Text/XML/HXT/ProtocolHandler/ProtocolHandler.hs \- ./Text/XML/HXT/ProtocolHandler/Makefile---dist :- [ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)- tar cvf - $(DIST_FILES) | ( cd $(DIST_DIR) ; tar xf - )--.PHONY : all install doc clean dist--# eof ------------------------------------------------------------
src/Text/XML/HXT/DOM/Namespace.hs view
@@ -45,8 +45,8 @@ errs = validateNamespaces t in if null errs then thisM t- else do- liftF this $$< errs+ else ( liftF this $$< errs )+ >> return (setStatus c_err "namespace propagation" t) -- -----------------------------------------------------------------------------
src/Text/XML/HXT/DOM/XmlState.hs view
@@ -155,9 +155,8 @@ setSysErrorHandler :: XmlStateFilter () -> XState state () setSysErrorHandler ehf- = do- changeSysState (\ s -> s { sysStateErrorHandler = ehf })- return ()+ = changeSysState (\ s -> s { sysStateErrorHandler = ehf })+ >> return () -- | -- get the error handler@@ -183,9 +182,8 @@ setSysParamTree :: String -> XmlTrees -> XState state () setSysParamTree name val- = do- changeSysState (changeSysStateAttrs (addEntry name val))- return ()+ = changeSysState (changeSysStateAttrs (addEntry name val))+ >> return () -- | -- set or change a single system parameter of type string.@@ -216,9 +214,8 @@ setSystemParams :: XmlStateFilter state setSystemParams t- = do- changeSysState (changeSysStateAttrs (addEntries (toTreel . getAttrl $ t)))- thisM t+ = changeSysState (changeSysStateAttrs (addEntries (toTreel . getAttrl $ t)))+ >> thisM t -- ------------------------------------------------------------ @@ -335,7 +332,7 @@ = do sysState0 <- getSysState (res, finalState1) <- io $ run0 (XmlState sysState0 initialUserState1) cmd1- setSysState (sysState finalState1)+ _ <- setSysState (sysState finalState1) return (res, (userState finalState1)) -- |@@ -500,7 +497,7 @@ = performAction ( \ t -> chain' () ( do ehf <- getSysErrorHandler- ehf t+ _ <- ehf t return () ) )@@ -621,9 +618,8 @@ checkStatus :: XmlStateFilter state checkStatus t = if status >= c_err- then do- errorMsgHandler (mkXErrorTree c_warn (errClass status ++ "s detected in " ++ msg) [])- noneM t+ then errorMsgHandler (mkXErrorTree c_warn (errClass status ++ "s detected in " ++ msg) [])+ >> noneM t else thisM t where
src/Text/XML/HXT/Parser/DTDProcessing.hs view
@@ -353,9 +353,8 @@ | isDTDElemNode CONDSECT xn -- conditional section && loc == Internal- = do- issueErr "conditional sections in internal part of the DTD is not allowed" n- return []+ = issueErr "conditional sections in internal part of the DTD is not allowed" n+ >> return [] | isDTDElemNode CONDSECT xn -- conditional section &&@@ -414,7 +413,7 @@ addPE name t = do trace 2 ("substParamEntity: add entity to env: " ++ xshow [t])- changeState $ addPeEntry name t+ _ <- changeState $ addPeEntry name t return [] substPEref :: DTDStateFilter@@ -568,7 +567,7 @@ = return [] | otherwise = do- checkStandalone+ _ <- checkStandalone dtdContent <- ( getXmlEntityContents .>> traceMsg 2 ("processExternalDTD: parsing DTD part for " ++ show sysVal)@@ -579,7 +578,7 @@ ) $ newDocument sysVal trace 2 "processExternalDTD: parsing DTD part done"- traceTree $ mkRootTree [] dtdContent+ _ <- traceTree $ mkRootTree [] dtdContent return dtdContent where sysVal = lookup1 k_system al@@ -756,14 +755,14 @@ = return [] | null txt' -- something weird in entity content = do- issueErr ("illegal external parsed entity value for entity " ++ show name) n+ _ <- issueErr ("illegal external parsed entity value for entity " ++ show name) n return [] | otherwise -- o.k.: parse the contents = do res' <- liftF (parseXmlGeneralEntityValue ("external parsed entity " ++ show name)) $$< txt'- ( traceSource- .>>- traceTree ) $ mkRootTree (fromAttrl context) res'+ _ <- ( traceSource+ .>>+ traceTree ) $ mkRootTree (fromAttrl context) res' return res' where txt' = (getChildren .> isXText) $$ cl'@@ -775,11 +774,11 @@ case lookupGeEnv name' geEnv' of Just _fct -> do- issueWarn ("entity " ++ show name ++ " already defined, repeated definition ignored") n+ _ <- issueWarn ("entity " ++ show name ++ " already defined, repeated definition ignored") n return [] Nothing -> do- changeState $ addGeEntry name' fct' + _ <- changeState $ addGeEntry name' fct' return $ this n -- --------@@ -803,7 +802,7 @@ = do trace 2 ("substExternalParsed1Time: read and parse external parsed entity " ++ show name) res <- runInLocalURIContext getContents' $ newDocument' context- changeState $ addGeEntry name (substExternalParsed res)+ _ <- changeState $ addGeEntry name (substExternalParsed res) substExternalParsed res cx' rl' n' where getContents' :: GeStateFilter@@ -851,7 +850,7 @@ forbidden msg' cx' -- 4.4.4 = do- issueErr ("reference of " ++ msg' ++ show name ++ " forbidden in " ++ cx') n+ _ <- issueErr ("reference of " ++ msg' ++ show name ++ " forbidden in " ++ cx') n return [] -- normalize default value in ATTLIST@@ -878,13 +877,13 @@ Just fct -> if name `elem` rl then do- issueErr ("recursive substitution of general entity reference " ++ show ref ++ " not processed") n+ _ <- issueErr ("recursive substitution of general entity reference " ++ show ref ++ " not processed") n return nl else do fct cx rl n Nothing -> do- issueErr ("general entity reference " ++ show ref ++ " not processed, no definition found, (forward reference?)") n+ _ <- issueErr ("general entity reference " ++ show ref ++ " not processed, no definition found, (forward reference?)") n return nl where nl = this n
src/Text/XML/HXT/Parser/HtmlParser.hs view
@@ -120,11 +120,11 @@ in do if null warnings then thisM t'- else do- if noWarnings+ else ( if noWarnings then return [] else do issueError $$< warnings+ ) >> return (remWarnings t') -- | The pure HTML parser, usually called via 'parseHtmlDoc'.@@ -133,11 +133,9 @@ runHtmlParser :: XmlStateFilter a runHtmlParser t = if null errs- then do- return (replaceChildren res t)- else do- issueError $$< errs- return (setStatus c_err "parsing HTML" t)+ then return (replaceChildren res t)+ else (issueError $$< errs)+ >> return (setStatus c_err "parsing HTML" t) where res = getChildren .> parseHtmlText loc $ t errs = isXError .> neg isWarning $$ res
src/Text/XML/HXT/Parser/MainFunctions.hs view
@@ -25,7 +25,7 @@ import Text.XML.HXT.DOM.EditFilters import Text.XML.HXT.DOM.Namespace -import System.IO+-- import System.IO -- ------------------------------------------------------------
src/Text/XML/HXT/Parser/ProtocolHandlerFile.hs view
@@ -42,7 +42,7 @@ perm <- io $ getPermissions source if readable perm then do- h <- io $ try ( openFile source ReadMode )+ h <- io $ try ( openBinaryFile source ReadMode ) case h of Left e -> readErr ( "system error when reading file "
src/Text/XML/HXT/Parser/ProtocolHandlerHttpCurl.hs view
@@ -132,7 +132,7 @@ crlf :: Parser () crlf = do- ( Text.ParserCombinators.Parsec.try (string "\r\n") <|> string "\n" )+ _ <- ( Text.ParserCombinators.Parsec.try (string "\r\n") <|> string "\n" ) return () parseResp :: Parser (Int, XmlTrees)@@ -141,7 +141,7 @@ vers <- ( do http <- string "HTTP/" mav <- many1 digit- char '.'+ _ <- char '.' miv <- many1 digit return (http ++ mav ++ "." ++ miv) )
src/Text/XML/HXT/Parser/ProtocolHandlerHttpNative.hs view
@@ -43,8 +43,6 @@ -- -- the native http protocol handler -type ResponseString = Response String- -- ------------------------------------------------------------ -- -- the http protocol handler, haskell implementation@@ -84,7 +82,7 @@ where readErr msg = addFatal msg n - getHttp :: Int -> URI -> String -> IO ResponseString+ getHttp :: Int -> URI -> String -> IO (Response String) getHttp trc' uri' proxy' = withSocketsDo $ browse ( do@@ -111,7 +109,7 @@ convertResponseStatus (a, b, c) = 100 * a + 10 * b + c - convertResponseHeaders :: ResponseString -> XmlTrees+ convertResponseHeaders :: Response String -> XmlTrees convertResponseHeaders r' = cvResponseCode (rspCode r') ++
src/Text/XML/HXT/Parser/XmlOutput.hs view
@@ -74,7 +74,7 @@ putXmlDocToFile :: String -> XmlStateFilter a putXmlDocToFile fn t = do- res <- io $ try (openFile fn WriteMode)+ res <- io $ try (openBinaryFile fn WriteMode) case res of Left ioerr -> ( issueFatal (show ioerr)@@ -84,7 +84,7 @@ Right h -> do t' <- hPutXmlDoc h t- io $ try (hClose h)+ _ <- io $ try (hClose h) trace 2 ("document written to file: " ++ fn) return t'
− src/Text/XML/HXT/ProtocolHandler/Makefile
@@ -1,45 +0,0 @@-# $Id: Makefile,v 1.1 2004/09/02 19:12:02 hxml Exp $-#-# Makefile to configure the http handlers to be used-#-# default is: http access may be done via a native http module-# or via an external program curl called via pipes-# the access can be controlled at runtime by option --withCurl-#-# variants:-#-# 1. ONLY_NATIVE_HTTP: does not need the code for calling external programs via pipes-# activate this variant by running "make only_native_http" in this dir before compilation-#-# 2. ONLY_CURL_HTTP: does not need the code for a socked connection and other stuff used by http modules-# activate this variant by running "make only_curl_http" in this dir before compilation-#-# 3. NO_HTTP: does not need any code for http, only local file access is supported-# activate this variant by running "make no_http" in this dir before compilation-#-# reset to default (both variants compiled in and selected by runtime options) by-# running "make default_http"--source = ProtocolHandler.hs-tmp = ProtocolHandler.tmp-target = ../Parser/ProtocolHandler.hs--all :- @echo "make a target out of \"only_native_http only_curl_http no_http default_http\""--only_native_http :- ghc -E -cpp -DONLY_NATIVE_HTTP=1 -o $(tmp) $(source) ; grep -v '^#' $(tmp) > $(target)--only_curl_http :- ghc -E -cpp -DONLY_CURL_HTTP=1 -o $(tmp) $(source) ; grep -v '^#' $(tmp) > $(target)--no_http :- ghc -E -cpp -DNO_HTTP=1 -o $(tmp) $(source) ; grep -v '^#' $(tmp) > $(target)--default_http :- ghc -E -cpp -o $(tmp) $(source) ; grep -v '^#' $(tmp) > $(target)--clean :- rm -f $(tmp)--.PHONY : all only_native_http only_curl_http no_http default_http clean
− src/Text/XML/HXT/ProtocolHandler/ProtocolHandler.hs
@@ -1,113 +0,0 @@--- ------------------------------------------------------------------ protocol handler functions--- configuration file--- real handler is generated with cpp--module Text.XML.HXT.Parser.ProtocolHandler- ( getProtocolHandler- )--where--import Text.XML.HXT.DOM.XmlState---- ------------------------------------------------------------------ file io and network--import Data.Maybe- ( fromMaybe- )--import Network.URI- ( URI- , uriScheme- )--import Text.XML.HXT.Parser.ProtocolHandlerFile- ( getFileContents- )--#ifdef ONLY_NATIVE_HTTP--import Text.XML.HXT.Parser.ProtocolHandlerHttpNative- ( getHttpContentsWithHttp- )--#else-#ifdef ONLY_CURL_HTTP--import Text.XML.HXT.Parser.ProtocolHandlerHttpCurl- ( getHttpContentsWithCurl- )--#else-#ifdef NO_HTTP-#else--import Text.XML.HXT.Parser.ProtocolHandlerHttpNativeOrCurl- ( getHttpContentsNativeOrWithCurl- )--#endif-#endif-#endif---- -----------------------------------------------------------------getProtocolHandler :: String -> (URI -> XmlStateFilter a)-getProtocolHandler proto- = fromMaybe getUnsupported handler- where- handler = lookup proto protocolHandler------- the fall back protocol handler--getUnsupported :: URI -> XmlStateFilter a-getUnsupported uri- = addFatal ( "unsupported protocol "- ++ show (uriScheme uri)- ++ " in URI: "- ++ show uri- )---- ------------------------------------------------------------------ the table of potocol handlers--- looked up in getProtocolHandler--protocolHandler :: [(String, URI -> XmlStateFilter a)]-protocolHandler- = [ ("file", getFileContents)- , ("http",--#ifdef ONLY_NATIVE_HTTP-- getHttpContentsWithHttp--#else-#ifdef ONLY_CURL_HTTP-- getHttpContentsWithCurl--#else-#ifdef NO_HTTP-- getUnsupported--#else-- getHttpContentsNativeOrWithCurl--#endif-#endif-#endif- )- ]---- --------------------------------------------------------------
src/Text/XML/HXT/Validator/DocTransformation.hs view
@@ -37,10 +37,7 @@ import Text.XML.HXT.Validator.AttributeValueValidation -import Data.Maybe import Data.List-- -- | -- Lookup-table which maps element names to their transformation functions. The
src/Text/XML/HXT/Validator/DocValidation.hs view
@@ -29,8 +29,6 @@ import Text.XML.HXT.Validator.AttributeValueValidation import Text.XML.HXT.Validator.XmlRE -import Data.Maybe- -- | -- Lookup-table which maps element names to their validation functions. The -- validation functions are XmlFilters.
src/Text/XML/HXT/Validator/Validation.hs view
@@ -48,8 +48,8 @@ ) where runValidation t- = do- issueError $$< res+ = ( issueError $$< res )+ >> ( if null errs then ( traceMsg 1 "transforming validated document" .>>
− src/hxt-filter-package.hs
@@ -1,114 +0,0 @@-module Main-where--import Data.List-import System.Environment--part1 :: [String]-part1- = [ "-- arch-tag: Haskell XML Toolbox main description file"- , "name: hxt-filter"- ]--version :: String-version- = "version: "--part2 :: [String]-part2- = [ "license: OtherLicense"- , "license-file: LICENCE"- , "maintainer: Uwe Schmidt <uwe@fh-wedel.de>"- , "stability: stable"- , "category: XML"- , "synopsis: A collection of tools for processing XML with Haskell (Filter variant). "- , "description: The Haskell XML Toolbox bases on the ideas of HaXml and HXML." ++- " This package is a compatibitlity package for old software working with the filter approach like in HaXml." ++- " For new projects it's recomended to use the arrow based library (hxt)."- , "homepage: http://www.fh-wedel.de/~si/HXmlToolbox/index.html"- , "copyright: Copyright (c) 2005-2009 Uwe Schmidt"- ]--part3a :: [String]-part3a- = [ "tested-with: ghc-6.10"- , "exposed: True"- , "exposed-modules:"- ]--part3b :: [String]-part3b- = [ "build-type: Simple"- , "cabal-version: >=1.6"- , ""- , "library"- , " exposed-modules:"- ]--part4a :: String -> [String]-part4a dir- = [ "hs-source-dirs: ."- , "ghc-options: -Wall -O2 -fglasgow-exts"- , "import-dirs: " ++ dir ++ "/imports"- , "library-dirs: " ++ dir- , "hs-libraries: HShxt-filter"- , "depends: base-4.0.0.0,"- , " haskell98-1.0.1.0,"- , " HUnit-1.2.0.3,"- , " HTTP-3001.1.4,"- , " parsec-2.1.0.1,"- , " network-2.2.0.1,"- , " containers-0.2.0.0,"- , " directory-1.0.0.2,"- , " process-1.0.1.0,"- , " hxt-8.3.0"- ]--part4b :: [String]-part4b- = [ " hs-source-dirs: src"- , " ghc-options: -Wall"- , " extensions: MultiParamTypeClasses DeriveDataTypeable FunctionalDependencies FlexibleInstances"- , ""- , " build-depends: base >= 4,"- , " haskell98 >= 1,"- , " containers >= 0.1,"- , " directory >= 1,"- , " filepath >= 1,"- , " parsec >= 2.1 && < 3,"- , " HUnit >= 1.2,"- , " network >= 2.1,"- , " HTTP >= 4000.0.4 && < 5000,"- , " process >= 1.0.1,"- , " hxt >= 8.3"- ]--main :: IO()-main- = do- vers : cabal : installdir : modules <- getArgs- putStrLn (cabalFile vers cabal installdir modules)--cabalFile :: String -> String -> String -> [String] -> String-cabalFile vers cabal installdir modules- = unlines $- part1 ++- [ version ++ vers ] ++- part2 ++- ( if isCabal- then part3b- else part3a- ) ++- [ml modules] ++- ( if isCabal- then part4b- else part4a installdir- )- where- isCabal = cabal == "cabal"- ml = foldr1 (\ x y -> x ++ ",\n" ++ y) . sort . map editPath- editPath = (" " ++) . map slash2dot . reverse . drop 1 . dropWhile (/= '.') . reverse . removeLeadingDot- slash2dot '/' = '.'- slash2dot c = c- removeLeadingDot ('.':'/':path) = path- removeLeadingDot path = path