hxt 8.2.0 → 8.3.0
raw patch · 209 files changed
+29872/−35159 lines, 209 files
Files
- Makefile +4/−3
- Version.mk +2/−2
- doc/hdoc/Control-Arrow-ArrowIO.html +1/−1
- doc/hdoc/Control-Arrow-ArrowIf.html +1/−1
- doc/hdoc/Control-Arrow-ArrowList.html +1/−1
- doc/hdoc/Control-Arrow-ArrowNF.html +1/−1
- doc/hdoc/Control-Arrow-ArrowState.html +1/−1
- doc/hdoc/Control-Arrow-ArrowTree.html +1/−1
- doc/hdoc/Control-Arrow-IOListArrow.html +1/−1
- doc/hdoc/Control-Arrow-IOStateListArrow.html +1/−1
- doc/hdoc/Control-Arrow-ListArrow.html +1/−1
- doc/hdoc/Control-Arrow-ListArrows.html +1/−1
- doc/hdoc/Control-Arrow-StateListArrow.html +1/−1
- doc/hdoc/Data-AssocList.html +1/−1
- doc/hdoc/Data-Atom.html +1/−1
- doc/hdoc/Data-Char-UTF8.html +1/−1
- doc/hdoc/Data-NavTree.html +1/−1
- doc/hdoc/Data-Tree-Class.html +1/−1
- doc/hdoc/Data-Tree-NTree-Filter.html +0/−3779
- doc/hdoc/Data-Tree-NTree-TypeDefs.html +1/−1
- doc/hdoc/Text-XML-HXT-Arrow-DTDProcessing.html +1/−1
- doc/hdoc/Text-XML-HXT-Arrow-DocumentInput.html +1/−1
- doc/hdoc/Text-XML-HXT-Arrow-DocumentOutput.html +25/−10
- doc/hdoc/Text-XML-HXT-Arrow-Edit.html +49/−1
- doc/hdoc/Text-XML-HXT-Arrow-GeneralEntitySubstitution.html +1/−1
- doc/hdoc/Text-XML-HXT-Arrow-Namespace.html +20/−23
- doc/hdoc/Text-XML-HXT-Arrow-ParserInterface.html +1/−1
- doc/hdoc/Text-XML-HXT-Arrow-Pickle-DTD.html +1/−1
- doc/hdoc/Text-XML-HXT-Arrow-Pickle-Schema.html +1/−1
- doc/hdoc/Text-XML-HXT-Arrow-Pickle-Xml.html +137/−32
- doc/hdoc/Text-XML-HXT-Arrow-Pickle.html +7/−24
- doc/hdoc/Text-XML-HXT-Arrow-ProcessDocument.html +1/−1
- doc/hdoc/Text-XML-HXT-Arrow-ReadDocument.html +15/−3
- doc/hdoc/Text-XML-HXT-Arrow-WriteDocument.html +12/−9
- doc/hdoc/Text-XML-HXT-Arrow-XPath.html +13/−13
- doc/hdoc/Text-XML-HXT-Arrow-XPathSimple.html +19/−19
- doc/hdoc/Text-XML-HXT-Arrow-XmlArrow.html +2/−7
- doc/hdoc/Text-XML-HXT-Arrow-XmlIOStateArrow.html +66/−19
- doc/hdoc/Text-XML-HXT-Arrow-XmlRegex.html +1/−1
- doc/hdoc/Text-XML-HXT-Arrow.html +1/−1
- doc/hdoc/Text-XML-HXT-DOM-FormatXmlTree.html +1/−1
- doc/hdoc/Text-XML-HXT-DOM-Interface.html +1/−11
- doc/hdoc/Text-XML-HXT-DOM-IsoLatinTables.html +1/−1
- doc/hdoc/Text-XML-HXT-DOM-MimeTypeDefaults.html +1/−1
- doc/hdoc/Text-XML-HXT-DOM-MimeTypes.html +1/−1
- doc/hdoc/Text-XML-HXT-DOM-NamespacePredicates.html +0/−436
- doc/hdoc/Text-XML-HXT-DOM-QualifiedName.html +2214/−1136
- doc/hdoc/Text-XML-HXT-DOM-ShowXml.html +1/−1
- doc/hdoc/Text-XML-HXT-DOM-TypeDefs.html +1/−59
- doc/hdoc/Text-XML-HXT-DOM-UTF8Decoding.html +1/−1
- doc/hdoc/Text-XML-HXT-DOM-Unicode.html +2/−7
- doc/hdoc/Text-XML-HXT-DOM-Util.html +1/−1
- doc/hdoc/Text-XML-HXT-DOM-XmlKeywords.html +1/−1
- doc/hdoc/Text-XML-HXT-DOM-XmlNode.html +1/−1
- doc/hdoc/Text-XML-HXT-DOM-XmlOptions.html +1/−1
- doc/hdoc/Text-XML-HXT-DOM-XmlTreeTypes.html +0/−710
- doc/hdoc/Text-XML-HXT-DTDValidation-AttributeValueValidation.html +1/−1
- doc/hdoc/Text-XML-HXT-DTDValidation-DTDValidation.html +1/−1
- doc/hdoc/Text-XML-HXT-DTDValidation-DocTransformation.html +1/−1
- doc/hdoc/Text-XML-HXT-DTDValidation-DocValidation.html +1/−1
- doc/hdoc/Text-XML-HXT-DTDValidation-IdValidation.html +1/−1
- doc/hdoc/Text-XML-HXT-DTDValidation-RE.html +1/−1
- doc/hdoc/Text-XML-HXT-DTDValidation-TypeDefs.html +1/−1
- doc/hdoc/Text-XML-HXT-DTDValidation-Validation.html +1/−1
- doc/hdoc/Text-XML-HXT-DTDValidation-XmlRE.html +1/−1
- doc/hdoc/Text-XML-HXT-IO-GetFILE.html +38/−3
- doc/hdoc/Text-XML-HXT-IO-GetHTTPLibCurl.html +1/−1
- doc/hdoc/Text-XML-HXT-Parser-HtmlParsec.html +1/−1
- doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerUtil.html +1/−1
- doc/hdoc/Text-XML-HXT-Parser-TagSoup.html +1/−1
- doc/hdoc/Text-XML-HXT-Parser-XhtmlEntities.html +1/−1
- doc/hdoc/Text-XML-HXT-Parser-XmlCharParser.html +1/−1
- doc/hdoc/Text-XML-HXT-Parser-XmlDTDParser.html +1/−1
- doc/hdoc/Text-XML-HXT-Parser-XmlDTDTokenParser.html +1/−1
- doc/hdoc/Text-XML-HXT-Parser-XmlEntities.html +1/−1
- doc/hdoc/Text-XML-HXT-Parser-XmlParsec.html +1/−1
- doc/hdoc/Text-XML-HXT-Parser-XmlTokenParser.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-BasicArrows.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-CreatePattern.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibMysql.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibUtils.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibraries.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-DataTypes.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-PatternFunctions.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-PatternToString.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-Schema.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-SchemaGrammar.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-Simplification.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-Blocks.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-CharProps.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-Utils.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-Validation.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-Validator.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-Regex.html +113/−1
- doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html +3/−2
- doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html +1/−1
- doc/hdoc/Text-XML-HXT-RelaxNG.html +1/−1
- doc/hdoc/Text-XML-HXT-Version.html +1/−1
- doc/hdoc/Text-XML-HXT-XPath-NavTree.html +1/−1
- doc/hdoc/Text-XML-HXT-XPath-XPathArithmetic.html +1/−1
- doc/hdoc/Text-XML-HXT-XPath-XPathDataTypes.html +1/−1
- doc/hdoc/Text-XML-HXT-XPath-XPathEval.html +13/−13
- doc/hdoc/Text-XML-HXT-XPath-XPathFct.html +1/−1
- doc/hdoc/Text-XML-HXT-XPath-XPathKeywords.html +1/−1
- doc/hdoc/Text-XML-HXT-XPath-XPathParser.html +2/−9
- doc/hdoc/Text-XML-HXT-XPath-XPathToNodeSet.html +1/−1
- doc/hdoc/Text-XML-HXT-XPath-XPathToString.html +1/−1
- doc/hdoc/Text-XML-HXT-XPath.html +1/−1
- doc/hdoc/Text-XML-HXT-XSLT-Application.html +1/−1
- doc/hdoc/Text-XML-HXT-XSLT-Common.html +2/−9
- doc/hdoc/Text-XML-HXT-XSLT-Compilation.html +2/−9
- doc/hdoc/Text-XML-HXT-XSLT-CompiledStylesheet.html +1/−1
- doc/hdoc/Text-XML-HXT-XSLT-Names.html +1/−1
- doc/hdoc/Text-XML-HXT-XSLT-XsltArrows.html +1/−1
- doc/hdoc/doc-index.html +15808/−16332
- doc/hdoc/hxt.haddock binary
- doc/hdoc/index.html +3/−33
- doc/hdoc/src/Control-Arrow-ArrowNF.html +2/−0
- doc/hdoc/src/Data-Tree-NTree-Filter.html +0/−923
- doc/hdoc/src/Data-Tree-NTree-TypeDefs.html +1/−1
- doc/hdoc/src/Text-XML-HXT-Arrow-DocumentInput.html +313/−300
- doc/hdoc/src/Text-XML-HXT-Arrow-DocumentOutput.html +173/−161
- doc/hdoc/src/Text-XML-HXT-Arrow-Edit.html +783/−766
- doc/hdoc/src/Text-XML-HXT-Arrow-GeneralEntitySubstitution.html +4/−4
- doc/hdoc/src/Text-XML-HXT-Arrow-Namespace.html +394/−411
- doc/hdoc/src/Text-XML-HXT-Arrow-Pickle-Xml.html +690/−677
- doc/hdoc/src/Text-XML-HXT-Arrow-ProcessDocument.html +4/−4
- doc/hdoc/src/Text-XML-HXT-Arrow-ReadDocument.html +256/−250
- doc/hdoc/src/Text-XML-HXT-Arrow-WriteDocument.html +184/−173
- doc/hdoc/src/Text-XML-HXT-Arrow-XPath.html +4/−4
- doc/hdoc/src/Text-XML-HXT-Arrow-XPathSimple.html +451/−455
- doc/hdoc/src/Text-XML-HXT-Arrow-XmlArrow.html +41/−41
- doc/hdoc/src/Text-XML-HXT-Arrow-XmlIOStateArrow.html +850/−841
- doc/hdoc/src/Text-XML-HXT-DOM-Interface.html +14/−16
- doc/hdoc/src/Text-XML-HXT-DOM-MimeTypes.html +94/−92
- doc/hdoc/src/Text-XML-HXT-DOM-NamespacePredicates.html +0/−138
- doc/hdoc/src/Text-XML-HXT-DOM-QualifiedName.html +507/−184
- doc/hdoc/src/Text-XML-HXT-DOM-ShowXml.html +382/−383
- doc/hdoc/src/Text-XML-HXT-DOM-TypeDefs.html +36/−45
- doc/hdoc/src/Text-XML-HXT-DOM-Unicode.html +1100/−1101
- doc/hdoc/src/Text-XML-HXT-DOM-XmlKeywords.html +294/−290
- doc/hdoc/src/Text-XML-HXT-DOM-XmlNode.html +1/−1
- doc/hdoc/src/Text-XML-HXT-DOM-XmlOptions.html +118/−116
- doc/hdoc/src/Text-XML-HXT-DOM-XmlTreeTypes.html +0/−87
- doc/hdoc/src/Text-XML-HXT-IO-GetFILE.html +98/−78
- doc/hdoc/src/Text-XML-HXT-Parser-TagSoup.html +415/−447
- doc/hdoc/src/Text-XML-HXT-RelaxNG-Simplification.html +10/−10
- doc/hdoc/src/Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html +554/−558
- doc/hdoc/src/Text-XML-HXT-RelaxNG-XmlSchema-Regex.html +260/−238
- doc/hdoc/src/Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html +191/−185
- doc/hdoc/src/Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html +6/−14
- doc/hdoc/src/Text-XML-HXT-Version.html +1/−1
- doc/hdoc/src/Text-XML-HXT-XPath-XPathEval.html +6/−6
- doc/hdoc/src/Text-XML-HXT-XPath-XPathParser.html +648/−648
- doc/hdoc/src/Text-XML-HXT-XSLT-Common.html +373/−370
- doc/hdoc/src/Text-XML-HXT-XSLT-Compilation.html +490/−491
- doc/index.html +32/−12
- examples/arrows/Makefile +1/−1
- examples/arrows/RegexXMLSchema/Makefile +128/−0
- examples/arrows/RegexXMLSchema/REtest.hs +172/−0
- examples/arrows/hparser/Makefile +7/−1
- examples/arrows/hparser/emptyElements.html +16/−0
- examples/arrows/hxpath/Makefile +3/−0
- examples/arrows/hxpath/XPathShell.hs +16/−12
- examples/arrows/performance/GenDoc.hs +3/−2
- examples/arrows/performance/Makefile +9/−5
- hxt.cabal +1/−4
- src/Control/Arrow/ArrowNF.hs +2/−0
- src/Data/Tree/NTree/Filter.hs +0/−913
- src/Data/Tree/NTree/TypeDefs.hs +1/−1
- src/Makefile +0/−3
- src/Text/XML/HXT/Arrow/DocumentInput.hs +19/−6
- src/Text/XML/HXT/Arrow/DocumentOutput.hs +16/−4
- src/Text/XML/HXT/Arrow/Edit.hs +45/−28
- src/Text/XML/HXT/Arrow/GeneralEntitySubstitution.hs +4/−4
- src/Text/XML/HXT/Arrow/Namespace.hs +26/−43
- src/Text/XML/HXT/Arrow/Pickle/Xml.hs +48/−35
- src/Text/XML/HXT/Arrow/ProcessDocument.hs +4/−4
- src/Text/XML/HXT/Arrow/ReadDocument.hs +8/−2
- src/Text/XML/HXT/Arrow/WriteDocument.hs +28/−17
- src/Text/XML/HXT/Arrow/XPath.hs +4/−4
- src/Text/XML/HXT/Arrow/XPathSimple.hs +40/−44
- src/Text/XML/HXT/Arrow/XmlArrow.hs +22/−22
- src/Text/XML/HXT/Arrow/XmlIOStateArrow.hs +21/−12
- src/Text/XML/HXT/DOM/Interface.hs +0/−2
- src/Text/XML/HXT/DOM/MimeTypes.hs +7/−5
- src/Text/XML/HXT/DOM/NamespacePredicates.hs +0/−128
- src/Text/XML/HXT/DOM/QualifiedName.hs +438/−115
- src/Text/XML/HXT/DOM/ShowXml.hs +5/−6
- src/Text/XML/HXT/DOM/TypeDefs.hs +1/−10
- src/Text/XML/HXT/DOM/Unicode.hs +3/−4
- src/Text/XML/HXT/DOM/XmlKeywords.hs +4/−0
- src/Text/XML/HXT/DOM/XmlNode.hs +1/−1
- src/Text/XML/HXT/DOM/XmlOptions.hs +2/−0
- src/Text/XML/HXT/DOM/XmlTreeTypes.hs +0/−77
- src/Text/XML/HXT/IO/GetFILE.hs +49/−29
- src/Text/XML/HXT/Parser/TagSoup.hs +58/−90
- src/Text/XML/HXT/RelaxNG/Simplification.hs +10/−10
- src/Text/XML/HXT/RelaxNG/XmlSchema/DataTypeLibW3C.hs +12/−16
- src/Text/XML/HXT/RelaxNG/XmlSchema/Regex.hs +66/−44
- src/Text/XML/HXT/RelaxNG/XmlSchema/RegexMatch.hs +13/−7
- src/Text/XML/HXT/RelaxNG/XmlSchema/RegexParser.hs +5/−13
- src/Text/XML/HXT/Version.hs +1/−1
- src/Text/XML/HXT/XPath/XPathEval.hs +6/−6
- src/Text/XML/HXT/XPath/XPathParser.hs +35/−35
- src/Text/XML/HXT/XSLT/Common.hs +60/−57
- src/Text/XML/HXT/XSLT/Compilation.hs +10/−11
- src/hxt-package.hs +1/−1
Makefile view
@@ -35,13 +35,13 @@ # ------------------------------------------------------------ -CABAL_OPTIONS = +CABAL_OPTIONS = --global cabal : $(MAKE) cabal_configure cabal_build cabal_doc cabal_install cabal_configure :- runhaskell $(SETUP) configure --global $(CABAL_OPTIONS)+ runhaskell $(SETUP) configure $(CABAL_OPTIONS) cabal_doc : $(HSCOLOUR) -print-css > $(HSCOLOUR)@@ -164,7 +164,8 @@ ; cd $(DIST) || exit 1 \ ; runhaskell $(SETUP) configure $(CABAL_OPTIONS) || exit 1 \ ; runhaskell $(SETUP) build || exit 1 \- ; $(INSTALL) sudo runhaskell $(SETUP) install --global $(INSTEND) \+ ; $(MAKE) cabal_doc || exit 1 \+ ; $(INSTALL) sudo runhaskell $(SETUP) install $(CABAL_OPTIONS) $(INSTEND) \ ) distinstall :
Version.mk view
@@ -2,6 +2,6 @@ # Version numbering for HXT SOFTWARE = hxt-VERSION = 8.2.0-LASTVERSION = 8.1.2+VERSION = 8.3.0+LASTVERSION = 8.2.0 DIST_NAME = $(SOFTWARE)-$(VERSION)
doc/hdoc/Control-Arrow-ArrowIO.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Control-Arrow-ArrowIO.html" >Source code</A
doc/hdoc/Control-Arrow-ArrowIf.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Control-Arrow-ArrowIf.html" >Source code</A
doc/hdoc/Control-Arrow-ArrowList.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Control-Arrow-ArrowList.html" >Source code</A
doc/hdoc/Control-Arrow-ArrowNF.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Control-Arrow-ArrowNF.html" >Source code</A
doc/hdoc/Control-Arrow-ArrowState.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Control-Arrow-ArrowState.html" >Source code</A
doc/hdoc/Control-Arrow-ArrowTree.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Control-Arrow-ArrowTree.html" >Source code</A
doc/hdoc/Control-Arrow-IOListArrow.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Control-Arrow-IOListArrow.html" >Source code</A
doc/hdoc/Control-Arrow-IOStateListArrow.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Control-Arrow-IOStateListArrow.html" >Source code</A
doc/hdoc/Control-Arrow-ListArrow.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Control-Arrow-ListArrow.html" >Source code</A
doc/hdoc/Control-Arrow-ListArrows.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Control-Arrow-ListArrows.html" >Source code</A
doc/hdoc/Control-Arrow-StateListArrow.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Control-Arrow-StateListArrow.html" >Source code</A
doc/hdoc/Data-AssocList.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Data-AssocList.html" >Source code</A
doc/hdoc/Data-Atom.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Data-Atom.html" >Source code</A
doc/hdoc/Data-Char-UTF8.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Data-Char-UTF8.html" >Source code</A
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Data-NavTree.html" >Source code</A
doc/hdoc/Data-Tree-Class.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Data-Tree-Class.html" >Source code</A
− doc/hdoc/Data-Tree-NTree-Filter.html
@@ -1,3779 +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-8.2.0: A collection of tools for processing XML with Haskell.</TD-><TD CLASS="topbut"-><A HREF="src/Data-Tree-NTree-Filter.html"->Source code</A-></TD-><TD CLASS="topbut"-><A 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"->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-><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->Version : $Id: Filter.hs,v 1.6 2006<EM->11</EM->12 14:52:59 hxml Exp $-</P-><P->Filter for n-ary tree structure with filter combinators-copied and modified from HxXml (<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"->module <A HREF="Data-Tree-NTree-TypeDefs.html"->Data.Tree.NTree.TypeDefs</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ATFilter"->TFilter</A-> node = <A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> <A HREF="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="Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node -> <A HREF="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="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="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="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="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="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="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="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="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="decl"->module <A HREF="Data-Tree-NTree-TypeDefs.html"->Data.Tree.NTree.TypeDefs</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%3ATFilter"-></A-><B->TFilter</B-> node = <A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> <A HREF="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="Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node -> <A HREF="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="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="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="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="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="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="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="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node]) -> <A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> node -> m [<A HREF="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/hdoc/Data-Tree-NTree-TypeDefs.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Data-Tree-NTree-TypeDefs.html" >Source code</A
doc/hdoc/Text-XML-HXT-Arrow-DTDProcessing.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-DTDProcessing.html" >Source code</A
doc/hdoc/Text-XML-HXT-Arrow-DocumentInput.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-DocumentInput.html" >Source code</A
doc/hdoc/Text-XML-HXT-Arrow-DocumentOutput.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-DocumentOutput.html" >Source code</A@@ -44,10 +44,32 @@ ><FONT SIZE="6" >Text.XML.HXT.Arrow.DocumentOutput</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@@ -58,15 +80,8 @@ ></TR ><TR ><TD CLASS="doc"-><P->state arrows for document output-</P-><P->version: $Id: DocumentOutput.hs,v 1.7 2006<EM->11</EM->02 09:34:08 hxml Exp $-</P-></TD+>State arrows for document output+</TD ></TR ><TR ><TD CLASS="s15"
doc/hdoc/Text-XML-HXT-Arrow-Edit.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-Edit.html" >Source code</A@@ -308,6 +308,24 @@ ></TR ><TR ><TD CLASS="decl"+><A HREF="#v%3ApreventEmptyElements"+>preventEmptyElements</A+> :: <A HREF="Control-Arrow-ArrowList.html#t%3AArrowList"+>ArrowList</A+> a => <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</A+> -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"+>XmlTree</A+> <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"+>XmlTree</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl" ><A HREF="#v%3AremoveComment" >removeComment</A > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml"@@ -1147,6 +1165,36 @@ ></TT > </P+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3ApreventEmptyElements"+></A+><B+>preventEmptyElements</B+> :: <A HREF="Control-Arrow-ArrowList.html#t%3AArrowList"+>ArrowList</A+> a => <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</A+> -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"+>XmlTree</A+> <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"+>XmlTree</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-Arrow-Edit.html#preventEmptyElements"+>Source</A+></TD+></TR+></TABLE ></TD ></TR ><TR
doc/hdoc/Text-XML-HXT-Arrow-GeneralEntitySubstitution.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-GeneralEntitySubstitution.html" >Source code</A
doc/hdoc/Text-XML-HXT-Arrow-Namespace.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-Namespace.html" >Source code</A@@ -80,15 +80,8 @@ ></TR ><TR ><TD CLASS="doc"-><P->Version : $Id: Namespace.hs,v 1.13 2006<EM->11</EM->12 14:52:59 hxml Exp $-</P-><P >namespace specific arrows-</P-></TD+</TD ></TR ><TR ><TD CLASS="s15"@@ -111,7 +104,7 @@ >attachNsEnv</A > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+> a => <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A@@ -223,13 +216,13 @@ >processWithNsEnv</A > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => (<A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+> a => (<A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A > <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A->) -> <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+>) -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A@@ -247,13 +240,13 @@ >processWithNsEnvWithoutAttrl</A > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => (<A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+> a => (<A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A > <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A->) -> <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+>) -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A@@ -351,7 +344,7 @@ >attachNsEnv</B > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+> a => <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A@@ -611,13 +604,13 @@ >processWithNsEnv</B > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => (<A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+> a => (<A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A > <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A->) -> <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+>) -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A@@ -658,13 +651,13 @@ >processWithNsEnvWithoutAttrl</B > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => (<A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+> a => (<A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A > <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A->) -> <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+>) -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> a <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A@@ -867,16 +860,20 @@ ><P >Result is the list of errors concerning namespaces. Predicates <TT-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisWellformedQName"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedQName" >isWellformedQName</A ></TT >, <TT-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisWellformedQualifiedName"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedQualifiedName" >isWellformedQualifiedName</A ></TT->, isDeclaredNamespaces+>, <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisDeclaredNamespace"+>isDeclaredNamespace</A+></TT+> and <TT-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisWellformedNSDecl"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedNSDecl" >isWellformedNSDecl</A ></TT > are applied to the appropriate elements and attributes.
doc/hdoc/Text-XML-HXT-Arrow-ParserInterface.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-ParserInterface.html" >Source code</A
doc/hdoc/Text-XML-HXT-Arrow-Pickle-DTD.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-Pickle-DTD.html" >Source code</A
doc/hdoc/Text-XML-HXT-Arrow-Pickle-Schema.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-Pickle-Schema.html" >Source code</A
doc/hdoc/Text-XML-HXT-Arrow-Pickle-Xml.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html" >Source code</A@@ -81,34 +81,31 @@ ><TR ><TD CLASS="doc" ><P->Version : $Id$-</P-><P >Pickler functions for converting between user defined data types-and XmlTree data. Usefull for persistent storage and retreival-of arbitray data as XML documents+ and XmlTree data. Usefull for persistent storage and retreival+ of arbitray data as XML documents </P ><P >This module is an adaptation of the pickler combinators-developed by Andrew Kennedy-( http://research.microsoft.com/~akenn/fun/picklercombinators.pdf )+ developed by Andrew Kennedy+ ( http://research.microsoft.com/~akenn/fun/picklercombinators.pdf ) </P ><P >The difference to Kennedys approach is that the target is not-a list of Chars but a list of XmlTrees. The basic picklers will-convert data into XML text nodes. New are the picklers for-creating elements and attributes.+ a list of Chars but a list of XmlTrees. The basic picklers will+ convert data into XML text nodes. New are the picklers for+ creating elements and attributes. </P ><P >One extension was neccessary: The unpickling may fail.-Therefore the unpickler has a Maybe result type.-Failure is used to unpickle optional elements-(Maybe data) and lists of arbitray length+ Therefore the unpickler has a Maybe result type.+ Failure is used to unpickle optional elements+ (Maybe data) and lists of arbitray length </P ><P >There is an example program demonstrating the use-of the picklers for a none trivial data structure.-(see "examples/arrows/pickle" directory)+ of the picklers for a none trivial data structure.+ (see "examples/arrows/pickle" directory) </P ></TD ></TR@@ -267,8 +264,8 @@ ><TD CLASS="decl" ><A HREF="#v%3AgetAtt" >getAtt</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A > -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3ASt" >St</A > -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Maybe.html#t%3AMaybe"@@ -779,6 +776,22 @@ ></TR ><TR ><TD CLASS="decl"+><A HREF="#v%3AxpElemQN"+>xpElemQN</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"+>PU</A+> a -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"+>PU</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl" ><A HREF="#v%3AxpElem" >xpElem</A > :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"@@ -815,6 +828,22 @@ ></TR ><TR ><TD CLASS="decl"+><A HREF="#v%3AxpAttrQN"+>xpAttrQN</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"+>PU</A+> a -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"+>PU</A+> a</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl" ><A HREF="#v%3AxpAttr" >xpAttr</A > :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"@@ -1213,8 +1242,8 @@ ></A ><B >getAtt</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A > -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3ASt" >St</A > -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Maybe.html#t%3AMaybe"@@ -2514,19 +2543,19 @@ ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname"-><A NAME="v%3AxpElem"+><A NAME="v%3AxpElemQN" ></A ><B->xpElem</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A+>xpElemQN</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A > -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU" >PU</A > a -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU" >PU</A > a</TD ><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html#xpElem"+><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html#xpElemQN" >Source</A ></TD ></TR@@ -2539,14 +2568,14 @@ >Pickler for wrapping/unwrapping data into an XML element </P ><P->Extra parameter is the element name. THE pickler for constructing+>Extra parameter is the element name given as a QName. THE pickler for constructing nested structures </P ><P >Example: </P ><PRE-> xpElem "number" $ xpickle+> xpElemQN (mkName "number") $ xpickle </PRE ><P >will map an (42::Int) onto@@ -2565,6 +2594,44 @@ ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname"+><A NAME="v%3AxpElem"+></A+><B+>xpElem</B+> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+> -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"+>PU</A+> a -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"+>PU</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html#xpElem"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><P+>convenient Pickler for xpElemQN+</P+><PRE+> xpElem n = xpElemQN (mkName n)+</PRE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AxpElemWithAttrValue" ></A ><B@@ -2632,19 +2699,19 @@ ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname"-><A NAME="v%3AxpAttr"+><A NAME="v%3AxpAttrQN" ></A ><B->xpAttr</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A+>xpAttrQN</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A > -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU" >PU</A > a -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU" >PU</A > a</TD ><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html#xpAttr"+><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html#xpAttrQN" >Source</A ></TD ></TR@@ -2663,6 +2730,44 @@ ></TT > pickler </P+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxpAttr"+></A+><B+>xpAttr</B+> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+> -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"+>PU</A+> a -> <A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"+>PU</A+> a</TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-Arrow-Pickle-Xml.html#xpAttr"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><P+>convenient Pickler for xpAttrQN+</P+><PRE+> xpAttr n = xpAttrQN (mkName n)+</PRE ></TD ></TR ><TR
doc/hdoc/Text-XML-HXT-Arrow-Pickle.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-Pickle.html" >Source code</A@@ -1968,15 +1968,11 @@ ><TR ><TD CLASS="doc" ><P->Pickler for storing/retreiving data into/from an attribute value-</P-><P->The attribute is inserted in the surrounding element constructed by the <TT-><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpElem"->xpElem</A-></TT-> pickler+>convenient Pickler for xpAttrQN </P+><PRE+> xpAttr n = xpAttrQN (mkName n)+</PRE ></TD ></TR ><TR@@ -2208,23 +2204,10 @@ ><TR ><TD CLASS="doc" ><P->Pickler for wrapping/unwrapping data into an XML element-</P-><P->Extra parameter is the element name. THE pickler for constructing- nested structures-</P-><P->Example:-</P-><PRE-> xpElem "number" $ xpickle-</PRE-><P->will map an (42::Int) onto+>convenient Pickler for xpElemQN </P ><PRE-> <number>42</number>+> xpElem n = xpElemQN (mkName n) </PRE ></TD ></TR
doc/hdoc/Text-XML-HXT-Arrow-ProcessDocument.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-ProcessDocument.html" >Source code</A
doc/hdoc/Text-XML-HXT-Arrow-ReadDocument.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-ReadDocument.html" >Source code</A@@ -359,6 +359,17 @@ </LI ><LI > <TT+>a_strict_input</TT+> : file input is done strictly using the Data.ByteString input functions. This ensures correct closing of files, especially when working with+ the tagsoup parser and not processing the whole input data. Default is off. The <TT+>ByteString</TT+> input usually is not faster than the buildin <TT+>hGetContents</TT+>+ for strings.+</LI+><LI+> <TT >a_options_curl</TT > : deprecated but for compatibility reasons still supported. More options passed to the curl binding.@@ -432,12 +443,13 @@ >reads a HTML document from standard input, no validation is done when parsing HTML, default encoding is <TT >isoLatin1</TT >,-parsing is done with tagsoup parser+parsing is done with tagsoup parser, but input is read strictly </P ><PRE > readDocument [ (a_encoding, isoLatin1) , (a_mime_type, "/etc/mime.types")- , (a_tagsoup, "1")+ , (a_tagsoup, "1")+ , (a_strict_input, "1") ] "test.svg" </PRE ><P
doc/hdoc/Text-XML-HXT-Arrow-WriteDocument.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-WriteDocument.html" >Source code</A@@ -80,15 +80,8 @@ ></TR ><TR ><TD CLASS="doc"-><P->Version : $Id: WriteDocument.hs,v 1.8 2006<EM->11</EM->09 20:27:42 hxml Exp $-</P-><P >Compound arrow for writing XML documents-</P-></TD+</TD ></TR ><TR ><TD CLASS="s15"@@ -256,6 +249,16 @@ > <TT >a_output_html</TT > : issue XHTML: quote alle XML chars, use HTML entity refs or char refs for none ASCII chars+</LI+><LI+> <TT+>a_no_empty_elements</TT+> : do not write the short form <name .../> for empty elements. When <TT+>a_output_html</TT+> is set,+ the always empty HTML elements are still written in short form, but not the others, as e.g. the script element.+ Empty script elements, like <script href="..."/>, are always a problem for firefox and others.+ When XML output is generated with this option, all empty elements are written in the long form. </LI ><LI > <TT
doc/hdoc/Text-XML-HXT-Arrow-XPath.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-XPath.html" >Source code</A@@ -145,8 +145,8 @@ >getXPathTreesInDocWithNsEnv</A > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -183,8 +183,8 @@ >getXPathTreesWithNsEnv</A > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -305,8 +305,8 @@ >XmlTree</A > <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A-> -> <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> -> <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -420,8 +420,8 @@ >getXPathTreesInDocWithNsEnv</B > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -511,8 +511,8 @@ >getXPathTreesWithNsEnv</B > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -782,8 +782,8 @@ >XmlTree</A > <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree" >XmlTree</A-> -> <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> -> <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"
doc/hdoc/Text-XML-HXT-Arrow-XPathSimple.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-XPathSimple.html" >Source code</A@@ -155,8 +155,8 @@ >getXPathTreesInDocWithNsEnv</A > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -193,8 +193,8 @@ >getXPathTreesWithNsEnv</A > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -213,8 +213,8 @@ >tryGetXPath</A > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -233,8 +233,8 @@ >getXPathTreesWithNsEnvSimple</A > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -251,7 +251,7 @@ ><TD CLASS="decl" ><A HREF="#v%3AgetXP" >getXP</A-> :: <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString" >String</A@@ -1110,8 +1110,8 @@ >getXPathTreesInDocWithNsEnv</B > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -1182,8 +1182,8 @@ >getXPathTreesWithNsEnv</B > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -1219,8 +1219,8 @@ >tryGetXPath</B > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -1251,8 +1251,8 @@ >getXPathTreesWithNsEnvSimple</B > :: <A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml" >ArrowXml</A-> a => <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> a => <A HREF="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 <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -1292,7 +1292,7 @@ ></A ><B >getXP</B-> :: <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv" >NsEnv</A > -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString" >String</A
doc/hdoc/Text-XML-HXT-Arrow-XmlArrow.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-XmlArrow.html" >Source code</A@@ -81,11 +81,6 @@ ><TR ><TD CLASS="doc" ><P->Version : $Id: XmlArrow.hs,v 1.34 2006<EM->11</EM->02 16:43:39 hxml Exp $-</P-><P >Basic arrows for processing XML documents </P ><P@@ -2728,7 +2723,7 @@ ></TR ><TR ><TD CLASS="doc"->convenient arrow for element construction with strings instead of qualified names as tagnames, see also <TT+>convenient arrow for element construction with strings instead of qualified names as element names, see also <TT ><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkElement" >mkElement</A ></TT
doc/hdoc/Text-XML-HXT-Arrow-XmlIOStateArrow.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-XmlIOStateArrow.html" >Source code</A@@ -1076,21 +1076,31 @@ ></TR ><TR ><TD CLASS="decl"+><A HREF="#v%3AtraceValue"+>traceValue</A+> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"+>Int</A+> -> (b -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+>) -> <A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow"+>IOStateArrow</A+> s b b</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl" ><A HREF="#v%3AtraceString" >traceString</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/ghc/libraries/base/Data-Char.html#t%3AString"+> -> (b -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString" >String</A >) -> <A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow" >IOStateArrow</A-> s <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+> s b b</TD ></TR ><TR ><TD CLASS="s8"@@ -3431,7 +3441,7 @@ ></TR ><TR ><TD CLASS="doc"->issue a string message as trace +>issue a string message as trace </TD ></TR ><TR@@ -3443,23 +3453,56 @@ ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname"+><A NAME="v%3AtraceValue"+></A+><B+>traceValue</B+> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"+>Int</A+> -> (b -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+>) -> <A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow"+>IOStateArrow</A+> s b b</TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-Arrow-XmlIOStateArrow.html#traceValue"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><P+>trace the current value transfered in a sequence of arrows.+</P+><P+>The value is formated by a string conversion function. This is a substitute for+ the old and less general traceString function+</P+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname" ><A NAME="v%3AtraceString" ></A ><B >traceString</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/ghc/libraries/base/Data-Char.html#t%3AString"+> -> (b -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString" >String</A >) -> <A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow" >IOStateArrow</A-> s <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+> s b b</TD ><TD CLASS="declbut" ><A HREF="src/Text-XML-HXT-Arrow-XmlIOStateArrow.html#traceString" >Source</A@@ -3470,7 +3513,11 @@ ></TR ><TR ><TD CLASS="doc"->issue the string input of an arrow+>an old alias for <TT+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceValue"+>traceValue</A+></TT+> </TD ></TR ><TR
doc/hdoc/Text-XML-HXT-Arrow-XmlRegex.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow-XmlRegex.html" >Source code</A
doc/hdoc/Text-XML-HXT-Arrow.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Arrow.html" >Source code</A
doc/hdoc/Text-XML-HXT-DOM-FormatXmlTree.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-FormatXmlTree.html" >Source code</A
doc/hdoc/Text-XML-HXT-DOM-Interface.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-Interface.html" >Source code</A@@ -114,16 +114,6 @@ ><TD CLASS="decl" >module <A HREF="Text-XML-HXT-DOM-TypeDefs.html" >Text.XML.HXT.DOM.TypeDefs</A-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="decl"->module <A HREF="Text-XML-HXT-DOM-NamespacePredicates.html"->Text.XML.HXT.DOM.NamespacePredicates</A ></TD ></TR ><TR
doc/hdoc/Text-XML-HXT-DOM-IsoLatinTables.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-IsoLatinTables.html" >Source code</A
doc/hdoc/Text-XML-HXT-DOM-MimeTypeDefaults.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-MimeTypeDefaults.html" >Source code</A
doc/hdoc/Text-XML-HXT-DOM-MimeTypes.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-MimeTypes.html" >Source code</A
− doc/hdoc/Text-XML-HXT-DOM-NamespacePredicates.html
@@ -1,436 +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.NamespacePredicates</TITLE-><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"-><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"-></SCRIPT-></HEAD-><BODY-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="topbar"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD-><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "-></TD-><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM-NamespacePredicates.html"->Source code</A-></TD-><TD CLASS="topbut"-><A 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.NamespacePredicates</FONT-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Description</TD-></TR-><TR-><TD CLASS="doc"-><P->basic Namespace and QName predicates and functions-</P-><P->$Id: NamespacePredicates.hs,v 1.3 2006<EM->11</EM->12 14:53:00 hxml Exp $-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="section1"->Synopsis</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><A HREF="#v%3AsetNamespace"->setNamespace</A-> :: <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A-> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="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%3AxmlnsQN"->xmlnsQN</A-> :: <A HREF="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%3AisNCName"->isNCName</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-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisWellformedQualifiedName"->isWellformedQualifiedName</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-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AisWellformedQName"->isWellformedQName</A-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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%3AisWellformedNSDecl"->isWellformedNSDecl</A-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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%3AisDeclaredNamespace"->isDeclaredNamespace</A-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <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%3AsetNamespace"-></A-><B->setNamespace</B-> :: <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A-> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-NamespacePredicates.html#setNamespace"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->Compute the name prefix and the namespace uri for a qualified name.-</P-><P->This function does not test whether the name is a wellformed qualified name.- see Namespaces in XML Rule [6] to [8]. Error checking is done with separate functions,- see <TT-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisWellformedQName"->isWellformedQName</A-></TT-> and <TT-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisWellformedQualifiedName"->isWellformedQualifiedName</A-></TT-> for error checking.-</P-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AxmlnsQN"-></A-><B->xmlnsQN</B-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-NamespacePredicates.html#xmlnsQN"->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%3AisNCName"-></A-><B->isNCName</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-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-NamespacePredicates.html#isNCName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test for wellformed NCName, rule [4] XML Namespaces-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisWellformedQualifiedName"-></A-><B->isWellformedQualifiedName</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-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-NamespacePredicates.html#isWellformedQualifiedName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test for wellformed QName, rule [6] XML Namespaces- predicate is used in filter valdateNamespaces.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisWellformedQName"-></A-><B->isWellformedQName</B-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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-NamespacePredicates.html#isWellformedQName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test for wellformed QName values.- A QName is wellformed, if the local part is a NCName, the namePrefix, if not empty, is also a NCName.- predicate is used in filter valdateNamespaces.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisWellformedNSDecl"-></A-><B->isWellformedNSDecl</B-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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-NamespacePredicates.html#isWellformedNSDecl"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->test for a wellformed namespace declaration- all namespace prefixes starting with "xml" are reserved for XML related definitions.- predicate is used in filter valdateNamespaces.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AisDeclaredNamespace"-></A-><B->isDeclaredNamespace</B-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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-NamespacePredicates.html#isDeclaredNamespace"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->predicate is used in filter valdateNamespaces.-</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/hdoc/Text-XML-HXT-DOM-QualifiedName.html view
@@ -19,1142 +19,2220 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html"->Source code</A-></TD-><TD CLASS="topbut"-><A 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.QualifiedName</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"->The core data types of the HXT DOM.-</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%3AQName"->QName</A-> = <A HREF="#v%3AQN"->QN</A-> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="recfield"-><A HREF="#v%3AnamePrefix"->namePrefix</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="recfield"-><A HREF="#v%3AlocalPart"->localPart</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-></TR-><TR-><TD CLASS="recfield"-><A HREF="#v%3AnamespaceUri"->namespaceUri</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="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AqualifiedName"->qualifiedName</A-> :: <A HREF="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%3AuniversalName"->universalName</A-> :: <A HREF="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%3AuniversalUri"->universalUri</A-> :: <A HREF="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%3AbuildUniversalName"->buildUniversalName</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-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%3AmkQName"->mkQName</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-QualifiedName.html#t%3AQName"->QName</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkName"->mkName</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="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%3AmkPrefixLocalPart"->mkPrefixLocalPart</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-QualifiedName.html#t%3AQName"->QName</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkNsName"->mkNsName</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-QualifiedName.html#t%3AQName"->QName</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkSNsName"->mkSNsName</A-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="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%3AnullQName"->nullQName</A-> :: <A HREF="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%3AequalQName"->equalQName</A-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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%3AequivQName"->equivQName</A-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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%3AequivUri"->equivUri</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-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AequalQNameBy"->equalQNameBy</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-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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%3AnormalizeNsUri"->normalizeNsUri</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"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3AQName"-></A-><B->QName</B-> </TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#QName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="ndoc"-><P->Namespace support for element and attribute names.-</P-><P->A qualified name consists of a name prefix, a local name- and a namespace uri.- All modules, which are not namespace aware, use only the <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AlocalPart"->localPart</A-></TT-> component.- When dealing with namespaces, the document tree must be processed by <A HREF="propagateNamespaces.html"->propagateNamespaces</A->- to split names of structure "prefix:localPart" and label the name with the apropriate namespace uri-</P-></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%3AQN"-></A-><B->QN</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%3AnamePrefix"-></A-><B->namePrefix</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="rdoc"->the name prefix part of a qualified name "namePrefix:localPart"-</TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AlocalPart"-></A-><B->localPart</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="rdoc"->the local part of a qualified name "namePrefix:localPart"-</TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3AnamespaceUri"-></A-><B->namespaceUri</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="rdoc"->the associated namespace uri-</TD-></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:QName')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:QName" 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 HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Ord.html#t%3AOrd"->Ord</A-> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Read.html#t%3ARead"->Read</A-> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"->Show</A-> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Typeable.html#t%3ATypeable"->Typeable</A-> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="/usr/local/share/doc/ghc/libraries/parallel/Control-Parallel-Strategies.html#t%3ANFData"->NFData</A-> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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%3AqualifiedName"-></A-><B->qualifiedName</B-> :: <A HREF="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-QualifiedName.html#qualifiedName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->builds the full name "prefix:localPart", if prefix is not null, else the local part is the result-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AuniversalName"-></A-><B->universalName</B-> :: <A HREF="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-QualifiedName.html#universalName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->builds the "universal" name, that is the namespace uri surrounded with "{" and "}" followed by the local part- (specialisation of <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AbuildUniversalName"->buildUniversalName</A-></TT->)-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AuniversalUri"-></A-><B->universalUri</B-> :: <A HREF="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-QualifiedName.html#universalUri"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->builds an "universal" uri, that is the namespace uri followed by the local part. This is usefull for RDF applications,- where the subject, predicate and object often are concatenated from namespace uri and local part- (specialisation of <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AbuildUniversalName"->buildUniversalName</A-></TT->)-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AbuildUniversalName"-></A-><B->buildUniversalName</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-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-QualifiedName.html#buildUniversalName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->builds a string from the namespace uri and the local part. If the namespace uri is empty, the local part is returned, else- namespace uri and local part are combined with the combining function given by the first parameter-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkQName"-></A-><B->mkQName</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-QualifiedName.html#t%3AQName"->QName</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#mkQName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->constructs a complete qualified name with <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamePrefix"->namePrefix</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AlocalPart"->localPart</A-></TT-> and <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamespaceUri"->namespaceUri</A-></TT->.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AmkName"-></A-><B->mkName</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#mkName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->constructs a simple, namespace unaware name, <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamePrefix"->namePrefix</A-></TT-> and <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamespaceUri"->namespaceUri</A-></TT-> are set to 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%3AmkPrefixLocalPart"-></A-><B->mkPrefixLocalPart</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-QualifiedName.html#t%3AQName"->QName</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#mkPrefixLocalPart"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->constructs a simple name, with prefix and localPart but without a namespace uri.-</P-><P->see also <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkName"->mkName</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkNsName"->mkNsName</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkSNsName"->mkSNsName</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%3AmkNsName"-></A-><B->mkNsName</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-QualifiedName.html#t%3AQName"->QName</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#mkNsName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->constructs a simple, namespace aware name, with prefix:localPart as first parameter, namspace uri as second.-</P-><P->see also <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkName"->mkName</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkPrefixLocalPart"->mkPrefixLocalPart</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%3AmkSNsName"-></A-><B->mkSNsName</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#mkSNsName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"-><P->constructs a simple name, with prefix:localPart as 1 parameter, with empty namspace uri, same as 'mkPrefixLocalPart, but with a single parameter-</P-><P->see also <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkNsName"->mkNsName</A-></TT->, <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkPrefixLocalPart"->mkPrefixLocalPart</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%3AnullQName"-></A-><B->nullQName</B-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#nullQName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Empty QName-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AequalQName"-></A-><B->equalQName</B-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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-QualifiedName.html#equalQName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Equality of QNames: Two QNames are equal, if the local parts are equal- and the namespace URIs are equal.- The comparison works with and without namespace propagation.- If namespaces have been propagated, the name is split into prefix and local part- and the namespace uri is set. In this case the prefix is not significant for equality test.- If namespaces have not been propagated, the local part contains the full name, prefix- and namespace URI are empty. The full name (prefix and local part) is used for comparison.-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AequivQName"-></A-><B->equivQName</B-> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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-QualifiedName.html#equivQName"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Equivalent QNames are defined as follows: The URIs are normalized before comparison.- Comparison is done with <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequalQNameBy"->equalQNameBy</A-></TT-> and <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequivUri"->equivUri</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AequivUri"-></A-><B->equivUri</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-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#equivUri"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Comparison of normalized namespace URIs using <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnormalizeNsUri"->normalizeNsUri</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AequalQNameBy"-></A-><B->equalQNameBy</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-QualifiedName.html#t%3AQName"->QName</A-> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</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-QualifiedName.html#equalQNameBy"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Sometimes a weaker equality relation than <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequalQName"->equalQName</A-></TT-> is appropriate, e.g no case significance in names, ...- a name normalization function can be applied to the strings before comparing. Called by <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequalQName"->equalQName</A-></TT-> and- <TT-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequivQName"->equivQName</A-></TT->-</TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AnormalizeNsUri"-></A-><B->normalizeNsUri</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-QualifiedName.html#normalizeNsUri"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="doc"->Normalization of URIs: Normalization is done by conversion into lowercase letters. A trailing "/" is ignored-</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD+><TD CLASS="topbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A 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.QualifiedName</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"+>The core data types of the HXT DOM.+</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%3AQName"+>QName</A+> </TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3AXName"+>XName</A+> = Atom</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>type</SPAN+> <A HREF="#t%3ANsEnv"+>NsEnv</A+> = <A HREF="Data-AssocList.html#t%3AAssocList"+>AssocList</A+> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmkQName"+>mkQName</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-QualifiedName.html#t%3AQName"+>QName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmkName"+>mkName</A+> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+> -> <A HREF="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%3AmkNsName"+>mkNsName</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-QualifiedName.html#t%3AQName"+>QName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AmkSNsName"+>mkSNsName</A+> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+> -> <A HREF="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%3AmkPrefixLocalPart"+>mkPrefixLocalPart</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-QualifiedName.html#t%3AQName"+>QName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AequivQName"+>equivQName</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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%3AequivUri"+>equivUri</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+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AequalQNameBy"+>equalQNameBy</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-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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%3AnamePrefix"+>namePrefix</A+> :: <A HREF="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%3AlocalPart"+>localPart</A+> :: <A HREF="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%3AnamespaceUri"+>namespaceUri</A+> :: <A HREF="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%3AnewXName"+>newXName</A+> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AnullXName"+>nullXName</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AisNullXName"+>isNullXName</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</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%3AmkQName%27"+>mkQName'</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="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%3AnamePrefix%27"+>namePrefix'</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AlocalPart%27"+>localPart'</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AnamespaceUri%27"+>namespaceUri'</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AsetNamePrefix%27"+>setNamePrefix'</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="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%3AsetLocalPart%27"+>setLocalPart'</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="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%3AsetNamespaceUri%27"+>setNamespaceUri'</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="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%3AqualifiedName"+>qualifiedName</A+> :: <A HREF="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%3AuniversalName"+>universalName</A+> :: <A HREF="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%3AuniversalUri"+>universalUri</A+> :: <A HREF="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%3AbuildUniversalName"+>buildUniversalName</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-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%3AnormalizeNsUri"+>normalizeNsUri</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%3AsetNamespace"+>setNamespace</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv"+>NsEnv</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="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%3AisNCName"+>isNCName</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+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AisWellformedQualifiedName"+>isWellformedQualifiedName</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+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AisWellformedQName"+>isWellformedQName</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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%3AisWellformedNSDecl"+>isWellformedNSDecl</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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%3AisWellformedNameSpaceName"+>isWellformedNameSpaceName</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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%3AisNameSpaceName"+>isNameSpaceName</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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%3AisDeclaredNamespace"+>isDeclaredNamespace</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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%3AxmlNamespaceXName"+>xmlNamespaceXName</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxmlXName"+>xmlXName</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxmlnsNamespaceXName"+>xmlnsNamespaceXName</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxmlnsXName"+>xmlnsXName</A+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AxmlnsQN"+>xmlnsQN</A+> :: <A HREF="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%3AtoNsEnv"+>toNsEnv</A+> :: <A HREF="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/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv"+>NsEnv</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%3AQName"+></A+><B+>QName</B+> </TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#QName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+><P+>Namespace support for element and attribute names.+</P+><P+>A qualified name consists of a name prefix, a local name+ and a namespace uri.+ All modules, which are not namespace aware, use only the <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AlocalPart"+>localPart</A+></TT+> component.+ When dealing with namespaces, the document tree must be processed by <A HREF="propagateNamespaces.html"+>propagateNamespaces</A+>+ to split names of structure "prefix:localPart" and label the name with the apropriate namespace uri+</P+></TD+></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:QName')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:QName" 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 HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Ord.html#t%3AOrd"+>Ord</A+> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Read.html#t%3ARead"+>Read</A+> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="/usr/local/share/doc/ghc/libraries/base/Text-Show.html#t%3AShow"+>Show</A+> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Typeable.html#t%3ATypeable"+>Typeable</A+> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="/usr/local/share/doc/ghc/libraries/parallel/Control-Parallel-Strategies.html#t%3ANFData"+>NFData</A+> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+></TR+></TABLE+></DIV+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><SPAN CLASS="keyword"+>type</SPAN+> <A NAME="t%3AXName"+></A+><B+>XName</B+> = Atom</TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#XName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>XML names are represented by Strings, but these strings do not mix up with normal strings.+ Names are always reduced to normal form, and they are stored internally in a name cache+ for sharing equal names by the same data structure+</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%3ANsEnv"+></A+><B+>NsEnv</B+> = <A HREF="Data-AssocList.html#t%3AAssocList"+>AssocList</A+> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#NsEnv"+>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="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%3AmkQName"+></A+><B+>mkQName</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-QualifiedName.html#t%3AQName"+>QName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#mkQName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>constructs a complete qualified name with <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamePrefix"+>namePrefix</A+></TT+>, <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AlocalPart"+>localPart</A+></TT+> and <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamespaceUri"+>namespaceUri</A+></TT+>.+ This function can be used to build not wellformed prefix:localpart names.+ The XPath module uses wildcard names like <TT+>xxx:*</TT+>. These must be build with <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkQName"+>mkQName</A+></TT+>+ and not with mkName.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmkName"+></A+><B+>mkName</B+> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#mkName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>constructs a simple, namespace unaware name.+ If the name is in <TT+>prefix:localpart</TT+> form and the prefix is not empty+ the name is split internally into+ a prefix and a local part.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmkNsName"+></A+><B+>mkNsName</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-QualifiedName.html#t%3AQName"+>QName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#mkNsName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><P+>constructs a simple, namespace aware name, with prefix:localPart as first parameter,+ namspace uri as second.+</P+><P+>see also <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkName"+>mkName</A+></TT+>, <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkPrefixLocalPart"+>mkPrefixLocalPart</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%3AmkSNsName"+></A+><B+>mkSNsName</B+> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#mkSNsName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>old name for <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkName"+>mkName</A+></TT+>+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AmkPrefixLocalPart"+></A+><B+>mkPrefixLocalPart</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-QualifiedName.html#t%3AQName"+>QName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#mkPrefixLocalPart"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><P+>constructs a simple name, with prefix and localPart but without a namespace uri.+</P+><P+>see also <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkQName"+>mkQName</A+></TT+>, <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkName"+>mkName</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%3AequivQName"+></A+><B+>equivQName</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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-QualifiedName.html#equivQName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Equivalent QNames are defined as follows: The URIs are normalized before comparison.+ Comparison is done with <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequalQNameBy"+>equalQNameBy</A+></TT+> and <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequivUri"+>equivUri</A+></TT+>+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AequivUri"+></A+><B+>equivUri</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+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#equivUri"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Comparison of normalized namespace URIs using <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnormalizeNsUri"+>normalizeNsUri</A+></TT+>+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AequalQNameBy"+></A+><B+>equalQNameBy</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-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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-QualifiedName.html#equalQNameBy"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Sometimes a weaker equality relation than equalQName is appropriate, e.g no case significance in names, ...+ a name normalization function can be applied to the strings before comparing. Called by equalQName and+ <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequivQName"+>equivQName</A+></TT+>+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AnamePrefix"+></A+><B+>namePrefix</B+> :: <A HREF="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-QualifiedName.html#namePrefix"+>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%3AlocalPart"+></A+><B+>localPart</B+> :: <A HREF="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-QualifiedName.html#localPart"+>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%3AnamespaceUri"+></A+><B+>namespaceUri</B+> :: <A HREF="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-QualifiedName.html#namespaceUri"+>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%3AnewXName"+></A+><B+>newXName</B+> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#newXName"+>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%3AnullXName"+></A+><B+>nullXName</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#nullXName"+>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%3AisNullXName"+></A+><B+>isNullXName</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</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-QualifiedName.html#isNullXName"+>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%3AmkQName%27"+></A+><B+>mkQName'</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#mkQName%27"+>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%3AnamePrefix%27"+></A+><B+>namePrefix'</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#namePrefix%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>access name prefix+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AlocalPart%27"+></A+><B+>localPart'</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#localPart%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>access local part+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AnamespaceUri%27"+></A+><B+>namespaceUri'</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#namespaceUri%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>access namespace uri+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsetNamePrefix%27"+></A+><B+>setNamePrefix'</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#setNamePrefix%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>set name prefix+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsetLocalPart%27"+></A+><B+>setLocalPart'</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#setLocalPart%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>set local part+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsetNamespaceUri%27"+></A+><B+>setNamespaceUri'</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#setNamespaceUri%27"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>set name prefix+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AqualifiedName"+></A+><B+>qualifiedName</B+> :: <A HREF="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-QualifiedName.html#qualifiedName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>builds the full name "prefix:localPart", if prefix is not null, else the local part is the result+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AuniversalName"+></A+><B+>universalName</B+> :: <A HREF="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-QualifiedName.html#universalName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>builds the "universal" name, that is the namespace uri surrounded with "{" and "}" followed by the local part+ (specialisation of <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AbuildUniversalName"+>buildUniversalName</A+></TT+>)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AuniversalUri"+></A+><B+>universalUri</B+> :: <A HREF="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-QualifiedName.html#universalUri"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>builds an "universal" uri, that is the namespace uri followed by the local part. This is usefull for RDF applications,+ where the subject, predicate and object often are concatenated from namespace uri and local part+ (specialisation of <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AbuildUniversalName"+>buildUniversalName</A+></TT+>)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AbuildUniversalName"+></A+><B+>buildUniversalName</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-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-QualifiedName.html#buildUniversalName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>builds a string from the namespace uri and the local part. If the namespace uri is empty, the local part is returned, else+ namespace uri and local part are combined with the combining function given by the first parameter+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AnormalizeNsUri"+></A+><B+>normalizeNsUri</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-QualifiedName.html#normalizeNsUri"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>Normalization of URIs: Normalization is done by conversion into lowercase letters. A trailing "/" is ignored+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AsetNamespace"+></A+><B+>setNamespace</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv"+>NsEnv</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#setNamespace"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+><P+>Compute the name prefix and the namespace uri for a qualified name.+</P+><P+>This function does not test whether the name is a wellformed qualified name.+ see Namespaces in XML Rule [6] to [8]. Error checking is done with separate functions,+ see <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedQName"+>isWellformedQName</A+></TT+> and <TT+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedQualifiedName"+>isWellformedQualifiedName</A+></TT+> for error checking.+</P+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AisNCName"+></A+><B+>isNCName</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+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#isNCName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>test for wellformed NCName, rule [4] XML Namespaces+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AisWellformedQualifiedName"+></A+><B+>isWellformedQualifiedName</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+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#isWellformedQualifiedName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>test for wellformed QName, rule [6] XML Namespaces+ predicate is used in filter valdateNamespaces.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AisWellformedQName"+></A+><B+>isWellformedQName</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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-QualifiedName.html#isWellformedQName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>test for wellformed QName values.+ A QName is wellformed, if the local part is a NCName, the namePrefix, if not empty, is also a NCName.+ predicate is used in filter valdateNamespaces.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AisWellformedNSDecl"+></A+><B+>isWellformedNSDecl</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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-QualifiedName.html#isWellformedNSDecl"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>test whether an attribute name is a namesapce declaration name.+ If this is not the case True is the result, else+ the name must be a well formed namespace name:+ All namespace prefixes starting with "xml" are reserved for XML related definitions.+ predicate is used in filter valdateNamespaces.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AisWellformedNameSpaceName"+></A+><B+>isWellformedNameSpaceName</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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-QualifiedName.html#isWellformedNameSpaceName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>test for a namespace name to be well formed+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AisNameSpaceName"+></A+><B+>isNameSpaceName</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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-QualifiedName.html#isNameSpaceName"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>test whether a name is a namespace declaration attribute name+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AisDeclaredNamespace"+></A+><B+>isDeclaredNamespace</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</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-QualifiedName.html#isDeclaredNamespace"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="doc"+>predicate is used in filter valdateNamespaces.+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AxmlNamespaceXName"+></A+><B+>xmlNamespaceXName</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#xmlNamespaceXName"+>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%3AxmlXName"+></A+><B+>xmlXName</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#xmlXName"+>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%3AxmlnsNamespaceXName"+></A+><B+>xmlnsNamespaceXName</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#xmlnsNamespaceXName"+>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%3AxmlnsXName"+></A+><B+>xmlnsXName</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>XName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#xmlnsXName"+>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%3AxmlnsQN"+></A+><B+>xmlnsQN</B+> :: <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>QName</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#xmlnsQN"+>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%3AtoNsEnv"+></A+><B+>toNsEnv</B+> :: <A HREF="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/ghc/libraries/base/Data-Char.html#t%3AString"+>String</A+> -> <A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv"+>NsEnv</A+></TD+><TD CLASS="declbut"+><A HREF="src/Text-XML-HXT-DOM-QualifiedName.html#toNsEnv"+>Source</A+></TD+></TR+></TABLE+></TD ></TR ><TR ><TD CLASS="s15"
doc/hdoc/Text-XML-HXT-DOM-ShowXml.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-ShowXml.html" >Source code</A
doc/hdoc/Text-XML-HXT-DOM-TypeDefs.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-TypeDefs.html" >Source code</A@@ -356,24 +356,6 @@ ></TR ><TR ><TD CLASS="decl"-><SPAN CLASS="keyword"->type</SPAN-> <A HREF="#t%3ANsEnv"->NsEnv</A-> = <A HREF="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/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%3Ac_ok" >c_ok</A > :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AInt"@@ -1125,46 +1107,6 @@ >used for storing option lists and features of DTD parts </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%3ANsEnv"-></A-><B->NsEnv</B-> = <A HREF="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/ghc/libraries/base/Data-Char.html#t%3AString"->String</A-></TD-><TD CLASS="declbut"-><A HREF="src/Text-XML-HXT-DOM-TypeDefs.html#NsEnv"->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="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->QName</A-></TT-> values in a tree-</TD ></TR ><TR ><TD CLASS="s15"
doc/hdoc/Text-XML-HXT-DOM-UTF8Decoding.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-UTF8Decoding.html" >Source code</A
doc/hdoc/Text-XML-HXT-DOM-Unicode.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-Unicode.html" >Source code</A@@ -117,13 +117,8 @@ ></TR ><TR ><TD CLASS="doc"-><P->Version : $Id$-</P-><P >Unicode and UTF-8 Conversion Functions-</P-></TD+</TD ></TR ><TR ><TD CLASS="s15"
doc/hdoc/Text-XML-HXT-DOM-Util.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-Util.html" >Source code</A
doc/hdoc/Text-XML-HXT-DOM-XmlKeywords.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-XmlKeywords.html" >Source code</A
doc/hdoc/Text-XML-HXT-DOM-XmlNode.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-XmlNode.html" >Source code</A
doc/hdoc/Text-XML-HXT-DOM-XmlOptions.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DOM-XmlOptions.html" >Source code</A
− doc/hdoc/Text-XML-HXT-DOM-XmlTreeTypes.html
@@ -1,710 +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-8.2.0: A collection of tools for processing XML with Haskell.</TD-><TD CLASS="topbut"-><A HREF="src/Text-XML-HXT-DOM-XmlTreeTypes.html"->Source code</A-></TD-><TD CLASS="topbut"-><A 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"->module <A HREF="Text-XML-HXT-DOM-TypeDefs.html"->Text.XML.HXT.DOM.TypeDefs</A-></TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AmkNode"->mkNode</A-> :: node -> <A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node -> <A HREF="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="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="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="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> <A HREF="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="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="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="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="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="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="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="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="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="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="decl"->module <A HREF="Text-XML-HXT-DOM-TypeDefs.html"->Text.XML.HXT.DOM.TypeDefs</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="Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->NTrees</A-> node -> <A HREF="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="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="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="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->NTree</A-> a -> <A HREF="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="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="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="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="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="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="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="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="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="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="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="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/hdoc/Text-XML-HXT-DTDValidation-AttributeValueValidation.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DTDValidation-AttributeValueValidation.html" >Source code</A
doc/hdoc/Text-XML-HXT-DTDValidation-DTDValidation.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DTDValidation-DTDValidation.html" >Source code</A
doc/hdoc/Text-XML-HXT-DTDValidation-DocTransformation.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DTDValidation-DocTransformation.html" >Source code</A
doc/hdoc/Text-XML-HXT-DTDValidation-DocValidation.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DTDValidation-DocValidation.html" >Source code</A
doc/hdoc/Text-XML-HXT-DTDValidation-IdValidation.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DTDValidation-IdValidation.html" >Source code</A
doc/hdoc/Text-XML-HXT-DTDValidation-RE.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DTDValidation-RE.html" >Source code</A
doc/hdoc/Text-XML-HXT-DTDValidation-TypeDefs.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DTDValidation-TypeDefs.html" >Source code</A
doc/hdoc/Text-XML-HXT-DTDValidation-Validation.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DTDValidation-Validation.html" >Source code</A
doc/hdoc/Text-XML-HXT-DTDValidation-XmlRE.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-DTDValidation-XmlRE.html" >Source code</A
doc/hdoc/Text-XML-HXT-IO-GetFILE.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-IO-GetFILE.html" >Source code</A@@ -44,15 +44,46 @@ ><FONT SIZE="6" >Text.XML.HXT.IO.GetFILE</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"+>The GET method for file protocol+</TD+></TR+><TR ><TD CLASS="s15" ></TD ></TR@@ -77,7 +108,9 @@ ></A ><B >getStdinCont</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"+> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</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-Either.html#t%3AEither" >Either</A@@ -107,7 +140,9 @@ ></A ><B >getCont</B-> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"+> :: <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</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
doc/hdoc/Text-XML-HXT-IO-GetHTTPLibCurl.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-IO-GetHTTPLibCurl.html" >Source code</A
doc/hdoc/Text-XML-HXT-Parser-HtmlParsec.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Parser-HtmlParsec.html" >Source code</A
doc/hdoc/Text-XML-HXT-Parser-ProtocolHandlerUtil.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Parser-ProtocolHandlerUtil.html" >Source code</A
doc/hdoc/Text-XML-HXT-Parser-TagSoup.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Parser-TagSoup.html" >Source code</A
doc/hdoc/Text-XML-HXT-Parser-XhtmlEntities.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Parser-XhtmlEntities.html" >Source code</A
doc/hdoc/Text-XML-HXT-Parser-XmlCharParser.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Parser-XmlCharParser.html" >Source code</A
doc/hdoc/Text-XML-HXT-Parser-XmlDTDParser.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Parser-XmlDTDParser.html" >Source code</A
doc/hdoc/Text-XML-HXT-Parser-XmlDTDTokenParser.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Parser-XmlDTDTokenParser.html" >Source code</A
doc/hdoc/Text-XML-HXT-Parser-XmlEntities.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Parser-XmlEntities.html" >Source code</A
doc/hdoc/Text-XML-HXT-Parser-XmlParsec.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Parser-XmlParsec.html" >Source code</A
doc/hdoc/Text-XML-HXT-Parser-XmlTokenParser.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Parser-XmlTokenParser.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-BasicArrows.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-BasicArrows.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-CreatePattern.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-CreatePattern.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibMysql.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-DataTypeLibMysql.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibUtils.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-DataTypeLibUtils.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-DataTypeLibraries.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-DataTypeLibraries.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-DataTypes.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-DataTypes.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-PatternFunctions.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-PatternFunctions.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-PatternToString.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-PatternToString.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-Schema.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-Schema.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-SchemaGrammar.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-SchemaGrammar.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-Simplification.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-Simplification.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-Blocks.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-Unicode-Blocks.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-Unicode-CharProps.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-Unicode-CharProps.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-Utils.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-Utils.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-Validation.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-Validation.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-Validator.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-Validator.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-Regex.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-XmlSchema-Regex.html" >Source code</A@@ -415,6 +415,50 @@ >String</A ></TD ></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3A%3C%26%26%3E"+>(<&&>)</A+> :: (<A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</A+> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</A+>) -> (<A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</A+> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</A+>) -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</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%3A%3C%7C%7C%3E"+>(<||>)</A+> :: (<A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</A+> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</A+>) -> (<A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</A+> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</A+>) -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</A+> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</A+></TD+></TR ></TABLE ></TD ></TR@@ -1023,6 +1067,74 @@ ></TD ><TD CLASS="declbut" ><A HREF="src/Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#matchWithRE"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3A%3C%26%26%3E"+></A+><B+>(<&&>)</B+> :: (<A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</A+> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</A+>) -> (<A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</A+> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</A+>) -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</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-RelaxNG-XmlSchema-Regex.html#%3C%26%26%3E"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3A%3C%7C%7C%3E"+></A+><B+>(<||>)</B+> :: (<A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</A+> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</A+>) -> (<A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</A+> -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Bool.html#t%3ABool"+>Bool</A+>) -> <A HREF="/usr/local/share/doc/ghc/libraries/ghc-prim/GHC-Types.html#t%3AChar"+>Char</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-RelaxNG-XmlSchema-Regex.html#%3C%7C%7C%3E" >Source</A ></TD ></TR
doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html" >Source code</A@@ -405,7 +405,8 @@ </P ><PRE > splitRE "a*b" "abc" = Just ("ab","c")- splitRE "a*" "bc" = Just ("", "bc)+ splitRE "a*" "bc" = Just ("", "bc")+ splitRE "a+" "bc" = Nothing splitRE "[" "abc" = Nothing </PRE ></TD
doc/hdoc/Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html" >Source code</A
doc/hdoc/Text-XML-HXT-RelaxNG.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-RelaxNG.html" >Source code</A
doc/hdoc/Text-XML-HXT-Version.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-Version.html" >Source code</A
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XPath-NavTree.html" >Source code</A
doc/hdoc/Text-XML-HXT-XPath-XPathArithmetic.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XPath-XPathArithmetic.html" >Source code</A
doc/hdoc/Text-XML-HXT-XPath-XPathDataTypes.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XPath-XPathDataTypes.html" >Source code</A
doc/hdoc/Text-XML-HXT-XPath-XPathEval.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XPath-XPathEval.html" >Source code</A@@ -130,8 +130,8 @@ ><TD CLASS="decl" ><A HREF="#v%3AgetXPathWithNsEnv" >getXPathWithNsEnv</A-> :: <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> :: <A HREF="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="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -164,8 +164,8 @@ ><TD CLASS="decl" ><A HREF="#v%3AgetXPathSubTreesWithNsEnv" >getXPathSubTreesWithNsEnv</A-> :: <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> :: <A HREF="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="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -198,8 +198,8 @@ ><TD CLASS="decl" ><A HREF="#v%3AgetXPathNodeSetWithNsEnv" >getXPathNodeSetWithNsEnv</A-> :: <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> :: <A HREF="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="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -293,8 +293,8 @@ ></A ><B >getXPathWithNsEnv</B-> :: <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> :: <A HREF="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="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -386,8 +386,8 @@ ></A ><B >getXPathSubTreesWithNsEnv</B-> :: <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> :: <A HREF="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="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"@@ -458,8 +458,8 @@ ></A ><B >getXPathNodeSetWithNsEnv</B-> :: <A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->NsEnv</A+> :: <A HREF="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="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"
doc/hdoc/Text-XML-HXT-XPath-XPathFct.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XPath-XPathFct.html" >Source code</A
doc/hdoc/Text-XML-HXT-XPath-XPathKeywords.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XPath-XPathKeywords.html" >Source code</A
doc/hdoc/Text-XML-HXT-XPath-XPathParser.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XPath-XPathParser.html" >Source code</A@@ -80,15 +80,8 @@ ></TR ><TR ><TD CLASS="doc"-><P->Version : $Id: XPathParser.hs,v 1.6 2006<EM->10</EM->12 11:51:29 hxml Exp $-</P-><P >the XPath Parser-</P-></TD+</TD ></TR ><TR ><TD CLASS="s15"
doc/hdoc/Text-XML-HXT-XPath-XPathToNodeSet.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XPath-XPathToNodeSet.html" >Source code</A
doc/hdoc/Text-XML-HXT-XPath-XPathToString.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XPath-XPathToString.html" >Source code</A
doc/hdoc/Text-XML-HXT-XPath.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XPath.html" >Source code</A
doc/hdoc/Text-XML-HXT-XSLT-Application.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XSLT-Application.html" >Source code</A
doc/hdoc/Text-XML-HXT-XSLT-Common.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XSLT-Common.html" >Source code</A@@ -80,15 +80,8 @@ ></TR ><TR ><TD CLASS="doc"-><P->Version : $Id: Common.hs,v 1.5 2007<EM->05</EM->02 06:41:05 hxml Exp $-</P-><P >Common imports and functions for HXSLT-</P-></TD+</TD ></TR ><TR ><TD CLASS="s15"
doc/hdoc/Text-XML-HXT-XSLT-Compilation.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XSLT-Compilation.html" >Source code</A@@ -80,15 +80,8 @@ ></TR ><TR ><TD CLASS="doc"-><P->Version : $Id: Compilation.hs,v 1.7 2007<EM->05</EM->02 06:41:05 hxml Exp $-</P-><P >The compilation functions for XSLT stylesheets-</P-></TD+</TD ></TR ><TR ><TD CLASS="s15"
doc/hdoc/Text-XML-HXT-XSLT-CompiledStylesheet.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XSLT-CompiledStylesheet.html" >Source code</A
doc/hdoc/Text-XML-HXT-XSLT-Names.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XSLT-Names.html" >Source code</A
doc/hdoc/Text-XML-HXT-XSLT-XsltArrows.html view
@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="src/Text-XML-HXT-XSLT-XsltArrows.html" >Source code</A
doc/hdoc/doc-index.html view
@@ -4,16338 +4,15814 @@ ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE->hxt-8.2.0: A collection of tools for processing XML with Haskell. (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-8.2.0: A collection of tools for processing XML with Haskell.</TD-><TD CLASS="topbut"-><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" COLSPAN="2"->$$</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3A%24%24"->Text.XML.HXT.DTDValidation.TypeDefs</A-></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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->$<</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3A%24%3C"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->$<$</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3A%24%3C%24"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->$<<</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3A%24%3C%3C"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->$<<<</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3A%24%3C%3C%3C"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->$<<<<</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3A%24%3C%3C%3C%3C"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->&&&</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->&&&&</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3A%26%26%26%26"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->***</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->+++</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</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</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->+=</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3A%2B%3D"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</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</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</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->/></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3A%2F%3E"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->:-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Data Constructor)</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3A%3A-%3E"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"-><+></TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"-><+>></TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3A%3C%2B%3E%3E"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"-></</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3A%3C%2F"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"-><<<</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"-><<^</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->>.</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3A%3E."->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->>>.</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3A%3E%3E."->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->>>></TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->>>>></TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3A%3E%3E%3E%3E"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->>>^</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Abs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AAbs"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->accessState</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowState.html#v%3AaccessState"->Control.Arrow.ArrowState</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addAlias</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AaddAlias"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addAtt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AaddAtt"->Text.XML.HXT.Arrow.Pickle.Xml</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->addAttr</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AaddAttr"->Text.XML.HXT.DOM.XmlNode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AaddAttr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AaddAttrl"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addCont</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AaddCont"->Text.XML.HXT.Arrow.Pickle.Xml</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addDoctypeDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddDoctypeDecl"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addEntries</TD-><TD CLASS="indexlinks"-><A HREF="Data-AssocList.html#v%3AaddEntries"->Data.AssocList</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addEntry</TD-><TD CLASS="indexlinks"-><A HREF="Data-AssocList.html#v%3AaddEntry"->Data.AssocList</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addHeadlineToXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddHeadlineToXmlDoc"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addXHtmlDoctypeFrameset</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddXHtmlDoctypeFrameset"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addXHtmlDoctypeStrict</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddXHtmlDoctypeStrict"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addXHtmlDoctypeTransitional</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddXHtmlDoctypeTransitional"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addXmlPi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddXmlPi"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->addXmlPiEncoding</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddXmlPiEncoding"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->aelem</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aaelem"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->After</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->after</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3Aafter"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->aliasUriMapping</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AaliasUriMapping"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->allBut</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AallBut"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->allBut1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AallBut1"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->AllowedDatatypes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AAllowedDatatypes"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->AllowedParams</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AAllowedParams"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Alt</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.Schema</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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Ancestor</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AAncestor"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ancestorAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AancestorAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->AncestorOrSelf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AAncestorOrSelf"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ancestorOrSelfAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AancestorOrSelfAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->And</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AAnd"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Any</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.Schema</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->AnyName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->AnyNameExcept</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->app</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->application_xhtml</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->application_xml</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3Aapplication_xml"->Text.XML.HXT.DOM.MimeTypes</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->application_xml_dtd</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->application_xml_external_parsed_entity</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->applyA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3AapplyA"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->applyStylesheet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Application.html#v%3AapplyStylesheet"->Text.XML.HXT.XSLT.Application</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->applyStylesheetWParams</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Application.html#v%3AapplyStylesheetWParams"->Text.XML.HXT.XSLT.Application</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->appPickle</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AappPickle"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AappPickle"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->appUnPickle</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AappUnPickle"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AappUnPickle"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arr</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arr2</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3Aarr2"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arr2A</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3Aarr2A"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arr2L</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3Aarr2L"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arr3</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3Aarr3"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arr4</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3Aarr4"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arrIO</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIO.html#v%3AarrIO"->Control.Arrow.ArrowIO</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arrIO0</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIO.html#v%3AarrIO0"->Control.Arrow.ArrowIO</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arrIO2</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIO.html#v%3AarrIO2"->Control.Arrow.ArrowIO</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arrIO3</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIO.html#v%3AarrIO3"->Control.Arrow.ArrowIO</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arrIO4</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIO.html#v%3AarrIO4"->Control.Arrow.ArrowIO</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->arrL</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3AarrL"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Arrow</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowApply</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowChoice</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowDTD"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowIf</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#t%3AArrowIf"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowIO</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIO.html#t%3AArrowIO"->Control.Arrow.ArrowIO</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowIOIf</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIO.html#t%3AArrowIOIf"->Control.Arrow.ArrowIO</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowList</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#t%3AArrowList"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowLoop</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->ArrowMonad</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Type/Class)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowNF</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowNF.html#t%3AArrowNF"->Control.Arrow.ArrowNF</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowPlus</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowState</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowState.html#t%3AArrowState"->Control.Arrow.ArrowState</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowTree</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#t%3AArrowTree"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowXml</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ArrowZero</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->asciiLetter</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AasciiLetter"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->assembleStylesheet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Compilation.html#v%3AassembleStylesheet"->Text.XML.HXT.XSLT.Compilation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->assert</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Aassert"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->assertMaybe</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AassertMaybe"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->AssocList</TD-><TD CLASS="indexlinks"-><A HREF="Data-AssocList.html#t%3AAssocList"->Data.AssocList</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Atom</TD-><TD CLASS="indexlinks"-><A HREF="Data-Atom.html#t%3AAtom"->Data.Atom</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attachNsEnv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AattachNsEnv"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ATTLIST</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AATTLIST"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attlistDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AattlistDecl"->Text.XML.HXT.Parser.XmlDTDParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aattr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attrDec</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AattrDec"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attrEscapeXml</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AattrEscapeXml"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->AttribSet</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->Attribute</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Data Constructor)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AAttribute"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->3 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.Schema</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attributeAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AattributeAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Attributes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attributes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Aattributes"->Text.XML.HXT.Arrow.Pickle.Xml</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->AttributeSet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AAttributeSet"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attrNodes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AattrNodes"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->attrValue</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AattrValue"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AattrValue"->Text.XML.HXT.Parser.XmlDTDTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attrValueT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AattrValueT"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->attrValueT'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AattrValueT%27"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->AxisSpec</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AAxisSpec"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_addDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3Aa_addDTD"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_ancestor</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_ancestor_or_self</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathKeywords.html#v%3Aa_ancestor_or_self"->Text.XML.HXT.XPath.XPathKeywords</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_attribute</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_canonicalize</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_check_namespaces</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_check_restrictions</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_child</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_collect_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_column</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_contentLength</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_default</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_default"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_default_baseuri</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_descendant</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_descendant_or_self</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_canonicalize</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_check_namespaces</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_check_restrictions</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_do_not_check_restrictions"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_collect_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_issue_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_issue_warnings</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_preserve_comment</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_remove_whitespace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_use_curl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_validate</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_validate_externalRef</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_do_not_validate_include</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_encoding</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_error</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_error_log</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_following</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_following_sibling</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_help</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_ignore_encoding_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_ignore_none_xml_contents</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_indent</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_issue_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_issue_warnings</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_kind</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_line</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_mime_types</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_modifier</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_module</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_name</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_namespace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_no_xml_pi</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_numberOfErrors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_options_curl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_output_changes</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_output_encoding</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_output_file</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_output_html</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_output_xml</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_parent</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_parse_by_mimetype</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_parse_html</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_parse_xml</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_peref</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_preceding</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_preceding_sibling</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_preserve_comment</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_propagate_errors</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_proxy</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_relaxSimplificationChanges</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3Aa_relaxSimplificationChanges"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_relax_schema</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_remove_whitespace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_self</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_show_haskell</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_show_tree</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_source</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_standalone</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_status</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_tagsoup</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_trace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_type</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_url</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_use_curl</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_validate</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_validate_externalRef</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_validate_include</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_value</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_verbose</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_version</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_xml</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->a_xmlns</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->bar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Abar"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->buildUniversalName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AbuildUniversalName"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->canonicalizeAllNodes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AcanonicalizeAllNodes"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->canonicalizeContents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AcanonicalizeContents"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->canonicalizeForXPath</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AcanonicalizeForXPath"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->cardTree</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AcardTree"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->catA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3AcatA"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->cDSect</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AcDSect"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->changeAttrl</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeAttrl"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeAttrl"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->changeAttrName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeAttrName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeAttrName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeAttrValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeAttrValue"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeBaseURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AchangeBaseURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->changeChildren</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AchangeChildren"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AchangeChildren"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->changeCmt</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeCmt"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeCmt"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeDTDAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeDTDAttrl"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->changeElemName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeElemName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeElemName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->changeNode</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AchangeNode"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AchangeNode"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->changePiName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangePiName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangePiName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeQName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeState</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowState.html#v%3AchangeState"->Control.Arrow.ArrowState</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeSysParam</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AchangeSysParam"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->changeText</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeText"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeText"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->changeUserState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AchangeUserState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CharData</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.Schema</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->charData</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AcharData"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->charData'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AcharData%27"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->charRef</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AcharRef"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AcharRef"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->charRefT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AcharRefT"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->charRngs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AcharRngs"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->chars</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3Achars"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->charToHexString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AcharToHexString"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CheckA</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#t%3ACheckA"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkAM</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AcheckAM"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkAMC</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AcheckAMC"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkAttributeValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-AttributeValueValidation.html#v%3AcheckAttributeValue"->Text.XML.HXT.DTDValidation.AttributeValueValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkAttrModell</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AcheckAttrModell"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkContentModell</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AcheckContentModell"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkErr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AcheckErr"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CheckInteger</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#t%3ACheckInteger"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkPickler</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AcheckPickler"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkRE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3AcheckRE"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3AcheckRE"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkRngName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AcheckRngName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CheckString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#t%3ACheckString"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->checkWith</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AcheckWith"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Child</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AChild"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->childAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AchildAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ChildNodes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AChildNodes"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->childNodes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AchildNodes"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Choice</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->choice</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Achoice"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3Achoice"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->choiceA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AchoiceA"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->cleanupNamespaces</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AcleanupNamespaces"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->clearErrStatus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AclearErrStatus"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->closesHtmlTag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AclosesHtmlTag"->Text.XML.HXT.Parser.HtmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->cmt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Acmt"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->codeBlocks</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-Blocks.html#v%3AcodeBlocks"->Text.XML.HXT.RelaxNG.Unicode.Blocks</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->collapseAllXText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AcollapseAllXText"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->collapseXText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AcollapseXText"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->collectNamespaceDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AcollectNamespaceDecl"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->collectPrefixUriPairs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AcollectPrefixUriPairs"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->collectTextnodes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AcollectTextnodes"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->comma</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Acomma"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->comment</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Acomment"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compareURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AcompareURI"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compBool</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompBool"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compBoolExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompBoolExpr"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compFP</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompFP"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compGenExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompGenExpr"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CompiledStylesheet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ACompiledStylesheet"->Text.XML.HXT.XSLT.CompiledStylesheet</A->, <A HREF="Text-XML-HXT-XSLT-XsltArrows.html#t%3ACompiledStylesheet"->Text.XML.HXT.XSLT.XsltArrows</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compIntExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompIntExpr"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compLP</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompLP"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compNameT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNameT"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compNT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNT"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compNTA</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNTA"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compNTE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNTE"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compNumber</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNumber"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compNumberExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNumberExpr"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compPath</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompPath"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compPred</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompPred"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compPred1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompPred1"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CompQName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compRelPathExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompRelPathExpr"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompString"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compStringExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompStringExpr"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CompStylesheet</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ComputedQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AComputedQName"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->computeNTestPriority</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AcomputeNTestPriority"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->computePriority</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AcomputePriority"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compXP</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompXP"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compXPath</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompXPath"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->compXS</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompXS"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->concatExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AconcatExpr"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->concRes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AconcRes"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CONDSECT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3ACONDSECT"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ConLen</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AConLen"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ConNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AConNode"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ConPos</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AConPos"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->constA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3AconstA"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->constL</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3AconstL"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->containing</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Acontaining"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3Acontaining"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->contains</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3Acontains"->Text.XML.HXT.RelaxNG.Validation</A->, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CONTENT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3ACONTENT"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->content</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Acontent"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->contents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Acontents"->Text.XML.HXT.Arrow.Pickle.Xml</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ContentType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AContentType"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->contentWithTextDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AcontentWithTextDecl"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->Context</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AContext"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AContext"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->contextAttributes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AcontextAttributes"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->contextBaseAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AcontextBaseAttr"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->createDocumentOrder</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AcreateDocumentOrder"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->createDocumentOrderReverse</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AcreateDocumentOrderReverse"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->createNameClass</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-CreatePattern.html#v%3AcreateNameClass"->Text.XML.HXT.RelaxNG.CreatePattern</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->createPatternFromXmlTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-CreatePattern.html#v%3AcreatePatternFromXmlTree"->Text.XML.HXT.RelaxNG.CreatePattern</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->createSimpleForm</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Simplification.html#v%3AcreateSimpleForm"->Text.XML.HXT.RelaxNG.Simplification</A->, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CTComplex</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CTEmpty</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CTNone</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->CTSimple</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->c_err</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_err"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->c_fatal</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_fatal"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->c_ok</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_ok"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->c_warn</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_warn"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Data</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DataExcept</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dataNT</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3AdataNT"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Datatype</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatype"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DatatypeAllows</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeAllows"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->datatypeAllows</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibraries.html#v%3AdatatypeAllows"->Text.XML.HXT.RelaxNG.DataTypeLibraries</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DatatypeCheck</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeCheck"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DataTypeDescr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#t%3ADataTypeDescr"->Text.XML.HXT.Arrow.Pickle.Schema</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3ADataTypeDescr"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DatatypeEqual</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeEqual"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->datatypeEqual</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibraries.html#v%3AdatatypeEqual"->Text.XML.HXT.RelaxNG.DataTypeLibraries</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DatatypeLibraries</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeLibraries"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->datatypeLibraries</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibraries.html#v%3AdatatypeLibraries"->Text.XML.HXT.RelaxNG.DataTypeLibraries</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DatatypeLibrary</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeLibrary"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DatatypeName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeName"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->deadEndStreet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AdeadEndStreet"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->decimalStringToInt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AdecimalStringToInt"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->decode</TD-><TD CLASS="indexlinks"-><A HREF="Data-Char-UTF8.html#v%3Adecode"->Data.Char.UTF8</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->decodeDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-DocumentInput.html#v%3AdecodeDocument"->Text.XML.HXT.Arrow.DocumentInput</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->decodeEmbedErrors</TD-><TD CLASS="indexlinks"-><A HREF="Data-Char-UTF8.html#v%3AdecodeEmbedErrors"->Data.Char.UTF8</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->decodeOne</TD-><TD CLASS="indexlinks"-><A HREF="Data-Char-UTF8.html#v%3AdecodeOne"->Data.Char.UTF8</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->decodeUtf8</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-UTF8Decoding.html#v%3AdecodeUtf8"->Text.XML.HXT.DOM.UTF8Decoding</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->decodeUtf8EmbedErrors</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-UTF8Decoding.html#v%3AdecodeUtf8EmbedErrors"->Text.XML.HXT.DOM.UTF8Decoding</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->decodeUtf8IgnoreErrors</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-UTF8Decoding.html#v%3AdecodeUtf8IgnoreErrors"->Text.XML.HXT.DOM.UTF8Decoding</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DecodingFct</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3ADecodingFct"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DecodingFctEmbedErrors</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3ADecodingFctEmbedErrors"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->deep</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Adeep"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3Adeep"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->deep'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Adeep%27"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->deepest</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Adeepest"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3Adeepest"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->defaultMimeTypeTable</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AdefaultMimeTypeTable"->Text.XML.HXT.DOM.MimeTypes</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->defineOrigName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->delEntries</TD-><TD CLASS="indexlinks"-><A HREF="Data-AssocList.html#v%3AdelEntries"->Data.AssocList</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->delEntry</TD-><TD CLASS="indexlinks"-><A HREF="Data-AssocList.html#v%3AdelEntry"->Data.AssocList</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->delta</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3Adelta"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3Adelta"->Text.XML.HXT.Arrow.XmlRegex</A-></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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->depthTree</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AdepthTree"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Descendant</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ADescendant"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->descendantAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AdescendantAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DescendantOrSelf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ADescendantOrSelf"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->descendantOrSelfAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AdescendantOrSelfAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Div</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ADiv"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DOCTYPE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3ADOCTYPE"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->doctypedecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Adoctypedecl"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->document</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Adocument"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->document'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Adocument%27"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->documentStatusOk</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AdocumentStatusOk"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->doubles</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3Adoubles"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->downNT</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3AdownNT"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Adq"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dropCont</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AdropCont"->Text.XML.HXT.Arrow.Pickle.Xml</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtAllowedTypes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AdtAllowedTypes"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtAllowsFct</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AdtAllowsFct"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DTC</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtdChars</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AdtdChars"->Text.XML.HXT.Parser.XmlDTDTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtdDeclEnd</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AdtdDeclEnd"->Text.XML.HXT.Parser.XmlDTDTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtdDeclStart</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AdtdDeclStart"->Text.XML.HXT.Parser.XmlDTDTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtdDeclTokenizer</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AdtdDeclTokenizer"->Text.XML.HXT.Parser.XmlDTDTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->DTDdescr</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#t%3ADTDdescr"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.DTD</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtdDescr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AdtdDescr"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtdDescrToXml</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AdtdDescrToXml"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DTDElem</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ADTDElem"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->DTDescr</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.Schema</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtdToken</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AdtdToken"->Text.XML.HXT.Parser.XmlDTDTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtd_default</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_default"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtd_kind</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_kind"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtd_modifier</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_modifier"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtd_name</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_name"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtd_type</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_type"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtd_value</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_value"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtEqualFct</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AdtEqualFct"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtLib</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AdtLib"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AdtName"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->dtParams</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AdtParams"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->eelem</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aeelem"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ELEMENT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AELEMENT"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->Element</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.Schema</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->element</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Aelement"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->elementDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AelementDecl"->Text.XML.HXT.Parser.XmlDTDParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->elementDeclarations</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AelementDeclarations"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->elementDecs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AelementDecs"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->elemName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AelemName"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->elemNames</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AelemNames"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ElemRef</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.Schema</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->elemRefs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AelemRefs"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Empty</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->emptyHtmlTags</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AemptyHtmlTags"->Text.XML.HXT.Parser.HtmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->emptyNodeSet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathToNodeSet.html#v%3AemptyNodeSet"->Text.XML.HXT.XPath.XPathToNodeSet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->emptySt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AemptySt"->Text.XML.HXT.Arrow.Pickle.Xml</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->encName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AencName"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->encode</TD-><TD CLASS="indexlinks"-><A HREF="Data-Char-UTF8.html#v%3Aencode"->Data.Char.UTF8</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->encodeDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-DocumentOutput.html#v%3AencodeDocument"->Text.XML.HXT.Arrow.DocumentOutput</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->encodeOne</TD-><TD CLASS="indexlinks"-><A HREF="Data-Char-UTF8.html#v%3AencodeOne"->Data.Char.UTF8</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->encodingDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AencodingDecl"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ENTITY</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AENTITY"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityCharT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityCharT"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AentityDecl"->Text.XML.HXT.Parser.XmlDTDParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->entityRef</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityRef"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AentityRef"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityRefT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityRefT"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityTokensT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityTokensT"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityValue"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->entityValueT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityValueT"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->Env</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AEnv"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AEnv"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Eq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AEq"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->eq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Aeq"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->equalNodeSet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AequalNodeSet"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->equalQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequalQName"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->equalQNameBy</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequalQNameBy"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->equivQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequivQName"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->equivUri</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequivUri"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->err</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aerr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ErrLevel</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AErrLevel"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ErrMessage</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AErrMessage"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ErrMsg</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Error</TD-><TD CLASS="indexlinks"-><A HREF="Data-Char-UTF8.html#t%3AError"->Data.Char.UTF8</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgCollect</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AerrorMsgCollect"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgDataLibQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgDataLibQName"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgDataTypeNotAllowed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgDataTypeNotAllowed"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgDataTypeNotAllowed0</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgDataTypeNotAllowed0"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgDataTypeNotAllowed2</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgDataTypeNotAllowed2"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgEqual</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgEqual"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgIgnore</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AerrorMsgIgnore"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgParam</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgParam"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgStderr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AerrorMsgStderr"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->errorMsgStderrAndCollect</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AerrorMsgStderrAndCollect"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->escapeHtmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AescapeHtmlDoc"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->escapeURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AescapeURI"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->escapeXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AescapeXmlDoc"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->evalExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AevalExpr"->Text.XML.HXT.XPath.XPathEval</A->, Text.XML.HXT.XPath, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->evalFct</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AevalFct"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->exLocal</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AexLocal"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->ExName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#t%3AExName"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AExName"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->expandNSDecls</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AexpandNSDecls"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->expandURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AexpandURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->expandURIString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AexpandURIString"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Expr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AExpr"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->expr2XPathTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3Aexpr2XPathTree"->Text.XML.HXT.XPath.XPathToString</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->extensionToMimeType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AextensionToMimeType"->Text.XML.HXT.DOM.MimeTypes</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->exUri</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AexUri"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->failure</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Afailure"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->fatal</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Afatal"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->FctArguments</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AFctArguments"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->FctExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AFctExpr"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->FctName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AFctName"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->fctTableList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AfctTableList"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->fctTableString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AfctTableString"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->feedPreserves</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AfeedPreserves"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->feedSpaces</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AfeedSpaces"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->feedStrips</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->fetchAttribute</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AfetchAttribute"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->fetchAttributeWDefault</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AfetchAttributeWDefault"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->filterA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AfilterA"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->filterErrorMsg</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AfilterErrorMsg"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->FilterExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AFilterExpr"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->filterTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AfilterTree"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->filterTreeCtx</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AfilterTreeCtx"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->first</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->firstChild</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-CreatePattern.html#v%3AfirstChild"->Text.XML.HXT.RelaxNG.CreatePattern</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Float</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AFloat"->Text.XML.HXT.XPath.XPathDataTypes</A-></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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->foldTree</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AfoldTree"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Following</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AFollowing"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->followingAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AfollowingAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->FollowingSibling</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AFollowingSibling"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->followingSiblingAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AfollowingSiblingAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatNTreeF</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-TypeDefs.html#v%3AformatNTreeF"->Data.Tree.NTree.TypeDefs</A->, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatStringList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringList"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatStringListArr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringListArr"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatStringListId</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringListId"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatStringListPairs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringListPairs"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatStringListPatt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringListPatt"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatStringListQuot</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringListQuot"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatTree</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AformatTree"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatXmlContents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-FormatXmlTree.html#v%3AformatXmlContents"->Text.XML.HXT.DOM.FormatXmlTree</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->formatXmlTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-FormatXmlTree.html#v%3AformatXmlTree"->Text.XML.HXT.DOM.FormatXmlTree</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->foundErr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AfoundErr"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->fromJustErr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AfromJustErr"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->fromLA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ListArrow.html#v%3AfromLA"->Control.Arrow.ListArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->fromSLA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-StateListArrow.html#v%3AfromSLA"->Control.Arrow.StateListArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->FunctionTable</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#t%3AFunctionTable"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->generalOptions</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AgeneralOptions"->Text.XML.HXT.DOM.XmlOptions</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->GenExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AGenExpr"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getAliases</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetAliases"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getAllParams</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetAllParams"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getAllParamsString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetAllParamsString"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getAtt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AgetAtt"->Text.XML.HXT.Arrow.Pickle.Xml</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getAttributeSets</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetAttributeSets"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getAttrl</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetAttrl"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetAttrl"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getAttrl'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetAttrl%27"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getAttrName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetAttrName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetAttrName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getAttrValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetAttrValue"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getAttrValue0</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetAttrValue0"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getBaseURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetBaseURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getCdata</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetCdata"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetCdata"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getCharRef</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetCharRef"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetCharRef"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getChildren</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AgetChildren"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AgetChildren"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getChildren'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetChildren%27"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getChildrenNT</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3AgetChildrenNT"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getChildrenPattern</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AgetChildrenPattern"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getCmt</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetCmt"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetCmt"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getCont</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-IO-GetFILE.html#v%3AgetCont"->Text.XML.HXT.IO.GetFILE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-IO-GetHTTPLibCurl.html#v%3AgetCont"->Text.XML.HXT.IO.GetHTTPLibCurl</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->3 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AgetCont"->Text.XML.HXT.Arrow.Pickle.Xml</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getConvFct</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AgetConvFct"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getDecodingFct</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AgetDecodingFct"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getDecodingFctEmbedErrors</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AgetDecodingFctEmbedErrors"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getDefaultBaseURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetDefaultBaseURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getDocumentContents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ProcessDocument.html#v%3AgetDocumentContents"->Text.XML.HXT.Arrow.ProcessDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getDTDAttributes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AgetDTDAttributes"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getDTDAttrl</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetDTDAttrl"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetDTDAttrl"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getDTDAttrValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetDTDAttrValue"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getDTDPart</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetDTDPart"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetDTDPart"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getDTDSubset</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3AgetDTDSubset"->Text.XML.HXT.DTDValidation.Validation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getElemAndAttrNodeSet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetElemAndAttrNodeSet"->Text.XML.HXT.Arrow.XPath</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getElemName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetElemName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetElemName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getElemNodeSet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetElemNodeSet"->Text.XML.HXT.Arrow.XPath</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getEncoding</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-DocumentInput.html#v%3AgetEncoding"->Text.XML.HXT.Arrow.DocumentInput</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getEntityRef</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetEntityRef"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetEntityRef"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getErrorLevel</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetErrorLevel"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetErrorLevel"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getErrorMessages</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetErrorMessages"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getErrorMsg</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetErrorMsg"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetErrorMsg"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getErrors</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Simplification.html#v%3AgetErrors"->Text.XML.HXT.RelaxNG.Simplification</A->, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getErrStatus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetErrStatus"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getFragmentFromURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetFragmentFromURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getFromNodeSet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetFromNodeSet"->Text.XML.HXT.Arrow.XPath</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getKeyTab</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AgetKeyTab"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getLocalPart</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetLocalPart"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetLocalPart"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getMatchRules</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetMatchRules"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getNameClassFromPattern</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AgetNameClassFromPattern"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getNamedRules</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetNamedRules"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getNamePrefix</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetNamePrefix"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetNamePrefix"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getNamespaceDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AgetNamespaceDecl"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getNamespaceUri</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetNamespaceUri"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetNamespaceUri"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getNode</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AgetNode"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AgetNode"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getOutputEncoding</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-DocumentOutput.html#v%3AgetOutputEncoding"->Text.XML.HXT.Arrow.DocumentOutput</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getOutputEncodingFct</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AgetOutputEncodingFct"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getParam</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetParam"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getParamInt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetParamInt"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getParamString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetParamString"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getPathFromURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetPathFromURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getPatternName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AgetPatternName"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getPiContent</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetPiContent"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetPiContent"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getPiName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetPiName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetPiName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getPortFromURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetPortFromURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getQAttrValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetQAttrValue"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getQAttrValue0</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetQAttrValue0"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetQName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getQualifiedName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetQualifiedName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getQueryFromURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetQueryFromURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRegNameFromURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetRegNameFromURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRngAttrAttribute</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrAttribute"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRngAttrCombine</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrCombine"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRngAttrDatatypeLibrary</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrDatatypeLibrary"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRngAttrDescr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrDescr"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRngAttrHref</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrHref"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRngAttrName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRngAttrNs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrNs"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRngAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrType"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRuleImports</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetRuleImports"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRuleMode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetRuleMode"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRuleName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetRuleName"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getRulePrio</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetRulePrio"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getSchemeFromURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetSchemeFromURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getState</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowState.html#v%3AgetState"->Control.Arrow.ArrowState</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getStdinCont</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-IO-GetFILE.html#v%3AgetStdinCont"->Text.XML.HXT.IO.GetFILE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getStrips</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetStrips"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getSysParam</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetSysParam"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getText</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetText"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetText"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getTraceLevel</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetTraceLevel"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getUniversalName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetUniversalName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetUniversalName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getUniversalUri</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetUniversalUri"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetUniversalUri"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getURIContents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-DocumentInput.html#v%3AgetURIContents"->Text.XML.HXT.Arrow.DocumentInput</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getUriMap</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AgetUriMap"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getUserInfoFromURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetUserInfoFromURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getUserState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetUserState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getVariables</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetVariables"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getVarName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetVarName"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getVarTab</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AgetVarTab"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXmlContents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-DocumentInput.html#v%3AgetXmlContents"->Text.XML.HXT.Arrow.DocumentInput</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXmlEntityContents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-DocumentInput.html#v%3AgetXmlEntityContents"->Text.XML.HXT.Arrow.DocumentInput</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXP</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXP"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXPath</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPath"->Text.XML.HXT.XPath.XPathEval</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getXPathNodeSet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPathNodeSet"->Text.XML.HXT.XPath.XPathEval</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetXPathNodeSet"->Text.XML.HXT.Arrow.XPath</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXPathNodeSetWithNsEnv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPathNodeSetWithNsEnv"->Text.XML.HXT.XPath.XPathEval</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXPathSubTrees</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPathSubTrees"->Text.XML.HXT.XPath.XPathEval</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXPathSubTreesWithNsEnv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPathSubTreesWithNsEnv"->Text.XML.HXT.XPath.XPathEval</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getXPathTrees</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetXPathTrees"->Text.XML.HXT.Arrow.XPath</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXPathTrees"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getXPathTreesInDoc</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetXPathTreesInDoc"->Text.XML.HXT.Arrow.XPath</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXPathTreesInDoc"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getXPathTreesInDocWithNsEnv</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetXPathTreesInDocWithNsEnv"->Text.XML.HXT.Arrow.XPath</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXPathTreesInDocWithNsEnv"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->getXPathTreesWithNsEnv</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetXPathTreesWithNsEnv"->Text.XML.HXT.Arrow.XPath</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXPathTreesWithNsEnv"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXPathTreesWithNsEnvSimple</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXPathTreesWithNsEnvSimple"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->getXPathWithNsEnv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPathWithNsEnv"->Text.XML.HXT.XPath.XPathEval</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Greater</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AGreater"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->GreaterEq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AGreaterEq"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Group</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->group</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3Agroup"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->gt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Agt"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->guards</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Aguards"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3Aguards"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->guards'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Aguards%27"->Text.XML.HXT.Arrow.XPathSimple</A-></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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->guardsP</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AguardsP"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->guessEncoding</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AguessEncoding"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasAttr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasAttribute</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AhasAttribute"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasAttrValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasAttrValue"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasDTDAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasDTDAttr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasDTDAttrValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AhasDTDAttrValue"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasEntry</TD-><TD CLASS="indexlinks"-><A HREF="Data-AssocList.html#v%3AhasEntry"->Data.AssocList</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->haskellRepOfXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AhaskellRepOfXmlDoc"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasLocalPart</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasLocalPart"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasNamePrefix</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasNamePrefix"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasNamespaceUri</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasNamespaceUri"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasNameWith</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasNameWith"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasQAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasQAttr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasQAttrValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasQAttrValue"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasQName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasRngAttrAttribute</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrAttribute"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasRngAttrCombine</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrCombine"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasRngAttrDatatypeLibrary</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrDatatypeLibrary"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasRngAttrHref</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrHref"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasRngAttrName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasRngAttrNs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrNs"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasRngAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrType"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasRngName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasText"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hasXmlPi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AhasXmlPi"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hexStringToInt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AhexStringToInt"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hread</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3Ahread"->Text.XML.HXT.Arrow.ReadDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->httpPrefix</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AhttpPrefix"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->hxt_version</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Version.html#v%3Ahxt_version"->Text.XML.HXT.Version</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ifA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AifA"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ifP</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AifP"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->IfThen</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#t%3AIfThen"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#t%3AIfThen"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->indentDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AindentDoc"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->initialState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AinitialState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->initialSysState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AinitialSysState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->inputOptions</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AinputOptions"->Text.XML.HXT.DOM.XmlOptions</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->insertChildrenAfter</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AinsertChildrenAfter"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AinsertChildrenAfter"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->insertChildrenAt</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AinsertChildrenAt"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AinsertChildrenAt"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->insertTreeTemplate</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AinsertTreeTemplate"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Interleave</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->interleave</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3Ainterleave"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->intToCharRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AintToCharRef"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->intToCharRefHex</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AintToCharRefHex"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->intToHexString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AintToHexString"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->IOLA</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-IOListArrow.html#t%3AIOLA"->Control.Arrow.IOListArrow</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-IOListArrow.html#v%3AIOLA"->Control.Arrow.IOListArrow</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->IOSArrow</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOSArrow"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->IOSLA</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-IOStateListArrow.html#t%3AIOSLA"->Control.Arrow.IOStateListArrow</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-IOStateListArrow.html#v%3AIOSLA"->Control.Arrow.IOStateListArrow</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->IOStateArrow</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3AisA"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isAttlistOfElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisAttlistOfElement"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->isAttr</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisAttr"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisAttr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isAttributeListGroupInterleaveOneOrMore</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisAttributeListGroupInterleaveOneOrMore"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isAttributeRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisAttributeRef"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isAttributeRefTextListGroupInterleaveOneOrMoreEmpty</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisAttributeRefTextListGroupInterleaveOneOrMoreEmpty"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isAttributeRefTextListInterleave</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisAttributeRefTextListInterleave"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AisAttrType"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->isCdata</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisCdata"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisCdata"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->isCharRef</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisCharRef"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisCharRef"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isChoiceGroupInterleave</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisChoiceGroupInterleave"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isChoiceGroupInterleaveOneOrMore</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisChoiceGroupInterleaveOneOrMore"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->isCmt</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisCmt"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisCmt"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDeclaredNamespace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisDeclaredNamespace"->Text.XML.HXT.DOM.NamespacePredicates</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDefaultAttrKind</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDefaultAttrKind"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDefineOneOrMoreZeroOrMoreOptionalListMixed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisDefineOneOrMoreZeroOrMoreOptionalListMixed"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->isDTD</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisDTD"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTD"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDAttlist</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDAttlist"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDAttlistNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDTDAttlistNode"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDCondSect</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDCondSect"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDContent</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDContent"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDContentNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDTDContentNode"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDDoctype</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDDoctype"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDDoctypeNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDTDDoctypeNode"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDElement"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDElementNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDTDElementNode"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDEntity"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDNameNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDTDNameNode"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDNotation</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDNotation"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDPEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDPEntity"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isDTDPERef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDPERef"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->isElem</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisElem"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisElem"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isElemNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisElemNode"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isElemType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AisElemType"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isEmptyElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisEmptyElement"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isEmptyHtmlTag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AisEmptyHtmlTag"->Text.XML.HXT.Parser.HtmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->isEntityRef</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisEntityRef"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisEntityRef"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isEnumAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisEnumAttrType"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->isError</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisError"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisError"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isExternalRefInclude</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisExternalRefInclude"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isFixedAttrKind</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisFixedAttrKind"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isGroupInterleave</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisGroupInterleave"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isHtmlMimeType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AisHtmlMimeType"->Text.XML.HXT.DOM.MimeTypes</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isIdAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisIdAttrType"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isIdRefAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisIdRefAttrType"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isInner</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AisInner"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isInnerHtmlTagOf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AisInnerHtmlTagOf"->Text.XML.HXT.Parser.HtmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isIOA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIO.html#v%3AisIOA"->Control.Arrow.ArrowIO</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isLeaf</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AisLeaf"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isMatchExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AisMatchExpr"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isMixedContentElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisMixedContentElement"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AisName"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNameAnyNameNsName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisNameAnyNameNsName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNameNsName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisNameNsName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNameNsNameValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisNameNsNameValue"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNamespaceDeclAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AisNamespaceDeclAttr"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNCName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisNCName"->Text.XML.HXT.DOM.NamespacePredicates</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNmtoken</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AisNmtoken"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNotationAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisNotationAttrType"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNotInNodeList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AisNotInNodeList"->Text.XML.HXT.XPath.XPathFct</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNsAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AisNsAttr"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isNumber</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AisNumber"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aiso8859_1"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_10</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_11</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_13</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_14</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_15</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_16</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_2</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_3</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_4</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_5</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_6</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_7</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_8</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso8859_9</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</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</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isoLatin1</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_10</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_10"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_11</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_11"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_13</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_13"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_14</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_14"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_15</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_15"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_16</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_16"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_2</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_2"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_3</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_3"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_4</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_4"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_5</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_5"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_6</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_6"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_7</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_7"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_8</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_8"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->iso_8859_9</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_9"->Text.XML.HXT.DOM.IsoLatinTables</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isParam</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AisParam"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->isPi</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisPi"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisPi"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxAfter</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxAfter"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxAnyURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AisRelaxAnyURI"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxAttribute</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxAttribute"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxChoice</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxChoice"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxData</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxData"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxDataExcept</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxDataExcept"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxElement"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxEmpty</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxEmpty"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxGroup</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxGroup"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxInterleave</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxInterleave"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxList"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxNotAllowed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxNotAllowed"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxOneOrMore</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxOneOrMore"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxText"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRelaxValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxValue"->Text.XML.HXT.RelaxNG.PatternFunctions</A->, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRequiredAttrKind</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisRequiredAttrKind"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngAnyName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAnyName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngAttrAttribute</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrAttribute"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngAttrCombine</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrCombine"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngAttrDatatypeLibrary</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrDatatypeLibrary"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngAttrHref</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrHref"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngAttribute</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttribute"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngAttrName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngAttrNs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrNs"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngAttrType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrType"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngChoice</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngChoice"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngCombine</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngCombine"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngData</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngData"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngDefine</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngDefine"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngDiv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngDiv"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngElement"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngEmpty</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngEmpty"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngExcept</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngExcept"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngExternalRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngExternalRef"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngGrammar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngGrammar"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngGroup</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngGroup"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngInclude</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngInclude"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngInterleave</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngInterleave"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngList"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngMixed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngMixed"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngNotAllowed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngNotAllowed"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngNsName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngNsName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngOneOrMore</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngOneOrMore"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngOptional</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngOptional"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngParam</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngParam"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngParentRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngParentRef"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngRef"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngRelaxError</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngRelaxError"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngStart</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngStart"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngText"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngType"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngValue"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isRngZeroOrMore</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngZeroOrMore"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->isRoot</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisRoot"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisRoot"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isScAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScAttr"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isScCharData</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScCharData"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isScElem</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScElem"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isScElemRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScElemRef"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isScEnum</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScEnum"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isScFixed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScFixed"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isScList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScList"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isScOpt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScOpt"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isScSARE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScSARE"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isScXsd</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScXsd"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->issueErr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AissueErr"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->issueFatal</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AissueFatal"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->issueWarn</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AissueWarn"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->isText</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisText"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisText"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isTrueValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AisTrueValue"->Text.XML.HXT.DOM.XmlOptions</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeC</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeC"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeCc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeCc"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeCf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeCf"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeCo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeCo"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeCs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeCs"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeL</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeL"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeLl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeLl"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeLm</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeLm"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeLo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeLo"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeLt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeLt"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeLu</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeLu"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeM</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeM"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeMc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeMc"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeMe</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeMe"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeMn</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeMn"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeN</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeN"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeNd</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeNd"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeNl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeNl"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeNo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeNo"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeP</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeP"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodePc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePc"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodePd</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePd"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodePe</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePe"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodePf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePf"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodePi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePi"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodePo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePo"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodePs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePs"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeS</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeS"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeSc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeSc"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeSk</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeSk"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeSm</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeSm"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeSo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeSo"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeZ</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeZ"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeZl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeZl"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeZp</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeZp"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnicodeZs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeZs"->Text.XML.HXT.RelaxNG.Unicode.CharProps</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isUnparsedEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisUnparsedEntity"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isWellformedNSDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisWellformedNSDecl"->Text.XML.HXT.DOM.NamespacePredicates</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isWellformedQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisWellformedQName"->Text.XML.HXT.DOM.NamespacePredicates</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isWellformedQualifiedName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AisWellformedQualifiedName"->Text.XML.HXT.DOM.NamespacePredicates</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isWhiteSpace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisWhiteSpace"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isWhitespaceNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AisWhitespaceNode"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXml11SpaceChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXml11SpaceChar"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlBaseChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlBaseChar"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlChar"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlCombiningChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlCombiningChar"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlControlOrPermanentlyUndefined</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlControlOrPermanentlyUndefined"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlDigit</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlDigit"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlExtender</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlExtender"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlIdeographicChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlIdeographicChar"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlLatin1Char</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlLatin1Char"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlLetter</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlLetter"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlMimeType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AisXmlMimeType"->Text.XML.HXT.DOM.MimeTypes</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlNameChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlNameChar"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlNameStartChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlNameStartChar"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlNCNameChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlNCNameChar"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlNCNameStartChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlNCNameStartChar"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlPi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisXmlPi"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlPubidChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlPubidChar"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isXmlSpaceChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlSpaceChar"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->isZero</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AisZero"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->KeyTab</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AKeyTab"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->keyword</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Akeyword"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->keywords</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Akeywords"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->Kleisli</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Type/Class)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_any</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_cdata</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Ak_cdata"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_default</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_empty</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_entities</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_entity</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_enumeration</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_fixed</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_id</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_idref</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_idrefs</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_ignore</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_implied</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_include</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_ndata</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_nmtoken</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_nmtokens</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_notation</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_pcdata</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_peref</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_public</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_required</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->k_system</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->LA</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ListArrow.html#t%3ALA"->Control.Arrow.ListArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ListArrow.html#v%3ALA"->Control.Arrow.ListArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lastChild</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-CreatePattern.html#v%3AlastChild"->Text.XML.HXT.RelaxNG.CreatePattern</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->latin1ToUnicode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Alatin1ToUnicode"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->left</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->leftApp</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->leftNT</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3AleftNT"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Less</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ALess"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->LessEq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ALessEq"->Text.XML.HXT.XPath.XPathDataTypes</A-></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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->liftSt</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-IOStateListArrow.html#v%3AliftSt"->Control.Arrow.IOStateListArrow</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->List</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->listA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3AlistA"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Literal</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ALiteral"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->LiteralExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ALiteralExpr"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->LiteralQName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->LocalName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ALocalName"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ALocalName"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->localPart</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AlocalPart"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->LocationPath</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ALocationPath"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->LocPath</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ALocPath"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lookup1</TD-><TD CLASS="indexlinks"-><A HREF="Data-AssocList.html#v%3Alookup1"->Data.AssocList</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lookupAlias</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AlookupAlias"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lookupDef</TD-><TD CLASS="indexlinks"-><A HREF="Data-AssocList.html#v%3AlookupDef"->Data.AssocList</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lookupPrefix</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AlookupPrefix"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lookupStrip</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AlookupStrip"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lookupStrip1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AlookupStrip1"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->loop</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lpar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Alpar"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->lt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Alt"->Text.XML.HXT.Parser.XmlTokenParser</A-></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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mapTreeCtx</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmapTreeCtx"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->markupdecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Amarkupdecl"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->match</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3Amatch"->Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A->, Text.XML.HXT.RelaxNG</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-DTDValidation-RE.html#v%3Amatches"->Text.XML.HXT.DTDValidation.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Amatches"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->MatchExpr</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AMatchExpr"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->matchRE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3AmatchRE"->Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->matchRegexA</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmatchRegexA"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->MatchRule</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AMatchRule"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->matchWithRE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmatchWithRE"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->matchXmlRegex</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmatchXmlRegex"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->MatRule</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->maybePlus</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3AmaybePlus"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->maybeStar</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3AmaybeStar"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mergeA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3AmergeA"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mergeAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmergeAttrl"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mergeNotAllowed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AmergeNotAllowed"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mimeTypeDefaults</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-MimeTypeDefaults.html#v%3AmimeTypeDefaults"->Text.XML.HXT.DOM.MimeTypeDefaults</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->MimeTypeTable</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-MimeTypes.html#t%3AMimeTypeTable"->Text.XML.HXT.DOM.MimeTypes</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Minus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AMinus"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->misc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Amisc"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mk</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Amk"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkAbsURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AmkAbsURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkAlt</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkAlt"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkAlt"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkAttr</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkAttr"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkAttr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkAttrNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkAttrNode"->Text.XML.HXT.DOM.XmlNode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkBoolExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmkBoolExpr"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkCdata</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkCdata"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkCdata"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkCharRef</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkCharRef"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkCharRef"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkCmt</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkCmt"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkCmt"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkCompl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkCompl"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkDif</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkDif"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkDot</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkDot"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkDot"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkDTDDoctype</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkDTDDoctype"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkDTDElem</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkDTDElem"->Text.XML.HXT.DOM.XmlNode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkDTDElem"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkDTDElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkDTDElement"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkDTDEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkDTDEntity"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkDTDNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkDTDNode"->Text.XML.HXT.DOM.XmlNode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkDTDPEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkDTDPEntity"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkelem</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Amkelem"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkElement</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkElement"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkElement"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkElementNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkElementNode"->Text.XML.HXT.DOM.XmlNode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkEntityRef</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkEntityRef"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkEntityRef"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkError</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkError"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkError"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkExName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmkExName"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkLeaf</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AmkLeaf"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AmkLeaf"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AmkList"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkLiteralExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmkLiteralExpr"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkName"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkNsName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkNsName"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkOpt</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkOpt"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkOpt"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkPi</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkPi"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkPi"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkPrefixLocalPart</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkPrefixLocalPart"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkPrim</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkPrim"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkPrimA</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkPrimA"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkqelem</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Amkqelem"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkQName"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkRep</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkRep"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkRep"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkRng</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkRng"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkRng"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngChoice</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngChoice"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngDefine</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngDefine"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngElement</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngElement"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngEmpty</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngEmpty"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngGrammar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngGrammar"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngGroup</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngGroup"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngInterleave</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngInterleave"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngNotAllowed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngNotAllowed"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngOneOrMore</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngOneOrMore"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngRef"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngRelaxError</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngRelaxError"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngStart</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngStart"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRngText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngText"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkRoot</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkRoot"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkSeq</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkSeq"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkSeq"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkSNsName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkSNsName"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkStar</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkStar"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkStar"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkStringExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmkStringExpr"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkSym</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkSym"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkSym1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkSym1"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkSymRng</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkSymRng"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkText</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkText"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkText"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkTree</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AmkTree"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AmkTree"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkTrueExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmkTrueExpr"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkUnit</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkUnit"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkUnit"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->MkVar</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXsltAttribName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AmkXsltAttribName"->Text.XML.HXT.XSLT.Names</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mkXsltName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AmkXsltName"->Text.XML.HXT.XSLT.Names</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->mkZero</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkZero"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkZero"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Mod</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AMod"->Text.XML.HXT.XPath.XPathDataTypes</A-></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</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</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->msgToErr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AmsgToErr"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Mult</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AMult"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->multi</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Amulti"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3Amulti"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->multi'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Amulti%27"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mysqlDatatypeLib</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibMysql.html#v%3AmysqlDatatypeLib"->Text.XML.HXT.RelaxNG.DataTypeLibMysql</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->mysqlNS</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibMysql.html#v%3AmysqlNS"->Text.XML.HXT.RelaxNG.DataTypeLibMysql</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NAME</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3ANAME"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->Name</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AName"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->3 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#t%3AName"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->name</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Aname"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NameClass</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ANameClass"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NameClassChoice</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nameClassToString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3AnameClassToString"->Text.XML.HXT.RelaxNG.PatternToString</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NamedRule</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ANamedRule"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nameOfAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AnameOfAttr"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nameOfElem</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AnameOfElem"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NamePair</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ANamePair"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NamePrefix</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ANamePrefix"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->namePrefix</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamePrefix"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->names</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Anames"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Namespace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANamespace"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->namespaceUri</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamespaceUri"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nameT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AnameT"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NameTest</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANameTest"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NamRule</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NaN</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANaN"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NavTree</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#t%3ANavTree"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NavXmlTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ANavXmlTree"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NavXmlTrees</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ANavXmlTrees"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NCError</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ncName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AncName"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->neg</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Aneg"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3Aneg"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Neg0</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANeg0"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NegInf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANegInf"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NEq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANEq"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->newAtom</TD-><TD CLASS="indexlinks"-><A HREF="Data-Atom.html#v%3AnewAtom"->Data.Atom</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NewName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ANewName"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nextState</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowState.html#v%3AnextState"->Control.Arrow.ArrowState</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nmtoken</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Anmtoken"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nmtokens</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Anmtokens"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nmtokenT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AnmtokenT"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NodeSet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ANodeSet"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nodesTree</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AnodesTree"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NodeTest</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ANodeTest"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->noDoubles</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AnoDoubles"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->none</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Anone"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3Anone"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->noOfChildren</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AnoOfChildren"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->normalizeAttributeValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-AttributeValueValidation.html#v%3AnormalizeAttributeValue"->Text.XML.HXT.DTDValidation.AttributeValueValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->normalizeBlanks</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AnormalizeBlanks"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->normalizeForRelaxValidation</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AnormalizeForRelaxValidation"->Text.XML.HXT.RelaxNG.Validation</A->, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->normalizeNL</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AnormalizeNL"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->normalizeNsUri</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnormalizeNsUri"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->normalizeNumber</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AnormalizeNumber"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->normalizeURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AnormalizeURI"->Text.XML.HXT.RelaxNG.Utils</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->normalizeWhitespace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AnormalizeWhitespace"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NotAllowed</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->notAllowed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AnotAllowed"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->notAllowed1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AnotAllowed1"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->notAllowed2</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AnotAllowed2"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->notAllowedN</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AnotAllowedN"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NOTATION</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3ANOTATION"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->notationDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AnotationDecl"->Text.XML.HXT.Parser.XmlDTDParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->notContaining</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AnotContaining"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AnotContaining"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NSAliasing</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ANSAliasing"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NsEnv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ANsEnv"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NsName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NsNameExcept</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NT</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3ANT"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nt2XPathTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3Ant2XPathTree"->Text.XML.HXT.XPath.XPathToString</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NTest</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ANTest"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->NTree</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"->Data.Tree.NTree.TypeDefs</A->, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-TypeDefs.html#v%3ANTree"->Data.Tree.NTree.TypeDefs</A->, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ntree</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3Antree"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NTrees</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTrees"->Data.Tree.NTree.TypeDefs</A->, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->nullable</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3Anullable"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Anullable"->Text.XML.HXT.DTDValidation.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->3 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3Anullable"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->nullQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnullQName"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->NumberExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANumberExpr"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->numberLinesInXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AnumberLinesInXmlDoc"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->numberValid</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AnumberValid"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->numParamValid</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AnumParamValid"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->n_comment</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->n_node</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->n_processing_instruction</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XPath.XPathKeywords</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->n_text</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathKeywords.html#v%3An_text"->Text.XML.HXT.XPath.XPathKeywords</A-></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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->o'</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3Ao%27"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ok</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Aok"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->OldName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AOldName"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->OneOrMore</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->oneOrMore</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AoneOrMore"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Op</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AOp"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->optionIsSet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AoptionIsSet"->Text.XML.HXT.DOM.XmlOptions</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Or</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AOr"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->orElse</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AorElse"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AorElse"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->outputOptions</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AoutputOptions"->Text.XML.HXT.DOM.XmlOptions</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ParamList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AParamList"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ParamName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AParamName"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Parent</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AParent"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parentAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AparentAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseContentType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-ProtocolHandlerUtil.html#v%3AparseContentType"->Text.XML.HXT.Parser.ProtocolHandlerUtil</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseExName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AparseExName"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseHtmlContent</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AparseHtmlContent"->Text.XML.HXT.Parser.HtmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseHtmlContent"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseHtmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseHtmlDoc"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseHtmlDocument</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AparseHtmlDocument"->Text.XML.HXT.Parser.HtmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ProcessDocument.html#v%3AparseHtmlDocument"->Text.XML.HXT.Arrow.ProcessDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseHtmlTagSoup</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-TagSoup.html#v%3AparseHtmlTagSoup"->Text.XML.HXT.Parser.TagSoup</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseHtmlTagSoup"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseHtmlText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AparseHtmlText"->Text.XML.HXT.Parser.HtmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseMimeTypeTable</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AparseMimeTypeTable"->Text.XML.HXT.DOM.MimeTypes</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseName"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseNMToken</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseNMToken"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseNTest</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AparseNTest"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseNumber</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathParser.html#v%3AparseNumber"->Text.XML.HXT.XPath.XPathParser</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseRegex</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html#v%3AparseRegex"->Text.XML.HXT.RelaxNG.XmlSchema.RegexParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseXmlAttrValue</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlAttrValue"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlAttrValue"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseXmlContent</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlContent"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlContent"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDoc"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseXmlDocEncodingSpec</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlDocEncodingSpec"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDocEncodingSpec"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseXmlDocument</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlDocument"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ProcessDocument.html#v%3AparseXmlDocument"->Text.XML.HXT.Arrow.ProcessDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseXmlDTDdecl</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AparseXmlDTDdecl"->Text.XML.HXT.Parser.XmlDTDParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDTDdecl"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseXmlDTDdeclPart</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AparseXmlDTDdeclPart"->Text.XML.HXT.Parser.XmlDTDParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDTDdeclPart"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseXmlDTDEntityValue</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AparseXmlDTDEntityValue"->Text.XML.HXT.Parser.XmlDTDParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDTDEntityValue"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseXmlDTDPart</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlDTDPart"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDTDPart"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlEncodingSpec</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlEncodingSpec"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseXmlEntityEncodingSpec</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlEntityEncodingSpec"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlEntityEncodingSpec"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->parseXmlGeneralEntityValue</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlGeneralEntityValue"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlGeneralEntityValue"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlPart</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlPart"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXmlText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlText"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->parseXPath</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathParser.html#v%3AparseXPath"->Text.XML.HXT.XPath.XPathParser</A->, Text.XML.HXT.XPath, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->partitionA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3ApartitionA"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->partitionEither</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3ApartitionEither"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Path</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3APath"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->PathExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APathExpr"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Pattern</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3APattern"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->patternToFormatedString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3ApatternToFormatedString"->Text.XML.HXT.RelaxNG.PatternToString</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->patternToStringTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3ApatternToStringTree"->Text.XML.HXT.RelaxNG.PatternToString</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->PENTITY</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3APENTITY"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->percent</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3Apercent"->Text.XML.HXT.Parser.XmlDTDTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->PEREF</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3APEREF"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->peReference</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3ApeReference"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3ApeReference"->Text.XML.HXT.Parser.XmlDTDTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->peReferenceT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3ApeReferenceT"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->perform</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3Aperform"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->performCheck</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AperformCheck"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->PI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3API"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->pI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3ApI"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->pickleDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3ApickleDoc"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3ApickleDoc"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Plus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APlus"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Pos0</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APos0"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->PosInf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APosInf"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Preceding</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APreceding"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->precedingAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AprecedingAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->PrecedingSibling</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APrecedingSibling"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->precedingSiblingAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AprecedingSiblingAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->pred2XPathTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3Apred2XPathTree"->Text.XML.HXT.XPath.XPathToString</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Prefix</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3APrefix"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->preorderNT</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3ApreorderNT"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->prepareContents</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-WriteDocument.html#v%3AprepareContents"->Text.XML.HXT.Arrow.WriteDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->prepareXSLTDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Compilation.html#v%3AprepareXSLTDocument"->Text.XML.HXT.XSLT.Compilation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->printRE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3AprintRE"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3AprintRE"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AprocessAttrl"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->processBottomUp</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessBottomUp"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AprocessBottomUp"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processBottomUpWhenNot</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AprocessBottomUpWhenNot"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->processChildren</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessChildren"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AprocessChildren"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-DTDProcessing.html#v%3AprocessDTD"->Text.XML.HXT.Arrow.DTDProcessing</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processFromNodeSet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AprocessFromNodeSet"->Text.XML.HXT.Arrow.XPath</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processGeneralEntities</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-GeneralEntitySubstitution.html#v%3AprocessGeneralEntities"->Text.XML.HXT.Arrow.GeneralEntitySubstitution</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->processTopDown</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessTopDown"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AprocessTopDown"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->processTopDownUntil</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AprocessTopDownUntil"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AprocessTopDownUntil"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processTopDownWithAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AprocessTopDownWithAttrl"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processWithNsEnv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AprocessWithNsEnv"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processWithNsEnvWithoutAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AprocessWithNsEnvWithoutAttrl"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processXPathTrees</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AprocessXPathTrees"->Text.XML.HXT.Arrow.XPath</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->processXPathTreesWithNsEnv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AprocessXPathTreesWithNsEnv"->Text.XML.HXT.Arrow.XPath</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->prolog</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Aprolog"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->propagateAndValidateNamespaces</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ProcessDocument.html#v%3ApropagateAndValidateNamespaces"->Text.XML.HXT.Arrow.ProcessDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->propagateNamespaces</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3ApropagateNamespaces"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->PU</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.Xml, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3APU"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->pubidLiteral</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3ApubidLiteral"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->putXmlDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-DocumentOutput.html#v%3AputXmlDocument"->Text.XML.HXT.Arrow.DocumentOutput</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->putXmlSource</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-DocumentOutput.html#v%3AputXmlSource"->Text.XML.HXT.Arrow.DocumentOutput</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->putXmlTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-DocumentOutput.html#v%3AputXmlTree"->Text.XML.HXT.Arrow.DocumentOutput</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->qattr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aqattr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->QN</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AQN"->Text.XML.HXT.DOM.QualifiedName</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->QName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->qName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AqName"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->qualifiedName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AqualifiedName"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->quoted</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Aquoted"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#t%3ARE"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#t%3ARE"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->readDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3AreadDocument"->Text.XML.HXT.Arrow.ReadDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->readForRelax</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AreadForRelax"->Text.XML.HXT.RelaxNG.Validation</A->, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->readFromDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3AreadFromDocument"->Text.XML.HXT.Arrow.ReadDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->readFromString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3AreadFromString"->Text.XML.HXT.Arrow.ReadDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->readMimeTypeTable</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AreadMimeTypeTable"->Text.XML.HXT.DOM.MimeTypes</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->readString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3AreadString"->Text.XML.HXT.Arrow.ReadDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->readWDefault</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AreadWDefault"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->reference</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Areference"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->referenceT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AreferenceT"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RefList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ARefList"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Regex</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#t%3ARegex"->Text.XML.HXT.RelaxNG.XmlSchema.Regex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Rel</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ARel"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->relaxNamespace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3ArelaxNamespace"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->relaxOptions</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3ArelaxOptions"->Text.XML.HXT.DOM.XmlOptions</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->relaxSchemaArrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Schema.html#v%3ArelaxSchemaArrow"->Text.XML.HXT.RelaxNG.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-SchemaGrammar.html#v%3ArelaxSchemaArrow"->Text.XML.HXT.RelaxNG.SchemaGrammar</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->relaxSchemaFile</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3ArelaxSchemaFile"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->relaxSchemaGrammarFile</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3ArelaxSchemaGrammarFile"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->relaxSchemaTree</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Schema.html#v%3ArelaxSchemaTree"->Text.XML.HXT.RelaxNG.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-SchemaGrammar.html#v%3ArelaxSchemaTree"->Text.XML.HXT.RelaxNG.SchemaGrammar</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->remAttrDec</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AremAttrDec"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->remDups</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AremDups"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeAllComment</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AremoveAllComment"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeAllWhiteSpace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AremoveAllWhiteSpace"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AremoveAttr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeComment</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AremoveComment"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeDocWhiteSpace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AremoveDocWhiteSpace"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</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-DTDValidation-DTDValidation.html#v%3AremoveDoublicateDefs"->Text.XML.HXT.DTDValidation.DTDValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3AremoveDoublicateDefs"->Text.XML.HXT.DTDValidation.Validation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->removeEncodingSpec</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AremoveEncodingSpec"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AremoveEncodingSpec"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeOptions</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AremoveOptions"->Text.XML.HXT.DOM.XmlOptions</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeQAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AremoveQAttr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->removeWhiteSpace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AremoveWhiteSpace"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Rep</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.Schema</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->replaceChildren</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AreplaceChildren"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AreplaceChildren"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->returnA</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->revPreorderNT</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3ArevPreorderNT"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_ALT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_ALT"->Text.XML.HXT.DTDValidation.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_alt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_alt"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_alt"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_DOT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_DOT"->Text.XML.HXT.DTDValidation.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_dot</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_dot"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_dot"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_OPT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_OPT"->Text.XML.HXT.DTDValidation.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_opt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_opt"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_opt"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_PLUS</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_PLUS"->Text.XML.HXT.DTDValidation.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_plus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_plus"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_plus"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_REP</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_REP"->Text.XML.HXT.DTDValidation.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_rep</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_rep"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_rep"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_SEQ</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_SEQ"->Text.XML.HXT.DTDValidation.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_seq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_seq"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_seq"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_SYM</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_SYM"->Text.XML.HXT.DTDValidation.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_sym</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_sym"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_sym"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_UNIT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_UNIT"->Text.XML.HXT.DTDValidation.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_unit</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_unit"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_unit"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->RE_ZERO</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_ZERO"->Text.XML.HXT.DTDValidation.RE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->re_zero</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_zero"->Text.XML.HXT.DTDValidation.RE</A->, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_zero"->Text.XML.HXT.DTDValidation.XmlRE</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->right</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rightNT</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3ArightNT"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rnfA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowNF.html#v%3ArnfA"->Control.Arrow.ArrowNF</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rng_length</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_length"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rng_maxExclusive</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_maxExclusive"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rng_maxInclusive</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_maxInclusive"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rng_maxLength</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_maxLength"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rng_minExclusive</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_minExclusive"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rng_minInclusive</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_minInclusive"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rng_minLength</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_minLength"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->root</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aroot"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->rpar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Arpar"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->runInLocalURIContext</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3ArunInLocalURIContext"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->runIOLA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-IOListArrow.html#v%3ArunIOLA"->Control.Arrow.IOListArrow</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->runIOSLA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-IOStateListArrow.html#v%3ArunIOSLA"->Control.Arrow.IOStateListArrow</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->runKleisli</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->runLA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ListArrow.html#v%3ArunLA"->Control.Arrow.ListArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->runSLA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-StateListArrow.html#v%3ArunSLA"->Control.Arrow.StateListArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->runSt</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-IOStateListArrow.html#v%3ArunSt"->Control.Arrow.IOStateListArrow</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->runX</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3ArunX"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sattr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Asattr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scAlt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscAlt"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scAlts</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscAlts"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scanRegexA</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AscanRegexA"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scanXmlRegex</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AscanXmlRegex"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscAttr"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scAttrToXml</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AscAttrToXml"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scCont</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AscCont"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scConts</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AscConts"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scContToXml</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AscContToXml"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scDT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscDT"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scDTxsd</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscDTxsd"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scElem</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscElem"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scEmpty</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscEmpty"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scEnum</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscEnum"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scFixed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscFixed"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Schema</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#t%3ASchema"->Text.XML.HXT.Arrow.Pickle.Schema</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3ASchema"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Schemas</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#t%3ASchemas"->Text.XML.HXT.Arrow.Pickle.Schema</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3ASchemas"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscList"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scList1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscList1"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scNmtoken</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscNmtoken"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scNmtokens</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscNmtokens"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scNull</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscNull"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scOpt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscOpt"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scOption</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscOption"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scRep</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscRep"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scSeq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscSeq"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scSeqs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscSeqs"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscString"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scString1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscString1"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->scWrap</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AscWrap"->Text.XML.HXT.Arrow.Pickle.DTD</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sc_1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_1"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sc_dt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_dt"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sc_l</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_l"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sc_lb</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_lb"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sc_n</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_n"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sc_ub</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_ub"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sDDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AsDDecl"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->second</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3Ased"->Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sedRE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3AsedRE"->Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->SelectExpr</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ASelectExpr"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->selectOptions</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AselectOptions"->Text.XML.HXT.DOM.XmlOptions</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->selem</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aselem"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Self</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ASelf"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->selfAxis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AselfAxis"->Text.XML.HXT.XPath.NavTree</A->, Text.XML.HXT.XPath.XPathDataTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->semi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Asemi"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->separator</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Aseparator"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Seq</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.Schema</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->seqA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3AseqA"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setAttribute</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AsetAttribute"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetAttrl"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->setAttrName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetAttrName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetAttrName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setBaseURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetBaseURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->setChildren</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AsetChildren"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AsetChildren"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setCmt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetCmt"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setDefaultBaseURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetDefaultBaseURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setDocumentStatus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetDocumentStatus"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setDocumentStatusFromSystemState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetDocumentStatusFromSystemState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setDTDAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetDTDAttrl"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setDTDAttrValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetDTDAttrValue"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setElemAttrl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetElemAttrl"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->setElemName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetElemName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetElemName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setErrMsgStatus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetErrMsgStatus"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setErrorMsgHandler</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetErrorMsgHandler"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setErrStatus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetErrStatus"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setMimeTypeTable</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetMimeTypeTable"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setMimeTypeTableFromFile</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetMimeTypeTableFromFile"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setNamespace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AsetNamespace"->Text.XML.HXT.DOM.NamespacePredicates</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->setNode</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#v%3AsetNode"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowTree.html#v%3AsetNode"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setParam</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetParam"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setParamInt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetParamInt"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setParamList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetParamList"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setParamString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetParamString"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->setPiName</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetPiName"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetPiName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setQName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetQName"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setRngName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AsetRngName"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setRngNameDiv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AsetRngNameDiv"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setRngNameRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AsetRngNameRef"->Text.XML.HXT.RelaxNG.BasicArrows</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setState</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowState.html#v%3AsetState"->Control.Arrow.ArrowState</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetText"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setTraceLevel</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetTraceLevel"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setUriMap</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AsetUriMap"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->setUserState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetUserState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->share</TD-><TD CLASS="indexlinks"-><A HREF="Data-Atom.html#v%3Ashare"->Data.Atom</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->showDatatype</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AshowDatatype"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->showElemType</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-ShowXml.html#v%3AshowElemType"->Text.XML.HXT.DOM.ShowXml</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->showOptions</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AshowOptions"->Text.XML.HXT.DOM.XmlOptions</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->showTrees</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AshowTrees"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->single</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3Asingle"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->singleChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsingleChar"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->singleChars</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsingleChars"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->singleCharsT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsingleCharsT"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->singles</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3Asingles"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->skipS</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AskipS"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->skipS0</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AskipS0"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->SLA</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-StateListArrow.html#t%3ASLA"->Control.Arrow.StateListArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-StateListArrow.html#v%3ASLA"->Control.Arrow.StateListArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->SortK</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->SortKey</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ASortKey"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sPace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsPace"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sPace0</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsPace0"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->spanA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AspanA"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->spi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aspi"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->split</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3Asplit"->Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->splitExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AsplitExpr"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->splitMatchByPrio</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AsplitMatchByPrio"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->splitRE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3AsplitRE"->Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->splitRegexA</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AsplitRegexA"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->splitXmlRegex</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AsplitXmlRegex"->Text.XML.HXT.Arrow.XmlRegex</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Asq"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->sqattr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Asqattr"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->St</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3ASt"->Text.XML.HXT.Arrow.Pickle.Xml</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.Arrow.Pickle.Xml</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Step</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AStep"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->strictA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowNF.html#v%3AstrictA"->Control.Arrow.ArrowNF</A->, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stringEscapeXml</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AstringEscapeXml"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->StringExpr</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AStringExpr"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stringProtocol</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AstringProtocol"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stringToHexString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AstringToHexString"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stringToInt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AstringToInt"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stringToUpper</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AstringToUpper"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stringTrim</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AstringTrim"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stringValid</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AstringValid"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stringValidFT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AstringValidFT"->Text.XML.HXT.RelaxNG.DataTypeLibUtils</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stringValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AstringValue"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stripDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AstripDocument"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Strips</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AStrips"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stripSpaces</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AstripSpaces"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->stripStylesheet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AstripStylesheet"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->substEntityRefs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AsubstEntityRefs"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->substHtmlEntityRefs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AsubstHtmlEntityRefs"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->substXmlEntityRefs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AsubstXmlEntityRefs"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->subtreeNT</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3AsubtreeNT"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->swap</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3Aswap"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->systemLiteral</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsystemLiteral"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->tagA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AtagA"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplApply</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplApplyImports</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Template</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ATemplate"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplAttribute</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplCall</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplChoose</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplComment</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplComposite</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplCopy</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplCopyOf</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplElement</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplForEach</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplMessage</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplProcInstr</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplText</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplValueOf</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TemplVariable</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->TestExpr</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ATestExpr"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Text</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->textDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AtextDecl"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->textEscapeXml</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AtextEscapeXml"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->text_html</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->text_xml</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->text_xml_external_parsed_entity</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->thePicklerDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AthePicklerDTD"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->theSchema</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AtheSchema"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AtheSchema"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->this</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Athis"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3Athis"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->this'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Athis%27"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->this''</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Athis%27%27"->Text.XML.HXT.Arrow.XPathSimple</A-></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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->thisNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AthisNode"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->tokenize</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3Atokenize"->Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->tokenize'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3Atokenize%27"->Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->tokenizeRE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3AtokenizeRE"->Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->tokenizeRE'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3AtokenizeRE%27"->Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->toMaybe</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3AtoMaybe"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->toNumber</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AtoNumber"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->toThis</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AtoThis"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->toXPathTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3AtoXPathTree"->Text.XML.HXT.XPath.XPathToString</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->toXValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AtoXValue"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->trace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Atrace"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceDoc"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceMsg</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceMsg"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceSource</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceSource"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceString"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->traceTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceTree"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transfAllCdata</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AtransfAllCdata"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transfAllCharRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AtransfAllCharRef"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transfCdata</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AtransfCdata"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transfCharRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AtransfCharRef"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferDefaultURI</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferEncoding</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferMessage</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferMimeType</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferPrefix</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferProtocol</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AtransferProtocol"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferStatus</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferURI</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transferVersion</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</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-DTDValidation-DocTransformation.html#v%3Atransform"->Text.XML.HXT.DTDValidation.DocTransformation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3Atransform"->Text.XML.HXT.DTDValidation.Validation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->transformDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AtransformDoc"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Tree</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-Class.html#t%3ATree"->Data.Tree.Class</A->, Data.Tree.NTree.TypeDefs, Data.Tree.NTree.Filter, Data.NavTree, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, <A HREF="Control-Arrow-ArrowTree.html#t%3ATree"->Control.Arrow.ArrowTree</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->treeRepOfXmlDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AtreeRepOfXmlDoc"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->tryFetchAttribute</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AtryFetchAttribute"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->tryGetXPath</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AtryGetXPath"->Text.XML.HXT.Arrow.XPathSimple</A-></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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->txt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Atxt"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->TypeTest</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ATypeTest"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->t_root</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3At_root"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->t_xml</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ucs2</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ucs2BigEndianToUnicode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Aucs2BigEndianToUnicode"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ucs2LittleEndianToUnicode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Aucs2LittleEndianToUnicode"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->ucs2ToUnicode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Aucs2ToUnicode"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Unary</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AUnary"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->uncurry3</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3Auncurry3"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->uncurry4</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Util.html#v%3Auncurry4"->Text.XML.HXT.DOM.Util</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Unicode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3AUnicode"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unicodeCharToUtf8</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeCharToUtf8"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unicodeRemoveNoneAscii</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeRemoveNoneAscii"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unicodeRemoveNoneLatin1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeRemoveNoneLatin1"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unicodeString</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unicodeToLatin1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeToLatin1"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unicodeToUtf8</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeToUtf8"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unicodeToXmlEntity</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeToXmlEntity"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Union</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AUnion"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unionExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AunionExpr"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->uniqueNamespaces</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AuniqueNamespaces"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->uniqueNamespacesFromDeclAndQNames</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AuniqueNamespacesFromDeclAndQNames"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->universalName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AuniversalName"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->universalUri</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AuniversalUri"->Text.XML.HXT.DOM.QualifiedName</A->, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unlistA</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3AunlistA"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unpickleDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AunpickleDoc"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AunpickleDoc"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unsetParam</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AunsetParam"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unwrap</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Aunwrap"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->unzipTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AunzipTree"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->upNT</TD-><TD CLASS="indexlinks"-><A HREF="Data-NavTree.html#v%3AupNT"->Data.NavTree</A->, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Uri</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AUri"->Text.XML.HXT.RelaxNG.DataTypes</A->, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->uriMap2Attrs</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AuriMap2Attrs"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->UriMapping</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Common.html#t%3AUriMapping"->Text.XML.HXT.XSLT.Common</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->usAscii</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->UsedAttribSets</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AUsedAttribSets"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->UString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3AUString"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->UStringWithErrors</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3AUStringWithErrors"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf16</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf16be</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf16beToUnicode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Autf16beToUnicode"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf16le</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf16leToUnicode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Autf16leToUnicode"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf8</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->UTF8Char</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3AUTF8Char"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->UTF8String</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3AUTF8String"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf8ToUnicode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Autf8ToUnicode"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->utf8ToUnicodeEmbedErrors</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Autf8ToUnicodeEmbedErrors"->Text.XML.HXT.DOM.Unicode</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->validate</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3Avalidate"->Text.XML.HXT.DTDValidation.Validation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3Avalidate"->Text.XML.HXT.RelaxNG.Validator</A->, Text.XML.HXT.RelaxNG</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-DTDValidation-DocValidation.html#v%3AvalidateDoc"->Text.XML.HXT.DTDValidation.DocValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3AvalidateDoc"->Text.XML.HXT.DTDValidation.Validation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->3 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AvalidateDoc"->Text.XML.HXT.Arrow.ParserInterface</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ProcessDocument.html#v%3AvalidateDocument"->Text.XML.HXT.Arrow.ProcessDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateDocumentWithRelax</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateDocumentWithRelax"->Text.XML.HXT.RelaxNG.Validator</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateDocumentWithRelaxSchema</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateDocumentWithRelaxSchema"->Text.XML.HXT.RelaxNG.Validator</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateDocWithRelax</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AvalidateDocWithRelax"->Text.XML.HXT.RelaxNG.Validation</A->, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</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-DTDValidation-DTDValidation.html#v%3AvalidateDTD"->Text.XML.HXT.DTDValidation.DTDValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3AvalidateDTD"->Text.XML.HXT.DTDValidation.Validation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateIds</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-IdValidation.html#v%3AvalidateIds"->Text.XML.HXT.DTDValidation.IdValidation</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateNamespaces</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AvalidateNamespaces"->Text.XML.HXT.Arrow.Namespace</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateRelax</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AvalidateRelax"->Text.XML.HXT.RelaxNG.Validation</A->, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateSchema</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateSchema"->Text.XML.HXT.RelaxNG.Validator</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateSchemaWithSpezification</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateSchemaWithSpezification"->Text.XML.HXT.RelaxNG.Validator</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateWithoutSpezification</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateWithoutSpezification"->Text.XML.HXT.RelaxNG.Validator</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateWithRelaxAndHandleErrors</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AvalidateWithRelaxAndHandleErrors"->Text.XML.HXT.RelaxNG.Validation</A->, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateWithSpezification</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateWithSpezification"->Text.XML.HXT.RelaxNG.Validator</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->validateXMLDoc</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AvalidateXMLDoc"->Text.XML.HXT.RelaxNG.Validation</A->, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Value</TD-><TD CLASS="indexlinks"->Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->valueOf</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AvalueOf"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->valueOfDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AvalueOfDTD"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->varEnv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AvarEnv"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->VarExpr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AVarExpr"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->Variable</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AVariable"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->VarName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AVarName"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->VarTab</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AVarTab"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->versionInfo</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AversionInfo"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->versionNum</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AversionNum"->Text.XML.HXT.Parser.XmlTokenParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->versionOptions</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AversionOptions"->Text.XML.HXT.DOM.XmlOptions</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_0</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Av_1"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_any</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_children</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_choice</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_empty</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_mixed</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_no</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_null</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_option</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_pcdata</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_plus</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_seq</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_star</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->v_yes</TD-><TD CLASS="indexlinks"->Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->w3cDatatypeLib</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Aw3cDatatypeLib"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->w3cNS</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Aw3cNS"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->warn</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Awarn"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->When</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AWhen"->Text.XML.HXT.XSLT.CompiledStylesheet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->when</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3Awhen"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3Awhen"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->whenNot</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Data-Tree-NTree-Filter.html#v%3AwhenNot"->Data.Tree.NTree.Filter</A->, Text.XML.HXT.DOM.XmlTreeTypes</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AwhenNot"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</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</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->whenNotP</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AwhenNotP"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->whenP</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowIf.html#v%3AwhenP"->Control.Arrow.ArrowIf</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->WhenPart</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.CompiledStylesheet</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->withDefault</TD-><TD CLASS="indexlinks"-><A HREF="Control-Arrow-ArrowList.html#v%3AwithDefault"->Control.Arrow.ArrowList</A->, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->withExtendedUserState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AwithExtendedUserState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->withOtherUserState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AwithOtherUserState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->withTraceLevel</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AwithTraceLevel"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->writeDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-WriteDocument.html#v%3AwriteDocument"->Text.XML.HXT.Arrow.WriteDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->writeDocumentToString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-WriteDocument.html#v%3AwriteDocumentToString"->Text.XML.HXT.Arrow.WriteDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXAttr"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xboolean</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3Axboolean"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XCdata</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXCdata"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XCharRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXCharRef"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XCmt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXCmt"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXDTD"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XEntityRef</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXEntityRef"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XError</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXError"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XFct</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#t%3AXFct"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xhtmlEntities</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XhtmlEntities.html#v%3AxhtmlEntities"->Text.XML.HXT.Parser.XhtmlEntities</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xIndex</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AxIndex"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->XIOState</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Type/Class)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AXIOState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Data Constructor)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AXIOState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XIOSys</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AXIOSys"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XIOSysState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AXIOSysState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_attrList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_attrList"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_baseURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_baseURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_defaultBaseURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_defaultBaseURI"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_errorModule</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_errorModule"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_errorMsgCollect</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_errorMsgCollect"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_errorMsgHandler</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_errorMsgHandler"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_errorMsgList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_errorMsgList"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_errorStatus</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_errorStatus"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_mimeTypes</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_mimeTypes"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_sysState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_sysState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_trace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_trace"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xio_userState</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_userState"->Text.XML.HXT.Arrow.XmlIOStateArrow</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlArrow</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#t%3AXmlArrow"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlArrowS</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#t%3AXmlArrowS"->Text.XML.HXT.DTDValidation.TypeDefs</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlChar"->Text.XML.HXT.Parser.XmlCharParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xMLDecl</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AxMLDecl"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xMLDecl'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AxMLDecl%27"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlEntities</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlEntities.html#v%3AxmlEntities"->Text.XML.HXT.Parser.XmlEntities</A-></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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlLetter</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlLetter"->Text.XML.HXT.Parser.XmlCharParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlNameChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlNameChar"->Text.XML.HXT.Parser.XmlCharParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlNamespace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AxmlNamespace"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlNameStartChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlNameStartChar"->Text.XML.HXT.Parser.XmlCharParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlNCNameChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlNCNameChar"->Text.XML.HXT.Parser.XmlCharParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlNCNameStartChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlNCNameStartChar"->Text.XML.HXT.Parser.XmlCharParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlNode.html#t%3AXmlNode"->Text.XML.HXT.DOM.XmlNode</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlNodeSet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlNodeSet"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlnsNamespace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AxmlnsNamespace"->Text.XML.HXT.DOM.XmlKeywords</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlnsQN</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html#v%3AxmlnsQN"->Text.XML.HXT.DOM.NamespacePredicates</A->, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlPickler</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3AXmlPickler"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3AXmlPickler"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlRegex</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#t%3AXmlRegex"->Text.XML.HXT.Arrow.XmlRegex</A-></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-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlSpace</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxmlSpace"->Text.XML.HXT.XSLT.Names</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlSpaceChar</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlSpaceChar"->Text.XML.HXT.Parser.XmlCharParser</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XmlTrees</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlTreeToPatternFormatedString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3AxmlTreeToPatternFormatedString"->Text.XML.HXT.RelaxNG.PatternToString</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlTreeToPatternString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3AxmlTreeToPatternString"->Text.XML.HXT.RelaxNG.PatternToString</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xmlTreeToPatternStringTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3AxmlTreeToPatternStringTree"->Text.XML.HXT.RelaxNG.PatternToString</A->, Text.XML.HXT.RelaxNG</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XNS</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXNS"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xnumber</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3Axnumber"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xNumber'</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AxNumber%27"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xp4Tuple</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Axp4Tuple"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3Axp4Tuple"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xp5Tuple</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Axp5Tuple"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3Axp5Tuple"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xp6Tuple</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Axp6Tuple"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3Axp6Tuple"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpAddFixedAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpAddFixedAttr"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpAddFixedAttr"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpAlt</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpAlt"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpAlt"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPArrow</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#t%3AXPArrow"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xPathAdd</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathArithmetic.html#v%3AxPathAdd"->Text.XML.HXT.XPath.XPathArithmetic</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xPathDiv</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathArithmetic.html#v%3AxPathDiv"->Text.XML.HXT.XPath.XPathArithmetic</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPathFilter</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AXPathFilter"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xPathMod</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathArithmetic.html#v%3AxPathMod"->Text.XML.HXT.XPath.XPathArithmetic</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xPathMulti</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathArithmetic.html#v%3AxPathMulti"->Text.XML.HXT.XPath.XPathArithmetic</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPathNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AXPathNode"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPathParams</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Application.html#t%3AXPathParams"->Text.XML.HXT.XSLT.Application</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xPathUnary</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathArithmetic.html#v%3AxPathUnary"->Text.XML.HXT.XPath.XPathArithmetic</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPathValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AXPathValue"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpAttr</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpAttr"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpAttr"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpAttrFixed</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpAttrFixed"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpAttrFixed"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpAttrImplied</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpAttrImplied"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpAttrImplied"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpChoice</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpChoice"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpChoice"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPCommentNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPCommentNode"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpCondSeq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpCondSeq"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpCondSeq"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpDefault</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpDefault"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpDefault"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpElem</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpElem"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpElem"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpElemWithAttrValue</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpElemWithAttrValue"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpElemWithAttrValue"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPi</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXPi"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpickle</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Axpickle"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3Axpickle"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpickleDocument</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpickleDocument"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpickleDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpickleDTD"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpickleVal</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpickleVal"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpickleWriteDTD</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpickleWriteDTD"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpLift</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpLift"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpLift"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpLiftMaybe</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpLiftMaybe"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpLiftMaybe"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpList</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpList"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpList"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpList1</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpList1"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpList1"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpMap</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpMap"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpMap"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPNode"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPNumber</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AXPNumber"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpOption</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpOption"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpOption"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpPair</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpPair"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpPair"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPPINode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPPINode"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpPrim</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpPrim"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpPrim"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpSeq</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpSeq"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpSeq"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpText"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpText"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpText0</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpText0"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpText0"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpText0DT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpText0DT"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpText0DT"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpTextDT</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpTextDT"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpTextDT"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPTextNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPTextNode"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpTree</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpTree"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpTree"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpTrees</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpTrees"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpTrees"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpTriple</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpTriple"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpTriple"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpUnit</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpUnit"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpUnit"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xPValue2NodeSet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathToNodeSet.html#v%3AxPValue2NodeSet"->Text.XML.HXT.XPath.XPathToNodeSet</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xPValue2String</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3AxPValue2String"->Text.XML.HXT.XPath.XPathToString</A->, Text.XML.HXT.XPath</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xPValue2XmlTrees</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3AxPValue2XmlTrees"->Text.XML.HXT.XPath.XPathToString</A->, Text.XML.HXT.XPath, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPVBool</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPVBool"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPVError</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPVError"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPVNode</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPVNode"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPVNumber</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPVNumber"->Text.XML.HXT.XPath.XPathDataTypes</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XPVString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPVString"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpWrap</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpWrap"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpWrap"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpWrapMaybe</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpWrapMaybe"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpWrapMaybe"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpXmlText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpXmlText"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpXmlText"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xpZero</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpZero"->Text.XML.HXT.Arrow.Pickle.Xml</A->, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpZero"->Text.XML.HXT.Arrow.Pickle</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->xread</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Axread"->Text.XML.HXT.Parser.XmlParsec</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3Axread"->Text.XML.HXT.Arrow.ReadDocument</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsdParam</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AxsdParam"->Text.XML.HXT.Arrow.Pickle.Schema</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_anyURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_anyURI"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_base64Binary</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_base64Binary"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_decimal</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_decimal"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_ENTITIES</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_ENTITIES"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_ENTITY</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_ENTITY"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_enumeration</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_enumeration"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_fractionDigits</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_fractionDigits"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_hexBinary</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_hexBinary"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_ID</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_ID"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_IDREF</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_IDREF"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_IDREFS</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_IDREFS"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_language</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_language"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_length</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_length"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_maxExclusive</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_maxExclusive"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_maxInclusive</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_maxInclusive"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_maxLength</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_maxLength"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_minExclusive</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_minExclusive"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_minInclusive</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_minInclusive"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_minLength</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_minLength"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_Name</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_Name"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_NCName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_NCName"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_NMTOKEN</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_NMTOKEN"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_NMTOKENS</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_NMTOKENS"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_normalizedString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_normalizedString"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_NOTATION</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_NOTATION"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_pattern</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_pattern"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_QName</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_QName"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_string</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_string"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_token</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_token"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsd_totalDigits</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_totalDigits"->Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry" COLSPAN="2"->xshow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-ShowXml.html#v%3Axshow"->Text.XML.HXT.DOM.ShowXml</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexannot"->2 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Axshow"->Text.XML.HXT.Arrow.XmlArrow</A->, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xshowEscapeXml</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AxshowEscapeXml"->Text.XML.HXT.Arrow.Edit</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltApplyImports</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltApplyStylesheet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-XsltArrows.html#v%3AxsltApplyStylesheet"->Text.XML.HXT.XSLT.XsltArrows</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltApplyStylesheetFromURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-XsltArrows.html#v%3AxsltApplyStylesheetFromURI"->Text.XML.HXT.XSLT.XsltArrows</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltApplyTemplates</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltAttribute</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltAttributeSet</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltCallTemplate</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltChoose</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltComment</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltCompileStylesheet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-XsltArrows.html#v%3AxsltCompileStylesheet"->Text.XML.HXT.XSLT.XsltArrows</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltCompileStylesheetFromURI</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-XsltArrows.html#v%3AxsltCompileStylesheetFromURI"->Text.XML.HXT.XSLT.XsltArrows</A->, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltCopy</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltCopyOf</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltDataType</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltElement</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltElements</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltExlcudeResultPrefixes</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltExlcudeResultPrefixesLRE</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltExtensionElementPrefixes</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltExtensionElementPrefixesLRE</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltForEach</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltHRef</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltIf</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltImport</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltInclude</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltMatch</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltMessage</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltMode</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltName</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltNamespace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltNamespaceAlias</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltOrder</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltOtherwise</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltParam</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltPrefix</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxsltPrefix"->Text.XML.HXT.XSLT.Names</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltPreserveSpace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltPriority</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltProcInstr</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltResultPrefix</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltSelect</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxsltSelect"->Text.XML.HXT.XSLT.Names</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltSort</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltStripSpace</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltStylesheet</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxsltStylesheet"->Text.XML.HXT.XSLT.Names</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltStylesheetPrefix</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltTemplate</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltTerminate</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltTest</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltText</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltTransform</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltUri</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxsltUri"->Text.XML.HXT.XSLT.Names</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltUseAttributeSets</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltUseAttributeSetsLRE</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltValueOf</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltVariable</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltVersion</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltVersionLRE</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxsltVersionLRE"->Text.XML.HXT.XSLT.Names</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltWhen</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xsltWithParam</TD-><TD CLASS="indexlinks"->Text.XML.HXT.XSLT.Names</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XStep</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AXStep"->Text.XML.HXT.XPath.XPathDataTypes</A->, Text.XML.HXT.XSLT.Common</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xString</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AxString"->Text.XML.HXT.Arrow.XPathSimple</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->xstring</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3Axstring"->Text.XML.HXT.XPath.XPathFct</A-></TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XTag</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXTag"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD-></TR-><TR CLASS="indexrow"-><TD CLASS="indexentry"->XText</TD-><TD CLASS="indexlinks"-><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXText"->Text.XML.HXT.DOM.TypeDefs</A->, Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell. (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-8.3.0: A collection of tools for processing XML with Haskell.</TD+><TD CLASS="topbut"+><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="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3A%24%24"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>$<</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3A%24%3C"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>$<$</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3A%24%3C%24"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>$<<</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3A%24%3C%3C"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>$<<<</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3A%24%3C%3C%3C"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>$<<<<</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3A%24%3C%3C%3C%3C"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>&&&</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>&&&&</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3A%26%26%26%26"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>***</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>+++</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>+=</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3A%2B%3D"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>/></TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3A%2F%3E"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>:-></TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3A%3A-%3E"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+><&&></TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3A%3C%26%26%3E"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+><+></TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+><+>></TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3A%3C%2B%3E%3E"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+></</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3A%3C%2F"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+><<<</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+><<^</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+><||></TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3A%3C%7C%7C%3E"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>>.</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3A%3E."+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>>>.</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3A%3E%3E."+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>>>></TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>>>>></TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3A%3E%3E%3E%3E"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>>>^</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Abs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AAbs"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>accessState</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowState.html#v%3AaccessState"+>Control.Arrow.ArrowState</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addAlias</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AaddAlias"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addAtt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AaddAtt"+>Text.XML.HXT.Arrow.Pickle.Xml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>addAttr</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AaddAttr"+>Text.XML.HXT.DOM.XmlNode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AaddAttr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addAttrl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AaddAttrl"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addCont</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AaddCont"+>Text.XML.HXT.Arrow.Pickle.Xml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addDoctypeDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddDoctypeDecl"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addEntries</TD+><TD CLASS="indexlinks"+><A HREF="Data-AssocList.html#v%3AaddEntries"+>Data.AssocList</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addEntry</TD+><TD CLASS="indexlinks"+><A HREF="Data-AssocList.html#v%3AaddEntry"+>Data.AssocList</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addHeadlineToXmlDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddHeadlineToXmlDoc"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addXHtmlDoctypeFrameset</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddXHtmlDoctypeFrameset"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addXHtmlDoctypeStrict</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddXHtmlDoctypeStrict"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addXHtmlDoctypeTransitional</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddXHtmlDoctypeTransitional"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addXmlPi</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddXmlPi"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>addXmlPiEncoding</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AaddXmlPiEncoding"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>aelem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aaelem"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>After</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>after</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3Aafter"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>aliasUriMapping</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AaliasUriMapping"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>allBut</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AallBut"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>allBut1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AallBut1"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>AllowedDatatypes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AAllowedDatatypes"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>AllowedParams</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AAllowedParams"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Alt</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.Schema</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Ancestor</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AAncestor"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ancestorAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AancestorAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>AncestorOrSelf</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AAncestorOrSelf"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ancestorOrSelfAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AancestorOrSelfAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>And</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AAnd"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Any</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.Schema</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>AnyName</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>AnyNameExcept</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>app</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>application_xhtml</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>application_xml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3Aapplication_xml"+>Text.XML.HXT.DOM.MimeTypes</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>application_xml_dtd</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>application_xml_external_parsed_entity</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>applyA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3AapplyA"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>applyStylesheet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Application.html#v%3AapplyStylesheet"+>Text.XML.HXT.XSLT.Application</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>applyStylesheetWParams</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Application.html#v%3AapplyStylesheetWParams"+>Text.XML.HXT.XSLT.Application</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>appPickle</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AappPickle"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AappPickle"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>appUnPickle</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AappUnPickle"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AappUnPickle"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arr</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arr2</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3Aarr2"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arr2A</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3Aarr2A"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arr2L</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3Aarr2L"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arr3</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3Aarr3"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arr4</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3Aarr4"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arrIO</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIO.html#v%3AarrIO"+>Control.Arrow.ArrowIO</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arrIO0</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIO.html#v%3AarrIO0"+>Control.Arrow.ArrowIO</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arrIO2</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIO.html#v%3AarrIO2"+>Control.Arrow.ArrowIO</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arrIO3</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIO.html#v%3AarrIO3"+>Control.Arrow.ArrowIO</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arrIO4</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIO.html#v%3AarrIO4"+>Control.Arrow.ArrowIO</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>arrL</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3AarrL"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Arrow</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowApply</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowChoice</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowDTD</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowDTD"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowIf</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#t%3AArrowIf"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowIO</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIO.html#t%3AArrowIO"+>Control.Arrow.ArrowIO</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowIOIf</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIO.html#t%3AArrowIOIf"+>Control.Arrow.ArrowIO</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowList</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#t%3AArrowList"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowLoop</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>ArrowMonad</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Type/Class)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowNF</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowNF.html#t%3AArrowNF"+>Control.Arrow.ArrowNF</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowPlus</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowState</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowState.html#t%3AArrowState"+>Control.Arrow.ArrowState</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowTree</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#t%3AArrowTree"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowXml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#t%3AArrowXml"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ArrowZero</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>asciiLetter</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AasciiLetter"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>assembleStylesheet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Compilation.html#v%3AassembleStylesheet"+>Text.XML.HXT.XSLT.Compilation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>assert</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Aassert"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>assertMaybe</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AassertMaybe"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>AssocList</TD+><TD CLASS="indexlinks"+><A HREF="Data-AssocList.html#t%3AAssocList"+>Data.AssocList</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Atom</TD+><TD CLASS="indexlinks"+><A HREF="Data-Atom.html#t%3AAtom"+>Data.Atom</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>attachNsEnv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AattachNsEnv"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ATTLIST</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AATTLIST"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>attlistDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AattlistDecl"+>Text.XML.HXT.Parser.XmlDTDParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>attr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aattr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>attrDec</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AattrDec"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>attrEscapeXml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AattrEscapeXml"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>AttribSet</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>Attribute</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AAttribute"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>3 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.Schema</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>attributeAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AattributeAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Attributes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AAttributes"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>attributes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Aattributes"+>Text.XML.HXT.Arrow.Pickle.Xml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>AttributeSet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AAttributeSet"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>attrNodes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AattrNodes"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>attrValue</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AattrValue"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AattrValue"+>Text.XML.HXT.Parser.XmlDTDTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>attrValueT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AattrValueT"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>attrValueT'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AattrValueT%27"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>AxisSpec</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AAxisSpec"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_addDTD</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3Aa_addDTD"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_ancestor</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_ancestor_or_self</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathKeywords.html#v%3Aa_ancestor_or_self"+>Text.XML.HXT.XPath.XPathKeywords</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_attribute</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_canonicalize</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_check_namespaces</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_check_restrictions</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_child</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_collect_errors</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_column</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_contentLength</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_default</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_default"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_default_baseuri</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_descendant</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_descendant_or_self</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_canonicalize</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_check_namespaces</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_check_restrictions</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aa_do_not_check_restrictions"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_collect_errors</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_issue_errors</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_issue_warnings</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_preserve_comment</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_remove_whitespace</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_use_curl</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_validate</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_validate_externalRef</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_do_not_validate_include</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_encoding</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_error</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_error_log</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_following</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_following_sibling</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_help</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_ignore_encoding_errors</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_ignore_none_xml_contents</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_indent</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_issue_errors</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_issue_warnings</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_kind</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_line</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_mime_types</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_modifier</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_module</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_name</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_namespace</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_no_empty_elements</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_no_xml_pi</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_numberOfErrors</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_options_curl</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_output_changes</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_output_encoding</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_output_file</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_output_html</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_output_xml</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_parent</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_parse_by_mimetype</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_parse_html</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_parse_xml</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_peref</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_preceding</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_preceding_sibling</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_preserve_comment</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_propagate_errors</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_proxy</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_relaxSimplificationChanges</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3Aa_relaxSimplificationChanges"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_relax_schema</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_remove_whitespace</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_self</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_show_haskell</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_show_tree</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_source</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_standalone</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_status</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_strict_input</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_tagsoup</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_trace</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_type</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_url</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_use_curl</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_validate</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_validate_externalRef</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_validate_include</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_value</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_verbose</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_version</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_xml</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>a_xmlns</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>bar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Abar"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>buildUniversalName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AbuildUniversalName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>canonicalizeAllNodes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AcanonicalizeAllNodes"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>canonicalizeContents</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AcanonicalizeContents"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>canonicalizeForXPath</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AcanonicalizeForXPath"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>cardTree</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AcardTree"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>catA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3AcatA"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>cDSect</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AcDSect"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>changeAttrl</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeAttrl"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeAttrl"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>changeAttrName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeAttrName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeAttrName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>changeAttrValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeAttrValue"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>changeBaseURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AchangeBaseURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>changeChildren</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AchangeChildren"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AchangeChildren"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>changeCmt</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeCmt"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeCmt"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>changeDTDAttrl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeDTDAttrl"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>changeElemName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeElemName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeElemName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>changeName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>changeNode</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AchangeNode"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AchangeNode"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>changePiName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangePiName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangePiName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>changeQName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeQName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>changeState</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowState.html#v%3AchangeState"+>Control.Arrow.ArrowState</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>changeSysParam</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AchangeSysParam"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>changeText</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AchangeText"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AchangeText"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>changeUserState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AchangeUserState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CharData</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.Schema</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>charData</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AcharData"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>charData'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AcharData%27"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>charRef</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AcharRef"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AcharRef"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>charRefT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AcharRefT"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>charRngs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AcharRngs"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>chars</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3Achars"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>charToHexString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AcharToHexString"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CheckA</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#t%3ACheckA"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>checkAM</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AcheckAM"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>checkAMC</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AcheckAMC"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>checkAttributeValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-AttributeValueValidation.html#v%3AcheckAttributeValue"+>Text.XML.HXT.DTDValidation.AttributeValueValidation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>checkAttrModell</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AcheckAttrModell"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>checkContentModell</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AcheckContentModell"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>checkErr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AcheckErr"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CheckInteger</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#t%3ACheckInteger"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>checkPickler</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AcheckPickler"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>checkRE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3AcheckRE"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3AcheckRE"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>checkRngName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AcheckRngName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CheckString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#t%3ACheckString"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>checkWith</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AcheckWith"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Child</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AChild"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>childAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AchildAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ChildNodes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AChildNodes"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>childNodes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AchildNodes"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Choice</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>choice</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3Achoice"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>choiceA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AchoiceA"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>cleanupNamespaces</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AcleanupNamespaces"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>clearErrStatus</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AclearErrStatus"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>closesHtmlTag</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AclosesHtmlTag"+>Text.XML.HXT.Parser.HtmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>cmt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Acmt"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>codeBlocks</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-Blocks.html#v%3AcodeBlocks"+>Text.XML.HXT.RelaxNG.Unicode.Blocks</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>collapseAllXText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AcollapseAllXText"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>collapseXText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AcollapseXText"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>collectNamespaceDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AcollectNamespaceDecl"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>collectPrefixUriPairs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AcollectPrefixUriPairs"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>collectTextnodes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AcollectTextnodes"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>comma</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Acomma"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>comment</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Acomment"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compareURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AcompareURI"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compBool</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompBool"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compBoolExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompBoolExpr"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compFP</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompFP"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compGenExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompGenExpr"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CompiledStylesheet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ACompiledStylesheet"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+>, <A HREF="Text-XML-HXT-XSLT-XsltArrows.html#t%3ACompiledStylesheet"+>Text.XML.HXT.XSLT.XsltArrows</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compIntExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompIntExpr"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compLP</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompLP"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compNameT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNameT"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compNT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNT"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compNTA</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNTA"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compNTE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNTE"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compNumber</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNumber"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compNumberExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompNumberExpr"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compPath</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompPath"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compPred</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompPred"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compPred1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompPred1"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CompQName</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compRelPathExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompRelPathExpr"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompString"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compStringExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompStringExpr"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CompStylesheet</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ComputedQName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AComputedQName"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>computeNTestPriority</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AcomputeNTestPriority"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>computePriority</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AcomputePriority"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compXP</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompXP"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compXPath</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompXPath"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>compXS</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AcompXS"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>concatExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AconcatExpr"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>concRes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AconcRes"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CONDSECT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3ACONDSECT"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ConLen</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AConLen"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ConNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AConNode"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ConPos</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AConPos"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>constA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3AconstA"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>constL</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3AconstL"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>containing</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3Acontaining"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>contains</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3Acontains"+>Text.XML.HXT.RelaxNG.Validation</A+>, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CONTENT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3ACONTENT"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>content</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Acontent"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>contents</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Acontents"+>Text.XML.HXT.Arrow.Pickle.Xml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ContentType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AContentType"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>contentWithTextDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AcontentWithTextDecl"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>Context</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AContext"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AContext"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>contextAttributes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AcontextAttributes"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>contextBaseAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AcontextBaseAttr"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>createDocumentOrder</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AcreateDocumentOrder"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>createDocumentOrderReverse</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AcreateDocumentOrderReverse"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>createNameClass</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-CreatePattern.html#v%3AcreateNameClass"+>Text.XML.HXT.RelaxNG.CreatePattern</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>createPatternFromXmlTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-CreatePattern.html#v%3AcreatePatternFromXmlTree"+>Text.XML.HXT.RelaxNG.CreatePattern</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>createSimpleForm</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Simplification.html#v%3AcreateSimpleForm"+>Text.XML.HXT.RelaxNG.Simplification</A+>, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CTComplex</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CTEmpty</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CTNone</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>CTSimple</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>c_err</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_err"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>c_fatal</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_fatal"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>c_ok</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_ok"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>c_warn</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3Ac_warn"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Data</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DataExcept</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dataNT</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3AdataNT"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Datatype</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatype"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DatatypeAllows</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeAllows"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>datatypeAllows</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibraries.html#v%3AdatatypeAllows"+>Text.XML.HXT.RelaxNG.DataTypeLibraries</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DatatypeCheck</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeCheck"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DataTypeDescr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#t%3ADataTypeDescr"+>Text.XML.HXT.Arrow.Pickle.Schema</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3ADataTypeDescr"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DatatypeEqual</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeEqual"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>datatypeEqual</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibraries.html#v%3AdatatypeEqual"+>Text.XML.HXT.RelaxNG.DataTypeLibraries</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DatatypeLibraries</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeLibraries"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>datatypeLibraries</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibraries.html#v%3AdatatypeLibraries"+>Text.XML.HXT.RelaxNG.DataTypeLibraries</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DatatypeLibrary</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeLibrary"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DatatypeName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ADatatypeName"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>deadEndStreet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AdeadEndStreet"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>decimalStringToInt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AdecimalStringToInt"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>decode</TD+><TD CLASS="indexlinks"+><A HREF="Data-Char-UTF8.html#v%3Adecode"+>Data.Char.UTF8</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>decodeDocument</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-DocumentInput.html#v%3AdecodeDocument"+>Text.XML.HXT.Arrow.DocumentInput</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>decodeEmbedErrors</TD+><TD CLASS="indexlinks"+><A HREF="Data-Char-UTF8.html#v%3AdecodeEmbedErrors"+>Data.Char.UTF8</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>decodeOne</TD+><TD CLASS="indexlinks"+><A HREF="Data-Char-UTF8.html#v%3AdecodeOne"+>Data.Char.UTF8</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>decodeUtf8</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-UTF8Decoding.html#v%3AdecodeUtf8"+>Text.XML.HXT.DOM.UTF8Decoding</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>decodeUtf8EmbedErrors</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-UTF8Decoding.html#v%3AdecodeUtf8EmbedErrors"+>Text.XML.HXT.DOM.UTF8Decoding</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>decodeUtf8IgnoreErrors</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-UTF8Decoding.html#v%3AdecodeUtf8IgnoreErrors"+>Text.XML.HXT.DOM.UTF8Decoding</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DecodingFct</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3ADecodingFct"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DecodingFctEmbedErrors</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3ADecodingFctEmbedErrors"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>deep</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3Adeep"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>deep'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Adeep%27"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>deepest</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3Adeepest"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>defaultMimeTypeTable</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AdefaultMimeTypeTable"+>Text.XML.HXT.DOM.MimeTypes</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>defineOrigName</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>delEntries</TD+><TD CLASS="indexlinks"+><A HREF="Data-AssocList.html#v%3AdelEntries"+>Data.AssocList</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>delEntry</TD+><TD CLASS="indexlinks"+><A HREF="Data-AssocList.html#v%3AdelEntry"+>Data.AssocList</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>delta</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3Adelta"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3Adelta"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>depthTree</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AdepthTree"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Descendant</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ADescendant"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>descendantAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AdescendantAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DescendantOrSelf</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ADescendantOrSelf"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>descendantOrSelfAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AdescendantOrSelfAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Div</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ADiv"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DOCTYPE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3ADOCTYPE"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>doctypedecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Adoctypedecl"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>document</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Adocument"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>document'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Adocument%27"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>documentStatusOk</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AdocumentStatusOk"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>doubles</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3Adoubles"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>downNT</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3AdownNT"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dq</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Adq"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dropCont</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AdropCont"+>Text.XML.HXT.Arrow.Pickle.Xml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtAllowedTypes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AdtAllowedTypes"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtAllowsFct</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AdtAllowsFct"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DTC</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtdChars</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AdtdChars"+>Text.XML.HXT.Parser.XmlDTDTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtdDeclEnd</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AdtdDeclEnd"+>Text.XML.HXT.Parser.XmlDTDTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtdDeclStart</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AdtdDeclStart"+>Text.XML.HXT.Parser.XmlDTDTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtdDeclTokenizer</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AdtdDeclTokenizer"+>Text.XML.HXT.Parser.XmlDTDTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>DTDdescr</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#t%3ADTDdescr"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.DTD</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtdDescr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AdtdDescr"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtdDescrToXml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AdtdDescrToXml"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DTDElem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3ADTDElem"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>DTDescr</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.Schema</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtdToken</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3AdtdToken"+>Text.XML.HXT.Parser.XmlDTDTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtd_default</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_default"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtd_kind</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_kind"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtd_modifier</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_modifier"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtd_name</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_name"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtd_type</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_type"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtd_value</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3Adtd_value"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtEqualFct</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AdtEqualFct"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtLib</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AdtLib"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AdtName"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>dtParams</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AdtParams"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>eelem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aeelem"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ELEMENT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AELEMENT"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>Element</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.Schema</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>element</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Aelement"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>elementDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AelementDecl"+>Text.XML.HXT.Parser.XmlDTDParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>elementDeclarations</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AelementDeclarations"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>elementDecs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AelementDecs"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>elemName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AelemName"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>elemNames</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AelemNames"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ElemRef</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.Schema</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>elemRefs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AelemRefs"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Empty</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>emptyHtmlTags</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AemptyHtmlTags"+>Text.XML.HXT.Parser.HtmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>emptyNodeSet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathToNodeSet.html#v%3AemptyNodeSet"+>Text.XML.HXT.XPath.XPathToNodeSet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>emptySt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AemptySt"+>Text.XML.HXT.Arrow.Pickle.Xml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>encName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AencName"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>encode</TD+><TD CLASS="indexlinks"+><A HREF="Data-Char-UTF8.html#v%3Aencode"+>Data.Char.UTF8</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>encodeDocument</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-DocumentOutput.html#v%3AencodeDocument"+>Text.XML.HXT.Arrow.DocumentOutput</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>encodeOne</TD+><TD CLASS="indexlinks"+><A HREF="Data-Char-UTF8.html#v%3AencodeOne"+>Data.Char.UTF8</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>encodingDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AencodingDecl"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ENTITY</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AENTITY"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>entityCharT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityCharT"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>entityDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AentityDecl"+>Text.XML.HXT.Parser.XmlDTDParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>entityRef</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityRef"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AentityRef"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>entityRefT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityRefT"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>entityTokensT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityTokensT"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>entityValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityValue"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>entityValueT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AentityValueT"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>Env</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AEnv"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AEnv"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Eq</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AEq"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>eq</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Aeq"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>equalNodeSet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AequalNodeSet"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>equalQNameBy</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequalQNameBy"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>equivQName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequivQName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>equivUri</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AequivUri"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>err</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aerr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ErrLevel</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AErrLevel"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ErrMessage</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AErrMessage"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ErrMsg</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Error</TD+><TD CLASS="indexlinks"+><A HREF="Data-Char-UTF8.html#t%3AError"+>Data.Char.UTF8</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>errorMsgCollect</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AerrorMsgCollect"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>errorMsgDataLibQName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgDataLibQName"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>errorMsgDataTypeNotAllowed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgDataTypeNotAllowed"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>errorMsgDataTypeNotAllowed0</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgDataTypeNotAllowed0"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>errorMsgDataTypeNotAllowed2</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgDataTypeNotAllowed2"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>errorMsgEqual</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgEqual"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>errorMsgIgnore</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AerrorMsgIgnore"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>errorMsgParam</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AerrorMsgParam"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>errorMsgStderr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AerrorMsgStderr"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>errorMsgStderrAndCollect</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AerrorMsgStderrAndCollect"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>escapeHtmlDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AescapeHtmlDoc"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>escapeURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AescapeURI"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>escapeXmlDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AescapeXmlDoc"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>evalExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AevalExpr"+>Text.XML.HXT.XPath.XPathEval</A+>, Text.XML.HXT.XPath, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>evalFct</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AevalFct"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>exLocal</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AexLocal"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>ExName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#t%3AExName"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AExName"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>expandNSDecls</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AexpandNSDecls"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>expandURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AexpandURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>expandURIString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AexpandURIString"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Expr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AExpr"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>expr2XPathTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3Aexpr2XPathTree"+>Text.XML.HXT.XPath.XPathToString</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>extensionToMimeType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AextensionToMimeType"+>Text.XML.HXT.DOM.MimeTypes</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>exUri</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AexUri"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>failure</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Afailure"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>fatal</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Afatal"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>FctArguments</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AFctArguments"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>FctExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AFctExpr"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>FctName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AFctName"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>fctTableList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AfctTableList"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>fctTableString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AfctTableString"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>feedPreserves</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AfeedPreserves"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>feedSpaces</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AfeedSpaces"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>feedStrips</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>fetchAttribute</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AfetchAttribute"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>fetchAttributeWDefault</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AfetchAttributeWDefault"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>filterA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AfilterA"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>filterErrorMsg</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AfilterErrorMsg"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>FilterExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AFilterExpr"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>filterTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AfilterTree"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>filterTreeCtx</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AfilterTreeCtx"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>first</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>firstChild</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-CreatePattern.html#v%3AfirstChild"+>Text.XML.HXT.RelaxNG.CreatePattern</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Float</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AFloat"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>foldTree</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AfoldTree"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Following</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AFollowing"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>followingAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AfollowingAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>FollowingSibling</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AFollowingSibling"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>followingSiblingAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AfollowingSiblingAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>formatNTreeF</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-NTree-TypeDefs.html#v%3AformatNTreeF"+>Data.Tree.NTree.TypeDefs</A+>, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>formatStringList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringList"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>formatStringListArr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringListArr"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>formatStringListId</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringListId"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>formatStringListPairs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringListPairs"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>formatStringListPatt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringListPatt"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>formatStringListQuot</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AformatStringListQuot"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>formatTree</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AformatTree"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>formatXmlContents</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-FormatXmlTree.html#v%3AformatXmlContents"+>Text.XML.HXT.DOM.FormatXmlTree</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>formatXmlTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-FormatXmlTree.html#v%3AformatXmlTree"+>Text.XML.HXT.DOM.FormatXmlTree</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>foundErr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AfoundErr"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>fromJustErr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AfromJustErr"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>fromLA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ListArrow.html#v%3AfromLA"+>Control.Arrow.ListArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>fromSLA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-StateListArrow.html#v%3AfromSLA"+>Control.Arrow.StateListArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>FunctionTable</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#t%3AFunctionTable"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>generalOptions</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AgeneralOptions"+>Text.XML.HXT.DOM.XmlOptions</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>GenExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AGenExpr"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getAliases</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetAliases"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getAllParams</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetAllParams"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getAllParamsString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetAllParamsString"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getAtt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AgetAtt"+>Text.XML.HXT.Arrow.Pickle.Xml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getAttributeSets</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetAttributeSets"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getAttrl</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetAttrl"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetAttrl"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getAttrl'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetAttrl%27"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getAttrName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetAttrName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetAttrName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getAttrValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetAttrValue"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getAttrValue0</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetAttrValue0"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getBaseURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetBaseURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getCdata</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetCdata"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetCdata"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getCharRef</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetCharRef"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetCharRef"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getChildren</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AgetChildren"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AgetChildren"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getChildren'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetChildren%27"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getChildrenNT</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3AgetChildrenNT"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getChildrenPattern</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AgetChildrenPattern"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getCmt</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetCmt"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetCmt"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getCont</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-IO-GetFILE.html#v%3AgetCont"+>Text.XML.HXT.IO.GetFILE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-IO-GetHTTPLibCurl.html#v%3AgetCont"+>Text.XML.HXT.IO.GetHTTPLibCurl</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>3 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AgetCont"+>Text.XML.HXT.Arrow.Pickle.Xml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getConvFct</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AgetConvFct"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getDecodingFct</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AgetDecodingFct"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getDecodingFctEmbedErrors</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AgetDecodingFctEmbedErrors"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getDefaultBaseURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetDefaultBaseURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getDocumentContents</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ProcessDocument.html#v%3AgetDocumentContents"+>Text.XML.HXT.Arrow.ProcessDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getDTDAttributes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AgetDTDAttributes"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getDTDAttrl</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetDTDAttrl"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetDTDAttrl"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getDTDAttrValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetDTDAttrValue"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getDTDPart</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetDTDPart"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetDTDPart"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getDTDSubset</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3AgetDTDSubset"+>Text.XML.HXT.DTDValidation.Validation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getElemAndAttrNodeSet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetElemAndAttrNodeSet"+>Text.XML.HXT.Arrow.XPath</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getElemName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetElemName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetElemName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getElemNodeSet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetElemNodeSet"+>Text.XML.HXT.Arrow.XPath</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getEncoding</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-DocumentInput.html#v%3AgetEncoding"+>Text.XML.HXT.Arrow.DocumentInput</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getEntityRef</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetEntityRef"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetEntityRef"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getErrorLevel</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetErrorLevel"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetErrorLevel"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getErrorMessages</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetErrorMessages"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getErrorMsg</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetErrorMsg"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetErrorMsg"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getErrors</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Simplification.html#v%3AgetErrors"+>Text.XML.HXT.RelaxNG.Simplification</A+>, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getErrStatus</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetErrStatus"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getFragmentFromURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetFragmentFromURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getFromNodeSet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetFromNodeSet"+>Text.XML.HXT.Arrow.XPath</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getKeyTab</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AgetKeyTab"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getLocalPart</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetLocalPart"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetLocalPart"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getMatchRules</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetMatchRules"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getNameClassFromPattern</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AgetNameClassFromPattern"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getNamedRules</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetNamedRules"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getNamePrefix</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetNamePrefix"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetNamePrefix"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getNamespaceDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AgetNamespaceDecl"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getNamespaceUri</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetNamespaceUri"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetNamespaceUri"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getNode</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AgetNode"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AgetNode"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getOutputEncoding</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-DocumentOutput.html#v%3AgetOutputEncoding"+>Text.XML.HXT.Arrow.DocumentOutput</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getOutputEncodingFct</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AgetOutputEncodingFct"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getParam</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetParam"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getParamInt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetParamInt"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getParamString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetParamString"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getPathFromURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetPathFromURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getPatternName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AgetPatternName"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getPiContent</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetPiContent"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetPiContent"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getPiName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetPiName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetPiName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getPortFromURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetPortFromURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getQAttrValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetQAttrValue"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getQAttrValue0</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetQAttrValue0"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getQName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetQName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getQualifiedName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetQualifiedName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getQueryFromURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetQueryFromURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRegNameFromURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetRegNameFromURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRngAttrAttribute</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrAttribute"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRngAttrCombine</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrCombine"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRngAttrDatatypeLibrary</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrDatatypeLibrary"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRngAttrDescr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrDescr"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRngAttrHref</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrHref"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRngAttrName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRngAttrNs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrNs"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRngAttrType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AgetRngAttrType"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRuleImports</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetRuleImports"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRuleMode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetRuleMode"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRuleName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetRuleName"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getRulePrio</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetRulePrio"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getSchemeFromURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetSchemeFromURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getState</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowState.html#v%3AgetState"+>Control.Arrow.ArrowState</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getStdinCont</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-IO-GetFILE.html#v%3AgetStdinCont"+>Text.XML.HXT.IO.GetFILE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getStrips</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetStrips"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getSysParam</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetSysParam"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getText</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetText"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetText"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getTraceLevel</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetTraceLevel"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getUniversalName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetUniversalName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetUniversalName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getUniversalUri</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AgetUniversalUri"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AgetUniversalUri"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getURIContents</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-DocumentInput.html#v%3AgetURIContents"+>Text.XML.HXT.Arrow.DocumentInput</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getUriMap</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AgetUriMap"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getUserInfoFromURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetUserInfoFromURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getUserState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AgetUserState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getVariables</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetVariables"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getVarName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AgetVarName"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getVarTab</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AgetVarTab"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getXmlContents</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-DocumentInput.html#v%3AgetXmlContents"+>Text.XML.HXT.Arrow.DocumentInput</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getXmlEntityContents</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-DocumentInput.html#v%3AgetXmlEntityContents"+>Text.XML.HXT.Arrow.DocumentInput</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getXP</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXP"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getXPath</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPath"+>Text.XML.HXT.XPath.XPathEval</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getXPathNodeSet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPathNodeSet"+>Text.XML.HXT.XPath.XPathEval</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetXPathNodeSet"+>Text.XML.HXT.Arrow.XPath</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getXPathNodeSetWithNsEnv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPathNodeSetWithNsEnv"+>Text.XML.HXT.XPath.XPathEval</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getXPathSubTrees</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPathSubTrees"+>Text.XML.HXT.XPath.XPathEval</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getXPathSubTreesWithNsEnv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPathSubTreesWithNsEnv"+>Text.XML.HXT.XPath.XPathEval</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getXPathTrees</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetXPathTrees"+>Text.XML.HXT.Arrow.XPath</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXPathTrees"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getXPathTreesInDoc</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetXPathTreesInDoc"+>Text.XML.HXT.Arrow.XPath</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXPathTreesInDoc"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getXPathTreesInDocWithNsEnv</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetXPathTreesInDocWithNsEnv"+>Text.XML.HXT.Arrow.XPath</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXPathTreesInDocWithNsEnv"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>getXPathTreesWithNsEnv</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AgetXPathTreesWithNsEnv"+>Text.XML.HXT.Arrow.XPath</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXPathTreesWithNsEnv"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getXPathTreesWithNsEnvSimple</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AgetXPathTreesWithNsEnvSimple"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>getXPathWithNsEnv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathEval.html#v%3AgetXPathWithNsEnv"+>Text.XML.HXT.XPath.XPathEval</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Greater</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AGreater"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>GreaterEq</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AGreaterEq"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Group</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>group</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3Agroup"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>gt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Agt"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>guards</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3Aguards"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>guards'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Aguards%27"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>guardsP</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AguardsP"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>guessEncoding</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AguessEncoding"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasAttr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasAttribute</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AhasAttribute"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasAttrValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasAttrValue"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasDTDAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasDTDAttr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasDTDAttrValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AhasDTDAttrValue"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasEntry</TD+><TD CLASS="indexlinks"+><A HREF="Data-AssocList.html#v%3AhasEntry"+>Data.AssocList</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>haskellRepOfXmlDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AhaskellRepOfXmlDoc"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasLocalPart</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasLocalPart"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasNamePrefix</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasNamePrefix"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasNamespaceUri</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasNamespaceUri"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasNameWith</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasNameWith"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasQAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasQAttr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasQAttrValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasQAttrValue"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasQName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasQName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasRngAttrAttribute</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrAttribute"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasRngAttrCombine</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrCombine"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasRngAttrDatatypeLibrary</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrDatatypeLibrary"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasRngAttrHref</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrHref"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasRngAttrName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasRngAttrNs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrNs"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasRngAttrType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngAttrType"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasRngName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AhasRngName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AhasText"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hasXmlPi</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AhasXmlPi"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hexStringToInt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AhexStringToInt"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hread</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3Ahread"+>Text.XML.HXT.Arrow.ReadDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>httpPrefix</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AhttpPrefix"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>hxt_version</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Version.html#v%3Ahxt_version"+>Text.XML.HXT.Version</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ifA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AifA"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ifP</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AifP"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>IfThen</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#t%3AIfThen"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>indentDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AindentDoc"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>initialState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AinitialState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>initialSysState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AinitialSysState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>inputOptions</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AinputOptions"+>Text.XML.HXT.DOM.XmlOptions</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>insertChildrenAfter</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AinsertChildrenAfter"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>insertChildrenAt</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AinsertChildrenAt"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>insertTreeTemplate</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AinsertTreeTemplate"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Interleave</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>interleave</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3Ainterleave"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>intToCharRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AintToCharRef"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>intToCharRefHex</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AintToCharRefHex"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>intToHexString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AintToHexString"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>IOLA</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-IOListArrow.html#t%3AIOLA"+>Control.Arrow.IOListArrow</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-IOListArrow.html#v%3AIOLA"+>Control.Arrow.IOListArrow</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>IOSArrow</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOSArrow"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>IOSLA</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-IOStateListArrow.html#t%3AIOSLA"+>Control.Arrow.IOStateListArrow</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-IOStateListArrow.html#v%3AIOSLA"+>Control.Arrow.IOStateListArrow</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>IOStateArrow</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AIOStateArrow"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3AisA"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isAttlistOfElement</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisAttlistOfElement"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>isAttr</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisAttr"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisAttr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isAttributeListGroupInterleaveOneOrMore</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisAttributeListGroupInterleaveOneOrMore"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isAttributeRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisAttributeRef"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isAttributeRefTextListGroupInterleaveOneOrMoreEmpty</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisAttributeRefTextListGroupInterleaveOneOrMoreEmpty"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isAttributeRefTextListInterleave</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisAttributeRefTextListInterleave"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isAttrType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AisAttrType"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>isCdata</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisCdata"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisCdata"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>isCharRef</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisCharRef"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisCharRef"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isChoiceGroupInterleave</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisChoiceGroupInterleave"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isChoiceGroupInterleaveOneOrMore</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisChoiceGroupInterleaveOneOrMore"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>isCmt</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisCmt"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisCmt"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDeclaredNamespace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisDeclaredNamespace"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDefaultAttrKind</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDefaultAttrKind"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDefineOneOrMoreZeroOrMoreOptionalListMixed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisDefineOneOrMoreZeroOrMoreOptionalListMixed"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>isDTD</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisDTD"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTD"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDAttlist</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDAttlist"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDAttlistNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDTDAttlistNode"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDCondSect</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDCondSect"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDContent</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDContent"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDContentNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDTDContentNode"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDDoctype</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDDoctype"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDDoctypeNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDTDDoctypeNode"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDElement</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDElement"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDElementNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDTDElementNode"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDEntity</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDEntity"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDNameNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisDTDNameNode"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDNotation</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDNotation"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDPEntity</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDPEntity"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isDTDPERef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisDTDPERef"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>isElem</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisElem"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisElem"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isElemNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisElemNode"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isElemType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AisElemType"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isEmptyElement</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisEmptyElement"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isEmptyHtmlTag</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AisEmptyHtmlTag"+>Text.XML.HXT.Parser.HtmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>isEntityRef</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisEntityRef"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisEntityRef"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isEnumAttrType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisEnumAttrType"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>isError</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisError"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisError"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isExternalRefInclude</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisExternalRefInclude"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isFixedAttrKind</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisFixedAttrKind"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isGroupInterleave</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisGroupInterleave"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isHtmlMimeType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AisHtmlMimeType"+>Text.XML.HXT.DOM.MimeTypes</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isIdAttrType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisIdAttrType"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isIdRefAttrType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisIdRefAttrType"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isInner</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AisInner"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isInnerHtmlTagOf</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AisInnerHtmlTagOf"+>Text.XML.HXT.Parser.HtmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isIOA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIO.html#v%3AisIOA"+>Control.Arrow.ArrowIO</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isLeaf</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AisLeaf"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isMatchExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AisMatchExpr"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isMixedContentElement</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisMixedContentElement"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AisName"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNameAnyNameNsName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisNameAnyNameNsName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNameNsName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisNameNsName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNameNsNameValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisNameNsNameValue"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNamespaceDeclAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AisNamespaceDeclAttr"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNameSpaceName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisNameSpaceName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNCName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisNCName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNmtoken</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AisNmtoken"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNotationAttrType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisNotationAttrType"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNotInNodeList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AisNotInNodeList"+>Text.XML.HXT.XPath.XPathFct</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNsAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AisNsAttr"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNullXName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisNullXName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isNumber</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AisNumber"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Aiso8859_1"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_10</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_11</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_13</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_14</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_15</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_16</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_2</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_3</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_4</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_5</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_6</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_7</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_8</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso8859_9</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isoLatin1</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_10</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_10"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_11</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_11"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_13</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_13"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_14</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_14"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_15</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_15"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_16</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_16"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_2</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_2"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_3</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_3"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_4</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_4"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_5</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_5"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_6</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_6"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_7</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_7"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_8</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_8"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>iso_8859_9</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-IsoLatinTables.html#v%3Aiso_8859_9"+>Text.XML.HXT.DOM.IsoLatinTables</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isParam</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AisParam"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>isPi</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisPi"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisPi"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxAfter</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxAfter"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxAnyURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AisRelaxAnyURI"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxAttribute</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxAttribute"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxChoice</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxChoice"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxData</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxData"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxDataExcept</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxDataExcept"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxElement</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxElement"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxEmpty</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxEmpty"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxGroup</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxGroup"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxInterleave</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxInterleave"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxList"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxNotAllowed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxNotAllowed"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxOneOrMore</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxOneOrMore"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxText"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRelaxValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternFunctions.html#v%3AisRelaxValue"+>Text.XML.HXT.RelaxNG.PatternFunctions</A+>, Text.XML.HXT.RelaxNG.CreatePattern, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRequiredAttrKind</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisRequiredAttrKind"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngAnyName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAnyName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngAttrAttribute</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrAttribute"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngAttrCombine</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrCombine"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngAttrDatatypeLibrary</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrDatatypeLibrary"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngAttrHref</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrHref"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngAttribute</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttribute"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngAttrName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngAttrNs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrNs"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngAttrType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngAttrType"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngChoice</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngChoice"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngCombine</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngCombine"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngData</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngData"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngDefine</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngDefine"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngDiv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngDiv"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngElement</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngElement"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngEmpty</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngEmpty"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngExcept</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngExcept"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngExternalRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngExternalRef"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngGrammar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngGrammar"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngGroup</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngGroup"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngInclude</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngInclude"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngInterleave</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngInterleave"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngList"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngMixed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngMixed"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngNotAllowed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngNotAllowed"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngNsName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngNsName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngOneOrMore</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngOneOrMore"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngOptional</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngOptional"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngParam</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngParam"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngParentRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngParentRef"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngRef"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngRelaxError</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngRelaxError"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngStart</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngStart"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngText"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngType"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngValue"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isRngZeroOrMore</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AisRngZeroOrMore"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>isRoot</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisRoot"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisRoot"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isScAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScAttr"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isScCharData</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScCharData"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isScElem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScElem"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isScElemRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScElemRef"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isScEnum</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScEnum"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isScFixed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScFixed"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isScList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScList"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isScOpt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScOpt"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isScSARE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScSARE"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isScXsd</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AisScXsd"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>issueErr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AissueErr"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>issueFatal</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AissueFatal"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>issueWarn</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AissueWarn"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>isText</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AisText"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisText"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isTrueValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AisTrueValue"+>Text.XML.HXT.DOM.XmlOptions</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeC</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeC"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeCc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeCc"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeCf</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeCf"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeCo</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeCo"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeCs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeCs"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeL</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeL"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeLl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeLl"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeLm</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeLm"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeLo</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeLo"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeLt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeLt"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeLu</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeLu"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeM</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeM"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeMc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeMc"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeMe</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeMe"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeMn</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeMn"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeN</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeN"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeNd</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeNd"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeNl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeNl"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeNo</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeNo"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeP</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeP"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodePc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePc"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodePd</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePd"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodePe</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePe"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodePf</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePf"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodePi</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePi"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodePo</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePo"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodePs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodePs"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeS</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeS"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeSc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeSc"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeSk</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeSk"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeSm</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeSm"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeSo</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeSo"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeZ</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeZ"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeZl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeZl"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeZp</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeZp"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnicodeZs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Unicode-CharProps.html#v%3AisUnicodeZs"+>Text.XML.HXT.RelaxNG.Unicode.CharProps</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isUnparsedEntity</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AisUnparsedEntity"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isWellformedNameSpaceName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedNameSpaceName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isWellformedNSDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedNSDecl"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isWellformedQName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedQName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isWellformedQualifiedName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AisWellformedQualifiedName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isWhiteSpace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisWhiteSpace"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isWhitespaceNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AisWhitespaceNode"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXml11SpaceChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXml11SpaceChar"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlBaseChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlBaseChar"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlChar"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlCombiningChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlCombiningChar"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlControlOrPermanentlyUndefined</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlControlOrPermanentlyUndefined"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlDigit</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlDigit"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlExtender</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlExtender"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlIdeographicChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlIdeographicChar"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlLatin1Char</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlLatin1Char"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlLetter</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlLetter"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlMimeType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AisXmlMimeType"+>Text.XML.HXT.DOM.MimeTypes</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlNameChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlNameChar"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlNameStartChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlNameStartChar"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlNCNameChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlNCNameChar"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlNCNameStartChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlNCNameStartChar"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlPi</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AisXmlPi"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlPubidChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlPubidChar"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isXmlSpaceChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AisXmlSpaceChar"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>isZero</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AisZero"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>KeyTab</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AKeyTab"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>keyword</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Akeyword"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>keywords</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Akeywords"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>Kleisli</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Type/Class)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_any</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_cdata</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Ak_cdata"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_default</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_empty</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_entities</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_entity</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_enumeration</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_fixed</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_id</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_idref</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_idrefs</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_ignore</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_implied</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_include</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_ndata</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_nmtoken</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_nmtokens</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_notation</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_pcdata</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_peref</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_public</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_required</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>k_system</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>LA</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ListArrow.html#t%3ALA"+>Control.Arrow.ListArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ListArrow.html#v%3ALA"+>Control.Arrow.ListArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>lastChild</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-CreatePattern.html#v%3AlastChild"+>Text.XML.HXT.RelaxNG.CreatePattern</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>latin1ToUnicode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Alatin1ToUnicode"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>left</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>leftApp</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>leftNT</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3AleftNT"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Less</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ALess"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>LessEq</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ALessEq"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>liftSt</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-IOStateListArrow.html#v%3AliftSt"+>Control.Arrow.IOStateListArrow</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>List</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>listA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3AlistA"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Literal</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ALiteral"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>LiteralExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ALiteralExpr"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>LiteralQName</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>LocalName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ALocalName"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ALocalName"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>localPart</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AlocalPart"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>localPart'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AlocalPart%27"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>LocationPath</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ALocationPath"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>LocPath</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ALocPath"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>lookup1</TD+><TD CLASS="indexlinks"+><A HREF="Data-AssocList.html#v%3Alookup1"+>Data.AssocList</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>lookupAlias</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AlookupAlias"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>lookupDef</TD+><TD CLASS="indexlinks"+><A HREF="Data-AssocList.html#v%3AlookupDef"+>Data.AssocList</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>lookupPrefix</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AlookupPrefix"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>lookupStrip</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AlookupStrip"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>lookupStrip1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AlookupStrip1"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>loop</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>lpar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Alpar"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>lt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Alt"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mapTreeCtx</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmapTreeCtx"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>markupdecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Amarkupdecl"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>match</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3Amatch"+>Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A+>, Text.XML.HXT.RelaxNG</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-DTDValidation-RE.html#v%3Amatches"+>Text.XML.HXT.DTDValidation.RE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Amatches"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>MatchExpr</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AMatchExpr"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>matchRE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3AmatchRE"+>Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>matchRegexA</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmatchRegexA"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>MatchRule</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AMatchRule"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>matchWithRE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmatchWithRE"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>matchXmlRegex</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmatchXmlRegex"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>MatRule</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>maybePlus</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3AmaybePlus"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>maybeStar</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3AmaybeStar"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mergeA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3AmergeA"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mergeAttrl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmergeAttrl"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mergeNotAllowed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AmergeNotAllowed"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mimeTypeDefaults</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-MimeTypeDefaults.html#v%3AmimeTypeDefaults"+>Text.XML.HXT.DOM.MimeTypeDefaults</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>MimeTypeTable</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#t%3AMimeTypeTable"+>Text.XML.HXT.DOM.MimeTypes</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Minus</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AMinus"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>misc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Amisc"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mk</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Amk"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkAbsURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AmkAbsURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkAlt</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkAlt"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkAlt"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkAttr</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkAttr"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkAttr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkAttrNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkAttrNode"+>Text.XML.HXT.DOM.XmlNode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkBoolExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmkBoolExpr"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkCdata</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkCdata"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkCdata"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkCharRef</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkCharRef"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkCharRef"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkCmt</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkCmt"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkCmt"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkCompl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkCompl"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkDif</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkDif"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkDot</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkDot"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkDot"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkDTDDoctype</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkDTDDoctype"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkDTDElem</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkDTDElem"+>Text.XML.HXT.DOM.XmlNode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkDTDElem"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkDTDElement</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkDTDElement"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkDTDEntity</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkDTDEntity"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkDTDNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkDTDNode"+>Text.XML.HXT.DOM.XmlNode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkDTDPEntity</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkDTDPEntity"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkelem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Amkelem"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkElement</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkElement"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkElement"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkElementNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkElementNode"+>Text.XML.HXT.DOM.XmlNode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkEntityRef</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkEntityRef"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkEntityRef"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkError</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkError"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkError"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkExName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmkExName"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkLeaf</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AmkLeaf"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AmkLeaf"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AmkList"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkLiteralExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmkLiteralExpr"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkNsName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkNsName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkOpt</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkOpt"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkOpt"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkPi</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkPi"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkPi"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkPrefixLocalPart</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkPrefixLocalPart"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkPrim</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkPrim"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkPrimA</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkPrimA"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkqelem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Amkqelem"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkQName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkQName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkQName'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkQName%27"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkRep</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkRep"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkRep"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkRng</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkRng"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkRng"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngChoice</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngChoice"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngDefine</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngDefine"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngElement</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngElement"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngEmpty</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngEmpty"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngGrammar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngGrammar"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngGroup</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngGroup"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngInterleave</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngInterleave"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngNotAllowed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngNotAllowed"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngOneOrMore</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngOneOrMore"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngRef"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngRelaxError</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngRelaxError"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngStart</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngStart"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRngText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AmkRngText"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkRoot</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkRoot"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkSeq</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkSeq"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkSeq"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkSNsName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AmkSNsName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkStar</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkStar"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkStar"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkStringExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmkStringExpr"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkSym</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkSym"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkSym1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkSym1"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkSymRng</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkSymRng"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkText</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AmkText"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AmkText"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkTree</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AmkTree"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AmkTree"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkTrueExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AmkTrueExpr"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkUnit</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkUnit"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkUnit"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>MkVar</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkXsltAttribName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AmkXsltAttribName"+>Text.XML.HXT.XSLT.Names</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mkXsltName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AmkXsltName"+>Text.XML.HXT.XSLT.Names</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>mkZero</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3AmkZero"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AmkZero"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Mod</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AMod"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>msgToErr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AmsgToErr"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Mult</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AMult"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>multi</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3Amulti"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>multi'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Amulti%27"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mysqlDatatypeLib</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibMysql.html#v%3AmysqlDatatypeLib"+>Text.XML.HXT.RelaxNG.DataTypeLibMysql</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>mysqlNS</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibMysql.html#v%3AmysqlNS"+>Text.XML.HXT.RelaxNG.DataTypeLibMysql</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NAME</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3ANAME"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>Name</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AName"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>3 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#t%3AName"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>name</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Aname"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NameClass</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ANameClass"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NameClassChoice</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>nameClassToString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3AnameClassToString"+>Text.XML.HXT.RelaxNG.PatternToString</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NamedRule</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ANamedRule"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>nameOfAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AnameOfAttr"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>nameOfElem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AnameOfElem"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NamePair</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ANamePair"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NamePrefix</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ANamePrefix"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>namePrefix</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamePrefix"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>namePrefix'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamePrefix%27"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>names</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Anames"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Namespace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANamespace"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>namespaceUri</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamespaceUri"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>namespaceUri'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnamespaceUri%27"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>nameT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AnameT"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NameTest</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANameTest"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NamRule</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NaN</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANaN"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NavTree</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#t%3ANavTree"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NavXmlTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ANavXmlTree"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NavXmlTrees</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ANavXmlTrees"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NCError</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ncName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AncName"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>neg</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3Aneg"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Neg0</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANeg0"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NegInf</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANegInf"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NEq</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANEq"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>newAtom</TD+><TD CLASS="indexlinks"+><A HREF="Data-Atom.html#v%3AnewAtom"+>Data.Atom</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NewName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ANewName"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>newXName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnewXName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>nextState</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowState.html#v%3AnextState"+>Control.Arrow.ArrowState</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>nmtoken</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Anmtoken"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>nmtokens</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Anmtokens"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>nmtokenT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AnmtokenT"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NodeSet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ANodeSet"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>nodesTree</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AnodesTree"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NodeTest</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3ANodeTest"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>noDoubles</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AnoDoubles"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>none</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3Anone"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>noOfChildren</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AnoOfChildren"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>normalizeAttributeValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-AttributeValueValidation.html#v%3AnormalizeAttributeValue"+>Text.XML.HXT.DTDValidation.AttributeValueValidation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>normalizeBlanks</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AnormalizeBlanks"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>normalizeForRelaxValidation</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AnormalizeForRelaxValidation"+>Text.XML.HXT.RelaxNG.Validation</A+>, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>normalizeNL</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AnormalizeNL"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>normalizeNsUri</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnormalizeNsUri"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>normalizeNumber</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AnormalizeNumber"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>normalizeURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Utils.html#v%3AnormalizeURI"+>Text.XML.HXT.RelaxNG.Utils</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>normalizeWhitespace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AnormalizeWhitespace"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NotAllowed</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>notAllowed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AnotAllowed"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>notAllowed1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AnotAllowed1"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>notAllowed2</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AnotAllowed2"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>notAllowedN</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AnotAllowedN"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NOTATION</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3ANOTATION"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>notationDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AnotationDecl"+>Text.XML.HXT.Parser.XmlDTDParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>notContaining</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AnotContaining"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NSAliasing</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ANSAliasing"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NsEnv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3ANsEnv"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NsName</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NsNameExcept</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NT</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3ANT"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>nt2XPathTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3Ant2XPathTree"+>Text.XML.HXT.XPath.XPathToString</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NTest</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ANTest"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>NTree</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTree"+>Data.Tree.NTree.TypeDefs</A+>, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-NTree-TypeDefs.html#v%3ANTree"+>Data.Tree.NTree.TypeDefs</A+>, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ntree</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3Antree"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NTrees</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-NTree-TypeDefs.html#t%3ANTrees"+>Data.Tree.NTree.TypeDefs</A+>, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>nullable</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#v%3Anullable"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Anullable"+>Text.XML.HXT.DTDValidation.RE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>3 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3Anullable"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>nullXName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AnullXName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>NumberExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ANumberExpr"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>numberLinesInXmlDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AnumberLinesInXmlDoc"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>numberValid</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AnumberValid"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>numParamValid</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AnumParamValid"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>n_comment</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>n_node</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>n_processing_instruction</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XPath.XPathKeywords</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>n_text</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathKeywords.html#v%3An_text"+>Text.XML.HXT.XPath.XPathKeywords</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>o'</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3Ao%27"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ok</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Aok"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>OldName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AOldName"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>OneOrMore</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>oneOrMore</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AoneOrMore"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Op</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AOp"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>optionIsSet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AoptionIsSet"+>Text.XML.HXT.DOM.XmlOptions</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Or</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AOr"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>orElse</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AorElse"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>outputOptions</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AoutputOptions"+>Text.XML.HXT.DOM.XmlOptions</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ParamList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AParamList"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ParamName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AParamName"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Parent</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AParent"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parentAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AparentAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseContentType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-ProtocolHandlerUtil.html#v%3AparseContentType"+>Text.XML.HXT.Parser.ProtocolHandlerUtil</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseExName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AparseExName"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseHtmlContent</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AparseHtmlContent"+>Text.XML.HXT.Parser.HtmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseHtmlContent"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseHtmlDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseHtmlDoc"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseHtmlDocument</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AparseHtmlDocument"+>Text.XML.HXT.Parser.HtmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ProcessDocument.html#v%3AparseHtmlDocument"+>Text.XML.HXT.Arrow.ProcessDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseHtmlTagSoup</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-TagSoup.html#v%3AparseHtmlTagSoup"+>Text.XML.HXT.Parser.TagSoup</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseHtmlTagSoup"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseHtmlText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-HtmlParsec.html#v%3AparseHtmlText"+>Text.XML.HXT.Parser.HtmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseMimeTypeTable</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AparseMimeTypeTable"+>Text.XML.HXT.DOM.MimeTypes</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseName"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseNMToken</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseNMToken"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseNTest</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AparseNTest"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseNumber</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathParser.html#v%3AparseNumber"+>Text.XML.HXT.XPath.XPathParser</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseRegex</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html#v%3AparseRegex"+>Text.XML.HXT.RelaxNG.XmlSchema.RegexParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseXmlAttrValue</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlAttrValue"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlAttrValue"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseXmlContent</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlContent"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlContent"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseXmlDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDoc"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseXmlDocEncodingSpec</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlDocEncodingSpec"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDocEncodingSpec"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseXmlDocument</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlDocument"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ProcessDocument.html#v%3AparseXmlDocument"+>Text.XML.HXT.Arrow.ProcessDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseXmlDTDdecl</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AparseXmlDTDdecl"+>Text.XML.HXT.Parser.XmlDTDParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDTDdecl"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseXmlDTDdeclPart</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AparseXmlDTDdeclPart"+>Text.XML.HXT.Parser.XmlDTDParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDTDdeclPart"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseXmlDTDEntityValue</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDParser.html#v%3AparseXmlDTDEntityValue"+>Text.XML.HXT.Parser.XmlDTDParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDTDEntityValue"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseXmlDTDPart</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlDTDPart"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlDTDPart"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseXmlEncodingSpec</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlEncodingSpec"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseXmlEntityEncodingSpec</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlEntityEncodingSpec"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlEntityEncodingSpec"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>parseXmlGeneralEntityValue</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlGeneralEntityValue"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AparseXmlGeneralEntityValue"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseXmlPart</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlPart"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseXmlText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AparseXmlText"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>parseXPath</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathParser.html#v%3AparseXPath"+>Text.XML.HXT.XPath.XPathParser</A+>, Text.XML.HXT.XPath, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>partitionA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3ApartitionA"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>partitionEither</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3ApartitionEither"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Path</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3APath"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>PathExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APathExpr"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Pattern</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3APattern"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>patternToFormatedString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3ApatternToFormatedString"+>Text.XML.HXT.RelaxNG.PatternToString</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>patternToStringTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3ApatternToStringTree"+>Text.XML.HXT.RelaxNG.PatternToString</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>PENTITY</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3APENTITY"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>percent</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3Apercent"+>Text.XML.HXT.Parser.XmlDTDTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>PEREF</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3APEREF"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>peReference</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3ApeReference"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlDTDTokenParser.html#v%3ApeReference"+>Text.XML.HXT.Parser.XmlDTDTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>peReferenceT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3ApeReferenceT"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>perform</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3Aperform"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>performCheck</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AperformCheck"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>PI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3API"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>pI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3ApI"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>pickleDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3ApickleDoc"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3ApickleDoc"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Plus</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APlus"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Pos0</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APos0"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>PosInf</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APosInf"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Preceding</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APreceding"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>precedingAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AprecedingAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>PrecedingSibling</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3APrecedingSibling"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>precedingSiblingAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AprecedingSiblingAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>pred2XPathTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3Apred2XPathTree"+>Text.XML.HXT.XPath.XPathToString</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Prefix</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3APrefix"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>preorderNT</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3ApreorderNT"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>prepareContents</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-WriteDocument.html#v%3AprepareContents"+>Text.XML.HXT.Arrow.WriteDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>prepareXSLTDocument</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Compilation.html#v%3AprepareXSLTDocument"+>Text.XML.HXT.XSLT.Compilation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>preventEmptyElements</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3ApreventEmptyElements"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>printRE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3AprintRE"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3AprintRE"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processAttrl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AprocessAttrl"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processBottomUp</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AprocessBottomUp"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processBottomUpWhenNot</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AprocessBottomUpWhenNot"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processChildren</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AprocessChildren"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processDTD</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-DTDProcessing.html#v%3AprocessDTD"+>Text.XML.HXT.Arrow.DTDProcessing</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processFromNodeSet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AprocessFromNodeSet"+>Text.XML.HXT.Arrow.XPath</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processGeneralEntities</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-GeneralEntitySubstitution.html#v%3AprocessGeneralEntities"+>Text.XML.HXT.Arrow.GeneralEntitySubstitution</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processTopDown</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AprocessTopDown"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processTopDownUntil</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AprocessTopDownUntil"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processTopDownWithAttrl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AprocessTopDownWithAttrl"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processWithNsEnv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AprocessWithNsEnv"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processWithNsEnvWithoutAttrl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AprocessWithNsEnvWithoutAttrl"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processXPathTrees</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AprocessXPathTrees"+>Text.XML.HXT.Arrow.XPath</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>processXPathTreesWithNsEnv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPath.html#v%3AprocessXPathTreesWithNsEnv"+>Text.XML.HXT.Arrow.XPath</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>prolog</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Aprolog"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>propagateAndValidateNamespaces</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ProcessDocument.html#v%3ApropagateAndValidateNamespaces"+>Text.XML.HXT.Arrow.ProcessDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>propagateNamespaces</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3ApropagateNamespaces"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>PU</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3APU"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3APU"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.Xml, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3APU"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>pubidLiteral</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3ApubidLiteral"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>putXmlDocument</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-DocumentOutput.html#v%3AputXmlDocument"+>Text.XML.HXT.Arrow.DocumentOutput</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>putXmlSource</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-DocumentOutput.html#v%3AputXmlSource"+>Text.XML.HXT.Arrow.DocumentOutput</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>putXmlTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-DocumentOutput.html#v%3AputXmlTree"+>Text.XML.HXT.Arrow.DocumentOutput</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>qattr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aqattr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>QName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AQName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>qName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AqName"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>qualifiedName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AqualifiedName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>quoted</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Aquoted"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>RE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#t%3ARE"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#t%3ARE"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>readDocument</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3AreadDocument"+>Text.XML.HXT.Arrow.ReadDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>readForRelax</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AreadForRelax"+>Text.XML.HXT.RelaxNG.Validation</A+>, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>readFromDocument</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3AreadFromDocument"+>Text.XML.HXT.Arrow.ReadDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>readFromString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3AreadFromString"+>Text.XML.HXT.Arrow.ReadDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>readMimeTypeTable</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-MimeTypes.html#v%3AreadMimeTypeTable"+>Text.XML.HXT.DOM.MimeTypes</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>readString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3AreadString"+>Text.XML.HXT.Arrow.ReadDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>readWDefault</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AreadWDefault"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>reference</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Areference"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>referenceT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AreferenceT"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>RefList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3ARefList"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Regex</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-Regex.html#t%3ARegex"+>Text.XML.HXT.RelaxNG.XmlSchema.Regex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Rel</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ARel"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>relaxNamespace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3ArelaxNamespace"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>relaxOptions</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3ArelaxOptions"+>Text.XML.HXT.DOM.XmlOptions</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>relaxSchemaArrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Schema.html#v%3ArelaxSchemaArrow"+>Text.XML.HXT.RelaxNG.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-SchemaGrammar.html#v%3ArelaxSchemaArrow"+>Text.XML.HXT.RelaxNG.SchemaGrammar</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>relaxSchemaFile</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3ArelaxSchemaFile"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>relaxSchemaGrammarFile</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3ArelaxSchemaGrammarFile"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>relaxSchemaTree</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Schema.html#v%3ArelaxSchemaTree"+>Text.XML.HXT.RelaxNG.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-SchemaGrammar.html#v%3ArelaxSchemaTree"+>Text.XML.HXT.RelaxNG.SchemaGrammar</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>remAttrDec</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AremAttrDec"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>remDups</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AremDups"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>removeAllComment</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AremoveAllComment"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>removeAllWhiteSpace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AremoveAllWhiteSpace"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>removeAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AremoveAttr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>removeComment</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AremoveComment"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>removeDocWhiteSpace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AremoveDocWhiteSpace"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</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-DTDValidation-DTDValidation.html#v%3AremoveDoublicateDefs"+>Text.XML.HXT.DTDValidation.DTDValidation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3AremoveDoublicateDefs"+>Text.XML.HXT.DTDValidation.Validation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>removeEncodingSpec</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AremoveEncodingSpec"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AremoveEncodingSpec"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>removeOptions</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AremoveOptions"+>Text.XML.HXT.DOM.XmlOptions</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>removeQAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AremoveQAttr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>removeWhiteSpace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AremoveWhiteSpace"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Rep</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.Schema</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>replaceChildren</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AreplaceChildren"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>returnA</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>revPreorderNT</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3ArevPreorderNT"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>RE_ALT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_ALT"+>Text.XML.HXT.DTDValidation.RE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>re_alt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_alt"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_alt"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>RE_DOT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_DOT"+>Text.XML.HXT.DTDValidation.RE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>re_dot</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_dot"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_dot"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>RE_OPT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_OPT"+>Text.XML.HXT.DTDValidation.RE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>re_opt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_opt"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_opt"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>RE_PLUS</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_PLUS"+>Text.XML.HXT.DTDValidation.RE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>re_plus</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_plus"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_plus"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>RE_REP</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_REP"+>Text.XML.HXT.DTDValidation.RE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>re_rep</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_rep"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_rep"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>RE_SEQ</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_SEQ"+>Text.XML.HXT.DTDValidation.RE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>re_seq</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_seq"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_seq"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>RE_SYM</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_SYM"+>Text.XML.HXT.DTDValidation.RE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>re_sym</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_sym"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_sym"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>RE_UNIT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_UNIT"+>Text.XML.HXT.DTDValidation.RE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>re_unit</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_unit"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_unit"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>RE_ZERO</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3ARE_ZERO"+>Text.XML.HXT.DTDValidation.RE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>re_zero</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-RE.html#v%3Are_zero"+>Text.XML.HXT.DTDValidation.RE</A+>, <A HREF="Text-XML-HXT-DTDValidation-XmlRE.html#v%3Are_zero"+>Text.XML.HXT.DTDValidation.XmlRE</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>right</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>rightNT</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3ArightNT"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>rnfA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowNF.html#v%3ArnfA"+>Control.Arrow.ArrowNF</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>rng_length</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_length"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>rng_maxExclusive</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_maxExclusive"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>rng_maxInclusive</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_maxInclusive"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>rng_maxLength</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_maxLength"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>rng_minExclusive</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_minExclusive"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>rng_minInclusive</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_minInclusive"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>rng_minLength</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3Arng_minLength"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>root</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aroot"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>rpar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Arpar"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>runInLocalURIContext</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3ArunInLocalURIContext"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>runIOLA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-IOListArrow.html#v%3ArunIOLA"+>Control.Arrow.IOListArrow</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>runIOSLA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-IOStateListArrow.html#v%3ArunIOSLA"+>Control.Arrow.IOStateListArrow</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>runKleisli</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>runLA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ListArrow.html#v%3ArunLA"+>Control.Arrow.ListArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>runSLA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-StateListArrow.html#v%3ArunSLA"+>Control.Arrow.StateListArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>runSt</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-IOStateListArrow.html#v%3ArunSt"+>Control.Arrow.IOStateListArrow</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>runX</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3ArunX"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sattr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Asattr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scAlt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscAlt"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scAlts</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscAlts"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scanRegexA</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AscanRegexA"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scanXmlRegex</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AscanXmlRegex"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscAttr"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scAttrToXml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AscAttrToXml"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scCont</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AscCont"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scConts</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AscConts"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scContToXml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AscContToXml"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scDT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscDT"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scDTxsd</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscDTxsd"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scElem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscElem"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scEmpty</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscEmpty"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scEnum</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscEnum"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scFixed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscFixed"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Schema</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#t%3ASchema"+>Text.XML.HXT.Arrow.Pickle.Schema</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3ASchema"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Schemas</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#t%3ASchemas"+>Text.XML.HXT.Arrow.Pickle.Schema</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3ASchemas"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscList"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scList1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscList1"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scNmtoken</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscNmtoken"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scNmtokens</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscNmtokens"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scNull</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscNull"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scOpt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscOpt"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scOption</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscOption"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scRep</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscRep"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scSeq</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscSeq"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scSeqs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscSeqs"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscString"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scString1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AscString1"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>scWrap</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-DTD.html#v%3AscWrap"+>Text.XML.HXT.Arrow.Pickle.DTD</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sc_1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_1"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sc_dt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_dt"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sc_l</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_l"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sc_lb</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_lb"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sc_n</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_n"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sc_ub</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3Asc_ub"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sDDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AsDDecl"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>second</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3Ased"+>Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sedRE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3AsedRE"+>Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>SelectExpr</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ASelectExpr"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>selectOptions</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AselectOptions"+>Text.XML.HXT.DOM.XmlOptions</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>selem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aselem"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Self</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ASelf"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>selfAxis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-NavTree.html#v%3AselfAxis"+>Text.XML.HXT.XPath.NavTree</A+>, Text.XML.HXT.XPath.XPathDataTypes</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>semi</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Asemi"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>separator</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Aseparator"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Seq</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.Schema</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>seqA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3AseqA"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setAttribute</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AsetAttribute"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setAttrl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetAttrl"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>setAttrName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetAttrName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetAttrName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setBaseURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetBaseURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>setChildren</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AsetChildren"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AsetChildren"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setCmt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetCmt"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setDefaultBaseURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetDefaultBaseURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setDocumentStatus</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetDocumentStatus"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setDocumentStatusFromSystemState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetDocumentStatusFromSystemState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setDTDAttrl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetDTDAttrl"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setDTDAttrValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetDTDAttrValue"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setElemAttrl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetElemAttrl"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>setElemName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetElemName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetElemName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setErrMsgStatus</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetErrMsgStatus"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setErrorMsgHandler</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetErrorMsgHandler"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setErrStatus</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetErrStatus"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setLocalPart'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AsetLocalPart%27"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setMimeTypeTable</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetMimeTypeTable"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setMimeTypeTableFromFile</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetMimeTypeTableFromFile"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setNamePrefix'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AsetNamePrefix%27"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setNamespace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AsetNamespace"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setNamespaceUri'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AsetNamespaceUri%27"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>setNode</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#v%3AsetNode"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowTree.html#v%3AsetNode"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setParam</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetParam"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setParamInt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetParamInt"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setParamList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetParamList"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setParamString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetParamString"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>setPiName</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetPiName"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetPiName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setQName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3AsetQName"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setRngName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AsetRngName"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setRngNameDiv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AsetRngNameDiv"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setRngNameRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-BasicArrows.html#v%3AsetRngNameRef"+>Text.XML.HXT.RelaxNG.BasicArrows</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setState</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowState.html#v%3AsetState"+>Control.Arrow.ArrowState</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#v%3AsetText"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setTraceLevel</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetTraceLevel"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setUriMap</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AsetUriMap"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>setUserState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AsetUserState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>share</TD+><TD CLASS="indexlinks"+><A HREF="Data-Atom.html#v%3Ashare"+>Data.Atom</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>showDatatype</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#v%3AshowDatatype"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>showElemType</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-ShowXml.html#v%3AshowElemType"+>Text.XML.HXT.DOM.ShowXml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>showOptions</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AshowOptions"+>Text.XML.HXT.DOM.XmlOptions</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>showTrees</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AshowTrees"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>single</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3Asingle"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>singleChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsingleChar"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>singleChars</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsingleChars"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>singleCharsT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsingleCharsT"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>singles</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3Asingles"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>skipS</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AskipS"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>skipS0</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AskipS0"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>SLA</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-StateListArrow.html#t%3ASLA"+>Control.Arrow.StateListArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-StateListArrow.html#v%3ASLA"+>Control.Arrow.StateListArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>SortK</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>SortKey</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ASortKey"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sPace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsPace"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sPace0</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsPace0"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>spanA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AspanA"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>spi</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Aspi"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>split</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3Asplit"+>Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>splitExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AsplitExpr"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>splitMatchByPrio</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AsplitMatchByPrio"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>splitRE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3AsplitRE"+>Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>splitRegexA</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AsplitRegexA"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>splitXmlRegex</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#v%3AsplitXmlRegex"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sq</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3Asq"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>sqattr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Asqattr"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>St</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3ASt"+>Text.XML.HXT.Arrow.Pickle.Xml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.Arrow.Pickle.Xml</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Step</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AStep"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>strictA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowNF.html#v%3AstrictA"+>Control.Arrow.ArrowNF</A+>, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stringEscapeXml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AstringEscapeXml"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>StringExpr</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AStringExpr"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stringProtocol</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AstringProtocol"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stringToHexString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AstringToHexString"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stringToInt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AstringToInt"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stringToUpper</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AstringToUpper"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stringTrim</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AstringTrim"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stringValid</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AstringValid"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stringValidFT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypeLibUtils.html#v%3AstringValidFT"+>Text.XML.HXT.RelaxNG.DataTypeLibUtils</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stringValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AstringValue"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stripDocument</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AstripDocument"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Strips</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AStrips"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stripSpaces</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AstripSpaces"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>stripStylesheet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#v%3AstripStylesheet"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>substEntityRefs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AsubstEntityRefs"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>substHtmlEntityRefs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AsubstHtmlEntityRefs"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>substXmlEntityRefs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AsubstXmlEntityRefs"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>subtreeNT</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3AsubtreeNT"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>swap</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3Aswap"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>systemLiteral</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AsystemLiteral"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>tagA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AtagA"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplApply</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplApplyImports</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Template</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ATemplate"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplAttribute</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplCall</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplChoose</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplComment</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplComposite</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplCopy</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplCopyOf</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplElement</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplForEach</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplMessage</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplProcInstr</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplText</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplValueOf</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TemplVariable</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>TestExpr</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3ATestExpr"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Text</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>textDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AtextDecl"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>textEscapeXml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AtextEscapeXml"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>text_html</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>text_xml</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>text_xml_external_parsed_entity</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.MimeTypes, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>thePicklerDTD</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AthePicklerDTD"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>theSchema</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AtheSchema"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AtheSchema"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>this</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3Athis"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>this'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Athis%27"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>this''</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Athis%27%27"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>thisNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AthisNode"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>tokenize</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3Atokenize"+>Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>tokenize'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3Atokenize%27"+>Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>tokenizeRE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3AtokenizeRE"+>Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>tokenizeRE'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html#v%3AtokenizeRE%27"+>Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>toMaybe</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3AtoMaybe"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>toNsEnv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AtoNsEnv"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>toNumber</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AtoNumber"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>toThis</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AtoThis"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>toXPathTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3AtoXPathTree"+>Text.XML.HXT.XPath.XPathToString</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>toXValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3AtoXValue"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>trace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Atrace"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>traceDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceDoc"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>traceMsg</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceMsg"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>traceSource</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceSource"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>traceState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>traceString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceString"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>traceTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceTree"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>traceValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AtraceValue"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transfAllCdata</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AtransfAllCdata"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transfAllCharRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AtransfAllCharRef"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transfCdata</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AtransfCdata"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transfCharRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AtransfCharRef"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transferDefaultURI</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transferEncoding</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transferMessage</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transferMimeType</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transferPrefix</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transferProtocol</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AtransferProtocol"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transferStatus</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transferURI</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transferVersion</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</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-DTDValidation-DocTransformation.html#v%3Atransform"+>Text.XML.HXT.DTDValidation.DocTransformation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3Atransform"+>Text.XML.HXT.DTDValidation.Validation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>transformDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AtransformDoc"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Tree</TD+><TD CLASS="indexlinks"+><A HREF="Data-Tree-Class.html#t%3ATree"+>Data.Tree.Class</A+>, Data.Tree.NTree.TypeDefs, Data.NavTree, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, <A HREF="Control-Arrow-ArrowTree.html#t%3ATree"+>Control.Arrow.ArrowTree</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>treeRepOfXmlDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AtreeRepOfXmlDoc"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>tryFetchAttribute</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AtryFetchAttribute"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>tryGetXPath</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AtryGetXPath"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>txt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Atxt"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>TypeTest</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3ATypeTest"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>t_root</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3At_root"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>t_xml</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ucs2</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ucs2BigEndianToUnicode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Aucs2BigEndianToUnicode"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ucs2LittleEndianToUnicode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Aucs2LittleEndianToUnicode"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>ucs2ToUnicode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Aucs2ToUnicode"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Unary</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AUnary"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>uncurry3</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3Auncurry3"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>uncurry4</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Util.html#v%3Auncurry4"+>Text.XML.HXT.DOM.Util</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Unicode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3AUnicode"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unicodeCharToUtf8</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeCharToUtf8"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unicodeRemoveNoneAscii</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeRemoveNoneAscii"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unicodeRemoveNoneLatin1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeRemoveNoneLatin1"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unicodeString</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unicodeToLatin1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeToLatin1"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unicodeToUtf8</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeToUtf8"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unicodeToXmlEntity</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3AunicodeToXmlEntity"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Union</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AUnion"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unionExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AunionExpr"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>uniqueNamespaces</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AuniqueNamespaces"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>uniqueNamespacesFromDeclAndQNames</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AuniqueNamespacesFromDeclAndQNames"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>universalName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AuniversalName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>universalUri</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AuniversalUri"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unlistA</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3AunlistA"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unpickleDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AunpickleDoc"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AunpickleDoc"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unsetParam</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AunsetParam"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unwrap</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3Aunwrap"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>unzipTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AunzipTree"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>upNT</TD+><TD CLASS="indexlinks"+><A HREF="Data-NavTree.html#v%3AupNT"+>Data.NavTree</A+>, Text.XML.HXT.XPath.NavTree, Text.XML.HXT.XPath.XPathDataTypes, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Uri</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-DataTypes.html#t%3AUri"+>Text.XML.HXT.RelaxNG.DataTypes</A+>, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>uriMap2Attrs</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#v%3AuriMap2Attrs"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>UriMapping</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Common.html#t%3AUriMapping"+>Text.XML.HXT.XSLT.Common</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>usAscii</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>UsedAttribSets</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AUsedAttribSets"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>UString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3AUString"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>UStringWithErrors</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3AUStringWithErrors"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>utf16</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>utf16be</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>utf16beToUnicode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Autf16beToUnicode"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>utf16le</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>utf16leToUnicode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Autf16leToUnicode"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>utf8</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>UTF8Char</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3AUTF8Char"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>UTF8String</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#t%3AUTF8String"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>utf8ToUnicode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Autf8ToUnicode"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>utf8ToUnicodeEmbedErrors</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-Unicode.html#v%3Autf8ToUnicodeEmbedErrors"+>Text.XML.HXT.DOM.Unicode</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>validate</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3Avalidate"+>Text.XML.HXT.DTDValidation.Validation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3Avalidate"+>Text.XML.HXT.RelaxNG.Validator</A+>, Text.XML.HXT.RelaxNG</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-DTDValidation-DocValidation.html#v%3AvalidateDoc"+>Text.XML.HXT.DTDValidation.DocValidation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3AvalidateDoc"+>Text.XML.HXT.DTDValidation.Validation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>3 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ParserInterface.html#v%3AvalidateDoc"+>Text.XML.HXT.Arrow.ParserInterface</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateDocument</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ProcessDocument.html#v%3AvalidateDocument"+>Text.XML.HXT.Arrow.ProcessDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateDocumentWithRelax</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateDocumentWithRelax"+>Text.XML.HXT.RelaxNG.Validator</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateDocumentWithRelaxSchema</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateDocumentWithRelaxSchema"+>Text.XML.HXT.RelaxNG.Validator</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateDocWithRelax</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AvalidateDocWithRelax"+>Text.XML.HXT.RelaxNG.Validation</A+>, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</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-DTDValidation-DTDValidation.html#v%3AvalidateDTD"+>Text.XML.HXT.DTDValidation.DTDValidation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-Validation.html#v%3AvalidateDTD"+>Text.XML.HXT.DTDValidation.Validation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateIds</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-IdValidation.html#v%3AvalidateIds"+>Text.XML.HXT.DTDValidation.IdValidation</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateNamespaces</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Namespace.html#v%3AvalidateNamespaces"+>Text.XML.HXT.Arrow.Namespace</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateRelax</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AvalidateRelax"+>Text.XML.HXT.RelaxNG.Validation</A+>, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateSchema</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateSchema"+>Text.XML.HXT.RelaxNG.Validator</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateSchemaWithSpezification</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateSchemaWithSpezification"+>Text.XML.HXT.RelaxNG.Validator</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateWithoutSpezification</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateWithoutSpezification"+>Text.XML.HXT.RelaxNG.Validator</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateWithRelaxAndHandleErrors</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AvalidateWithRelaxAndHandleErrors"+>Text.XML.HXT.RelaxNG.Validation</A+>, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateWithSpezification</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validator.html#v%3AvalidateWithSpezification"+>Text.XML.HXT.RelaxNG.Validator</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>validateXMLDoc</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-Validation.html#v%3AvalidateXMLDoc"+>Text.XML.HXT.RelaxNG.Validation</A+>, Text.XML.HXT.RelaxNG.Validator, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Value</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.RelaxNG.DataTypes, Text.XML.HXT.RelaxNG.DataTypeLibUtils, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>valueOf</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AvalueOf"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>valueOfDTD</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#v%3AvalueOfDTD"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>varEnv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AvarEnv"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>VarExpr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AVarExpr"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>Variable</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AVariable"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>VarName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AVarName"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>VarTab</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AVarTab"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>versionInfo</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AversionInfo"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>versionNum</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlTokenParser.html#v%3AversionNum"+>Text.XML.HXT.Parser.XmlTokenParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>versionOptions</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlOptions.html#v%3AversionOptions"+>Text.XML.HXT.DOM.XmlOptions</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_0</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3Av_1"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_any</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_children</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_choice</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_empty</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_mixed</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_no</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_null</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_option</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_pcdata</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_plus</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_seq</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_star</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>v_yes</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>w3cDatatypeLib</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Aw3cDatatypeLib"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>w3cNS</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Aw3cNS"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>warn</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Awarn"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>When</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-CompiledStylesheet.html#t%3AWhen"+>Text.XML.HXT.XSLT.CompiledStylesheet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>when</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3Awhen"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>whenNot</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AwhenNot"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>whenNotP</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AwhenNotP"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>whenP</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowIf.html#v%3AwhenP"+>Control.Arrow.ArrowIf</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>WhenPart</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.CompiledStylesheet</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>withDefault</TD+><TD CLASS="indexlinks"+><A HREF="Control-Arrow-ArrowList.html#v%3AwithDefault"+>Control.Arrow.ArrowList</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Control.Arrow.ListArrows, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>withExtendedUserState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AwithExtendedUserState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>withOtherUserState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AwithOtherUserState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>withTraceLevel</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AwithTraceLevel"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>writeDocument</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-WriteDocument.html#v%3AwriteDocument"+>Text.XML.HXT.Arrow.WriteDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>writeDocumentToString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-WriteDocument.html#v%3AwriteDocumentToString"+>Text.XML.HXT.Arrow.WriteDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXAttr"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xboolean</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3Axboolean"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XCdata</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXCdata"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XCharRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXCharRef"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XCmt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXCmt"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XDTD</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXDTD"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XEntityRef</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXEntityRef"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XError</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXError"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XFct</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#t%3AXFct"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xhtmlEntities</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XhtmlEntities.html#v%3AxhtmlEntities"+>Text.XML.HXT.Parser.XhtmlEntities</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xIndex</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AxIndex"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>XIOState</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Type/Class)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AXIOState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Data Constructor)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AXIOState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XIOSys</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3AXIOSys"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XIOSysState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#t%3AXIOSysState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_attrList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_attrList"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_baseURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_baseURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_defaultBaseURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_defaultBaseURI"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_errorModule</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_errorModule"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_errorMsgCollect</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_errorMsgCollect"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_errorMsgHandler</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_errorMsgHandler"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_errorMsgList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_errorMsgList"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_errorStatus</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_errorStatus"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_mimeTypes</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_mimeTypes"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_sysState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_sysState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_trace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_trace"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xio_userState</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlIOStateArrow.html#v%3Axio_userState"+>Text.XML.HXT.Arrow.XmlIOStateArrow</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XmlArrow</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#t%3AXmlArrow"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XmlArrowS</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DTDValidation-TypeDefs.html#t%3AXmlArrowS"+>Text.XML.HXT.DTDValidation.TypeDefs</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlChar"+>Text.XML.HXT.Parser.XmlCharParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xMLDecl</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AxMLDecl"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xMLDecl'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3AxMLDecl%27"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlEntities</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlEntities.html#v%3AxmlEntities"+>Text.XML.HXT.Parser.XmlEntities</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlLetter</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlLetter"+>Text.XML.HXT.Parser.XmlCharParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlNameChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlNameChar"+>Text.XML.HXT.Parser.XmlCharParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlNamespace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AxmlNamespace"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlNamespaceXName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AxmlNamespaceXName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlNameStartChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlNameStartChar"+>Text.XML.HXT.Parser.XmlCharParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlNCNameChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlNCNameChar"+>Text.XML.HXT.Parser.XmlCharParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlNCNameStartChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlNCNameStartChar"+>Text.XML.HXT.Parser.XmlCharParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XmlNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlNode.html#t%3AXmlNode"+>Text.XML.HXT.DOM.XmlNode</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XmlNodeSet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlNodeSet"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlnsNamespace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-XmlKeywords.html#v%3AxmlnsNamespace"+>Text.XML.HXT.DOM.XmlKeywords</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlnsNamespaceXName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AxmlnsNamespaceXName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlnsQN</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AxmlnsQN"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlnsXName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AxmlnsXName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XmlPickler</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#t%3AXmlPickler"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#t%3AXmlPickler"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XmlRegex</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlRegex.html#t%3AXmlRegex"+>Text.XML.HXT.Arrow.XmlRegex</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlSpace</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxmlSpace"+>Text.XML.HXT.XSLT.Names</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlSpaceChar</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlCharParser.html#v%3AxmlSpaceChar"+>Text.XML.HXT.Parser.XmlCharParser</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XmlTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTree"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XmlTrees</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXmlTrees"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlTreeToPatternFormatedString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3AxmlTreeToPatternFormatedString"+>Text.XML.HXT.RelaxNG.PatternToString</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlTreeToPatternString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3AxmlTreeToPatternString"+>Text.XML.HXT.RelaxNG.PatternToString</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlTreeToPatternStringTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-PatternToString.html#v%3AxmlTreeToPatternStringTree"+>Text.XML.HXT.RelaxNG.PatternToString</A+>, Text.XML.HXT.RelaxNG</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xmlXName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#v%3AxmlXName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-QualifiedName.html#t%3AXName"+>Text.XML.HXT.DOM.QualifiedName</A+>, Text.XML.HXT.DOM.TypeDefs, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#t%3AXNode"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XNS</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXNS"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xnumber</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3Axnumber"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xNumber'</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AxNumber%27"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xp4Tuple</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Axp4Tuple"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3Axp4Tuple"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xp5Tuple</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Axp5Tuple"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3Axp5Tuple"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xp6Tuple</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Axp6Tuple"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3Axp6Tuple"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpAddFixedAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpAddFixedAttr"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpAddFixedAttr"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpAlt</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpAlt"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpAlt"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPArrow</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#t%3AXPArrow"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xPathAdd</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathArithmetic.html#v%3AxPathAdd"+>Text.XML.HXT.XPath.XPathArithmetic</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xPathDiv</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathArithmetic.html#v%3AxPathDiv"+>Text.XML.HXT.XPath.XPathArithmetic</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPathFilter</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AXPathFilter"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xPathMod</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathArithmetic.html#v%3AxPathMod"+>Text.XML.HXT.XPath.XPathArithmetic</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xPathMulti</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathArithmetic.html#v%3AxPathMulti"+>Text.XML.HXT.XPath.XPathArithmetic</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPathNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AXPathNode"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPathParams</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Application.html#t%3AXPathParams"+>Text.XML.HXT.XSLT.Application</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xPathUnary</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathArithmetic.html#v%3AxPathUnary"+>Text.XML.HXT.XPath.XPathArithmetic</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPathValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AXPathValue"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpAttr</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpAttr"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpAttr"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpAttrFixed</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpAttrFixed"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpAttrFixed"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpAttrImplied</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpAttrImplied"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpAttrImplied"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpAttrQN</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpAttrQN"+>Text.XML.HXT.Arrow.Pickle.Xml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpChoice</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpChoice"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpChoice"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPCommentNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPCommentNode"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpCondSeq</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpCondSeq"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpCondSeq"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpDefault</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpDefault"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpDefault"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpElem</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpElem"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpElem"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpElemQN</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpElemQN"+>Text.XML.HXT.Arrow.Pickle.Xml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpElemWithAttrValue</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpElemWithAttrValue"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpElemWithAttrValue"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPi</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXPi"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpickle</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3Axpickle"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3Axpickle"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpickleDocument</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpickleDocument"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpickleDTD</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpickleDTD"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpickleVal</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpickleVal"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpickleWriteDTD</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpickleWriteDTD"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpLift</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpLift"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpLift"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpLiftMaybe</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpLiftMaybe"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpLiftMaybe"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpList</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpList"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpList"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpList1</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpList1"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpList1"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpMap</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpMap"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpMap"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPNode"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPNumber</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AXPNumber"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpOption</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpOption"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpOption"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpPair</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpPair"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpPair"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPPINode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPPINode"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpPrim</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpPrim"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpPrim"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpSeq</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpSeq"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpSeq"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpText"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpText"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpText0</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpText0"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpText0"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpText0DT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpText0DT"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpText0DT"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpTextDT</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpTextDT"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpTextDT"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPTextNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPTextNode"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpTree</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpTree"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpTree"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpTrees</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpTrees"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpTrees"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpTriple</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpTriple"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpTriple"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpUnit</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpUnit"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpUnit"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xPValue2NodeSet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathToNodeSet.html#v%3AxPValue2NodeSet"+>Text.XML.HXT.XPath.XPathToNodeSet</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xPValue2String</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3AxPValue2String"+>Text.XML.HXT.XPath.XPathToString</A+>, Text.XML.HXT.XPath</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xPValue2XmlTrees</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathToString.html#v%3AxPValue2XmlTrees"+>Text.XML.HXT.XPath.XPathToString</A+>, Text.XML.HXT.XPath, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPVBool</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPVBool"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPVError</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPVError"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPVNode</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPVNode"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPVNumber</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPVNumber"+>Text.XML.HXT.XPath.XPathDataTypes</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XPVString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#v%3AXPVString"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpWrap</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpWrap"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpWrap"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpWrapMaybe</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpWrapMaybe"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpWrapMaybe"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpXmlText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpXmlText"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpXmlText"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xpZero</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Xml.html#v%3AxpZero"+>Text.XML.HXT.Arrow.Pickle.Xml</A+>, <A HREF="Text-XML-HXT-Arrow-Pickle.html#v%3AxpZero"+>Text.XML.HXT.Arrow.Pickle</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>xread</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Parser-XmlParsec.html#v%3Axread"+>Text.XML.HXT.Parser.XmlParsec</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-ReadDocument.html#v%3Axread"+>Text.XML.HXT.Arrow.ReadDocument</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsdParam</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Pickle-Schema.html#v%3AxsdParam"+>Text.XML.HXT.Arrow.Pickle.Schema</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_anyURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_anyURI"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_base64Binary</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_base64Binary"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_decimal</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_decimal"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_ENTITIES</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_ENTITIES"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_ENTITY</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_ENTITY"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_enumeration</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_enumeration"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_fractionDigits</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_fractionDigits"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_hexBinary</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_hexBinary"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_ID</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_ID"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_IDREF</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_IDREF"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_IDREFS</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_IDREFS"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_language</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_language"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_length</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_length"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_maxExclusive</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_maxExclusive"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_maxInclusive</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_maxInclusive"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_maxLength</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_maxLength"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_minExclusive</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_minExclusive"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_minInclusive</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_minInclusive"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_minLength</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_minLength"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_Name</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_Name"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_NCName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_NCName"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_NMTOKEN</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_NMTOKEN"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_NMTOKENS</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_NMTOKENS"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_normalizedString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_normalizedString"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_NOTATION</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_NOTATION"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_pattern</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_pattern"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_QName</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_QName"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_string</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_string"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_token</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_token"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsd_totalDigits</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html#v%3Axsd_totalDigits"+>Text.XML.HXT.RelaxNG.XmlSchema.DataTypeLibW3C</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry" COLSPAN="2"+>xshow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-ShowXml.html#v%3Axshow"+>Text.XML.HXT.DOM.ShowXml</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XmlArrow.html#v%3Axshow"+>Text.XML.HXT.Arrow.XmlArrow</A+>, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xshowEscapeXml</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-Edit.html#v%3AxshowEscapeXml"+>Text.XML.HXT.Arrow.Edit</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltApplyImports</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltApplyStylesheet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-XsltArrows.html#v%3AxsltApplyStylesheet"+>Text.XML.HXT.XSLT.XsltArrows</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltApplyStylesheetFromURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-XsltArrows.html#v%3AxsltApplyStylesheetFromURI"+>Text.XML.HXT.XSLT.XsltArrows</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltApplyTemplates</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltAttribute</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltAttributeSet</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltCallTemplate</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltChoose</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltComment</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltCompileStylesheet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-XsltArrows.html#v%3AxsltCompileStylesheet"+>Text.XML.HXT.XSLT.XsltArrows</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltCompileStylesheetFromURI</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-XsltArrows.html#v%3AxsltCompileStylesheetFromURI"+>Text.XML.HXT.XSLT.XsltArrows</A+>, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltCopy</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltCopyOf</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltDataType</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltElement</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltElements</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltExlcudeResultPrefixes</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltExlcudeResultPrefixesLRE</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltExtensionElementPrefixes</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltExtensionElementPrefixesLRE</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltForEach</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltHRef</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltIf</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltImport</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltInclude</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltMatch</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltMessage</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltMode</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltName</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltNamespace</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltNamespaceAlias</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltOrder</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltOtherwise</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltParam</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltPrefix</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxsltPrefix"+>Text.XML.HXT.XSLT.Names</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltPreserveSpace</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltPriority</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltProcInstr</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltResultPrefix</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltSelect</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxsltSelect"+>Text.XML.HXT.XSLT.Names</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltSort</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltStripSpace</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltStylesheet</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxsltStylesheet"+>Text.XML.HXT.XSLT.Names</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltStylesheetPrefix</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltTemplate</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltTerminate</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltTest</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltText</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltTransform</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltUri</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxsltUri"+>Text.XML.HXT.XSLT.Names</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltUseAttributeSets</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltUseAttributeSetsLRE</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltValueOf</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltVariable</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltVersion</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltVersionLRE</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XSLT-Names.html#v%3AxsltVersionLRE"+>Text.XML.HXT.XSLT.Names</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltWhen</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xsltWithParam</TD+><TD CLASS="indexlinks"+>Text.XML.HXT.XSLT.Names</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XStep</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathDataTypes.html#t%3AXStep"+>Text.XML.HXT.XPath.XPathDataTypes</A+>, Text.XML.HXT.XSLT.Common</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xString</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-Arrow-XPathSimple.html#v%3AxString"+>Text.XML.HXT.Arrow.XPathSimple</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>xstring</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-XPath-XPathFct.html#v%3Axstring"+>Text.XML.HXT.XPath.XPathFct</A+></TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XTag</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXTag"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.XSLT.Common, Text.XML.HXT.Arrow</TD+></TR+><TR CLASS="indexrow"+><TD CLASS="indexentry"+>XText</TD+><TD CLASS="indexlinks"+><A HREF="Text-XML-HXT-DOM-TypeDefs.html#v%3AXText"+>Text.XML.HXT.DOM.TypeDefs</A+>, Text.XML.HXT.DOM.Interface, Text.XML.HXT.DTDValidation.TypeDefs, Text.XML.HXT.Arrow</TD ></TR ><TR CLASS="indexrow" ><TD CLASS="indexentry"
doc/hdoc/hxt.haddock view
binary file changed (720406 → 676391 bytes)
doc/hdoc/index.html view
@@ -4,7 +4,7 @@ ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TITLE+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT@@ -19,7 +19,7 @@ ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A@@ -34,7 +34,7 @@ ></TR ><TR ><TD CLASS="section1"->hxt-8.2.0: A collection of tools for processing XML with Haskell.</TD+>hxt-8.3.0: A collection of tools for processing XML with Haskell.</TD ></TR ><TR ><TD CLASS="doc"@@ -291,16 +291,6 @@ ><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:5" 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-><TR-><TD STYLE="padding-left: 1.25em;width: 44em" ><A HREF="Data-Tree-NTree-TypeDefs.html" >Data.Tree.NTree.TypeDefs</A ></TD@@ -632,16 +622,6 @@ ></TR ><TR ><TD STYLE="padding-left: 1.25em;width: 42em"-><A HREF="Text-XML-HXT-DOM-NamespacePredicates.html"->Text.XML.HXT.DOM.NamespacePredicates</A-></TD-><TD-></TD-><TD-></TD-></TR-><TR-><TD STYLE="padding-left: 1.25em;width: 42em" ><A HREF="Text-XML-HXT-DOM-QualifiedName.html" >Text.XML.HXT.DOM.QualifiedName</A ></TD@@ -724,16 +704,6 @@ ><TD STYLE="padding-left: 1.25em;width: 42em" ><A HREF="Text-XML-HXT-DOM-XmlOptions.html" >Text.XML.HXT.DOM.XmlOptions</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
doc/hdoc/src/Control-Arrow-ArrowNF.html view
@@ -42,5 +42,7 @@ <a name="line-34"></a><a name="ArrowNF"></a><span class='keyword'>class</span> <span class='layout'>(</span><span class='conid'>Arrow</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>ArrowNF</span> <span class='varid'>a</span> <span class='keyword'>where</span> <a name="line-35"></a> <span class='varid'>rnfA</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>NFData</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>b</span> <span class='varid'>c</span> <a name="line-36"></a> <span class='varid'>rnfA</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>>>></span> <span class='varid'>strictA</span>+<a name="line-37"></a>+<a name="line-38"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
− doc/hdoc/src/Data-Tree-NTree-Filter.html
@@ -1,923 +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 : experimental-<a name="line-10"></a> Portability: portable-<a name="line-11"></a> Version : $Id: Filter.hs,v 1.6 2006/11/12 14:52:59 hxml Exp $-<a name="line-12"></a>-<a name="line-13"></a>Filter for n-ary tree structure with filter combinators-<a name="line-14"></a>copied and modified from HxXml (<<a href="http://www.cs.york.ac.uk/fp/HaXml/">http://www.cs.york.ac.uk/fp/HaXml/</a>>)-<a name="line-15"></a>-<a name="line-16"></a>Similar but more flexible functions for tree processing are defined in the-<a name="line-17"></a>arrow classes "Control.Arrow.ArrowList", "Control.Arrow.ArrowIf", "Control.Arrow.ArrowTree" and "Control.Arrow.ArrowState".-<a name="line-18"></a>For new applications, especially for XML processing, it's recommended to use the arrow interface-<a name="line-19"></a>"Text.XML.HXT.Arrow" instead of this filter approach as part of the api "Text.XML.HXT.Parser"-<a name="line-20"></a>-<a name="line-21"></a>-}</span>-<a name="line-22"></a>-<a name="line-23"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-24"></a>-<a name="line-25"></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-26"></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-27"></a> <span class='layout'>,</span> <span class='conid'>TFilter</span>-<a name="line-28"></a> <span class='layout'>,</span> <span class='conid'>TSFilter</span>-<a name="line-29"></a> <span class='layout'>,</span> <span class='varid'>satisfies</span>-<a name="line-30"></a>-<a name="line-31"></a> <span class='comment'>-- * Filter</span>-<a name="line-32"></a> <span class='layout'>,</span> <span class='varid'>none</span> <span class='comment'>-- simple filter</span>-<a name="line-33"></a> <span class='layout'>,</span> <span class='varid'>this</span>-<a name="line-34"></a>-<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>isOf</span>-<a name="line-36"></a> <span class='layout'>,</span> <span class='varid'>isOfNode</span> <span class='comment'>-- predicate filter</span>-<a name="line-37"></a>-<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>mkNTree</span> <span class='comment'>-- contructor filter</span>-<a name="line-39"></a>-<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>replaceNode</span> <span class='comment'>-- simple editing</span>-<a name="line-41"></a> <span class='layout'>,</span> <span class='varid'>replaceChildren</span>-<a name="line-42"></a>-<a name="line-43"></a> <span class='layout'>,</span> <span class='varid'>modifyNode</span>-<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>modifyNode0</span>-<a name="line-45"></a> <span class='layout'>,</span> <span class='varid'>modifyChildren</span>-<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>substChildren</span>-<a name="line-47"></a> <span class='layout'>,</span> <span class='varid'>processChildren</span> <span class='comment'>-- filter combinators</span>-<a name="line-48"></a>-<a name="line-49"></a> <span class='layout'>,</span> <span class='varid'>o</span>-<a name="line-50"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>.></span><span class='layout'>)</span>-<a name="line-51"></a> <span class='layout'>,</span> <span class='varid'>seqF</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='layout'>(</span><span class='varop'>+++</span><span class='layout'>)</span>-<a name="line-54"></a> <span class='layout'>,</span> <span class='varid'>cat</span>-<a name="line-55"></a>-<a name="line-56"></a> <span class='layout'>,</span> <span class='varid'>orElse</span> <span class='comment'>-- choices</span>-<a name="line-57"></a> <span class='layout'>,</span> <span class='varid'>iff</span> <span class='comment'>-- if then else filter</span>-<a name="line-58"></a> <span class='layout'>,</span> <span class='varid'>choice</span>-<a name="line-59"></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-60"></a> <span class='layout'>,</span> <span class='varid'>when</span>-<a name="line-61"></a> <span class='layout'>,</span> <span class='varid'>whenNot</span>-<a name="line-62"></a> <span class='layout'>,</span> <span class='varid'>guards</span>-<a name="line-63"></a> <span class='layout'>,</span> <span class='varid'>neg</span> <span class='comment'>-- negation</span>-<a name="line-64"></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-65"></a> <span class='layout'>,</span> <span class='varid'>notContaining</span> <span class='comment'>-- previous: without</span>-<a name="line-66"></a>-<a name="line-67"></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-68"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'></</span><span class='layout'>)</span>-<a name="line-69"></a> <span class='layout'>,</span> <span class='varid'>deep</span> <span class='comment'>-- recursive search</span>-<a name="line-70"></a> <span class='layout'>,</span> <span class='varid'>deepest</span>-<a name="line-71"></a> <span class='layout'>,</span> <span class='varid'>multi</span>-<a name="line-72"></a> <span class='layout'>,</span> <span class='varid'>processBottomUp</span> <span class='comment'>-- recursive editing</span>-<a name="line-73"></a> <span class='layout'>,</span> <span class='varid'>processBottomUpIfNot</span>-<a name="line-74"></a> <span class='layout'>,</span> <span class='varid'>processTopDown</span>-<a name="line-75"></a> <span class='layout'>,</span> <span class='varid'>processTopDownUntil</span>-<a name="line-76"></a> <span class='layout'>,</span> <span class='varid'>insertChildrenAt</span>-<a name="line-77"></a> <span class='layout'>,</span> <span class='varid'>insertChildrenAfter</span>-<a name="line-78"></a>-<a name="line-79"></a> <span class='comment'>-- * Monadic Filter</span>-<a name="line-80"></a> <span class='layout'>,</span> <span class='varid'>thisM</span> <span class='comment'>-- monadic filter</span>-<a name="line-81"></a> <span class='layout'>,</span> <span class='varid'>noneM</span>-<a name="line-82"></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-83"></a> <span class='layout'>,</span> <span class='varid'>seqM</span> <span class='comment'>-- generalisation of .>></span>-<a name="line-84"></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-85"></a> <span class='layout'>,</span> <span class='varid'>catM</span> <span class='comment'>-- monadic form of cat</span>-<a name="line-86"></a> <span class='layout'>,</span> <span class='varid'>ifM</span> <span class='comment'>-- monadic if then else</span>-<a name="line-87"></a> <span class='layout'>,</span> <span class='varid'>choiceM</span> <span class='comment'>-- monadic choice</span>-<a name="line-88"></a> <span class='layout'>,</span> <span class='varid'>whenM</span> <span class='comment'>-- special monadic ifs</span>-<a name="line-89"></a> <span class='layout'>,</span> <span class='varid'>whenNotM</span>-<a name="line-90"></a> <span class='layout'>,</span> <span class='varid'>guardsM</span>-<a name="line-91"></a> <span class='layout'>,</span> <span class='varid'>containingM</span>-<a name="line-92"></a> <span class='layout'>,</span> <span class='varid'>processChildrenM</span> <span class='comment'>-- monadic versions of recursive editing</span>-<a name="line-93"></a> <span class='layout'>,</span> <span class='varid'>processTopDownM</span>-<a name="line-94"></a> <span class='layout'>,</span> <span class='varid'>processBottomUpM</span>-<a name="line-95"></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-96"></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-97"></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-98"></a> <span class='layout'>,</span> <span class='varid'>performAction</span> <span class='comment'>-- run a command within a filter</span>-<a name="line-99"></a> <span class='layout'>)</span>-<a name="line-100"></a>-<a name="line-101"></a><span class='keyword'>where</span>-<a name="line-102"></a>-<a name="line-103"></a>-<a name="line-104"></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-105"></a>-<a name="line-106"></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-107"></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-108"></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-109"></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-110"></a><span class='keyword'>infixr</span> <span class='num'>3</span> <span class='conop'>:-></span>-<a name="line-111"></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-112"></a>-<a name="line-113"></a><span class='comment'>-- |</span>-<a name="line-114"></a><span class='comment'>-- tree filter type: a function mapping a tree onto a list of trees</span>-<a name="line-115"></a><span class='comment'>--</span>-<a name="line-116"></a><span class='comment'>-- filter can be used in various ways, as predicates, selectors, transformers, ...</span>-<a name="line-117"></a>-<a name="line-118"></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-119"></a>-<a name="line-120"></a><span class='comment'>-- |</span>-<a name="line-121"></a><span class='comment'>-- a filter for sequences</span>-<a name="line-122"></a>-<a name="line-123"></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-124"></a>-<a name="line-125"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-126"></a>-<a name="line-127"></a><span class='comment'>-- |</span>-<a name="line-128"></a><span class='comment'>-- satisfies converts a result of a predicate filter into a boolean</span>-<a name="line-129"></a><span class='comment'>--</span>-<a name="line-130"></a><span class='comment'>-- is a shortcut for not . null</span>-<a name="line-131"></a><span class='comment'>--</span>-<a name="line-132"></a><span class='comment'>-- typical use in guards or ifs: @if (satisfies f) t then ... else ... @</span>-<a name="line-133"></a><span class='comment'>--</span>-<a name="line-134"></a><span class='comment'>-- * 1.parameter f : the predicate filter</span>-<a name="line-135"></a><span class='comment'>--</span>-<a name="line-136"></a><span class='comment'>-- - 2.parameter t : the tree to be tested</span>-<a name="line-137"></a><span class='comment'>--</span>-<a name="line-138"></a><span class='comment'>-- - returns : @b = not (null (f t))@</span>-<a name="line-139"></a>-<a name="line-140"></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-141"></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-142"></a>-<a name="line-143"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-144"></a><span class='comment'>--</span>-<a name="line-145"></a><span class='comment'>-- simple filter</span>-<a name="line-146"></a>-<a name="line-147"></a><span class='comment'>-- |</span>-<a name="line-148"></a><span class='comment'>-- the null filter, returns the empty list</span>-<a name="line-149"></a>-<a name="line-150"></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-151"></a><span class='definition'>none</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-152"></a>-<a name="line-153"></a><span class='comment'>-- |</span>-<a name="line-154"></a><span class='comment'>-- the unit filter, returns the single element list containing the argument</span>-<a name="line-155"></a>-<a name="line-156"></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-157"></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-158"></a>-<a name="line-159"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-160"></a><span class='comment'>--</span>-<a name="line-161"></a><span class='comment'>-- selecting filter</span>-<a name="line-162"></a>-<a name="line-163"></a><span class='comment'>-- |</span>-<a name="line-164"></a><span class='comment'>-- conversion from predicate function to filter</span>-<a name="line-165"></a><span class='comment'>--</span>-<a name="line-166"></a><span class='comment'>-- * 1.parameter p : the predicate for testing the tree</span>-<a name="line-167"></a><span class='comment'>--</span>-<a name="line-168"></a><span class='comment'>-- - returns : 'this' or 'none' depending on the predicate</span>-<a name="line-169"></a>-<a name="line-170"></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-171"></a><span class='definition'>isOf</span> <span class='varid'>p</span> <span class='varid'>t</span>-<a name="line-172"></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-173"></a>-<a name="line-174"></a><span class='comment'>-- |</span>-<a name="line-175"></a><span class='comment'>-- select filter, selects trees with node values with a specific property</span>-<a name="line-176"></a><span class='comment'>--</span>-<a name="line-177"></a><span class='comment'>-- * 1.parameter p : the predicate for testing the node value</span>-<a name="line-178"></a><span class='comment'>--</span>-<a name="line-179"></a><span class='comment'>-- - returns : @[]@ or @[t]@ depending on @p t@</span>-<a name="line-180"></a><span class='comment'>--</span>-<a name="line-181"></a><span class='comment'>-- a special case of 'isOf' filter</span>-<a name="line-182"></a>-<a name="line-183"></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-184"></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-185"></a>-<a name="line-186"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-187"></a><span class='comment'>--</span>-<a name="line-188"></a><span class='comment'>-- simple editing filters</span>-<a name="line-189"></a>-<a name="line-190"></a><span class='comment'>-- |</span>-<a name="line-191"></a><span class='comment'>-- filter for substituting an arbitray tree by a constant</span>-<a name="line-192"></a><span class='comment'>--</span>-<a name="line-193"></a><span class='comment'>-- * 1.parameter t : the result tree, the input tree is ignored</span>-<a name="line-194"></a><span class='comment'>--</span>-<a name="line-195"></a><span class='comment'>-- - returns : the filter</span>-<a name="line-196"></a>-<a name="line-197"></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-198"></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-199"></a>-<a name="line-200"></a><span class='comment'>-- |</span>-<a name="line-201"></a><span class='comment'>-- filter for replacing the node</span>-<a name="line-202"></a><span class='comment'>--</span>-<a name="line-203"></a><span class='comment'>-- * 1.parameter n : the new node</span>-<a name="line-204"></a><span class='comment'>--</span>-<a name="line-205"></a><span class='comment'>-- - returns : the editing filter</span>-<a name="line-206"></a>-<a name="line-207"></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-208"></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-209"></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-210"></a>-<a name="line-211"></a><span class='comment'>-- |</span>-<a name="line-212"></a><span class='comment'>-- filter for replacing the children</span>-<a name="line-213"></a><span class='comment'>--</span>-<a name="line-214"></a><span class='comment'>-- * 1.parameter cs : cs the list of children</span>-<a name="line-215"></a><span class='comment'>--</span>-<a name="line-216"></a><span class='comment'>-- - returns : the filter</span>-<a name="line-217"></a>-<a name="line-218"></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-219"></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-220"></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-221"></a>-<a name="line-222"></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-223"></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-224"></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-225"></a>-<a name="line-226"></a><span class='comment'>-- |</span>-<a name="line-227"></a><span class='comment'>-- filter for editing the node</span>-<a name="line-228"></a><span class='comment'>--</span>-<a name="line-229"></a><span class='comment'>-- * 1.parameter nf : the XNode editing funtion</span>-<a name="line-230"></a><span class='comment'>--</span>-<a name="line-231"></a><span class='comment'>-- - returns : the filter</span>-<a name="line-232"></a>-<a name="line-233"></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-234"></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-235"></a>-<a name="line-236"></a><span class='comment'>-- |</span>-<a name="line-237"></a><span class='comment'>-- filter for editing the children</span>-<a name="line-238"></a><span class='comment'>--</span>-<a name="line-239"></a><span class='comment'>-- all children are processed with a filter mapping lists to lists,</span>-<a name="line-240"></a><span class='comment'>-- this enables not only elementwise editing by lifting a normal</span>-<a name="line-241"></a><span class='comment'>-- filter to a list filter with @(f $$)@ (see '($$)') but also manipulation</span>-<a name="line-242"></a><span class='comment'>-- of the order of the elements, e.g. "reverse" is an appropriate childen</span>-<a name="line-243"></a><span class='comment'>-- editing function.</span>-<a name="line-244"></a><span class='comment'>--</span>-<a name="line-245"></a><span class='comment'>-- * 1.parameter csf : the children editing function</span>-<a name="line-246"></a><span class='comment'>--</span>-<a name="line-247"></a><span class='comment'>-- - returns : the filter</span>-<a name="line-248"></a><span class='comment'>--</span>-<a name="line-249"></a><span class='comment'>-- see also : 'processChildren'</span>-<a name="line-250"></a>-<a name="line-251"></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-252"></a><span class='definition'>modifyChildren</span> <span class='varid'>f</span> <span class='comment'>-- (NTree n cs)</span>-<a name="line-253"></a> <span class='comment'>-- = [NTree n (f cs)]</span>-<a name="line-254"></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-255"></a>-<a name="line-256"></a><span class='comment'>-- |</span>-<a name="line-257"></a><span class='comment'>-- filter for substituting the children of a tree by</span>-<a name="line-258"></a><span class='comment'>-- a new list of childen computed by applying a filter to the input tree.</span>-<a name="line-259"></a><span class='comment'>-- 'modifyChildren' can be expressed by 'substChildren':</span>-<a name="line-260"></a><span class='comment'>-- @modifyChildren f t@ is equal to @substChildren (f . getChildren)@</span>-<a name="line-261"></a>-<a name="line-262"></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-263"></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-264"></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-265"></a>-<a name="line-266"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-267"></a><span class='comment'>--</span>-<a name="line-268"></a><span class='comment'>-- combinators (copied from HaXml)</span>-<a name="line-269"></a><span class='comment'>--</span>-<a name="line-270"></a>-<a name="line-271"></a><span class='comment'>-- |</span>-<a name="line-272"></a><span class='comment'>-- sequential composition of filters, usually written in infix notation f2 `o` f1.</span>-<a name="line-273"></a><span class='comment'>--</span>-<a name="line-274"></a><span class='comment'>-- for predicate filter the logical AND</span>-<a name="line-275"></a><span class='comment'>--</span>-<a name="line-276"></a><span class='comment'>-- * 1.parameter f2 : the 2. filter</span>-<a name="line-277"></a><span class='comment'>--</span>-<a name="line-278"></a><span class='comment'>-- - 2.parameter f1 : the 1. filter</span>-<a name="line-279"></a><span class='comment'>--</span>-<a name="line-280"></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-281"></a>-<a name="line-282"></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-283"></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-284"></a>-<a name="line-285"></a><span class='comment'>-- |</span>-<a name="line-286"></a><span class='comment'>-- pronounced \"followed by\", defined as: @f .> g = g \`o\` f@.</span>-<a name="line-287"></a><span class='comment'>--</span>-<a name="line-288"></a><span class='comment'>-- allows filter composition in a more readable way from left to right</span>-<a name="line-289"></a><span class='comment'>--</span>-<a name="line-290"></a><span class='comment'>-- * 1.parameter f1 : the 1. filter</span>-<a name="line-291"></a><span class='comment'>--</span>-<a name="line-292"></a><span class='comment'>-- - 2.parameter f2 : the 2. filter</span>-<a name="line-293"></a><span class='comment'>--</span>-<a name="line-294"></a><span class='comment'>-- - returns : the composition of f1 and f2</span>-<a name="line-295"></a><span class='comment'>--</span>-<a name="line-296"></a><span class='comment'>-- see also : 'o', '(..>)'</span>-<a name="line-297"></a>-<a name="line-298"></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-299"></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-300"></a>-<a name="line-301"></a><span class='comment'>-- |</span>-<a name="line-302"></a><span class='comment'>-- apply a list of filters sequentially with '(.>)', for predicate filters the generalized AND</span>-<a name="line-303"></a><span class='comment'>--</span>-<a name="line-304"></a><span class='comment'>-- see also : '(.>)'</span>-<a name="line-305"></a>-<a name="line-306"></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-307"></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-308"></a>-<a name="line-309"></a><span class='comment'>-- |</span>-<a name="line-310"></a><span class='comment'>-- binary parallel composition, the logical OR for predicate filter</span>-<a name="line-311"></a><span class='comment'>--</span>-<a name="line-312"></a><span class='comment'>-- * 1.parameter f1 : the 1. filter</span>-<a name="line-313"></a><span class='comment'>--</span>-<a name="line-314"></a><span class='comment'>-- - 2.parameter f2 : the 2. filter</span>-<a name="line-315"></a><span class='comment'>--</span>-<a name="line-316"></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-317"></a>-<a name="line-318"></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-319"></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-320"></a>-<a name="line-321"></a><span class='comment'>-- |</span>-<a name="line-322"></a><span class='comment'>-- special sequential composition.</span>-<a name="line-323"></a><span class='comment'>--</span>-<a name="line-324"></a><span class='comment'>-- filter f is applied to an argument t.</span>-<a name="line-325"></a><span class='comment'>-- then filter g is applied to all elements of the result list,</span>-<a name="line-326"></a><span class='comment'>-- but the argument t is also passed as extra parameter to g.</span>-<a name="line-327"></a><span class='comment'>--</span>-<a name="line-328"></a><span class='comment'>-- This allows for step by step transformations of a tree</span>-<a name="line-329"></a><span class='comment'>-- with access to the original tree in every</span>-<a name="line-330"></a><span class='comment'>-- transformation step.</span>-<a name="line-331"></a><span class='comment'>--</span>-<a name="line-332"></a><span class='comment'>-- see also : '(.>)', 'o'</span>-<a name="line-333"></a>-<a name="line-334"></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-335"></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-336"></a>-<a name="line-337"></a><span class='comment'>-- |</span>-<a name="line-338"></a><span class='comment'>-- apply a list of filters, a \"union\" for lists, for predicate filters the generalized OR</span>-<a name="line-339"></a><span class='comment'>--</span>-<a name="line-340"></a><span class='comment'>-- * 1.parameter fs : the list of filters</span>-<a name="line-341"></a><span class='comment'>--</span>-<a name="line-342"></a><span class='comment'>-- - returns : the composing filter</span>-<a name="line-343"></a>-<a name="line-344"></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-345"></a><span class='definition'>cat</span> <span class='varid'>fs</span> <span class='varid'>t</span>-<a name="line-346"></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-347"></a>-<a name="line-348"></a><span class='comment'>-- |</span>-<a name="line-349"></a><span class='comment'>-- Filter for editing the children of a tree element wise</span>-<a name="line-350"></a><span class='comment'>--</span>-<a name="line-351"></a><span class='comment'>-- * 1.parameter cf : the filter applied to the children</span>-<a name="line-352"></a><span class='comment'>--</span>-<a name="line-353"></a><span class='comment'>-- - returns : the editing filter</span>-<a name="line-354"></a><span class='comment'>--</span>-<a name="line-355"></a><span class='comment'>-- see also : 'modifyChildren'</span>-<a name="line-356"></a>-<a name="line-357"></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-358"></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-359"></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-360"></a>-<a name="line-361"></a><span class='comment'>-- |</span>-<a name="line-362"></a><span class='comment'>-- infix operator for applying a filter to a list of trees</span>-<a name="line-363"></a><span class='comment'>--</span>-<a name="line-364"></a><span class='comment'>-- * 1.parameter f : the filter</span>-<a name="line-365"></a><span class='comment'>--</span>-<a name="line-366"></a><span class='comment'>-- - 2.parameter ts : the list of trees</span>-<a name="line-367"></a><span class='comment'>--</span>-<a name="line-368"></a><span class='comment'>-- - returns : the concatenated list of results</span>-<a name="line-369"></a>-<a name="line-370"></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-371"></a><span class='definition'>f</span> <span class='varop'>$$</span> <span class='varid'>l</span>-<a name="line-372"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>f</span> <span class='varid'>l</span>-<a name="line-373"></a>-<a name="line-374"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-375"></a><span class='comment'>--</span>-<a name="line-376"></a><span class='comment'>-- choices</span>-<a name="line-377"></a><span class='comment'>--</span>-<a name="line-378"></a>-<a name="line-379"></a><span class='comment'>-- |</span>-<a name="line-380"></a><span class='comment'>-- directional choice, usually written in infix notation as f `orElse` g</span>-<a name="line-381"></a><span class='comment'>--</span>-<a name="line-382"></a><span class='comment'>-- * 1.parameter f : the 1. filter</span>-<a name="line-383"></a><span class='comment'>--</span>-<a name="line-384"></a><span class='comment'>-- - 2.parameter g : the 2. filter</span>-<a name="line-385"></a><span class='comment'>--</span>-<a name="line-386"></a><span class='comment'>-- - 3.parameter t : the tree</span>-<a name="line-387"></a><span class='comment'>--</span>-<a name="line-388"></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-389"></a>-<a name="line-390"></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-391"></a><a name="orElse"></a><span class='definition'>f</span> <span class='varop'>`orElse`</span> <span class='varid'>g</span>-<a name="line-392"></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-393"></a> <span class='varid'>res</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-394"></a> <span class='keyword'>in</span>-<a name="line-395"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>res</span>-<a name="line-396"></a> <span class='keyword'>then</span> <span class='varid'>g</span> <span class='varid'>t</span>-<a name="line-397"></a> <span class='keyword'>else</span> <span class='varid'>res</span>-<a name="line-398"></a>-<a name="line-399"></a><span class='comment'>-- |</span>-<a name="line-400"></a><span class='comment'>-- if then else lifted to filters</span>-<a name="line-401"></a><span class='comment'>--</span>-<a name="line-402"></a><span class='comment'>-- * 1.parameter p : the predicate filter</span>-<a name="line-403"></a><span class='comment'>--</span>-<a name="line-404"></a><span class='comment'>-- - 2.parameter t : the \"then\" filter</span>-<a name="line-405"></a><span class='comment'>--</span>-<a name="line-406"></a><span class='comment'>-- - 3.parameter e : the \"else\" filter</span>-<a name="line-407"></a><span class='comment'>--</span>-<a name="line-408"></a><span class='comment'>-- - returns : the resulting conditional filter</span>-<a name="line-409"></a>-<a name="line-410"></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-411"></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-412"></a>-<a name="line-413"></a><span class='comment'>-- |</span>-<a name="line-414"></a><span class='comment'>-- when the predicate p holds, f is applied, else the identity filter this</span>-<a name="line-415"></a><span class='comment'>--</span>-<a name="line-416"></a><span class='comment'>-- * 1.parameter f : the conditinally applied filter</span>-<a name="line-417"></a><span class='comment'>--</span>-<a name="line-418"></a><span class='comment'>-- - 2.parameter p : the predicate</span>-<a name="line-419"></a><span class='comment'>--</span>-<a name="line-420"></a><span class='comment'>-- - returns : the conditional filter</span>-<a name="line-421"></a><span class='comment'>--</span>-<a name="line-422"></a><span class='comment'>-- see also : 'iff', 'whenNot', 'guards', 'whenM'</span>-<a name="line-423"></a>-<a name="line-424"></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-425"></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-426"></a>-<a name="line-427"></a><span class='comment'>-- |</span>-<a name="line-428"></a><span class='comment'>-- the complementary filter of when</span>-<a name="line-429"></a><span class='comment'>--</span>-<a name="line-430"></a><span class='comment'>-- shortcut for f `when` neg g</span>-<a name="line-431"></a><span class='comment'>--</span>-<a name="line-432"></a><span class='comment'>-- see also : 'iff', 'when', 'whenNotM', 'neg'</span>-<a name="line-433"></a>-<a name="line-434"></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-435"></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-436"></a>-<a name="line-437"></a><span class='comment'>-- |</span>-<a name="line-438"></a><span class='comment'>-- when the predicate p holds, f is applied, else the null filter none</span>-<a name="line-439"></a><span class='comment'>--</span>-<a name="line-440"></a><span class='comment'>-- * 1.parameter p : the predicate filter</span>-<a name="line-441"></a><span class='comment'>--</span>-<a name="line-442"></a><span class='comment'>-- - 2.parameter f : the conditionally applied filter</span>-<a name="line-443"></a><span class='comment'>--</span>-<a name="line-444"></a><span class='comment'>-- - returns : the conditional filter</span>-<a name="line-445"></a><span class='comment'>--</span>-<a name="line-446"></a><span class='comment'>-- see also : 'iff', 'when', 'guardsM'</span>-<a name="line-447"></a>-<a name="line-448"></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-449"></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-450"></a>-<a name="line-451"></a>-<a name="line-452"></a><span class='comment'>-- |</span>-<a name="line-453"></a><span class='comment'>-- negation lifted to filters</span>-<a name="line-454"></a><span class='comment'>--</span>-<a name="line-455"></a><span class='comment'>-- * 1.parameter f : the predicate filter</span>-<a name="line-456"></a><span class='comment'>--</span>-<a name="line-457"></a><span class='comment'>-- - returns : the filter, that succeeds, when f failed</span>-<a name="line-458"></a>-<a name="line-459"></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-460"></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-461"></a>-<a name="line-462"></a><span class='comment'>-- |</span>-<a name="line-463"></a><span class='comment'>-- auxiliary datatype for cases within choice filter</span>-<a name="line-464"></a>-<a name="line-465"></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-466"></a>-<a name="line-467"></a><span class='comment'>-- |</span>-<a name="line-468"></a><span class='comment'>-- multiway branch. The list of cases @f :-> g@ is processed sequentially,</span>-<a name="line-469"></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-470"></a><span class='comment'>-- applied.</span>-<a name="line-471"></a><span class='comment'>-- This filter can be used like a case expression: @choice [ p1 :-> f1, p2 :-> f2, ... , this :-> defaultFilter]@</span>-<a name="line-472"></a><span class='comment'>--</span>-<a name="line-473"></a><span class='comment'>-- see also : 'iff', 'choiceM'</span>-<a name="line-474"></a>-<a name="line-475"></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-476"></a><span class='definition'>choice</span> <span class='conid'>[]</span>-<a name="line-477"></a> <span class='keyglyph'>=</span> <span class='varid'>none</span>-<a name="line-478"></a>-<a name="line-479"></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-480"></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-481"></a>-<a name="line-482"></a><span class='comment'>-- |</span>-<a name="line-483"></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-484"></a><span class='comment'>--</span>-<a name="line-485"></a><span class='comment'>-- * 1.parameter f : the processing filter</span>-<a name="line-486"></a><span class='comment'>--</span>-<a name="line-487"></a><span class='comment'>-- - 2.parameter g : the predicate filter</span>-<a name="line-488"></a><span class='comment'>--</span>-<a name="line-489"></a><span class='comment'>-- - 3.parameter t : the tree</span>-<a name="line-490"></a><span class='comment'>--</span>-<a name="line-491"></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-492"></a><span class='comment'>--</span>-<a name="line-493"></a><span class='comment'>-- see also : 'notContaining'</span>-<a name="line-494"></a>-<a name="line-495"></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-496"></a><a name="containing"></a><span class='definition'>f</span> <span class='varop'>`containing`</span> <span class='varid'>g</span>-<a name="line-497"></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-498"></a>-<a name="line-499"></a><span class='comment'>-- |</span>-<a name="line-500"></a><span class='comment'>-- pruning: keep only those results from f for which g does not hold</span>-<a name="line-501"></a><span class='comment'>--</span>-<a name="line-502"></a><span class='comment'>-- see also : 'containing'</span>-<a name="line-503"></a>-<a name="line-504"></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-505"></a><a name="notContaining"></a><span class='definition'>f</span> <span class='varop'>`notContaining`</span> <span class='varid'>g</span>-<a name="line-506"></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-507"></a>-<a name="line-508"></a><span class='comment'>-- |</span>-<a name="line-509"></a><span class='comment'>-- pruning: monadic version of containing, usually written in infix notation as f `containingM` g</span>-<a name="line-510"></a><span class='comment'>--</span>-<a name="line-511"></a><span class='comment'>-- * 1.parameter f : the monadic processing filter</span>-<a name="line-512"></a><span class='comment'>--</span>-<a name="line-513"></a><span class='comment'>-- - 2.parameter g : the predicate filter</span>-<a name="line-514"></a><span class='comment'>--</span>-<a name="line-515"></a><span class='comment'>-- - 3.parameter t : the tree</span>-<a name="line-516"></a><span class='comment'>--</span>-<a name="line-517"></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-518"></a><span class='comment'>--</span>-<a name="line-519"></a><span class='comment'>-- see also : 'notContaining'</span>-<a name="line-520"></a>-<a name="line-521"></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-522"></a><a name="containingM"></a><span class='definition'>f</span> <span class='varop'>`containingM`</span> <span class='varid'>g</span>-<a name="line-523"></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-524"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-525"></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-526"></a>-<a name="line-527"></a><span class='comment'>-- |</span>-<a name="line-528"></a><span class='comment'>-- pronounced \"slash\", meaning g inside f</span>-<a name="line-529"></a>-<a name="line-530"></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-531"></a><span class='definition'>f</span> <span class='varop'>/></span> <span class='varid'>g</span>-<a name="line-532"></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-533"></a>-<a name="line-534"></a><span class='comment'>-- |</span>-<a name="line-535"></a><span class='comment'>-- pronounced \"outside\" meaning f containing g</span>-<a name="line-536"></a>-<a name="line-537"></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-538"></a><span class='definition'>f</span> <span class='varop'></</span> <span class='varid'>g</span>-<a name="line-539"></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-540"></a>-<a name="line-541"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-542"></a><span class='comment'>--</span>-<a name="line-543"></a><span class='comment'>-- recursive search filters</span>-<a name="line-544"></a>-<a name="line-545"></a><span class='comment'>-- |</span>-<a name="line-546"></a><span class='comment'>-- top down search.</span>-<a name="line-547"></a><span class='comment'>--</span>-<a name="line-548"></a><span class='comment'>-- search terminates, when filter f succeeds</span>-<a name="line-549"></a><span class='comment'>-- can e.g. be used for finding all outermost tag node of a specific kind</span>-<a name="line-550"></a>-<a name="line-551"></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-552"></a><span class='definition'>deep</span> <span class='varid'>f</span>-<a name="line-553"></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-554"></a>-<a name="line-555"></a><span class='comment'>-- |</span>-<a name="line-556"></a><span class='comment'>-- bottom up search.</span>-<a name="line-557"></a><span class='comment'>--</span>-<a name="line-558"></a><span class='comment'>-- first the children are processed,</span>-<a name="line-559"></a><span class='comment'>-- if this does not succeed, the node itself is processed</span>-<a name="line-560"></a><span class='comment'>-- can e.g. be used for finding all innermost tag nodes of a specific kind</span>-<a name="line-561"></a>-<a name="line-562"></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-563"></a><span class='definition'>deepest</span> <span class='varid'>f</span>-<a name="line-564"></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-565"></a>-<a name="line-566"></a><span class='comment'>-- |</span>-<a name="line-567"></a><span class='comment'>-- process all nodes of the whole tree.</span>-<a name="line-568"></a><span class='comment'>--</span>-<a name="line-569"></a><span class='comment'>-- can e.g. be used for finding all nodes of a specific kind</span>-<a name="line-570"></a>-<a name="line-571"></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-572"></a><span class='definition'>multi</span> <span class='varid'>f</span>-<a name="line-573"></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-574"></a>-<a name="line-575"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-576"></a><span class='comment'>--</span>-<a name="line-577"></a><span class='comment'>-- recursive transformation filters</span>-<a name="line-578"></a><span class='comment'>--</span>-<a name="line-579"></a>-<a name="line-580"></a><span class='comment'>-- |</span>-<a name="line-581"></a><span class='comment'>-- bottom up transformation</span>-<a name="line-582"></a><span class='comment'>--</span>-<a name="line-583"></a><span class='comment'>-- * 1.parameter f : the /simple/ transforming filter</span>-<a name="line-584"></a><span class='comment'>--</span>-<a name="line-585"></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-586"></a><span class='comment'>--</span>-<a name="line-587"></a><span class='comment'>-- see also : 'processTopDown', 'processBottomUpIfNot'</span>-<a name="line-588"></a>-<a name="line-589"></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-590"></a><span class='definition'>processBottomUp</span> <span class='varid'>f</span>-<a name="line-591"></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-592"></a>-<a name="line-593"></a><span class='comment'>-- |</span>-<a name="line-594"></a><span class='comment'>-- top down transformation</span>-<a name="line-595"></a><span class='comment'>--</span>-<a name="line-596"></a><span class='comment'>-- * 1.parameter f : the /simple/ transforming filter</span>-<a name="line-597"></a><span class='comment'>--</span>-<a name="line-598"></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-599"></a><span class='comment'>--</span>-<a name="line-600"></a><span class='comment'>-- see also : 'processBottomUp'</span>-<a name="line-601"></a>-<a name="line-602"></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-603"></a><span class='definition'>processTopDown</span> <span class='varid'>f</span>-<a name="line-604"></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-605"></a>-<a name="line-606"></a><span class='comment'>-- |</span>-<a name="line-607"></a><span class='comment'>-- guarded bottom up transformation, stops at subtrees for which a predicate p holds</span>-<a name="line-608"></a><span class='comment'>--</span>-<a name="line-609"></a><span class='comment'>-- * 1.parameter f : the transforming filter</span>-<a name="line-610"></a><span class='comment'>--</span>-<a name="line-611"></a><span class='comment'>-- - 2.parameter p : the predicate filter for the guard</span>-<a name="line-612"></a><span class='comment'>--</span>-<a name="line-613"></a><span class='comment'>-- - returns : the filter for processing all (sub-)trees</span>-<a name="line-614"></a><span class='comment'>--</span>-<a name="line-615"></a><span class='comment'>-- see also : 'processBottomUp'</span>-<a name="line-616"></a>-<a name="line-617"></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-618"></a><span class='definition'>processBottomUpIfNot</span> <span class='varid'>f</span> <span class='varid'>p</span>-<a name="line-619"></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-620"></a>-<a name="line-621"></a><span class='comment'>-- |</span>-<a name="line-622"></a><span class='comment'>-- top down transformation until a node to be transformed is found</span>-<a name="line-623"></a><span class='comment'>--</span>-<a name="line-624"></a><span class='comment'>-- * 1.parameter f : the /simple/ transforming filter</span>-<a name="line-625"></a><span class='comment'>--</span>-<a name="line-626"></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-627"></a><span class='comment'>-- recursively to all children of the input tree.</span>-<a name="line-628"></a><span class='comment'>--</span>-<a name="line-629"></a><span class='comment'>-- Example:</span>-<a name="line-630"></a><span class='comment'>--</span>-<a name="line-631"></a><span class='comment'>-- @processTopDownUntil none@</span>-<a name="line-632"></a><span class='comment'>--</span>-<a name="line-633"></a><span class='comment'>-- is the identity filter (maybe a bit more inefficient).</span>-<a name="line-634"></a><span class='comment'>--</span>-<a name="line-635"></a><span class='comment'>-- Example:</span>-<a name="line-636"></a><span class='comment'>--</span>-<a name="line-637"></a><span class='comment'>-- @processTopDownUntil (add1Attr \"border\" \"2\" \`containing\` isTag \"table\")@</span>-<a name="line-638"></a><span class='comment'>--</span>-<a name="line-639"></a><span class='comment'>-- is a filter for adding an attribute border=\"2\" in all top level table tags.</span>-<a name="line-640"></a><span class='comment'>-- The content of table tags will remain unchanged.</span>-<a name="line-641"></a><span class='comment'>--</span>-<a name="line-642"></a><span class='comment'>-- see also : 'processTopDown', 'processBottomUp'</span>-<a name="line-643"></a>-<a name="line-644"></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-645"></a><span class='definition'>processTopDownUntil</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-646"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>res</span>-<a name="line-647"></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-648"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-649"></a> <span class='keyglyph'>=</span> <span class='varid'>res</span>-<a name="line-650"></a> <span class='keyword'>where</span>-<a name="line-651"></a> <span class='varid'>res</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-652"></a>-<a name="line-653"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-654"></a><span class='comment'>--</span>-<a name="line-655"></a>-<a name="line-656"></a><span class='comment'>-- |</span>-<a name="line-657"></a><span class='comment'>-- insertion of trees into the list of children at a given position</span>-<a name="line-658"></a><span class='comment'>--</span>-<a name="line-659"></a><span class='comment'>-- useful for inserting something into the list of children at a given position</span>-<a name="line-660"></a><span class='comment'>-- the list of children is split with the @splitAt@ function</span>-<a name="line-661"></a><span class='comment'>-- the nodes are inserted between these two sublists.</span>-<a name="line-662"></a><span class='comment'>--</span>-<a name="line-663"></a><span class='comment'>-- examples: @insertChildrenAt 0 ins t@ inserts all elements computed with @ins t@ in front</span>-<a name="line-664"></a><span class='comment'>-- of the childen of @t@, @insertChildrenAt 1 ins t@ behind the first child</span>-<a name="line-665"></a><span class='comment'>--</span>-<a name="line-666"></a><span class='comment'>-- see also: 'insertChildrenAfter'</span>-<a name="line-667"></a>-<a name="line-668"></a>-<a name="line-669"></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-670"></a><span class='definition'>insertChildrenAt</span> <span class='varid'>i</span> <span class='varid'>ins</span> <span class='varid'>t</span>-<a name="line-671"></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-672"></a> <span class='keyword'>where</span>-<a name="line-673"></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-674"></a>-<a name="line-675"></a><span class='comment'>-- |</span>-<a name="line-676"></a><span class='comment'>-- insertion of trees into the list of children after specific elements</span>-<a name="line-677"></a><span class='comment'>--</span>-<a name="line-678"></a><span class='comment'>-- useful for inserting something into the list of children of a node</span>-<a name="line-679"></a><span class='comment'>-- the list of children is split with the @span@ function and the filter p as predicate</span>-<a name="line-680"></a><span class='comment'>-- the nodes are inserted between these two sublists</span>-<a name="line-681"></a><span class='comment'>--</span>-<a name="line-682"></a><span class='comment'>-- examples: @insertChildrenAfter none ins t@ inserts all elements computed with @ins t@ in front</span>-<a name="line-683"></a><span class='comment'>-- of the childen of @t@, @insertChildrenAfter this ins t@ appends the elements to the children</span>-<a name="line-684"></a><span class='comment'>--</span>-<a name="line-685"></a><span class='comment'>-- see also: 'insertChildrenAt'</span>-<a name="line-686"></a>-<a name="line-687"></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-688"></a><span class='definition'>insertChildrenAfter</span> <span class='varid'>p</span> <span class='varid'>ins</span> <span class='varid'>t</span>-<a name="line-689"></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-690"></a> <span class='keyword'>where</span>-<a name="line-691"></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-692"></a>-<a name="line-693"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-694"></a><span class='comment'>--</span>-<a name="line-695"></a><span class='comment'>-- monadic filter</span>-<a name="line-696"></a>-<a name="line-697"></a><span class='comment'>-- |</span>-<a name="line-698"></a><span class='comment'>-- the monadic version of the identity filter this.</span>-<a name="line-699"></a><span class='comment'>--</span>-<a name="line-700"></a><span class='comment'>-- see also : 'this'</span>-<a name="line-701"></a>-<a name="line-702"></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-703"></a><span class='definition'>thisM</span> <span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='varid'>this</span>-<a name="line-704"></a>-<a name="line-705"></a><span class='comment'>-- |</span>-<a name="line-706"></a><span class='comment'>-- the monadic version of the null filter none.</span>-<a name="line-707"></a><span class='comment'>--</span>-<a name="line-708"></a><span class='comment'>-- see also : 'none'</span>-<a name="line-709"></a>-<a name="line-710"></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-711"></a><span class='definition'>noneM</span> <span class='keyglyph'>=</span> <span class='varid'>liftMf</span> <span class='varid'>none</span>-<a name="line-712"></a>-<a name="line-713"></a><span class='comment'>-- |</span>-<a name="line-714"></a><span class='comment'>-- sequential composition of monadic filters, monadic version of \".>\".</span>-<a name="line-715"></a><span class='comment'>--</span>-<a name="line-716"></a><span class='comment'>-- * 1.parameter f1 : the 1. monadic filter</span>-<a name="line-717"></a><span class='comment'>--</span>-<a name="line-718"></a><span class='comment'>-- - 2.parameter f2 : the 2. monadic filter</span>-<a name="line-719"></a><span class='comment'>--</span>-<a name="line-720"></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-721"></a><span class='comment'>--</span>-<a name="line-722"></a><span class='comment'>-- see also : '(.>)'</span>-<a name="line-723"></a>-<a name="line-724"></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-725"></a><a name="cmd1"></a><span class='definition'>cmd1</span> <span class='varop'>.>></span> <span class='varid'>cmd2</span>-<a name="line-726"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span>-<a name="line-727"></a> <span class='keyword'>do</span>-<a name="line-728"></a> <span class='varid'>r1</span> <span class='keyglyph'><-</span> <span class='varid'>cmd1</span> <span class='varid'>t</span>-<a name="line-729"></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-730"></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-731"></a>-<a name="line-732"></a><span class='comment'>-- |</span>-<a name="line-733"></a><span class='comment'>-- generalized sequential composition of monadic filters</span>-<a name="line-734"></a>-<a name="line-735"></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-736"></a><span class='definition'>seqM</span>-<a name="line-737"></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-738"></a>-<a name="line-739"></a><span class='comment'>-- |</span>-<a name="line-740"></a><span class='comment'>-- binary parallel composition, the logical OR for predicate filter</span>-<a name="line-741"></a><span class='comment'>--</span>-<a name="line-742"></a><span class='comment'>-- * 1.parameter f1 : the 1. filter</span>-<a name="line-743"></a><span class='comment'>--</span>-<a name="line-744"></a><span class='comment'>-- - 2.parameter f2 : the 2. filter</span>-<a name="line-745"></a><span class='comment'>--</span>-<a name="line-746"></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-747"></a><span class='comment'>-- see also: 'cat', '+++', 'catM'</span>-<a name="line-748"></a>-<a name="line-749"></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-750"></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-751"></a> <span class='varid'>r1</span> <span class='keyglyph'><-</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-752"></a> <span class='varid'>r2</span> <span class='keyglyph'><-</span> <span class='varid'>g</span> <span class='varid'>t</span>-<a name="line-753"></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-754"></a>-<a name="line-755"></a><span class='comment'>-- |</span>-<a name="line-756"></a><span class='comment'>-- apply a list of monadic filters</span>-<a name="line-757"></a><span class='comment'>--</span>-<a name="line-758"></a><span class='comment'>-- * 1.parameter fs : the list of filters</span>-<a name="line-759"></a><span class='comment'>--</span>-<a name="line-760"></a><span class='comment'>-- - returns : the composing filter</span>-<a name="line-761"></a><span class='comment'>-- see also: 'cat', '+++', '+++>>'</span>-<a name="line-762"></a>-<a name="line-763"></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-764"></a><span class='definition'>catM</span> <span class='varid'>fs</span> <span class='varid'>t</span>-<a name="line-765"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-766"></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-767"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>concat</span> <span class='varid'>res</span>-<a name="line-768"></a>-<a name="line-769"></a><span class='comment'>-- |</span>-<a name="line-770"></a><span class='comment'>-- monadic if-then-else.</span>-<a name="line-771"></a><span class='comment'>--</span>-<a name="line-772"></a><span class='comment'>-- * 1.parameter p : the predicate</span>-<a name="line-773"></a><span class='comment'>--</span>-<a name="line-774"></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-775"></a><span class='comment'>--</span>-<a name="line-776"></a><span class='comment'>-- - 3.parameter elseP : the else part</span>-<a name="line-777"></a><span class='comment'>--</span>-<a name="line-778"></a><span class='comment'>-- - returns : the monadic filter for the conditional</span>-<a name="line-779"></a>-<a name="line-780"></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-781"></a><span class='definition'>ifM</span> <span class='varid'>p</span> <span class='varid'>thenPart</span> <span class='varid'>elsePart</span>-<a name="line-782"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span>-<a name="line-783"></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-784"></a> <span class='keyword'>then</span> <span class='varid'>thenPart</span> <span class='varid'>t</span>-<a name="line-785"></a> <span class='keyword'>else</span> <span class='varid'>elsePart</span> <span class='varid'>t</span>-<a name="line-786"></a>-<a name="line-787"></a><span class='comment'>-- |</span>-<a name="line-788"></a><span class='comment'>-- monadic version of multiway branch. The list of cases @f :-> g@ is processed sequentially,</span>-<a name="line-789"></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-790"></a><span class='comment'>-- applied.</span>-<a name="line-791"></a><span class='comment'>-- This filter can be used like a case expression: @choiceM [ p1 :-> f1, p2 :-> f2, ... , thisM :-> defaultFilter]@</span>-<a name="line-792"></a><span class='comment'>--</span>-<a name="line-793"></a><span class='comment'>-- see also : 'choice', 'ifM'</span>-<a name="line-794"></a>-<a name="line-795"></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-796"></a><span class='definition'>choiceM</span> <span class='conid'>[]</span>-<a name="line-797"></a> <span class='keyglyph'>=</span> <span class='varid'>noneM</span>-<a name="line-798"></a>-<a name="line-799"></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-800"></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-801"></a>-<a name="line-802"></a>-<a name="line-803"></a><span class='comment'>-- |</span>-<a name="line-804"></a><span class='comment'>-- when the predicate p holds, the monadic filter f is applied, else the identity filter.</span>-<a name="line-805"></a><span class='comment'>--</span>-<a name="line-806"></a><span class='comment'>-- * 1.parameter f : the conditinally applied monadic filter</span>-<a name="line-807"></a><span class='comment'>--</span>-<a name="line-808"></a><span class='comment'>-- - 2.parameter p : the simple predicate</span>-<a name="line-809"></a><span class='comment'>--</span>-<a name="line-810"></a><span class='comment'>-- - returns : the conditional filter</span>-<a name="line-811"></a><span class='comment'>--</span>-<a name="line-812"></a><span class='comment'>-- see also : 'ifM', 'when', 'guardsM', 'whenNotM'</span>-<a name="line-813"></a>-<a name="line-814"></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-815"></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-816"></a>-<a name="line-817"></a><span class='comment'>-- |</span>-<a name="line-818"></a><span class='comment'>-- the complementary filter of whenM.</span>-<a name="line-819"></a><span class='comment'>--</span>-<a name="line-820"></a><span class='comment'>-- see also : 'ifM', 'whenM', 'whenNot'</span>-<a name="line-821"></a>-<a name="line-822"></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-823"></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-824"></a>-<a name="line-825"></a><span class='comment'>-- |</span>-<a name="line-826"></a><span class='comment'>-- when the predicate p holds, the monadic filter f is applied, else the null filter.</span>-<a name="line-827"></a><span class='comment'>--</span>-<a name="line-828"></a><span class='comment'>-- * 1.parameter p : the simple predicate filter</span>-<a name="line-829"></a><span class='comment'>--</span>-<a name="line-830"></a><span class='comment'>-- - 2.parameter f : the conditionally applied monadic filter</span>-<a name="line-831"></a><span class='comment'>--</span>-<a name="line-832"></a><span class='comment'>-- - returns : the conditional filter</span>-<a name="line-833"></a><span class='comment'>--</span>-<a name="line-834"></a><span class='comment'>-- see also : 'ifM', 'guards', 'whenM'</span>-<a name="line-835"></a>-<a name="line-836"></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-837"></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-838"></a>-<a name="line-839"></a><span class='comment'>-- |</span>-<a name="line-840"></a><span class='comment'>-- Filter for editing the children of a tree with a monadic filter</span>-<a name="line-841"></a><span class='comment'>--</span>-<a name="line-842"></a><span class='comment'>-- * 1.parameter cf : the monadic filter applied to the children</span>-<a name="line-843"></a><span class='comment'>--</span>-<a name="line-844"></a><span class='comment'>-- - returns : the monadic editing filter</span>-<a name="line-845"></a><span class='comment'>--</span>-<a name="line-846"></a><span class='comment'>-- see also : 'processChildren'</span>-<a name="line-847"></a>-<a name="line-848"></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-849"></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-850"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-851"></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-852"></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-853"></a>-<a name="line-854"></a><span class='comment'>-- |</span>-<a name="line-855"></a><span class='comment'>-- monadic variant of 'processTopDown'</span>-<a name="line-856"></a>-<a name="line-857"></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-858"></a><span class='definition'>processTopDownM</span> <span class='varid'>f</span>-<a name="line-859"></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-860"></a>-<a name="line-861"></a><span class='comment'>-- |</span>-<a name="line-862"></a><span class='comment'>-- monadic variant of 'processBottomUp'</span>-<a name="line-863"></a>-<a name="line-864"></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-865"></a><span class='definition'>processBottomUpM</span> <span class='varid'>f</span>-<a name="line-866"></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-867"></a>-<a name="line-868"></a><span class='comment'>-- |</span>-<a name="line-869"></a><span class='comment'>-- infix operator for applying a monadic filter to a list of trees,</span>-<a name="line-870"></a><span class='comment'>-- typically used in do-notation for processing of intermediate results.</span>-<a name="line-871"></a><span class='comment'>--</span>-<a name="line-872"></a><span class='comment'>-- * 1.parameter f : the monadic filter</span>-<a name="line-873"></a><span class='comment'>--</span>-<a name="line-874"></a><span class='comment'>-- - 2.parameter ts : the list of trees</span>-<a name="line-875"></a><span class='comment'>--</span>-<a name="line-876"></a><span class='comment'>-- - returns : the concatenated list of results</span>-<a name="line-877"></a><span class='comment'>--</span>-<a name="line-878"></a><span class='comment'>-- see also : '($$)'</span>-<a name="line-879"></a>-<a name="line-880"></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-881"></a><a name="cmd"></a><span class='definition'>cmd</span> <span class='varop'>$$<</span> <span class='varid'>l</span>-<a name="line-882"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-883"></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-884"></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-885"></a>-<a name="line-886"></a><span class='comment'>-- |</span>-<a name="line-887"></a><span class='comment'>-- lift a filter to a monadic filter</span>-<a name="line-888"></a><span class='comment'>--</span>-<a name="line-889"></a><span class='comment'>-- * 1.parameter f : the /simple/ filter</span>-<a name="line-890"></a><span class='comment'>--</span>-<a name="line-891"></a><span class='comment'>-- - returns : the lifted monadic version</span>-<a name="line-892"></a>-<a name="line-893"></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-894"></a><span class='definition'>liftMf</span> <span class='varid'>f</span> <span class='varid'>t</span>-<a name="line-895"></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-896"></a>-<a name="line-897"></a><span class='comment'>-- |</span>-<a name="line-898"></a><span class='comment'>-- run an arbitray command on a tree t and return the tree,</span>-<a name="line-899"></a><span class='comment'>-- used for inserting arbitray commands in a filter pipeline</span>-<a name="line-900"></a><span class='comment'>--</span>-<a name="line-901"></a><span class='comment'>-- * 1.parameter cmd : the command</span>-<a name="line-902"></a><span class='comment'>--</span>-<a name="line-903"></a><span class='comment'>-- - 2.parameter t : the argument tree</span>-<a name="line-904"></a><span class='comment'>--</span>-<a name="line-905"></a><span class='comment'>-- - returns : the unchanged tree as a single element list</span>-<a name="line-906"></a>-<a name="line-907"></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-908"></a><span class='definition'>performAction</span> <span class='varid'>cmd</span> <span class='varid'>t</span>-<a name="line-909"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-910"></a> <span class='varid'>cmd</span> <span class='varid'>t</span>-<a name="line-911"></a> <span class='varid'>return</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span>-<a name="line-912"></a>-<a name="line-913"></a><span class='comment'>-- eof ------------------------------------------------------------</span>-</pre></body>-</html>
doc/hdoc/src/Data-Tree-NTree-TypeDefs.html view
@@ -10,7 +10,7 @@ <a name="line-2"></a> <a name="line-3"></a><span class='comment'>{- | <a name="line-4"></a> Module : Data.Tree.NTree.TypeDefs-<a name="line-5"></a> Copyright : Copyright (C) 2005 Uwe Schmidt+<a name="line-5"></a> Copyright : Copyright (C) 2005-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)
doc/hdoc/src/Text-XML-HXT-Arrow-DocumentInput.html view
@@ -121,309 +121,322 @@ <a name="line-113"></a> <a name="line-114"></a><a name="getFileContents"></a><span class='definition'>getFileContents</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <a name="line-115"></a><span class='definition'>getFileContents</span>-<a name="line-116"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>-<a name="line-117"></a> <span class='varop'>>>></span>-<a name="line-118"></a> <span class='varid'>getPathFromURI</span>-<a name="line-119"></a> <span class='varop'>>>></span>-<a name="line-120"></a> <span class='varid'>arrIO</span> <span class='conid'>FILE</span><span class='varop'>.</span><span class='varid'>getCont</span>-<a name="line-121"></a> <span class='varop'>>>></span>-<a name="line-122"></a> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span> <span class='comment'>-- io error occured</span>-<a name="line-123"></a> <span class='varop'>|||</span>-<a name="line-124"></a> <span class='varid'>arr</span> <span class='varid'>addTxtContent</span> <span class='comment'>-- content read</span>+<a name="line-116"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_strict_input</span>+<a name="line-117"></a> <span class='varop'>>>></span>+<a name="line-118"></a> <span class='varid'>arr</span> <span class='varid'>isTrueValue</span>+<a name="line-119"></a> <span class='layout'>)</span>+<a name="line-120"></a> <span class='varop'>&&&</span>+<a name="line-121"></a> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>+<a name="line-122"></a> <span class='varop'>>>></span>+<a name="line-123"></a> <span class='varid'>getPathFromURI</span>+<a name="line-124"></a> <span class='layout'>)</span> <a name="line-125"></a> <span class='layout'>)</span>-<a name="line-126"></a> <span class='layout'>)</span>-<a name="line-127"></a> <span class='varop'>>>></span>-<a name="line-128"></a> <span class='varid'>addMimeType</span>-<a name="line-129"></a>-<a name="line-130"></a><a name="getStdinContents"></a><span class='definition'>getStdinContents</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-131"></a><span class='definition'>getStdinContents</span>-<a name="line-132"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>arrIO</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='conid'>FILE</span><span class='varop'>.</span><span class='varid'>getStdinCont</span><span class='layout'>)</span>-<a name="line-133"></a> <span class='varop'>>>></span>-<a name="line-134"></a> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span> <span class='comment'>-- io error occured</span>-<a name="line-135"></a> <span class='varop'>|||</span>-<a name="line-136"></a> <span class='varid'>arr</span> <span class='varid'>addTxtContent</span> <span class='comment'>-- content read</span>-<a name="line-137"></a> <span class='layout'>)</span>-<a name="line-138"></a> <span class='layout'>)</span>-<a name="line-139"></a>-<a name="line-140"></a><a name="addError"></a><span class='definition'>addError</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-141"></a><span class='definition'>addError</span> <span class='varid'>e</span>-<a name="line-142"></a> <span class='keyglyph'>=</span> <span class='varid'>issueFatal</span> <span class='varid'>e</span>-<a name="line-143"></a> <span class='varop'>>>></span>-<a name="line-144"></a> <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"accessing documents"</span>-<a name="line-145"></a>-<a name="line-146"></a><a name="addMimeType"></a><span class='definition'>addMimeType</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-147"></a><span class='definition'>addMimeType</span>-<a name="line-148"></a> <span class='keyglyph'>=</span> <span class='varid'>addMime</span> <span class='varop'>$<</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>-<a name="line-149"></a> <span class='varop'>>>></span>-<a name="line-150"></a> <span class='layout'>(</span> <span class='varid'>uriToMime</span> <span class='varop'>$<</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_mimeTypes</span> <span class='layout'>)</span>-<a name="line-151"></a> <span class='layout'>)</span>-<a name="line-152"></a> <span class='keyword'>where</span>-<a name="line-153"></a> <span class='varid'>addMime</span> <span class='varid'>mt</span>-<a name="line-154"></a> <span class='keyglyph'>=</span> <span class='varid'>addAttr</span> <span class='varid'>transferMimeType</span> <span class='varid'>mt</span>-<a name="line-155"></a> <span class='varid'>uriToMime</span> <span class='varid'>mtt</span>-<a name="line-156"></a> <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>uri</span> <span class='keyglyph'>-></span> <span class='varid'>extensionToMimeType</span> <span class='layout'>(</span><span class='varid'>drop</span> <span class='num'>1</span> <span class='varop'>.</span> <span class='varid'>takeExtension</span> <span class='varop'>$</span> <span class='varid'>uri</span><span class='layout'>)</span> <span class='varid'>mtt</span> <span class='layout'>)</span>-<a name="line-157"></a>-<a name="line-158"></a><a name="addTxtContent"></a><span class='definition'>addTxtContent</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-159"></a><span class='definition'>addTxtContent</span> <span class='varid'>c</span>-<a name="line-160"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-161"></a> <span class='varop'>>>></span>-<a name="line-162"></a> <span class='varid'>addAttr</span> <span class='varid'>transferMessage</span> <span class='str'>"OK"</span>-<a name="line-163"></a> <span class='varop'>>>></span>-<a name="line-164"></a> <span class='varid'>addAttr</span> <span class='varid'>transferStatus</span> <span class='str'>"200"</span>-<a name="line-165"></a>-<a name="line-166"></a><a name="getHttpContents"></a><span class='definition'>getHttpContents</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-167"></a><span class='definition'>getHttpContents</span>-<a name="line-168"></a> <span class='keyglyph'>=</span> <span class='varid'>getCont</span> <span class='varop'>$<<</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>-<a name="line-169"></a> <span class='varop'>&&&</span>-<a name="line-170"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getAttrlAsAssoc</span> <span class='comment'>-- get all attributes of root node</span>-<a name="line-171"></a> <span class='varop'>&&&</span>-<a name="line-172"></a> <span class='varid'>getAllParamsString</span> <span class='comment'>-- get all system params</span>-<a name="line-173"></a> <span class='layout'>)</span>-<a name="line-174"></a> <span class='varop'>>>^</span> <span class='varid'>uncurry</span> <span class='varid'>addEntries</span> <span class='comment'>-- merge them, attributes overwrite system params</span>-<a name="line-175"></a> <span class='layout'>)</span>-<a name="line-176"></a> <span class='layout'>)</span>-<a name="line-177"></a> <span class='keyword'>where</span>-<a name="line-178"></a> <span class='varid'>getAttrlAsAssoc</span> <span class='comment'>-- get the attributes as assoc list</span>-<a name="line-179"></a> <span class='keyglyph'>=</span> <span class='varid'>listA</span> <span class='layout'>(</span> <span class='varid'>getAttrl</span>-<a name="line-180"></a> <span class='varop'>>>></span> <span class='layout'>(</span> <span class='varid'>getName</span>-<a name="line-181"></a> <span class='varop'>&&&</span>-<a name="line-182"></a> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>-<a name="line-183"></a> <span class='layout'>)</span>-<a name="line-184"></a> <span class='layout'>)</span>-<a name="line-185"></a>-<a name="line-186"></a> <span class='varid'>getCont</span> <span class='varid'>uri</span> <span class='varid'>options</span>-<a name="line-187"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span> <span class='str'>"get HTTP via libcurl, uri="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span> <span class='varop'>++</span> <span class='str'>" options="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>options</span> <span class='layout'>)</span>-<a name="line-188"></a> <span class='varop'>>>></span>-<a name="line-189"></a> <span class='varid'>arrIO0</span> <span class='layout'>(</span> <span class='conid'>LibCURL</span><span class='varop'>.</span><span class='varid'>getCont</span> <span class='varid'>options</span> <span class='varid'>uri</span> <span class='layout'>)</span>-<a name="line-190"></a> <span class='layout'>)</span>-<a name="line-191"></a> <span class='varop'>>>></span>-<a name="line-192"></a> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span>-<a name="line-193"></a> <span class='varop'>|||</span>-<a name="line-194"></a> <span class='varid'>arr</span> <span class='varid'>addContent</span>-<a name="line-195"></a> <span class='layout'>)</span>-<a name="line-196"></a> <span class='layout'>)</span>-<a name="line-197"></a> -<a name="line-198"></a><span class='comment'>{- old stuff-<a name="line-199"></a> = applyA ( ( if curl == v_1-<a name="line-200"></a> then ( traceMsg 2 ( "get HTTP via "-<a name="line-201"></a> ++ show ( "curl "-<a name="line-202"></a> ++ (if null proxy then "" else "--proxy " ++ proxy)-<a name="line-203"></a> ++ (if null curlOpt then "" else " " ++ curlOpt)-<a name="line-204"></a> ++ " " ++ uri-<a name="line-205"></a> )-<a name="line-206"></a> )-<a name="line-207"></a> >>>-<a name="line-208"></a> arrIO0 ( CURL.getCont curlOpt uri proxy )-<a name="line-209"></a> )-<a name="line-210"></a> else arrIO0 ( HTTP.getCont uri proxy )-<a name="line-211"></a> )-<a name="line-212"></a> >>>-<a name="line-213"></a> ( arr addError-<a name="line-214"></a> |||-<a name="line-215"></a> arr addContent-<a name="line-216"></a> )-<a name="line-217"></a> )-<a name="line-218"></a> where-<a name="line-219"></a> proxy = lookup1 a_proxy options-<a name="line-220"></a> curl = lookup1 a_use_curl options-<a name="line-221"></a> curlOpt = lookup1 a_options_curl options-<a name="line-222"></a>-}</span>-<a name="line-223"></a>-<a name="line-224"></a> <span class='varid'>addContent</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-225"></a> <span class='varid'>addContent</span> <span class='layout'>(</span><span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-226"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-227"></a> <span class='varop'>>>></span>-<a name="line-228"></a> <span class='varid'>seqA</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>addAttr</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-229"></a>-<a name="line-230"></a><a name="getURIContents"></a><span class='definition'>getURIContents</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-231"></a><span class='definition'>getURIContents</span>-<a name="line-232"></a> <span class='keyglyph'>=</span> <span class='varid'>getContentsFromString</span>-<a name="line-233"></a> <span class='varop'>`orElse`</span>-<a name="line-234"></a> <span class='varid'>getContentsFromDoc</span>-<a name="line-235"></a> <span class='keyword'>where</span>-<a name="line-236"></a> <span class='varid'>getContentsFromString</span>-<a name="line-237"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>-<a name="line-238"></a> <span class='varop'>>>></span>-<a name="line-239"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>isPrefixOf</span> <span class='varid'>stringProtocol</span><span class='layout'>)</span>-<a name="line-240"></a> <span class='layout'>)</span>-<a name="line-241"></a> <span class='varop'>`guards`</span>-<a name="line-242"></a> <span class='varid'>getStringContents</span>-<a name="line-243"></a> -<a name="line-244"></a> <span class='varid'>getContentsFromDoc</span>-<a name="line-245"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>addTransferURI</span> <span class='varop'>$<</span> <span class='varid'>getBaseURI</span>-<a name="line-246"></a> <span class='varop'>>>></span>-<a name="line-247"></a> <span class='varid'>getCont</span>-<a name="line-248"></a> <span class='layout'>)</span>-<a name="line-249"></a> <span class='varop'>`when`</span>-<a name="line-250"></a> <span class='layout'>(</span> <span class='varid'>setAbsURI</span> <span class='varop'>$<</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>-<a name="line-251"></a> <span class='varop'>>>^</span>-<a name="line-252"></a> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>src</span><span class='keyglyph'>-></span> <span class='layout'>(</span><span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>src</span> <span class='keyword'>then</span> <span class='str'>"stdin:"</span> <span class='keyword'>else</span> <span class='varid'>src</span><span class='layout'>)</span> <span class='layout'>)</span> <span class='comment'>-- empty document name -> read from stdin</span>-<a name="line-253"></a> <span class='layout'>)</span>-<a name="line-254"></a> <span class='layout'>)</span>-<a name="line-255"></a> <span class='layout'>)</span>-<a name="line-256"></a> <span class='varop'>>>></span>-<a name="line-257"></a> <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"getURIContents"</span>-<a name="line-258"></a>-<a name="line-259"></a> <span class='varid'>setAbsURI</span> <span class='varid'>src</span>-<a name="line-260"></a> <span class='keyglyph'>=</span> <span class='varid'>ifA</span> <span class='layout'>(</span> <span class='varid'>constA</span> <span class='varid'>src</span> <span class='varop'>>>></span> <span class='varid'>changeBaseURI</span> <span class='layout'>)</span>-<a name="line-261"></a> <span class='varid'>this</span>-<a name="line-262"></a> <span class='layout'>(</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='str'>"illegal URI : "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-263"></a>-<a name="line-264"></a> <span class='varid'>addTransferURI</span> <span class='varid'>uri</span>-<a name="line-265"></a> <span class='keyglyph'>=</span> <span class='varid'>addAttr</span> <span class='varid'>transferURI</span> <span class='varid'>uri</span>-<a name="line-266"></a>-<a name="line-267"></a> <span class='varid'>getCont</span>-<a name="line-268"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>getBaseURI</span> <span class='comment'>-- compute the handler and call it</span>-<a name="line-269"></a> <span class='varop'>>>></span>-<a name="line-270"></a> <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"getURIContents: reading "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>-<a name="line-271"></a> <span class='varop'>>>></span>-<a name="line-272"></a> <span class='varid'>getSchemeFromURI</span>-<a name="line-273"></a> <span class='varop'>>>></span>-<a name="line-274"></a> <span class='varid'>getProtocolHandler</span>-<a name="line-275"></a> <span class='layout'>)</span>-<a name="line-276"></a> <span class='varop'>`orElse`</span>-<a name="line-277"></a> <span class='varid'>this</span> <span class='comment'>-- don't change tree, when no handler can be found</span>-<a name="line-278"></a> -<a name="line-279"></a><a name="setBaseURIFromDoc"></a><span class='definition'>setBaseURIFromDoc</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-280"></a><span class='definition'>setBaseURIFromDoc</span>-<a name="line-281"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>-<a name="line-282"></a> <span class='varop'>>>></span>-<a name="line-283"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>isPrefixOf</span> <span class='varid'>stringProtocol</span><span class='layout'>)</span> <span class='comment'>-- do not change base URI when reading from a string</span>-<a name="line-284"></a> <span class='varop'>>>></span>-<a name="line-285"></a> <span class='varid'>setBaseURI</span>-<a name="line-286"></a> <span class='layout'>)</span>-<a name="line-287"></a>-<a name="line-288"></a><span class='comment'>{- |-<a name="line-289"></a> Read the content of a document.-<a name="line-290"></a>-<a name="line-291"></a> This routine is usually called from 'Text.XML.HXT.Arrow.ProcessDocument.getDocumentContents'.-<a name="line-292"></a>-<a name="line-293"></a> The input must be a root node (constructed with 'Text.XML.HXT.Arrow.XmlArrow.root'), usually without children.-<a name="line-294"></a> The attribute list contains all input parameters, e.g. URI or source file name, encoding preferences, ...-<a name="line-295"></a> If the source name is empty, the input is read from standard input.-<a name="line-296"></a>-<a name="line-297"></a> The source is transformed into an absolute URI. If the source is a relative URI, or a file name,-<a name="line-298"></a> it is expanded into an absolut URI with respect to the current base URI.-<a name="line-299"></a> The default base URI is of protocol \"file\" and points to the current working directory.+<a name="line-126"></a> <span class='varop'>>>></span>+<a name="line-127"></a> <span class='varid'>traceValue</span> <span class='num'>2</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='str'>"read file "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>f</span> <span class='varop'>++</span> <span class='str'>" (strict input = "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>b</span> <span class='varop'>++</span> <span class='str'>")"</span><span class='layout'>)</span>+<a name="line-128"></a> <span class='varop'>>>></span>+<a name="line-129"></a> <span class='varid'>arrIO</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='conid'>FILE</span><span class='varop'>.</span><span class='varid'>getCont</span><span class='layout'>)</span>+<a name="line-130"></a> <span class='varop'>>>></span>+<a name="line-131"></a> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span> <span class='comment'>-- io error occured</span>+<a name="line-132"></a> <span class='varop'>|||</span>+<a name="line-133"></a> <span class='varid'>arr</span> <span class='varid'>addTxtContent</span> <span class='comment'>-- content read</span>+<a name="line-134"></a> <span class='layout'>)</span>+<a name="line-135"></a> <span class='layout'>)</span>+<a name="line-136"></a> <span class='varop'>>>></span>+<a name="line-137"></a> <span class='varid'>addMimeType</span>+<a name="line-138"></a>+<a name="line-139"></a><a name="getStdinContents"></a><span class='definition'>getStdinContents</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-140"></a><span class='definition'>getStdinContents</span>+<a name="line-141"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_strict_input</span>+<a name="line-142"></a> <span class='varop'>>>></span>+<a name="line-143"></a> <span class='varid'>arr</span> <span class='varid'>isTrueValue</span>+<a name="line-144"></a> <span class='varop'>>>></span>+<a name="line-145"></a> <span class='varid'>arrIO</span> <span class='conid'>FILE</span><span class='varop'>.</span><span class='varid'>getStdinCont</span>+<a name="line-146"></a> <span class='varop'>>>></span>+<a name="line-147"></a> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span> <span class='comment'>-- io error occured</span>+<a name="line-148"></a> <span class='varop'>|||</span>+<a name="line-149"></a> <span class='varid'>arr</span> <span class='varid'>addTxtContent</span> <span class='comment'>-- content read</span>+<a name="line-150"></a> <span class='layout'>)</span>+<a name="line-151"></a> <span class='layout'>)</span>+<a name="line-152"></a>+<a name="line-153"></a><a name="addError"></a><span class='definition'>addError</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-154"></a><span class='definition'>addError</span> <span class='varid'>e</span>+<a name="line-155"></a> <span class='keyglyph'>=</span> <span class='varid'>issueFatal</span> <span class='varid'>e</span>+<a name="line-156"></a> <span class='varop'>>>></span>+<a name="line-157"></a> <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"accessing documents"</span>+<a name="line-158"></a>+<a name="line-159"></a><a name="addMimeType"></a><span class='definition'>addMimeType</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-160"></a><span class='definition'>addMimeType</span>+<a name="line-161"></a> <span class='keyglyph'>=</span> <span class='varid'>addMime</span> <span class='varop'>$<</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>+<a name="line-162"></a> <span class='varop'>>>></span>+<a name="line-163"></a> <span class='layout'>(</span> <span class='varid'>uriToMime</span> <span class='varop'>$<</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_mimeTypes</span> <span class='layout'>)</span>+<a name="line-164"></a> <span class='layout'>)</span>+<a name="line-165"></a> <span class='keyword'>where</span>+<a name="line-166"></a> <span class='varid'>addMime</span> <span class='varid'>mt</span>+<a name="line-167"></a> <span class='keyglyph'>=</span> <span class='varid'>addAttr</span> <span class='varid'>transferMimeType</span> <span class='varid'>mt</span>+<a name="line-168"></a> <span class='varid'>uriToMime</span> <span class='varid'>mtt</span>+<a name="line-169"></a> <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>uri</span> <span class='keyglyph'>-></span> <span class='varid'>extensionToMimeType</span> <span class='layout'>(</span><span class='varid'>drop</span> <span class='num'>1</span> <span class='varop'>.</span> <span class='varid'>takeExtension</span> <span class='varop'>$</span> <span class='varid'>uri</span><span class='layout'>)</span> <span class='varid'>mtt</span> <span class='layout'>)</span>+<a name="line-170"></a>+<a name="line-171"></a><a name="addTxtContent"></a><span class='definition'>addTxtContent</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-172"></a><span class='definition'>addTxtContent</span> <span class='varid'>c</span>+<a name="line-173"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>c</span><span class='layout'>)</span>+<a name="line-174"></a> <span class='varop'>>>></span>+<a name="line-175"></a> <span class='varid'>addAttr</span> <span class='varid'>transferMessage</span> <span class='str'>"OK"</span>+<a name="line-176"></a> <span class='varop'>>>></span>+<a name="line-177"></a> <span class='varid'>addAttr</span> <span class='varid'>transferStatus</span> <span class='str'>"200"</span>+<a name="line-178"></a>+<a name="line-179"></a><a name="getHttpContents"></a><span class='definition'>getHttpContents</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-180"></a><span class='definition'>getHttpContents</span>+<a name="line-181"></a> <span class='keyglyph'>=</span> <span class='varid'>getCont</span> <span class='varop'>$<<</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>+<a name="line-182"></a> <span class='varop'>&&&</span>+<a name="line-183"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getAttrlAsAssoc</span> <span class='comment'>-- get all attributes of root node</span>+<a name="line-184"></a> <span class='varop'>&&&</span>+<a name="line-185"></a> <span class='varid'>getAllParamsString</span> <span class='comment'>-- get all system params</span>+<a name="line-186"></a> <span class='layout'>)</span>+<a name="line-187"></a> <span class='varop'>>>^</span> <span class='varid'>uncurry</span> <span class='varid'>addEntries</span> <span class='comment'>-- merge them, attributes overwrite system params</span>+<a name="line-188"></a> <span class='layout'>)</span>+<a name="line-189"></a> <span class='layout'>)</span>+<a name="line-190"></a> <span class='keyword'>where</span>+<a name="line-191"></a> <span class='varid'>getAttrlAsAssoc</span> <span class='comment'>-- get the attributes as assoc list</span>+<a name="line-192"></a> <span class='keyglyph'>=</span> <span class='varid'>listA</span> <span class='layout'>(</span> <span class='varid'>getAttrl</span>+<a name="line-193"></a> <span class='varop'>>>></span> <span class='layout'>(</span> <span class='varid'>getName</span>+<a name="line-194"></a> <span class='varop'>&&&</span>+<a name="line-195"></a> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>+<a name="line-196"></a> <span class='layout'>)</span>+<a name="line-197"></a> <span class='layout'>)</span>+<a name="line-198"></a>+<a name="line-199"></a> <span class='varid'>getCont</span> <span class='varid'>uri</span> <span class='varid'>options</span>+<a name="line-200"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span> <span class='str'>"get HTTP via libcurl, uri="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>uri</span> <span class='varop'>++</span> <span class='str'>" options="</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>options</span> <span class='layout'>)</span>+<a name="line-201"></a> <span class='varop'>>>></span>+<a name="line-202"></a> <span class='varid'>arrIO0</span> <span class='layout'>(</span> <span class='conid'>LibCURL</span><span class='varop'>.</span><span class='varid'>getCont</span> <span class='varid'>options</span> <span class='varid'>uri</span> <span class='layout'>)</span>+<a name="line-203"></a> <span class='layout'>)</span>+<a name="line-204"></a> <span class='varop'>>>></span>+<a name="line-205"></a> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varid'>addError</span>+<a name="line-206"></a> <span class='varop'>|||</span>+<a name="line-207"></a> <span class='varid'>arr</span> <span class='varid'>addContent</span>+<a name="line-208"></a> <span class='layout'>)</span>+<a name="line-209"></a> <span class='layout'>)</span>+<a name="line-210"></a> +<a name="line-211"></a><span class='comment'>{- old stuff+<a name="line-212"></a> = applyA ( ( if curl == v_1+<a name="line-213"></a> then ( traceMsg 2 ( "get HTTP via "+<a name="line-214"></a> ++ show ( "curl "+<a name="line-215"></a> ++ (if null proxy then "" else "--proxy " ++ proxy)+<a name="line-216"></a> ++ (if null curlOpt then "" else " " ++ curlOpt)+<a name="line-217"></a> ++ " " ++ uri+<a name="line-218"></a> )+<a name="line-219"></a> )+<a name="line-220"></a> >>>+<a name="line-221"></a> arrIO0 ( CURL.getCont curlOpt uri proxy )+<a name="line-222"></a> )+<a name="line-223"></a> else arrIO0 ( HTTP.getCont uri proxy )+<a name="line-224"></a> )+<a name="line-225"></a> >>>+<a name="line-226"></a> ( arr addError+<a name="line-227"></a> |||+<a name="line-228"></a> arr addContent+<a name="line-229"></a> )+<a name="line-230"></a> )+<a name="line-231"></a> where+<a name="line-232"></a> proxy = lookup1 a_proxy options+<a name="line-233"></a> curl = lookup1 a_use_curl options+<a name="line-234"></a> curlOpt = lookup1 a_options_curl options+<a name="line-235"></a>-}</span>+<a name="line-236"></a>+<a name="line-237"></a> <span class='varid'>addContent</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-238"></a> <span class='varid'>addContent</span> <span class='layout'>(</span><span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>+<a name="line-239"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>c</span><span class='layout'>)</span>+<a name="line-240"></a> <span class='varop'>>>></span>+<a name="line-241"></a> <span class='varid'>seqA</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>addAttr</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span>+<a name="line-242"></a>+<a name="line-243"></a><a name="getURIContents"></a><span class='definition'>getURIContents</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-244"></a><span class='definition'>getURIContents</span>+<a name="line-245"></a> <span class='keyglyph'>=</span> <span class='varid'>getContentsFromString</span>+<a name="line-246"></a> <span class='varop'>`orElse`</span>+<a name="line-247"></a> <span class='varid'>getContentsFromDoc</span>+<a name="line-248"></a> <span class='keyword'>where</span>+<a name="line-249"></a> <span class='varid'>getContentsFromString</span>+<a name="line-250"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>+<a name="line-251"></a> <span class='varop'>>>></span>+<a name="line-252"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>isPrefixOf</span> <span class='varid'>stringProtocol</span><span class='layout'>)</span>+<a name="line-253"></a> <span class='layout'>)</span>+<a name="line-254"></a> <span class='varop'>`guards`</span>+<a name="line-255"></a> <span class='varid'>getStringContents</span>+<a name="line-256"></a> +<a name="line-257"></a> <span class='varid'>getContentsFromDoc</span>+<a name="line-258"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>addTransferURI</span> <span class='varop'>$<</span> <span class='varid'>getBaseURI</span>+<a name="line-259"></a> <span class='varop'>>>></span>+<a name="line-260"></a> <span class='varid'>getCont</span>+<a name="line-261"></a> <span class='layout'>)</span>+<a name="line-262"></a> <span class='varop'>`when`</span>+<a name="line-263"></a> <span class='layout'>(</span> <span class='varid'>setAbsURI</span> <span class='varop'>$<</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span>+<a name="line-264"></a> <span class='varop'>>>^</span>+<a name="line-265"></a> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>src</span><span class='keyglyph'>-></span> <span class='layout'>(</span><span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>src</span> <span class='keyword'>then</span> <span class='str'>"stdin:"</span> <span class='keyword'>else</span> <span class='varid'>src</span><span class='layout'>)</span> <span class='layout'>)</span> <span class='comment'>-- empty document name -> read from stdin</span>+<a name="line-266"></a> <span class='layout'>)</span>+<a name="line-267"></a> <span class='layout'>)</span>+<a name="line-268"></a> <span class='layout'>)</span>+<a name="line-269"></a> <span class='varop'>>>></span>+<a name="line-270"></a> <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"getURIContents"</span>+<a name="line-271"></a>+<a name="line-272"></a> <span class='varid'>setAbsURI</span> <span class='varid'>src</span>+<a name="line-273"></a> <span class='keyglyph'>=</span> <span class='varid'>ifA</span> <span class='layout'>(</span> <span class='varid'>constA</span> <span class='varid'>src</span> <span class='varop'>>>></span> <span class='varid'>changeBaseURI</span> <span class='layout'>)</span>+<a name="line-274"></a> <span class='varid'>this</span>+<a name="line-275"></a> <span class='layout'>(</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='str'>"illegal URI : "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-276"></a>+<a name="line-277"></a> <span class='varid'>addTransferURI</span> <span class='varid'>uri</span>+<a name="line-278"></a> <span class='keyglyph'>=</span> <span class='varid'>addAttr</span> <span class='varid'>transferURI</span> <span class='varid'>uri</span>+<a name="line-279"></a>+<a name="line-280"></a> <span class='varid'>getCont</span>+<a name="line-281"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>getBaseURI</span> <span class='comment'>-- compute the handler and call it</span>+<a name="line-282"></a> <span class='varop'>>>></span>+<a name="line-283"></a> <span class='varid'>traceValue</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"getURIContents: reading "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>+<a name="line-284"></a> <span class='varop'>>>></span>+<a name="line-285"></a> <span class='varid'>getSchemeFromURI</span>+<a name="line-286"></a> <span class='varop'>>>></span>+<a name="line-287"></a> <span class='varid'>getProtocolHandler</span>+<a name="line-288"></a> <span class='layout'>)</span>+<a name="line-289"></a> <span class='varop'>`orElse`</span>+<a name="line-290"></a> <span class='varid'>this</span> <span class='comment'>-- don't change tree, when no handler can be found</span>+<a name="line-291"></a> +<a name="line-292"></a><a name="setBaseURIFromDoc"></a><span class='definition'>setBaseURIFromDoc</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-293"></a><span class='definition'>setBaseURIFromDoc</span>+<a name="line-294"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>+<a name="line-295"></a> <span class='varop'>>>></span>+<a name="line-296"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>isPrefixOf</span> <span class='varid'>stringProtocol</span><span class='layout'>)</span> <span class='comment'>-- do not change base URI when reading from a string</span>+<a name="line-297"></a> <span class='varop'>>>></span>+<a name="line-298"></a> <span class='varid'>setBaseURI</span>+<a name="line-299"></a> <span class='layout'>)</span> <a name="line-300"></a>-<a name="line-301"></a> The currently supported protocols are \"http\", \"file\", \"stdin\" and \"string\".-<a name="line-302"></a>-<a name="line-303"></a> The latter two are internal protocols. An uri of the form \"stdin:\" stands for the content of-<a name="line-304"></a> the standard input stream.+<a name="line-301"></a><span class='comment'>{- |+<a name="line-302"></a> Read the content of a document.+<a name="line-303"></a>+<a name="line-304"></a> This routine is usually called from 'Text.XML.HXT.Arrow.ProcessDocument.getDocumentContents'. <a name="line-305"></a>-<a name="line-306"></a> \"string:some text\" means, that \"some text\" is taken as input.-<a name="line-307"></a> This internal protocol is used for reading from normal 'String' values.-<a name="line-308"></a>-<a name="line-309"></a>-}</span>-<a name="line-310"></a>-<a name="line-311"></a><a name="getXmlContents"></a><span class='definition'>getXmlContents</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-312"></a><span class='definition'>getXmlContents</span>-<a name="line-313"></a> <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlDocEncodingSpec</span>-<a name="line-314"></a> <span class='varop'>>>></span>-<a name="line-315"></a> <span class='varid'>setBaseURIFromDoc</span>-<a name="line-316"></a>-<a name="line-317"></a><a name="getXmlEntityContents"></a><span class='definition'>getXmlEntityContents</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-318"></a><span class='definition'>getXmlEntityContents</span>-<a name="line-319"></a> <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlEntityEncodingSpec</span>-<a name="line-320"></a> <span class='varop'>>>></span>-<a name="line-321"></a> <span class='varid'>processChildren</span> <span class='varid'>removeEncodingSpec</span>-<a name="line-322"></a> <span class='varop'>>>></span>-<a name="line-323"></a> <span class='varid'>setBaseURIFromDoc</span>-<a name="line-324"></a>-<a name="line-325"></a><a name="getXmlContents'"></a><span class='definition'>getXmlContents'</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-326"></a><span class='definition'>getXmlContents'</span> <span class='varid'>parseEncodingSpec</span>-<a name="line-327"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getURIContents</span>-<a name="line-328"></a> <span class='varop'>>>></span>-<a name="line-329"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>parseEncodingSpec</span>-<a name="line-330"></a> <span class='varop'>>>></span>-<a name="line-331"></a> <span class='varid'>filterErrorMsg</span>-<a name="line-332"></a> <span class='varop'>>>></span>-<a name="line-333"></a> <span class='varid'>decodeDocument</span>-<a name="line-334"></a> <span class='layout'>)</span>-<a name="line-335"></a> <span class='varop'>`when`</span>-<a name="line-336"></a> <span class='varid'>isXmlHtml</span>-<a name="line-337"></a> <span class='layout'>)</span>-<a name="line-338"></a> <span class='varop'>>>></span>-<a name="line-339"></a> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>-<a name="line-340"></a> <span class='varop'>>>></span>-<a name="line-341"></a> <span class='varid'>traceString</span> <span class='num'>1</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"getXmlContents: content read and decoded for "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>-<a name="line-342"></a> <span class='layout'>)</span>-<a name="line-343"></a> <span class='varop'>>>></span>-<a name="line-344"></a> <span class='varid'>traceTree</span>-<a name="line-345"></a> <span class='varop'>>>></span>-<a name="line-346"></a> <span class='varid'>traceSource</span>-<a name="line-347"></a> <span class='layout'>)</span>-<a name="line-348"></a> <span class='varop'>`when`</span>-<a name="line-349"></a> <span class='varid'>isRoot</span>-<a name="line-350"></a> <span class='keyword'>where</span>-<a name="line-351"></a> <span class='varid'>isXmlHtml</span>-<a name="line-352"></a> <span class='keyglyph'>=</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferMimeType</span>-<a name="line-353"></a> <span class='varop'>>>></span>-<a name="line-354"></a> <span class='varid'>arr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>mt</span> <span class='keyglyph'>-></span> <span class='varid'>isHtmlMimeType</span> <span class='varid'>mt</span> <span class='varop'>||</span> <span class='varid'>isXmlMimeType</span> <span class='varid'>mt</span><span class='layout'>)</span>-<a name="line-355"></a>-<a name="line-356"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-357"></a>-<a name="line-358"></a><a name="getEncoding"></a><span class='definition'>getEncoding</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>String</span>-<a name="line-359"></a><span class='definition'>getEncoding</span>-<a name="line-360"></a> <span class='keyglyph'>=</span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span> <span class='comment'>-- 1. guess: guess encoding by looking at the first few bytes</span>-<a name="line-361"></a> <span class='varop'>>>></span>-<a name="line-362"></a> <span class='varid'>arr</span> <span class='varid'>guessEncoding</span>-<a name="line-363"></a> <span class='layout'>,</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferEncoding</span> <span class='comment'>-- 2. guess: take the transfer encoding</span>-<a name="line-364"></a> <span class='layout'>,</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_encoding</span> <span class='comment'>-- 4. guess: take encoding parameter in root node</span>-<a name="line-365"></a> <span class='layout'>,</span> <span class='varid'>getParamString</span> <span class='varid'>a_encoding</span> <span class='comment'>-- 5. guess: take encoding parameter in global state</span>-<a name="line-366"></a> <span class='layout'>,</span> <span class='varid'>constA</span> <span class='varid'>utf8</span> <span class='comment'>-- default : utf8</span>-<a name="line-367"></a> <span class='keyglyph'>]</span>-<a name="line-368"></a> <span class='varop'>>.</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span><span class='layout'>)</span> <span class='comment'>-- make the filter deterministic: take 1. entry from list of guesses</span>-<a name="line-369"></a>+<a name="line-306"></a> The input must be a root node (constructed with 'Text.XML.HXT.Arrow.XmlArrow.root'), usually without children.+<a name="line-307"></a> The attribute list contains all input parameters, e.g. URI or source file name, encoding preferences, ...+<a name="line-308"></a> If the source name is empty, the input is read from standard input.+<a name="line-309"></a>+<a name="line-310"></a> The source is transformed into an absolute URI. If the source is a relative URI, or a file name,+<a name="line-311"></a> it is expanded into an absolut URI with respect to the current base URI.+<a name="line-312"></a> The default base URI is of protocol \"file\" and points to the current working directory.+<a name="line-313"></a>+<a name="line-314"></a> The currently supported protocols are \"http\", \"file\", \"stdin\" and \"string\".+<a name="line-315"></a>+<a name="line-316"></a> The latter two are internal protocols. An uri of the form \"stdin:\" stands for the content of+<a name="line-317"></a> the standard input stream.+<a name="line-318"></a>+<a name="line-319"></a> \"string:some text\" means, that \"some text\" is taken as input.+<a name="line-320"></a> This internal protocol is used for reading from normal 'String' values.+<a name="line-321"></a>+<a name="line-322"></a>-}</span>+<a name="line-323"></a>+<a name="line-324"></a><a name="getXmlContents"></a><span class='definition'>getXmlContents</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-325"></a><span class='definition'>getXmlContents</span>+<a name="line-326"></a> <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlDocEncodingSpec</span>+<a name="line-327"></a> <span class='varop'>>>></span>+<a name="line-328"></a> <span class='varid'>setBaseURIFromDoc</span>+<a name="line-329"></a>+<a name="line-330"></a><a name="getXmlEntityContents"></a><span class='definition'>getXmlEntityContents</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-331"></a><span class='definition'>getXmlEntityContents</span>+<a name="line-332"></a> <span class='keyglyph'>=</span> <span class='varid'>getXmlContents'</span> <span class='varid'>parseXmlEntityEncodingSpec</span>+<a name="line-333"></a> <span class='varop'>>>></span>+<a name="line-334"></a> <span class='varid'>processChildren</span> <span class='varid'>removeEncodingSpec</span>+<a name="line-335"></a> <span class='varop'>>>></span>+<a name="line-336"></a> <span class='varid'>setBaseURIFromDoc</span>+<a name="line-337"></a>+<a name="line-338"></a><a name="getXmlContents'"></a><span class='definition'>getXmlContents'</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-339"></a><span class='definition'>getXmlContents'</span> <span class='varid'>parseEncodingSpec</span>+<a name="line-340"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getURIContents</span>+<a name="line-341"></a> <span class='varop'>>>></span>+<a name="line-342"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>parseEncodingSpec</span>+<a name="line-343"></a> <span class='varop'>>>></span>+<a name="line-344"></a> <span class='varid'>filterErrorMsg</span>+<a name="line-345"></a> <span class='varop'>>>></span>+<a name="line-346"></a> <span class='varid'>decodeDocument</span>+<a name="line-347"></a> <span class='layout'>)</span>+<a name="line-348"></a> <span class='varop'>`when`</span>+<a name="line-349"></a> <span class='varid'>isXmlHtml</span>+<a name="line-350"></a> <span class='layout'>)</span>+<a name="line-351"></a> <span class='varop'>>>></span>+<a name="line-352"></a> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferURI</span>+<a name="line-353"></a> <span class='varop'>>>></span>+<a name="line-354"></a> <span class='varid'>traceValue</span> <span class='num'>1</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"getXmlContents: content read and decoded for "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>+<a name="line-355"></a> <span class='layout'>)</span>+<a name="line-356"></a> <span class='varop'>>>></span>+<a name="line-357"></a> <span class='varid'>traceTree</span>+<a name="line-358"></a> <span class='varop'>>>></span>+<a name="line-359"></a> <span class='varid'>traceSource</span>+<a name="line-360"></a> <span class='layout'>)</span>+<a name="line-361"></a> <span class='varop'>`when`</span>+<a name="line-362"></a> <span class='varid'>isRoot</span>+<a name="line-363"></a> <span class='keyword'>where</span>+<a name="line-364"></a> <span class='varid'>isXmlHtml</span>+<a name="line-365"></a> <span class='keyglyph'>=</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferMimeType</span>+<a name="line-366"></a> <span class='varop'>>>></span>+<a name="line-367"></a> <span class='varid'>arr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>mt</span> <span class='keyglyph'>-></span> <span class='varid'>isHtmlMimeType</span> <span class='varid'>mt</span> <span class='varop'>||</span> <span class='varid'>isXmlMimeType</span> <span class='varid'>mt</span><span class='layout'>)</span>+<a name="line-368"></a>+<a name="line-369"></a><span class='comment'>-- ------------------------------------------------------------</span> <a name="line-370"></a>-<a name="line-371"></a><a name="decodeDocument"></a><span class='definition'>decodeDocument</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-372"></a><span class='definition'>decodeDocument</span>-<a name="line-373"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>decodeArr</span> <span class='varop'>$<</span> <span class='varid'>getEncoding</span> <span class='layout'>)</span>-<a name="line-374"></a> <span class='varop'>`when`</span>-<a name="line-375"></a> <span class='layout'>(</span> <span class='varid'>isRoot</span> <span class='varop'>>>></span> <span class='varid'>isXmlOrHtmlDoc</span> <span class='layout'>)</span>-<a name="line-376"></a> <span class='keyword'>where</span>-<a name="line-377"></a> <span class='varid'>isXmlOrHtmlDoc</span>-<a name="line-378"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferMimeType</span> <span class='varop'>>>^</span> <span class='varid'>map</span> <span class='varid'>toLower</span> <span class='layout'>)</span>-<a name="line-379"></a> <span class='varop'>>>></span>-<a name="line-380"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='varid'>null</span> <span class='varid'>t</span> <span class='varop'>||</span> <span class='varid'>isXmlMimeType</span> <span class='varid'>t</span> <span class='varop'>||</span> <span class='varid'>isHtmlMimeType</span> <span class='varid'>t</span><span class='layout'>)</span>-<a name="line-381"></a>-<a name="line-382"></a> <span class='varid'>decodeArr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-383"></a> <span class='varid'>decodeArr</span> <span class='varid'>enc</span>-<a name="line-384"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>notFound</span> <span class='varid'>found</span> <span class='varop'>.</span> <span class='varid'>getDecodingFct</span> <span class='varop'>$</span> <span class='varid'>enc</span>-<a name="line-385"></a> <span class='keyword'>where</span>-<a name="line-386"></a> <span class='varid'>found</span> <span class='varid'>df</span>-<a name="line-387"></a> <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"decodeDocument: encoding is "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>-<a name="line-388"></a> <span class='varop'>>>></span>-<a name="line-389"></a> <span class='layout'>(</span> <span class='varid'>decodeText</span> <span class='varid'>df</span> <span class='varop'>$<</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_ignore_encoding_errors</span> <span class='layout'>)</span>-<a name="line-390"></a> <span class='varop'>>>></span>-<a name="line-391"></a> <span class='varid'>addAttr</span> <span class='varid'>transferEncoding</span> <span class='varid'>enc</span>-<a name="line-392"></a>-<a name="line-393"></a> <span class='varid'>notFound</span>-<a name="line-394"></a> <span class='keyglyph'>=</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='str'>"encoding scheme not supported: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>-<a name="line-395"></a> <span class='varop'>>>></span>-<a name="line-396"></a> <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"decoding document"</span>-<a name="line-397"></a>-<a name="line-398"></a> <span class='varid'>decodeText</span> <span class='varid'>df</span> <span class='varid'>ignoreErrs</span>-<a name="line-399"></a> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span>-<a name="line-400"></a> <span class='layout'>(</span> <span class='varid'>getText</span> <span class='comment'>-- get the document content</span>-<a name="line-401"></a> <span class='varop'>>>></span> <span class='varid'>arr</span> <span class='varid'>df</span> <span class='comment'>-- decode the text, result is (string, [errMsg])</span>-<a name="line-402"></a> <span class='varop'>>>></span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>normalizeNL</span> <span class='varop'>.</span> <span class='varid'>fst</span><span class='layout'>)</span> <span class='varop'>^>></span> <span class='varid'>mkText</span> <span class='layout'>)</span> <span class='comment'>-- take decoded string, normalize newline and build text node</span>-<a name="line-403"></a> <span class='varop'><+></span>-<a name="line-404"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>isTrueValue</span> <span class='varid'>ignoreErrs</span>-<a name="line-405"></a> <span class='keyword'>then</span> <span class='varid'>none</span> <span class='comment'>-- encoding errors are ignored</span>-<a name="line-406"></a> <span class='keyword'>else</span>-<a name="line-407"></a> <span class='layout'>(</span> <span class='varid'>arrL</span> <span class='varid'>snd</span> <span class='comment'>-- take the error messages</span>-<a name="line-408"></a> <span class='varop'>>>></span>-<a name="line-409"></a> <span class='varid'>arr</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>enc</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>" encoding error"</span> <span class='varop'>++</span><span class='layout'>)</span><span class='layout'>)</span> <span class='comment'>-- prefix with enc error</span>-<a name="line-410"></a> <span class='varop'>>>></span>-<a name="line-411"></a> <span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>issueErr</span><span class='layout'>)</span> <span class='comment'>-- build issueErr arrow and apply</span>-<a name="line-412"></a> <span class='varop'>>>></span>-<a name="line-413"></a> <span class='varid'>none</span> <span class='comment'>-- neccessary for type match with <+></span>-<a name="line-414"></a> <span class='layout'>)</span>-<a name="line-415"></a> <span class='layout'>)</span>-<a name="line-416"></a> <span class='layout'>)</span>-<a name="line-417"></a> <span class='layout'>)</span>-<a name="line-418"></a> -<a name="line-419"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-371"></a><a name="getEncoding"></a><span class='definition'>getEncoding</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>String</span>+<a name="line-372"></a><span class='definition'>getEncoding</span>+<a name="line-373"></a> <span class='keyglyph'>=</span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span> <span class='comment'>-- 1. guess: guess encoding by looking at the first few bytes</span>+<a name="line-374"></a> <span class='varop'>>>></span>+<a name="line-375"></a> <span class='varid'>arr</span> <span class='varid'>guessEncoding</span>+<a name="line-376"></a> <span class='layout'>,</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferEncoding</span> <span class='comment'>-- 2. guess: take the transfer encoding</span>+<a name="line-377"></a> <span class='layout'>,</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_encoding</span> <span class='comment'>-- 4. guess: take encoding parameter in root node</span>+<a name="line-378"></a> <span class='layout'>,</span> <span class='varid'>getParamString</span> <span class='varid'>a_encoding</span> <span class='comment'>-- 5. guess: take encoding parameter in global state</span>+<a name="line-379"></a> <span class='layout'>,</span> <span class='varid'>constA</span> <span class='varid'>utf8</span> <span class='comment'>-- default : utf8</span>+<a name="line-380"></a> <span class='keyglyph'>]</span>+<a name="line-381"></a> <span class='varop'>>.</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span><span class='layout'>)</span> <span class='comment'>-- make the filter deterministic: take 1. entry from list of guesses</span>+<a name="line-382"></a>+<a name="line-383"></a>+<a name="line-384"></a><a name="decodeDocument"></a><span class='definition'>decodeDocument</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-385"></a><span class='definition'>decodeDocument</span>+<a name="line-386"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>decodeArr</span> <span class='varop'>$<</span> <span class='varid'>getEncoding</span> <span class='layout'>)</span>+<a name="line-387"></a> <span class='varop'>`when`</span>+<a name="line-388"></a> <span class='layout'>(</span> <span class='varid'>isRoot</span> <span class='varop'>>>></span> <span class='varid'>isXmlOrHtmlDoc</span> <span class='layout'>)</span>+<a name="line-389"></a> <span class='keyword'>where</span>+<a name="line-390"></a> <span class='varid'>isXmlOrHtmlDoc</span>+<a name="line-391"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferMimeType</span> <span class='varop'>>>^</span> <span class='varid'>map</span> <span class='varid'>toLower</span> <span class='layout'>)</span>+<a name="line-392"></a> <span class='varop'>>>></span>+<a name="line-393"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span> <span class='varid'>null</span> <span class='varid'>t</span> <span class='varop'>||</span> <span class='varid'>isXmlMimeType</span> <span class='varid'>t</span> <span class='varop'>||</span> <span class='varid'>isHtmlMimeType</span> <span class='varid'>t</span><span class='layout'>)</span>+<a name="line-394"></a>+<a name="line-395"></a> <span class='varid'>decodeArr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-396"></a> <span class='varid'>decodeArr</span> <span class='varid'>enc</span>+<a name="line-397"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>notFound</span> <span class='varid'>found</span> <span class='varop'>.</span> <span class='varid'>getDecodingFct</span> <span class='varop'>$</span> <span class='varid'>enc</span>+<a name="line-398"></a> <span class='keyword'>where</span>+<a name="line-399"></a> <span class='varid'>found</span> <span class='varid'>df</span>+<a name="line-400"></a> <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"decodeDocument: encoding is "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>+<a name="line-401"></a> <span class='varop'>>>></span>+<a name="line-402"></a> <span class='layout'>(</span> <span class='varid'>decodeText</span> <span class='varid'>df</span> <span class='varop'>$<</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_ignore_encoding_errors</span> <span class='layout'>)</span>+<a name="line-403"></a> <span class='varop'>>>></span>+<a name="line-404"></a> <span class='varid'>addAttr</span> <span class='varid'>transferEncoding</span> <span class='varid'>enc</span>+<a name="line-405"></a>+<a name="line-406"></a> <span class='varid'>notFound</span>+<a name="line-407"></a> <span class='keyglyph'>=</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='str'>"encoding scheme not supported: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>+<a name="line-408"></a> <span class='varop'>>>></span>+<a name="line-409"></a> <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"decoding document"</span>+<a name="line-410"></a>+<a name="line-411"></a> <span class='varid'>decodeText</span> <span class='varid'>df</span> <span class='varid'>ignoreErrs</span>+<a name="line-412"></a> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span>+<a name="line-413"></a> <span class='layout'>(</span> <span class='varid'>getText</span> <span class='comment'>-- get the document content</span>+<a name="line-414"></a> <span class='varop'>>>></span> <span class='varid'>arr</span> <span class='varid'>df</span> <span class='comment'>-- decode the text, result is (string, [errMsg])</span>+<a name="line-415"></a> <span class='varop'>>>></span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>normalizeNL</span> <span class='varop'>.</span> <span class='varid'>fst</span><span class='layout'>)</span> <span class='varop'>^>></span> <span class='varid'>mkText</span> <span class='layout'>)</span> <span class='comment'>-- take decoded string, normalize newline and build text node</span>+<a name="line-416"></a> <span class='varop'><+></span>+<a name="line-417"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>isTrueValue</span> <span class='varid'>ignoreErrs</span>+<a name="line-418"></a> <span class='keyword'>then</span> <span class='varid'>none</span> <span class='comment'>-- encoding errors are ignored</span>+<a name="line-419"></a> <span class='keyword'>else</span>+<a name="line-420"></a> <span class='layout'>(</span> <span class='varid'>arrL</span> <span class='varid'>snd</span> <span class='comment'>-- take the error messages</span>+<a name="line-421"></a> <span class='varop'>>>></span>+<a name="line-422"></a> <span class='varid'>arr</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>enc</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>" encoding error"</span> <span class='varop'>++</span><span class='layout'>)</span><span class='layout'>)</span> <span class='comment'>-- prefix with enc error</span>+<a name="line-423"></a> <span class='varop'>>>></span>+<a name="line-424"></a> <span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>issueErr</span><span class='layout'>)</span> <span class='comment'>-- build issueErr arrow and apply</span>+<a name="line-425"></a> <span class='varop'>>>></span>+<a name="line-426"></a> <span class='varid'>none</span> <span class='comment'>-- neccessary for type match with <+></span>+<a name="line-427"></a> <span class='layout'>)</span>+<a name="line-428"></a> <span class='layout'>)</span>+<a name="line-429"></a> <span class='layout'>)</span>+<a name="line-430"></a> <span class='layout'>)</span>+<a name="line-431"></a> +<a name="line-432"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-Arrow-DocumentOutput.html view
@@ -6,172 +6,184 @@ <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'>-- state arrows for document output</span>-<a name="line-3"></a><span class='comment'>--</span>-<a name="line-4"></a><span class='comment'>-- version: $Id: DocumentOutput.hs,v 1.7 2006/11/02 09:34:08 hxml Exp $</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'>Arrow</span><span class='varop'>.</span><span class='conid'>DocumentOutput</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'>Arrow</span><span class='varop'>.</span><span class='conid'>DocumentOutput</span> <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'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span> <span class='comment'>-- arrow classes</span>-<a name="line-11"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>-<a name="line-12"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>-<a name="line-13"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>-<a name="line-14"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIO</span>+<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.Arrow.DocumentOutput+<a name="line-5"></a> Copyright : Copyright (C) 2005-9 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> State arrows for document output+<a name="line-13"></a>+<a name="line-14"></a>-}</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'>Unicode</span>-<a name="line-17"></a> <span class='layout'>(</span> <span class='varid'>getOutputEncodingFct</span> <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'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>-<a name="line-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'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</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'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlIOStateArrow</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'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>-<a name="line-24"></a> <span class='layout'>(</span> <span class='varid'>addHeadlineToXmlDoc</span>-<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>addXmlPi</span>-<a name="line-26"></a> <span class='layout'>,</span> <span class='varid'>addXmlPiEncoding</span>-<a name="line-27"></a> <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>-<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='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>-<a name="line-35"></a> <span class='layout'>(</span> <span class='conid'>Handle</span>-<a name="line-36"></a> <span class='layout'>,</span> <span class='conid'>IOMode</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>openFile</span>-<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>hPutStrLn</span>-<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>hClose</span>-<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>stdout</span>-<a name="line-41"></a> <span class='layout'>)</span>-<a name="line-42"></a>-<a name="line-43"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>Error</span>-<a name="line-44"></a> <span class='layout'>(</span> <span class='varid'>try</span> <span class='layout'>)</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'>Arrow</span><span class='varop'>.</span><span class='conid'>DocumentOutput</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'>Arrow</span><span class='varop'>.</span><span class='conid'>DocumentOutput</span> <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'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span> <span class='comment'>-- arrow classes</span>+<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>+<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>+<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>+<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIO</span>+<a name="line-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'>Unicode</span>+<a name="line-29"></a> <span class='layout'>(</span> <span class='varid'>getOutputEncodingFct</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'>Interface</span>+<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>+<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlIOStateArrow</span>+<a name="line-34"></a>+<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>+<a name="line-36"></a> <span class='layout'>(</span> <span class='varid'>addHeadlineToXmlDoc</span>+<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>addXmlPi</span>+<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>addXmlPiEncoding</span>+<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>indentDoc</span>+<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>numberLinesInXmlDoc</span>+<a name="line-41"></a> <span class='layout'>,</span> <span class='varid'>treeRepOfXmlDoc</span>+<a name="line-42"></a> <span class='layout'>)</span>+<a name="line-43"></a>+<a name="line-44"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span> <a name="line-45"></a>-<a name="line-46"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-47"></a><span class='comment'>--</span>-<a name="line-48"></a><span class='comment'>-- output arrows</span>-<a name="line-49"></a>-<a name="line-50"></a><a name="putXmlDocument"></a><span class='definition'>putXmlDocument</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-51"></a><span class='definition'>putXmlDocument</span> <span class='varid'>dst</span>-<a name="line-52"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>-<a name="line-53"></a> <span class='varop'>>>></span>-<a name="line-54"></a> <span class='varid'>arrIO</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='varid'>hPutDocument</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>h</span> <span class='keyglyph'>-></span> <span class='varid'>hPutStrLn</span> <span class='varid'>h</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-55"></a> <span class='varop'>>>></span>-<a name="line-56"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"io error, document not written to "</span> <span class='varop'>++</span> <span class='varid'>outFile</span><span class='layout'>)</span>-<a name="line-57"></a> <span class='varop'>>>></span>-<a name="line-58"></a> <span class='varid'>arr</span> <span class='varid'>show</span> <span class='varop'>>>></span> <span class='varid'>mkError</span> <span class='varid'>c_fatal</span>-<a name="line-59"></a> <span class='varop'>>>></span>-<a name="line-60"></a> <span class='varid'>filterErrorMsg</span>-<a name="line-61"></a> <span class='layout'>)</span>-<a name="line-62"></a> <span class='varop'>|||</span>-<a name="line-63"></a> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"document written to "</span> <span class='varop'>++</span> <span class='varid'>outFile</span><span class='layout'>)</span>-<a name="line-64"></a> <span class='varop'>>>></span>-<a name="line-65"></a> <span class='varid'>none</span>-<a name="line-66"></a> <span class='layout'>)</span>-<a name="line-67"></a> <span class='layout'>)</span>-<a name="line-68"></a> <span class='layout'>)</span>-<a name="line-69"></a> <span class='keyword'>where</span>-<a name="line-70"></a> <span class='varid'>isStdout</span> <span class='keyglyph'>=</span> <span class='varid'>null</span> <span class='varid'>dst</span> <span class='varop'>||</span> <span class='varid'>dst</span> <span class='varop'>==</span> <span class='str'>"-"</span>-<a name="line-71"></a>-<a name="line-72"></a> <span class='varid'>outFile</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>isStdout</span>-<a name="line-73"></a> <span class='keyword'>then</span> <span class='str'>"stdout"</span>-<a name="line-74"></a> <span class='keyword'>else</span> <span class='varid'>show</span> <span class='varid'>dst</span>-<a name="line-75"></a>-<a name="line-76"></a> <span class='varid'>hPutDocument</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Handle</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span><span class='conid'>()</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span><span class='conid'>()</span>-<a name="line-77"></a> <span class='varid'>hPutDocument</span> <span class='varid'>action</span>-<a name="line-78"></a> <span class='keyglyph'>|</span> <span class='varid'>isStdout</span>-<a name="line-79"></a> <span class='keyglyph'>=</span> <span class='varid'>action</span> <span class='varid'>stdout</span>-<a name="line-80"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-81"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-82"></a> <span class='varid'>handle</span> <span class='keyglyph'><-</span> <span class='varid'>openFile</span> <span class='varid'>dst</span> <span class='conid'>WriteMode</span>-<a name="line-83"></a> <span class='varid'>action</span> <span class='varid'>handle</span>-<a name="line-84"></a> <span class='varid'>hClose</span> <span class='varid'>handle</span>-<a name="line-85"></a>-<a name="line-86"></a><span class='comment'>-- |</span>-<a name="line-87"></a><span class='comment'>-- write the tree representation of a document to a file</span>-<a name="line-88"></a>-<a name="line-89"></a><a name="putXmlTree"></a><span class='definition'>putXmlTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-90"></a><span class='definition'>putXmlTree</span> <span class='varid'>dst</span>-<a name="line-91"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>treeRepOfXmlDoc</span>-<a name="line-92"></a> <span class='varop'>>>></span>-<a name="line-93"></a> <span class='varid'>addHeadlineToXmlDoc</span>-<a name="line-94"></a> <span class='varop'>>>></span>-<a name="line-95"></a> <span class='varid'>putXmlDocument</span> <span class='varid'>dst</span>-<a name="line-96"></a> <span class='layout'>)</span>+<a name="line-46"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>+<a name="line-47"></a> <span class='layout'>(</span> <span class='conid'>Handle</span>+<a name="line-48"></a> <span class='layout'>,</span> <span class='conid'>IOMode</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-49"></a> <span class='layout'>,</span> <span class='varid'>openFile</span>+<a name="line-50"></a> <span class='layout'>,</span> <span class='varid'>hPutStrLn</span>+<a name="line-51"></a> <span class='layout'>,</span> <span class='varid'>hClose</span>+<a name="line-52"></a> <span class='layout'>,</span> <span class='varid'>stdout</span>+<a name="line-53"></a> <span class='layout'>)</span>+<a name="line-54"></a>+<a name="line-55"></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-56"></a> <span class='layout'>(</span> <span class='varid'>try</span> <span class='layout'>)</span>+<a name="line-57"></a>+<a name="line-58"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-59"></a><span class='comment'>--</span>+<a name="line-60"></a><span class='comment'>-- output arrows</span>+<a name="line-61"></a>+<a name="line-62"></a><a name="putXmlDocument"></a><span class='definition'>putXmlDocument</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-63"></a><span class='definition'>putXmlDocument</span> <span class='varid'>dst</span>+<a name="line-64"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>+<a name="line-65"></a> <span class='varop'>>>></span>+<a name="line-66"></a> <span class='varid'>arrIO</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='varid'>hPutDocument</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>h</span> <span class='keyglyph'>-></span> <span class='varid'>hPutStrLn</span> <span class='varid'>h</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-67"></a> <span class='varop'>>>></span>+<a name="line-68"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"io error, document not written to "</span> <span class='varop'>++</span> <span class='varid'>outFile</span><span class='layout'>)</span>+<a name="line-69"></a> <span class='varop'>>>></span>+<a name="line-70"></a> <span class='varid'>arr</span> <span class='varid'>show</span> <span class='varop'>>>></span> <span class='varid'>mkError</span> <span class='varid'>c_fatal</span>+<a name="line-71"></a> <span class='varop'>>>></span>+<a name="line-72"></a> <span class='varid'>filterErrorMsg</span>+<a name="line-73"></a> <span class='layout'>)</span>+<a name="line-74"></a> <span class='varop'>|||</span>+<a name="line-75"></a> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"document written to "</span> <span class='varop'>++</span> <span class='varid'>outFile</span><span class='layout'>)</span>+<a name="line-76"></a> <span class='varop'>>>></span>+<a name="line-77"></a> <span class='varid'>none</span>+<a name="line-78"></a> <span class='layout'>)</span>+<a name="line-79"></a> <span class='layout'>)</span>+<a name="line-80"></a> <span class='layout'>)</span>+<a name="line-81"></a> <span class='keyword'>where</span>+<a name="line-82"></a> <span class='varid'>isStdout</span> <span class='keyglyph'>=</span> <span class='varid'>null</span> <span class='varid'>dst</span> <span class='varop'>||</span> <span class='varid'>dst</span> <span class='varop'>==</span> <span class='str'>"-"</span>+<a name="line-83"></a>+<a name="line-84"></a> <span class='varid'>outFile</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>isStdout</span>+<a name="line-85"></a> <span class='keyword'>then</span> <span class='str'>"stdout"</span>+<a name="line-86"></a> <span class='keyword'>else</span> <span class='varid'>show</span> <span class='varid'>dst</span>+<a name="line-87"></a>+<a name="line-88"></a> <span class='varid'>hPutDocument</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Handle</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span><span class='conid'>()</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span><span class='conid'>()</span>+<a name="line-89"></a> <span class='varid'>hPutDocument</span> <span class='varid'>action</span>+<a name="line-90"></a> <span class='keyglyph'>|</span> <span class='varid'>isStdout</span>+<a name="line-91"></a> <span class='keyglyph'>=</span> <span class='varid'>action</span> <span class='varid'>stdout</span>+<a name="line-92"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-93"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-94"></a> <span class='varid'>handle</span> <span class='keyglyph'><-</span> <span class='varid'>openFile</span> <span class='varid'>dst</span> <span class='conid'>WriteMode</span>+<a name="line-95"></a> <span class='varid'>action</span> <span class='varid'>handle</span>+<a name="line-96"></a> <span class='varid'>hClose</span> <span class='varid'>handle</span> <a name="line-97"></a> <a name="line-98"></a><span class='comment'>-- |</span>-<a name="line-99"></a><span class='comment'>-- write a document with indentaion and line numers</span>+<a name="line-99"></a><span class='comment'>-- write the tree representation of a document to a file</span> <a name="line-100"></a>-<a name="line-101"></a><a name="putXmlSource"></a><span class='definition'>putXmlSource</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-102"></a><span class='definition'>putXmlSource</span> <span class='varid'>dst</span>-<a name="line-103"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>this</span> <span class='layout'>)</span> <span class='varop'>`whenNot`</span> <span class='varid'>isRoot</span>+<a name="line-101"></a><a name="putXmlTree"></a><span class='definition'>putXmlTree</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-102"></a><span class='definition'>putXmlTree</span> <span class='varid'>dst</span>+<a name="line-103"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>treeRepOfXmlDoc</span> <a name="line-104"></a> <span class='varop'>>>></span>-<a name="line-105"></a> <span class='varid'>indentDoc</span>-<a name="line-106"></a> <span class='varop'>>>></span>-<a name="line-107"></a> <span class='varid'>numberLinesInXmlDoc</span>-<a name="line-108"></a> <span class='varop'>>>></span>-<a name="line-109"></a> <span class='varid'>addHeadlineToXmlDoc</span>-<a name="line-110"></a> <span class='varop'>>>></span>-<a name="line-111"></a> <span class='varid'>putXmlDocument</span> <span class='varid'>dst</span>-<a name="line-112"></a> <span class='layout'>)</span>-<a name="line-113"></a>-<a name="line-114"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-115"></a>-<a name="line-116"></a><a name="getOutputEncoding"></a><span class='definition'>getOutputEncoding</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>String</span>-<a name="line-117"></a><span class='definition'>getOutputEncoding</span> <span class='varid'>defaultEnc</span>-<a name="line-118"></a> <span class='keyglyph'>=</span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='varid'>getChildren</span> <span class='comment'>-- 1. guess: evaluate <?xml ... encoding="..."?></span>-<a name="line-119"></a> <span class='varop'>>>></span>-<a name="line-120"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>isPi</span> <span class='varop'>>>></span> <span class='varid'>hasName</span> <span class='varid'>t_xml</span> <span class='layout'>)</span>-<a name="line-121"></a> <span class='varop'>`guards`</span>-<a name="line-122"></a> <span class='varid'>getAttrValue</span> <span class='varid'>a_encoding</span>-<a name="line-123"></a> <span class='layout'>)</span>-<a name="line-124"></a> <span class='layout'>,</span> <span class='varid'>constA</span> <span class='varid'>defaultEnc</span> <span class='comment'>-- 2. guess: explicit parameter, may be ""</span>-<a name="line-125"></a> <span class='layout'>,</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_output_encoding</span> <span class='comment'>-- 3. guess: take output encoding parameter in root node</span>-<a name="line-126"></a> <span class='layout'>,</span> <span class='varid'>getParamString</span> <span class='varid'>a_output_encoding</span> <span class='comment'>-- 4. guess: take output encoding parameter in global state</span>-<a name="line-127"></a> <span class='layout'>,</span> <span class='varid'>getParamString</span> <span class='varid'>a_encoding</span> <span class='comment'>-- 5. guess: take encoding parameter in global state</span>-<a name="line-128"></a> <span class='layout'>,</span> <span class='varid'>constA</span> <span class='varid'>utf8</span> <span class='comment'>-- default : utf8</span>-<a name="line-129"></a> <span class='keyglyph'>]</span>-<a name="line-130"></a> <span class='varop'>>.</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span><span class='layout'>)</span> <span class='comment'>-- make the filter deterministic: take 1. entry from list of guesses</span>-<a name="line-131"></a>-<a name="line-132"></a><a name="encodeDocument"></a><span class='definition'>encodeDocument</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-133"></a><span class='definition'>encodeDocument</span> <span class='varid'>supressXmlPi</span> <span class='varid'>defaultEnc</span>-<a name="line-134"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>getOutputEncoding</span> <span class='varid'>defaultEnc</span>-<a name="line-135"></a> <span class='varop'>>>></span>-<a name="line-136"></a> <span class='varid'>arr</span> <span class='varid'>encArr</span>-<a name="line-137"></a> <span class='layout'>)</span>-<a name="line-138"></a> <span class='varop'>`when`</span>-<a name="line-139"></a> <span class='varid'>isRoot</span>-<a name="line-140"></a> <span class='keyword'>where</span>-<a name="line-141"></a> <span class='varid'>encArr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-142"></a> <span class='varid'>encArr</span> <span class='varid'>enc</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>notFound</span> <span class='varid'>found</span> <span class='varop'>.</span> <span class='varid'>getOutputEncodingFct</span> <span class='varop'>$</span> <span class='varid'>enc</span>-<a name="line-143"></a> <span class='keyword'>where</span>-<a name="line-144"></a> <span class='varid'>found</span> <span class='varid'>ef</span> <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"encodeDocument: encoding is "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>-<a name="line-145"></a> <span class='varop'>>>></span>-<a name="line-146"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>supressXmlPi</span>-<a name="line-147"></a> <span class='keyword'>then</span> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isXmlPi</span><span class='layout'>)</span>-<a name="line-148"></a> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='varid'>addXmlPi</span>-<a name="line-149"></a> <span class='varop'>>>></span>-<a name="line-150"></a> <span class='varid'>addXmlPiEncoding</span> <span class='varid'>enc</span>-<a name="line-151"></a> <span class='layout'>)</span>-<a name="line-152"></a> <span class='layout'>)</span>-<a name="line-153"></a> <span class='varop'>>>></span>-<a name="line-154"></a> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>-<a name="line-155"></a> <span class='varop'>>>></span>-<a name="line-156"></a> <span class='varid'>arr</span> <span class='varid'>ef</span>-<a name="line-157"></a> <span class='varop'>>>></span>-<a name="line-158"></a> <span class='varid'>mkText</span>-<a name="line-159"></a> <span class='layout'>)</span>-<a name="line-160"></a> <span class='varop'>>>></span>-<a name="line-161"></a> <span class='varid'>addAttr</span> <span class='varid'>a_output_encoding</span> <span class='varid'>enc</span>-<a name="line-162"></a>-<a name="line-163"></a> <span class='varid'>notFound</span> <span class='keyglyph'>=</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='str'>"encoding scheme not supported: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>-<a name="line-164"></a> <span class='varop'>>>></span>-<a name="line-165"></a> <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"encoding document"</span>-<a name="line-166"></a>-<a name="line-167"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-105"></a> <span class='varid'>addHeadlineToXmlDoc</span>+<a name="line-106"></a> <span class='varop'>>>></span>+<a name="line-107"></a> <span class='varid'>putXmlDocument</span> <span class='varid'>dst</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><span class='comment'>-- write a document with indentaion and line numers</span>+<a name="line-112"></a>+<a name="line-113"></a><a name="putXmlSource"></a><span class='definition'>putXmlSource</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-114"></a><span class='definition'>putXmlSource</span> <span class='varid'>dst</span>+<a name="line-115"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>this</span> <span class='layout'>)</span> <span class='varop'>`whenNot`</span> <span class='varid'>isRoot</span>+<a name="line-116"></a> <span class='varop'>>>></span>+<a name="line-117"></a> <span class='varid'>indentDoc</span>+<a name="line-118"></a> <span class='varop'>>>></span>+<a name="line-119"></a> <span class='varid'>numberLinesInXmlDoc</span>+<a name="line-120"></a> <span class='varop'>>>></span>+<a name="line-121"></a> <span class='varid'>addHeadlineToXmlDoc</span>+<a name="line-122"></a> <span class='varop'>>>></span>+<a name="line-123"></a> <span class='varid'>putXmlDocument</span> <span class='varid'>dst</span>+<a name="line-124"></a> <span class='layout'>)</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><a name="getOutputEncoding"></a><span class='definition'>getOutputEncoding</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>String</span>+<a name="line-129"></a><span class='definition'>getOutputEncoding</span> <span class='varid'>defaultEnc</span>+<a name="line-130"></a> <span class='keyglyph'>=</span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='varid'>getChildren</span> <span class='comment'>-- 1. guess: evaluate <?xml ... encoding="..."?></span>+<a name="line-131"></a> <span class='varop'>>>></span>+<a name="line-132"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>isPi</span> <span class='varop'>>>></span> <span class='varid'>hasName</span> <span class='varid'>t_xml</span> <span class='layout'>)</span>+<a name="line-133"></a> <span class='varop'>`guards`</span>+<a name="line-134"></a> <span class='varid'>getAttrValue</span> <span class='varid'>a_encoding</span>+<a name="line-135"></a> <span class='layout'>)</span>+<a name="line-136"></a> <span class='layout'>,</span> <span class='varid'>constA</span> <span class='varid'>defaultEnc</span> <span class='comment'>-- 2. guess: explicit parameter, may be ""</span>+<a name="line-137"></a> <span class='layout'>,</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_output_encoding</span> <span class='comment'>-- 3. guess: take output encoding parameter in root node</span>+<a name="line-138"></a> <span class='layout'>,</span> <span class='varid'>getParamString</span> <span class='varid'>a_output_encoding</span> <span class='comment'>-- 4. guess: take output encoding parameter in global state</span>+<a name="line-139"></a> <span class='layout'>,</span> <span class='varid'>getParamString</span> <span class='varid'>a_encoding</span> <span class='comment'>-- 5. guess: take encoding parameter in global state</span>+<a name="line-140"></a> <span class='layout'>,</span> <span class='varid'>constA</span> <span class='varid'>utf8</span> <span class='comment'>-- default : utf8</span>+<a name="line-141"></a> <span class='keyglyph'>]</span>+<a name="line-142"></a> <span class='varop'>>.</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span><span class='layout'>)</span> <span class='comment'>-- make the filter deterministic: take 1. entry from list of guesses</span>+<a name="line-143"></a>+<a name="line-144"></a><a name="encodeDocument"></a><span class='definition'>encodeDocument</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-145"></a><span class='definition'>encodeDocument</span> <span class='varid'>supressXmlPi</span> <span class='varid'>defaultEnc</span>+<a name="line-146"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>getOutputEncoding</span> <span class='varid'>defaultEnc</span>+<a name="line-147"></a> <span class='varop'>>>></span>+<a name="line-148"></a> <span class='varid'>arr</span> <span class='varid'>encArr</span>+<a name="line-149"></a> <span class='layout'>)</span>+<a name="line-150"></a> <span class='varop'>`when`</span>+<a name="line-151"></a> <span class='varid'>isRoot</span>+<a name="line-152"></a> <span class='keyword'>where</span>+<a name="line-153"></a> <span class='varid'>encArr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-154"></a> <span class='varid'>encArr</span> <span class='varid'>enc</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>notFound</span> <span class='varid'>found</span> <span class='varop'>.</span> <span class='varid'>getOutputEncodingFct</span> <span class='varop'>$</span> <span class='varid'>enc</span>+<a name="line-155"></a> <span class='keyword'>where</span>+<a name="line-156"></a> <span class='varid'>found</span> <span class='varid'>ef</span> <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"encodeDocument: encoding is "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>+<a name="line-157"></a> <span class='varop'>>>></span>+<a name="line-158"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>supressXmlPi</span>+<a name="line-159"></a> <span class='keyword'>then</span> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isXmlPi</span><span class='layout'>)</span>+<a name="line-160"></a> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='varid'>addXmlPi</span>+<a name="line-161"></a> <span class='varop'>>>></span>+<a name="line-162"></a> <span class='varid'>addXmlPiEncoding</span> <span class='varid'>enc</span>+<a name="line-163"></a> <span class='layout'>)</span>+<a name="line-164"></a> <span class='layout'>)</span>+<a name="line-165"></a> <span class='varop'>>>></span>+<a name="line-166"></a> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>+<a name="line-167"></a> <span class='varop'>>>></span>+<a name="line-168"></a> <span class='varid'>arr</span> <span class='varid'>ef</span>+<a name="line-169"></a> <span class='varop'>>>></span>+<a name="line-170"></a> <span class='varid'>mkText</span>+<a name="line-171"></a> <span class='layout'>)</span>+<a name="line-172"></a> <span class='varop'>>>></span>+<a name="line-173"></a> <span class='varid'>addAttr</span> <span class='varid'>a_output_encoding</span> <span class='varid'>enc</span>+<a name="line-174"></a>+<a name="line-175"></a> <span class='varid'>notFound</span> <span class='keyglyph'>=</span> <span class='varid'>issueFatal</span> <span class='layout'>(</span><span class='str'>"encoding scheme not supported: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>enc</span><span class='layout'>)</span>+<a name="line-176"></a> <span class='varop'>>>></span>+<a name="line-177"></a> <span class='varid'>setDocumentStatusFromSystemState</span> <span class='str'>"encoding document"</span>+<a name="line-178"></a>+<a name="line-179"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-Arrow-Edit.html view
@@ -10,771 +10,788 @@ <a name="line-2"></a> <a name="line-3"></a><span class='comment'>{- | <a name="line-4"></a> Module : Text.XML.HXT.Arrow.Edit-<a name="line-5"></a> Copyright : Copyright (C) 2006 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> common edit arrows-<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'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>-<a name="line-19"></a> <span class='layout'>(</span> <span class='varid'>canonicalizeAllNodes</span>-<a name="line-20"></a> <span class='layout'>,</span> <span class='varid'>canonicalizeForXPath</span>-<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>canonicalizeContents</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>collapseAllXText</span>-<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>collapseXText</span>-<a name="line-24"></a>-<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>xshowEscapeXml</span>-<a name="line-26"></a>-<a name="line-27"></a> <span class='layout'>,</span> <span class='varid'>escapeXmlDoc</span>-<a name="line-28"></a> <span class='layout'>,</span> <span class='varid'>escapeHtmlDoc</span>-<a name="line-29"></a>-<a name="line-30"></a> <span class='layout'>,</span> <span class='varid'>haskellRepOfXmlDoc</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'>addHeadlineToXmlDoc</span>-<a name="line-33"></a>-<a name="line-34"></a> <span class='layout'>,</span> <span class='varid'>indentDoc</span>-<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>numberLinesInXmlDoc</span>-<a name="line-36"></a> -<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>removeComment</span>-<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>removeAllComment</span>-<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>removeWhiteSpace</span>-<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>removeAllWhiteSpace</span>-<a name="line-41"></a> <span class='layout'>,</span> <span class='varid'>removeDocWhiteSpace</span>-<a name="line-42"></a>-<a name="line-43"></a> <span class='layout'>,</span> <span class='varid'>transfCdata</span>-<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>transfAllCdata</span>-<a name="line-45"></a> <span class='layout'>,</span> <span class='varid'>transfCharRef</span>-<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>transfAllCharRef</span>-<a name="line-47"></a>-<a name="line-48"></a> <span class='layout'>,</span> <span class='varid'>hasXmlPi</span>-<a name="line-49"></a> <span class='layout'>,</span> <span class='varid'>addXmlPi</span>-<a name="line-50"></a> <span class='layout'>,</span> <span class='varid'>addXmlPiEncoding</span>-<a name="line-51"></a>-<a name="line-52"></a> <span class='layout'>,</span> <span class='varid'>addDoctypeDecl</span>-<a name="line-53"></a> <span class='layout'>,</span> <span class='varid'>addXHtmlDoctypeStrict</span>-<a name="line-54"></a> <span class='layout'>,</span> <span class='varid'>addXHtmlDoctypeTransitional</span>-<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>addXHtmlDoctypeFrameset</span>-<a name="line-56"></a> <span class='layout'>)</span>-<a name="line-57"></a><span class='keyword'>where</span>-<a name="line-58"></a>-<a name="line-59"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span>-<a name="line-60"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>-<a name="line-61"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>-<a name="line-62"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>-<a name="line-63"></a>-<a name="line-64"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrow</span>-<a name="line-65"></a>-<a name="line-66"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>-<a name="line-67"></a>-<a name="line-68"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>-<a name="line-69"></a>-<a name="line-70"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span>-<a name="line-71"></a> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span> <span class='keyword'>as</span> <span class='conid'>XN</span>-<a name="line-72"></a>-<a name="line-73"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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-74"></a> <span class='layout'>(</span> <span class='varid'>isXmlSpaceChar</span> <span class='layout'>)</span>-<a name="line-75"></a>-<a name="line-76"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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-77"></a> <span class='layout'>(</span> <span class='varid'>formatXmlTree</span> <span class='layout'>)</span>-<a name="line-78"></a>-<a name="line-79"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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-80"></a> <span class='layout'>(</span> <span class='varid'>xmlEntities</span> <span class='layout'>)</span>-<a name="line-81"></a>-<a name="line-82"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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-83"></a> <span class='layout'>(</span> <span class='varid'>xhtmlEntities</span> <span class='layout'>)</span>-<a name="line-84"></a>-<a name="line-85"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-86"></a>-<a name="line-87"></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-88"></a>-<a name="line-89"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-90"></a>-<a name="line-91"></a><span class='comment'>-- |</span>-<a name="line-92"></a><span class='comment'>-- Applies some "Canonical XML" rules to a document tree.</span>-<a name="line-93"></a><span class='comment'>--</span>-<a name="line-94"></a><span class='comment'>-- The rule differ slightly for canonical XML and XPath in handling of comments</span>-<a name="line-95"></a><span class='comment'>--</span>-<a name="line-96"></a><span class='comment'>-- Note: This is not the whole canonicalization as it is specified by the W3C</span>-<a name="line-97"></a><span class='comment'>-- Recommendation. Adding attribute defaults or sorting attributes in lexicographic</span>-<a name="line-98"></a><span class='comment'>-- order is done by the @transform@ function of module @Text.XML.HXT.Validator.Validation@.</span>-<a name="line-99"></a><span class='comment'>-- Replacing entities or line feed normalization is done by the parser.</span>-<a name="line-100"></a><span class='comment'>--</span>-<a name="line-101"></a><span class='comment'>--</span>-<a name="line-102"></a><span class='comment'>-- Not implemented yet:</span>-<a name="line-103"></a><span class='comment'>--</span>-<a name="line-104"></a><span class='comment'>-- - Whitespace within start and end tags is normalized</span>-<a name="line-105"></a><span class='comment'>--</span>-<a name="line-106"></a><span class='comment'>-- - Special characters in attribute values and character content are replaced by character references</span>-<a name="line-107"></a><span class='comment'>--</span>-<a name="line-108"></a><span class='comment'>-- see 'canonicalizeAllNodes' and 'canonicalizeForXPath'</span>-<a name="line-109"></a>-<a name="line-110"></a><a name="canonicalizeTree'"></a><span class='definition'>canonicalizeTree'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-111"></a><span class='definition'>canonicalizeTree'</span> <span class='varid'>toBeRemoved</span>-<a name="line-112"></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'>isText</span><span class='layout'>)</span>-<a name="line-113"></a> <span class='varop'>>>></span>-<a name="line-114"></a> <span class='varid'>processBottomUp</span> <span class='varid'>canonicalize1Node</span>-<a name="line-115"></a> <span class='keyword'>where</span>-<a name="line-116"></a> <span class='varid'>canonicalize1Node</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-117"></a> <span class='varid'>canonicalize1Node</span>-<a name="line-118"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>deep</span> <span class='varid'>isPi</span> <span class='varop'>`when`</span> <span class='varid'>isDTD</span><span class='layout'>)</span> <span class='comment'>-- remove DTD parts, except PIs</span>-<a name="line-119"></a> <span class='varop'>>>></span>-<a name="line-120"></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-121"></a> <span class='varop'>>>></span>-<a name="line-122"></a> <span class='layout'>(</span> <span class='varid'>processAttrl</span> <span class='layout'>(</span> <span class='varid'>processChildren</span> <span class='varid'>transfCharRef</span>-<a name="line-123"></a> <span class='varop'>>>></span>-<a name="line-124"></a> <span class='varid'>collapseXText</span>-<a name="line-125"></a> <span class='layout'>)</span>-<a name="line-126"></a> <span class='varop'>`when`</span> <span class='varid'>isElem</span>-<a name="line-127"></a> <span class='layout'>)</span>-<a name="line-128"></a> <span class='varop'>>>></span>-<a name="line-129"></a> <span class='varid'>transfCdata</span> <span class='comment'>-- CDATA -> text</span>-<a name="line-130"></a> <span class='varop'>>>></span>-<a name="line-131"></a> <span class='varid'>transfCharRef</span> <span class='comment'>-- Char refs -> text</span>-<a name="line-132"></a> <span class='varop'>>>></span>-<a name="line-133"></a> <span class='varid'>collapseXText</span> <span class='comment'>-- combine text</span>-<a name="line-134"></a>-<a name="line-135"></a>-<a name="line-136"></a><span class='comment'>-- |</span>-<a name="line-137"></a><span class='comment'>-- Applies some "Canonical XML" rules to a document tree.</span>-<a name="line-138"></a><span class='comment'>--</span>-<a name="line-139"></a><span class='comment'>-- The rule differ slightly for canonical XML and XPath in handling of comments</span>-<a name="line-140"></a><span class='comment'>--</span>-<a name="line-141"></a><span class='comment'>-- Note: This is not the whole canonicalization as it is specified by the W3C</span>-<a name="line-142"></a><span class='comment'>-- Recommendation. Adding attribute defaults or sorting attributes in lexicographic</span>-<a name="line-143"></a><span class='comment'>-- order is done by the @transform@ function of module @Text.XML.HXT.Validator.Validation@.</span>-<a name="line-144"></a><span class='comment'>-- Replacing entities or line feed normalization is done by the parser.</span>-<a name="line-145"></a><span class='comment'>--</span>-<a name="line-146"></a><span class='comment'>-- Rules: remove DTD parts, processing instructions, comments and substitute char refs in attribute</span>-<a name="line-147"></a><span class='comment'>-- values and text</span>-<a name="line-148"></a><span class='comment'>--</span>-<a name="line-149"></a><span class='comment'>-- Not implemented yet:</span>-<a name="line-150"></a><span class='comment'>--</span>-<a name="line-151"></a><span class='comment'>-- - Whitespace within start and end tags is normalized</span>-<a name="line-152"></a><span class='comment'>--</span>-<a name="line-153"></a><span class='comment'>-- - Special characters in attribute values and character content are replaced by character references</span>-<a name="line-154"></a>-<a name="line-155"></a><a name="canonicalizeAllNodes"></a><span class='definition'>canonicalizeAllNodes</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-156"></a><span class='definition'>canonicalizeAllNodes</span>-<a name="line-157"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-158"></a> <span class='varid'>canonicalizeTree'</span> <span class='layout'>(</span> <span class='varid'>isCmt</span> <span class='comment'>-- remove comment</span>-<a name="line-159"></a> <span class='varop'><+></span>-<a name="line-160"></a> <span class='varid'>isXmlPi</span> <span class='comment'>-- remove xml declaration</span>-<a name="line-161"></a> <span class='layout'>)</span>-<a name="line-162"></a>-<a name="line-163"></a><span class='comment'>-- |</span>-<a name="line-164"></a><span class='comment'>-- Canonicalize a tree for XPath</span>-<a name="line-165"></a><span class='comment'>-- Like 'canonicalizeAllNodes' but comment nodes are not removed</span>-<a name="line-166"></a><span class='comment'>--</span>-<a name="line-167"></a><span class='comment'>-- see 'canonicalizeAllNodes'</span>-<a name="line-168"></a>-<a name="line-169"></a><a name="canonicalizeForXPath"></a><span class='definition'>canonicalizeForXPath</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-170"></a><span class='definition'>canonicalizeForXPath</span>-<a name="line-171"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-172"></a> <span class='varid'>canonicalizeTree'</span> <span class='varid'>isXmlPi</span>-<a name="line-173"></a>-<a name="line-174"></a><span class='comment'>-- |</span>-<a name="line-175"></a><span class='comment'>-- Canonicalize the contents of a document</span>-<a name="line-176"></a><span class='comment'>--</span>-<a name="line-177"></a><span class='comment'>-- substitutes all char refs in text and attribute values,</span>-<a name="line-178"></a><span class='comment'>-- removes CDATA section and combines all sequences of resulting text</span>-<a name="line-179"></a><span class='comment'>-- nodes into a single text node</span>-<a name="line-180"></a><span class='comment'>--</span>-<a name="line-181"></a><span class='comment'>-- see 'canonicalizeAllNodes'</span>-<a name="line-182"></a>-<a name="line-183"></a><a name="canonicalizeContents"></a><span class='definition'>canonicalizeContents</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-184"></a><span class='definition'>canonicalizeContents</span>-<a name="line-185"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-186"></a> <span class='varid'>processBottomUp</span> <span class='varid'>canonicalize1Node</span>-<a name="line-187"></a> <span class='keyword'>where</span>-<a name="line-188"></a> <span class='varid'>canonicalize1Node</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-189"></a> <span class='varid'>canonicalize1Node</span>-<a name="line-190"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>processAttrl</span> <span class='layout'>(</span> <span class='varid'>processChildren</span> <span class='varid'>transfCharRef</span>-<a name="line-191"></a> <span class='varop'>>>></span>-<a name="line-192"></a> <span class='varid'>collapseXText</span>-<a name="line-193"></a> <span class='layout'>)</span>-<a name="line-194"></a> <span class='varop'>`when`</span> <span class='varid'>isElem</span>-<a name="line-195"></a> <span class='layout'>)</span>-<a name="line-196"></a> <span class='varop'>>>></span>-<a name="line-197"></a> <span class='varid'>transfCdata</span> <span class='comment'>-- CDATA -> text</span>-<a name="line-198"></a> <span class='varop'>>>></span>-<a name="line-199"></a> <span class='varid'>transfCharRef</span> <span class='comment'>-- Char refs -> text</span>-<a name="line-200"></a> <span class='varop'>>>></span>-<a name="line-201"></a> <span class='varid'>collapseXText</span> <span class='comment'>-- combine text</span>-<a name="line-202"></a>-<a name="line-203"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-204"></a>-<a name="line-205"></a><a name="collapseXText'"></a><span class='definition'>collapseXText'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-206"></a><span class='definition'>collapseXText'</span>-<a name="line-207"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='varid'>listA</span> <span class='varid'>getChildren</span> <span class='varop'>>>></span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>foldr</span> <span class='varid'>mergeText'</span> <span class='conid'>[]</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-208"></a> <span class='keyword'>where</span>-<a name="line-209"></a> <span class='varid'>mergeText'</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'>XmlTrees</span>-<a name="line-210"></a> <span class='varid'>mergeText'</span> <span class='varid'>t1</span> <span class='layout'>(</span><span class='varid'>t2</span> <span class='conop'>:</span> <span class='varid'>ts2</span><span class='layout'>)</span>-<a name="line-211"></a> <span class='keyglyph'>|</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>isText</span> <span class='varid'>t1</span> <span class='varop'>&&</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>isText</span> <span class='varid'>t2</span>-<a name="line-212"></a> <span class='keyglyph'>=</span> <span class='keyword'>let</span>-<a name="line-213"></a> <span class='varid'>s1</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span> <span class='varop'>$</span> <span class='varid'>t1</span>-<a name="line-214"></a> <span class='varid'>s2</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span> <span class='varop'>$</span> <span class='varid'>t2</span>-<a name="line-215"></a> <span class='varid'>t</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='layout'>(</span><span class='varid'>s1</span> <span class='varop'>++</span> <span class='varid'>s2</span><span class='layout'>)</span>-<a name="line-216"></a> <span class='keyword'>in</span>-<a name="line-217"></a> <span class='varid'>t</span> <span class='conop'>:</span> <span class='varid'>ts2</span>-<a name="line-218"></a> <span class='varid'>mergeText'</span> <span class='varid'>t1</span> <span class='varid'>ts</span>-<a name="line-219"></a> <span class='keyglyph'>=</span> <span class='varid'>t1</span> <span class='conop'>:</span> <span class='varid'>ts</span>-<a name="line-220"></a>-<a name="line-221"></a><span class='comment'>-- |</span>-<a name="line-222"></a><span class='comment'>-- Collects sequences of text nodes in the list of children of a node into one single text node.</span>-<a name="line-223"></a><span class='comment'>-- This is useful, e.g. after char and entity reference substitution</span>-<a name="line-224"></a>-<a name="line-225"></a><a name="collapseXText"></a><span class='definition'>collapseXText</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-226"></a><span class='definition'>collapseXText</span>-<a name="line-227"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-228"></a> <span class='varid'>collapseXText'</span>-<a name="line-229"></a>-<a name="line-230"></a><span class='comment'>-- |</span>-<a name="line-231"></a><span class='comment'>-- Applies collapseXText recursively.</span>-<a name="line-232"></a><span class='comment'>--</span>-<a name="line-233"></a><span class='comment'>--</span>-<a name="line-234"></a><span class='comment'>-- see also : 'collapseXText'</span>-<a name="line-235"></a>-<a name="line-236"></a><a name="collapseAllXText"></a><span class='definition'>collapseAllXText</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-237"></a><span class='definition'>collapseAllXText</span>-<a name="line-238"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-239"></a> <span class='varid'>processBottomUp</span> <span class='varid'>collapseXText'</span>-<a name="line-240"></a>-<a name="line-241"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-242"></a>-<a name="line-243"></a><span class='comment'>-- | apply an arrow to the input and convert the resulting XML trees into an XML escaped string</span>-<a name="line-244"></a><span class='comment'>--</span>-<a name="line-245"></a><span class='comment'>-- This is a save variant for converting a tree into an XML string representation that is parsable with 'Text.XML.HXT.Arrow.ReadDocument'.</span>-<a name="line-246"></a><span class='comment'>-- It is implemented with 'Text.XML.HXT.Arrow.XmlArrow.xshow', but xshow does no XML escaping. The XML escaping is done with</span>-<a name="line-247"></a><span class='comment'>-- 'Text.XML.HXT.Arrow.Edit.escapeXmlDoc' before xshow is applied.</span>-<a name="line-248"></a><span class='comment'>--</span>-<a name="line-249"></a><span class='comment'>-- So the following law holds</span>-<a name="line-250"></a><span class='comment'>--</span>-<a name="line-251"></a><span class='comment'>-- > xshowEscape f >>> xread == f</span>-<a name="line-252"></a>-<a name="line-253"></a><a name="xshowEscapeXml"></a><span class='definition'>xshowEscapeXml</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>String</span>-<a name="line-254"></a><span class='definition'>xshowEscapeXml</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varop'>>>></span> <span class='varid'>escapeXmlDoc</span><span class='layout'>)</span>-<a name="line-255"></a>-<a name="line-256"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-257"></a>-<a name="line-258"></a><span class='comment'>-- |</span>-<a name="line-259"></a><span class='comment'>-- escape XmlText,</span>-<a name="line-260"></a><span class='comment'>-- transform all special XML chars into char- or entity- refs</span>-<a name="line-261"></a>-<a name="line-262"></a><a name="EntityRefTable"></a><span class='keyword'>type</span> <span class='conid'>EntityRefTable</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>Int</span> <span class='conid'>String</span>-<a name="line-263"></a>-<a name="line-264"></a><a name="xmlEntityRefTable"></a><span class='definition'>xmlEntityRefTable</span>-<a name="line-265"></a> <span class='layout'>,</span> <span class='varid'>xhtmlEntityRefTable</span> <span class='keyglyph'>::</span> <span class='conid'>EntityRefTable</span>-<a name="line-266"></a>-<a name="line-267"></a><span class='definition'>xmlEntityRefTable</span> <span class='keyglyph'>=</span> <span class='varid'>buildEntityRefTable</span> <span class='varop'>$</span> <span class='varid'>xmlEntities</span>-<a name="line-268"></a><a name="xhtmlEntityRefTable"></a><span class='definition'>xhtmlEntityRefTable</span> <span class='keyglyph'>=</span> <span class='varid'>buildEntityRefTable</span> <span class='varop'>$</span> <span class='varid'>xhtmlEntities</span>-<a name="line-269"></a>-<a name="line-270"></a><a name="buildEntityRefTable"></a><span class='definition'>buildEntityRefTable</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'>Int</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>EntityRefTable</span>-<a name="line-271"></a><span class='definition'>buildEntityRefTable</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>fromList</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'>x</span><span class='layout'>,</span><span class='varid'>y</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>y</span><span class='layout'>,</span><span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-272"></a>-<a name="line-273"></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'>XmlTree</span><span class='layout'>)</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'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-274"></a><span class='definition'>escapeText''</span> <span class='varid'>escChar</span> <span class='varid'>isEsc</span> <span class='varid'>t</span>-<a name="line-275"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span> <span class='varid'>escape'</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-276"></a> <span class='keyword'>where</span>-<a name="line-277"></a> <span class='varid'>escape'</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span> <span class='comment'>-- empty text nodes remain empty text nodes</span>-<a name="line-278"></a> <span class='varid'>escape'</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>escape</span> <span class='varid'>s</span> <span class='comment'>-- they do not disapear</span>-<a name="line-279"></a>-<a name="line-280"></a> <span class='varid'>escape</span> <span class='str'>""</span>-<a name="line-281"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-282"></a> <span class='varid'>escape</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-283"></a> <span class='keyglyph'>|</span> <span class='varid'>isEsc</span> <span class='varid'>c</span>-<a name="line-284"></a> <span class='keyglyph'>=</span> <span class='varid'>escChar</span> <span class='varid'>c</span> <span class='conop'>:</span> <span class='varid'>escape</span> <span class='varid'>s1</span>-<a name="line-285"></a> <span class='varid'>escape</span> <span class='varid'>s</span>-<a name="line-286"></a> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='varid'>s1</span> <span class='conop'>:</span> <span class='varid'>escape</span> <span class='varid'>s2</span>-<a name="line-287"></a> <span class='keyword'>where</span>-<a name="line-288"></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-289"></a>-<a name="line-290"></a><span class='comment'>{--<a name="line-291"></a>escapeCharRef :: Char -> XmlTree-<a name="line-292"></a>escapeCharRef = XN.mkCharRef . fromEnum-<a name="line-293"></a>-}</span>-<a name="line-294"></a>-<a name="line-295"></a><a name="escapeEntityRef"></a><span class='definition'>escapeEntityRef</span> <span class='keyglyph'>::</span> <span class='conid'>EntityRefTable</span> <span class='keyglyph'>-></span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-296"></a><span class='definition'>escapeEntityRef</span> <span class='varid'>entityTable</span> <span class='varid'>c</span>-<a name="line-297"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkCharRef</span> <span class='varid'>c'</span><span class='layout'>)</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkEntityRef</span> <span class='varop'>.</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>c'</span> <span class='varop'>$</span> <span class='varid'>entityTable</span>-<a name="line-298"></a> <span class='keyword'>where</span>-<a name="line-299"></a> <span class='varid'>c'</span> <span class='keyglyph'>=</span> <span class='varid'>fromEnum</span> <span class='varid'>c</span>-<a name="line-300"></a>-<a name="line-301"></a><a name="escapeXmlEntityRef"></a><span class='definition'>escapeXmlEntityRef</span> <span class='keyglyph'>::</span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-302"></a><span class='definition'>escapeXmlEntityRef</span> <span class='keyglyph'>=</span> <span class='varid'>escapeEntityRef</span> <span class='varid'>xmlEntityRefTable</span>-<a name="line-303"></a>-<a name="line-304"></a><a name="escapeHtmlEntityRef"></a><span class='definition'>escapeHtmlEntityRef</span> <span class='keyglyph'>::</span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-305"></a><span class='definition'>escapeHtmlEntityRef</span> <span class='keyglyph'>=</span> <span class='varid'>escapeEntityRef</span> <span class='varid'>xhtmlEntityRefTable</span>-<a name="line-306"></a>-<a name="line-307"></a><span class='comment'>-- |</span>-<a name="line-308"></a><span class='comment'>-- escape all special XML chars into XML entity references or char references</span>-<a name="line-309"></a><span class='comment'>--</span>-<a name="line-310"></a><span class='comment'>-- convert the special XML chars \< and & in text nodes into prefefiened XML entity references,</span>-<a name="line-311"></a><span class='comment'>-- in attribute values also \', \", \>, \\n, \\r and \\t are converted into entity or char references,</span>-<a name="line-312"></a><span class='comment'>-- in comments nothing is converted (see XML standard 2.4, useful e.g. for JavaScript).</span>-<a name="line-313"></a>-<a name="line-314"></a><a name="escapeXmlDoc"></a><span class='definition'>escapeXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-315"></a><span class='definition'>escapeXmlDoc</span>-<a name="line-316"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>escapeDoc</span> <span class='varid'>escXmlText</span> <span class='varid'>escXmlAttrValue</span>-<a name="line-317"></a> <span class='keyword'>where</span>-<a name="line-318"></a> <span class='varid'>escXmlText</span>-<a name="line-319"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='varop'>$</span> <span class='varid'>escapeText''</span> <span class='varid'>escapeXmlEntityRef</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-320"></a> <span class='varid'>escXmlAttrValue</span>-<a name="line-321"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='varop'>$</span> <span class='varid'>escapeText''</span> <span class='varid'>escapeXmlEntityRef</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='str'>"<>\"\'&\n\r\t"</span><span class='layout'>)</span>-<a name="line-322"></a>-<a name="line-323"></a>-<a name="line-324"></a><span class='comment'>-- |</span>-<a name="line-325"></a><span class='comment'>-- escape all special HTML chars into XHTML entity references or char references</span>-<a name="line-326"></a><span class='comment'>--</span>-<a name="line-327"></a><span class='comment'>-- convert the special XML chars \< and & and all none ASCII chars in text nodes into prefefiened XML or XHTML entity references,</span>-<a name="line-328"></a><span class='comment'>-- in attribute values also \', \", \>, \\n, \\r and \\t are converted into entity or char references,</span>-<a name="line-329"></a><span class='comment'>-- in comments nothing is converted</span>-<a name="line-330"></a>-<a name="line-331"></a><a name="escapeHtmlDoc"></a><span class='definition'>escapeHtmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-332"></a><span class='definition'>escapeHtmlDoc</span>-<a name="line-333"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>escapeDoc</span> <span class='varid'>escHtmlText</span> <span class='varid'>escHtmlAttrValue</span>-<a name="line-334"></a> <span class='keyword'>where</span>-<a name="line-335"></a> <span class='varid'>escHtmlText</span>-<a name="line-336"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='varop'>$</span> <span class='varid'>escapeText''</span> <span class='varid'>escapeHtmlEntityRef</span> <span class='varid'>isHtmlTextEsc</span>-<a name="line-337"></a> <span class='varid'>escHtmlAttrValue</span>-<a name="line-338"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='varop'>$</span> <span class='varid'>escapeText''</span> <span class='varid'>escapeHtmlEntityRef</span> <span class='varid'>isHtmlAttrEsc</span>-<a name="line-339"></a>-<a name="line-340"></a> <span class='varid'>isHtmlTextEsc</span> <span class='varid'>c</span>-<a name="line-341"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>>=</span> <span class='varid'>toEnum</span><span class='layout'>(</span><span class='num'>128</span><span class='layout'>)</span> <span class='varop'>||</span> <span class='layout'>(</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='str'>"<&"</span> <span class='layout'>)</span>-<a name="line-342"></a> <span class='varid'>isHtmlAttrEsc</span> <span class='varid'>c</span>-<a name="line-343"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>>=</span> <span class='varid'>toEnum</span><span class='layout'>(</span><span class='num'>128</span><span class='layout'>)</span> <span class='varop'>||</span> <span class='layout'>(</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='str'>"<>\"\'&\n\r\t"</span> <span class='layout'>)</span>-<a name="line-344"></a>-<a name="line-345"></a><a name="escapeDoc"></a><span class='definition'>escapeDoc</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-346"></a><span class='definition'>escapeDoc</span> <span class='varid'>escText</span> <span class='varid'>escAttr</span>-<a name="line-347"></a> <span class='keyglyph'>=</span> <span class='varid'>escape</span>-<a name="line-348"></a> <span class='keyword'>where</span>-<a name="line-349"></a> <span class='varid'>escape</span>-<a name="line-350"></a> <span class='keyglyph'>=</span> <span class='varid'>choiceA</span>-<a name="line-351"></a> <span class='keyglyph'>[</span> <span class='varid'>isElem</span> <span class='conop'>:-></span> <span class='layout'>(</span> <span class='varid'>processChildren</span> <span class='varid'>escape</span>-<a name="line-352"></a> <span class='varop'>>>></span>-<a name="line-353"></a> <span class='varid'>processAttrl</span> <span class='varid'>escVal</span>-<a name="line-354"></a> <span class='layout'>)</span>-<a name="line-355"></a> <span class='layout'>,</span> <span class='varid'>isText</span> <span class='conop'>:-></span> <span class='varid'>escText</span>-<a name="line-356"></a> <span class='comment'>-- , isCmt :-> escCmt</span>-<a name="line-357"></a> <span class='layout'>,</span> <span class='varid'>isDTD</span> <span class='conop'>:-></span> <span class='varid'>processTopDown</span> <span class='varid'>escDTD</span>-<a name="line-358"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>-<a name="line-359"></a> <span class='keyglyph'>]</span>-<a name="line-360"></a> <span class='varid'>escVal</span> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='varid'>escAttr</span>-<a name="line-361"></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'>isDTDEntity</span> <span class='varop'><+></span> <span class='varid'>isDTDPEntity</span> <span class='layout'>)</span>-<a name="line-362"></a>-<a name="line-363"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-364"></a>-<a name="line-365"></a><span class='comment'>-- |</span>-<a name="line-366"></a><span class='comment'>-- convert a document into a Haskell representation (with show).</span>-<a name="line-367"></a><span class='comment'>--</span>-<a name="line-368"></a><span class='comment'>-- Useful for debugging and trace output.</span>-<a name="line-369"></a><span class='comment'>-- see also : 'treeRepOfXmlDoc', 'numberLinesInXmlDoc'</span>-<a name="line-370"></a>-<a name="line-371"></a><a name="haskellRepOfXmlDoc"></a><span class='definition'>haskellRepOfXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-372"></a><span class='definition'>haskellRepOfXmlDoc</span>-<a name="line-373"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-374"></a> <span class='varid'>root</span> <span class='keyglyph'>[</span><span class='varid'>getAttrl</span><span class='keyglyph'>]</span> <span class='keyglyph'>[</span><span class='varid'>show</span> <span class='varop'>^>></span> <span class='varid'>mkText</span><span class='keyglyph'>]</span>-<a name="line-375"></a>-<a name="line-376"></a><span class='comment'>-- |</span>-<a name="line-377"></a><span class='comment'>-- convert a document into a text and add line numbers to the text representation.</span>-<a name="line-378"></a><span class='comment'>-- </span>-<a name="line-379"></a><span class='comment'>-- Result is a root node with a single text node as child.</span>-<a name="line-380"></a><span class='comment'>-- Useful for debugging and trace output.</span>-<a name="line-381"></a><span class='comment'>-- see also : 'haskellRepOfXmlDoc', 'treeRepOfXmlDoc'</span>-<a name="line-382"></a>-<a name="line-383"></a><a name="numberLinesInXmlDoc"></a><span class='definition'>numberLinesInXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-384"></a><span class='definition'>numberLinesInXmlDoc</span>-<a name="line-385"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-386"></a> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>changeText</span> <span class='varid'>numberLines</span><span class='layout'>)</span>-<a name="line-387"></a> <span class='keyword'>where</span>-<a name="line-388"></a> <span class='varid'>numberLines</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-389"></a> <span class='varid'>numberLines</span> <span class='varid'>str</span>-<a name="line-390"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>$</span>-<a name="line-391"></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-392"></a> <span class='keyword'>where</span>-<a name="line-393"></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-394"></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-395"></a>-<a name="line-396"></a><span class='comment'>-- |</span>-<a name="line-397"></a><span class='comment'>-- convert a document into a text representation in tree form.</span>-<a name="line-398"></a><span class='comment'>--</span>-<a name="line-399"></a><span class='comment'>-- Useful for debugging and trace output.</span>-<a name="line-400"></a><span class='comment'>-- see also : 'haskellRepOfXmlDoc', 'numberLinesInXmlDoc'</span>-<a name="line-401"></a>-<a name="line-402"></a><a name="treeRepOfXmlDoc"></a><span class='definition'>treeRepOfXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-403"></a><span class='definition'>treeRepOfXmlDoc</span>-<a name="line-404"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-405"></a> <span class='varid'>root</span> <span class='keyglyph'>[</span><span class='varid'>getAttrl</span><span class='keyglyph'>]</span> <span class='keyglyph'>[</span><span class='varid'>formatXmlTree</span> <span class='varop'>^>></span> <span class='varid'>mkText</span><span class='keyglyph'>]</span>-<a name="line-406"></a>-<a name="line-407"></a><a name="addHeadlineToXmlDoc"></a><span class='definition'>addHeadlineToXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-408"></a><span class='definition'>addHeadlineToXmlDoc</span>-<a name="line-409"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='layout'>(</span> <span class='varid'>addTitle</span> <span class='varop'>$<</span> <span class='layout'>(</span><span class='varid'>getAttrValue</span> <span class='varid'>a_source</span> <span class='varop'>>>^</span> <span class='varid'>formatTitle</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-410"></a> <span class='keyword'>where</span>-<a name="line-411"></a> <span class='varid'>addTitle</span> <span class='varid'>str</span>-<a name="line-412"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='varid'>txt</span> <span class='varid'>str</span> <span class='varop'><+></span> <span class='varid'>getChildren</span> <span class='varop'><+></span> <span class='varid'>txt</span> <span class='str'>"\n"</span> <span class='layout'>)</span>-<a name="line-413"></a> <span class='varid'>formatTitle</span> <span class='varid'>str</span>-<a name="line-414"></a> <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-415"></a> <span class='keyword'>where</span>-<a name="line-416"></a> <span class='varid'>headline</span> <span class='keyglyph'>=</span> <span class='str'>"content of: "</span> <span class='varop'>++</span> <span class='varid'>str</span>-<a name="line-417"></a> <span class='varid'>underline</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='chr'>'='</span><span class='layout'>)</span> <span class='varid'>headline</span>-<a name="line-418"></a>-<a name="line-419"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-420"></a>-<a name="line-421"></a><a name="removeComment'"></a><span class='definition'>removeComment'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-422"></a><span class='definition'>removeComment'</span> <span class='keyglyph'>=</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isCmt</span>-<a name="line-423"></a>-<a name="line-424"></a><span class='comment'>-- |</span>-<a name="line-425"></a><span class='comment'>-- remove Comments: @none `when` isCmt@</span>-<a name="line-426"></a>-<a name="line-427"></a><a name="removeComment"></a><span class='definition'>removeComment</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-428"></a><span class='definition'>removeComment</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>removeComment'</span>-<a name="line-429"></a>-<a name="line-430"></a><span class='comment'>-- |</span>-<a name="line-431"></a><span class='comment'>-- remove all comments recursively</span>-<a name="line-432"></a>-<a name="line-433"></a><a name="removeAllComment"></a><span class='definition'>removeAllComment</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-434"></a><span class='definition'>removeAllComment</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>processBottomUp</span> <span class='varid'>removeComment'</span>-<a name="line-435"></a>-<a name="line-436"></a><span class='comment'>-- ----------</span>-<a name="line-437"></a>-<a name="line-438"></a><a name="removeWhiteSpace'"></a><span class='definition'>removeWhiteSpace'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-439"></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-440"></a>-<a name="line-441"></a><span class='comment'>-- |</span>-<a name="line-442"></a><span class='comment'>-- simple filter for removing whitespace.</span>-<a name="line-443"></a><span class='comment'>--</span>-<a name="line-444"></a><span class='comment'>-- no check on sigificant whitespace, e.g. in HTML \<pre\>-elements, is done.</span>-<a name="line-445"></a><span class='comment'>--</span>-<a name="line-446"></a><span class='comment'>--</span>-<a name="line-447"></a><span class='comment'>-- see also : 'removeAllWhiteSpace', 'removeDocWhiteSpace'</span>-<a name="line-448"></a>-<a name="line-449"></a><a name="removeWhiteSpace"></a><span class='definition'>removeWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-450"></a><span class='definition'>removeWhiteSpace</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>removeWhiteSpace'</span>-<a name="line-451"></a>-<a name="line-452"></a><span class='comment'>-- |</span>-<a name="line-453"></a><span class='comment'>-- simple recursive filter for removing all whitespace.</span>-<a name="line-454"></a><span class='comment'>--</span>-<a name="line-455"></a><span class='comment'>-- removes all text nodes in a tree that consist only of whitespace.</span>-<a name="line-456"></a><span class='comment'>--</span>-<a name="line-457"></a><span class='comment'>--</span>-<a name="line-458"></a><span class='comment'>-- see also : 'removeWhiteSpace', 'removeDocWhiteSpace'</span>-<a name="line-459"></a>-<a name="line-460"></a><a name="removeAllWhiteSpace"></a><span class='definition'>removeAllWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-461"></a><span class='definition'>removeAllWhiteSpace</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>processBottomUp</span> <span class='varid'>removeWhiteSpace'</span>-<a name="line-462"></a>-<a name="line-463"></a><span class='comment'>-- |</span>-<a name="line-464"></a><span class='comment'>-- filter for removing all not significant whitespace.</span>-<a name="line-465"></a><span class='comment'>--</span>-<a name="line-466"></a><span class='comment'>-- the tree traversed for removing whitespace between elements,</span>-<a name="line-467"></a><span class='comment'>-- that was inserted for indentation and readability.</span>-<a name="line-468"></a><span class='comment'>-- whitespace is only removed at places, where it's not significat</span>-<a name="line-469"></a><span class='comment'>-- preserving whitespace may be controlled in a document tree</span>-<a name="line-470"></a><span class='comment'>-- by a tag attribute @xml:space@</span>-<a name="line-471"></a><span class='comment'>--</span>-<a name="line-472"></a><span class='comment'>-- allowed values for this attribute are @default | preserve@</span>-<a name="line-473"></a><span class='comment'>--</span>-<a name="line-474"></a><span class='comment'>-- input is root node of the document to be cleaned up,</span>-<a name="line-475"></a><span class='comment'>-- output the semantically equivalent simplified tree</span>-<a name="line-476"></a><span class='comment'>--</span>-<a name="line-477"></a><span class='comment'>--</span>-<a name="line-478"></a><span class='comment'>-- see also : 'indentDoc', 'removeAllWhiteSpace'</span>-<a name="line-479"></a>-<a name="line-480"></a><a name="removeDocWhiteSpace"></a><span class='definition'>removeDocWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-481"></a><span class='definition'>removeDocWhiteSpace</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>removeRootWhiteSpace</span>-<a name="line-482"></a>-<a name="line-483"></a>-<a name="line-484"></a><a name="removeRootWhiteSpace"></a><span class='definition'>removeRootWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-485"></a><span class='definition'>removeRootWhiteSpace</span>-<a name="line-486"></a> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='varid'>processRootElement</span>-<a name="line-487"></a> <span class='varop'>`when`</span>-<a name="line-488"></a> <span class='varid'>isRoot</span>-<a name="line-489"></a> <span class='keyword'>where</span>-<a name="line-490"></a> <span class='varid'>processRootElement</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-491"></a> <span class='varid'>processRootElement</span>-<a name="line-492"></a> <span class='keyglyph'>=</span> <span class='varid'>removeWhiteSpace</span> <span class='varop'>>>></span> <span class='varid'>processChild</span>-<a name="line-493"></a> <span class='keyword'>where</span>-<a name="line-494"></a> <span class='varid'>processChild</span>-<a name="line-495"></a> <span class='keyglyph'>=</span> <span class='varid'>choiceA</span> <span class='keyglyph'>[</span> <span class='varid'>isDTD</span>-<a name="line-496"></a> <span class='conop'>:-></span> <span class='varid'>removeAllWhiteSpace</span> <span class='comment'>-- whitespace in DTD is redundant</span>-<a name="line-497"></a> <span class='layout'>,</span> <span class='varid'>this</span>-<a name="line-498"></a> <span class='conop'>:-></span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='varid'>getChildren</span>-<a name="line-499"></a> <span class='varop'>>>.</span> <span class='varid'>indentTrees</span> <span class='varid'>insertNothing</span> <span class='conid'>False</span> <span class='num'>1</span>-<a name="line-500"></a> <span class='layout'>)</span>-<a name="line-501"></a> <span class='keyglyph'>]</span>-<a name="line-502"></a>-<a name="line-503"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-504"></a>-<a name="line-505"></a><span class='comment'>-- |</span>-<a name="line-506"></a><span class='comment'>-- filter for indenting a document tree for pretty printing.</span>-<a name="line-507"></a><span class='comment'>--</span>-<a name="line-508"></a><span class='comment'>-- the tree is traversed for inserting whitespace for tag indentation.</span>-<a name="line-509"></a><span class='comment'>--</span>-<a name="line-510"></a><span class='comment'>-- whitespace is only inserted or changed at places, where it isn't significant,</span>-<a name="line-511"></a><span class='comment'>-- is's not inserted between tags and text containing non whitespace chars.</span>-<a name="line-512"></a><span class='comment'>--</span>-<a name="line-513"></a><span class='comment'>-- whitespace is only inserted or changed at places, where it's not significant.</span>-<a name="line-514"></a><span class='comment'>-- preserving whitespace may be controlled in a document tree</span>-<a name="line-515"></a><span class='comment'>-- by a tag attribute @xml:space@</span>-<a name="line-516"></a><span class='comment'>--</span>-<a name="line-517"></a><span class='comment'>-- allowed values for this attribute are @default | preserve@.</span>-<a name="line-518"></a><span class='comment'>--</span>-<a name="line-519"></a><span class='comment'>-- input is a complete document tree or a document fragment</span>-<a name="line-520"></a><span class='comment'>-- result is the semantically equivalent formatted tree.</span>-<a name="line-521"></a><span class='comment'>--</span>-<a name="line-522"></a><span class='comment'>--</span>-<a name="line-523"></a><span class='comment'>-- see also : 'removeDocWhiteSpace'</span>-<a name="line-524"></a>-<a name="line-525"></a><a name="indentDoc"></a><span class='definition'>indentDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-526"></a><span class='definition'>indentDoc</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-527"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>isRoot</span> <span class='varop'>`guards`</span> <span class='varid'>indentRoot</span> <span class='layout'>)</span>-<a name="line-528"></a> <span class='varop'>`orElse`</span>-<a name="line-529"></a> <span class='layout'>(</span><span class='varid'>root</span> <span class='conid'>[]</span> <span class='keyglyph'>[</span><span class='varid'>this</span><span class='keyglyph'>]</span> <span class='varop'>>>></span> <span class='varid'>indentRoot</span> <span class='varop'>>>></span> <span class='varid'>getChildren</span><span class='layout'>)</span>-<a name="line-530"></a> <span class='layout'>)</span>-<a name="line-531"></a>-<a name="line-532"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-533"></a>-<a name="line-534"></a><a name="indentRoot"></a><span class='definition'>indentRoot</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-535"></a><span class='definition'>indentRoot</span> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='varid'>indentRootChildren</span>-<a name="line-536"></a> <span class='keyword'>where</span>-<a name="line-537"></a> <span class='varid'>indentRootChildren</span>-<a name="line-538"></a> <span class='keyglyph'>=</span> <span class='varid'>removeText</span> <span class='varop'>>>></span> <span class='varid'>indentChild</span> <span class='varop'>>>></span> <span class='varid'>insertNL</span>-<a name="line-539"></a> <span class='keyword'>where</span>-<a name="line-540"></a> <span class='varid'>removeText</span> <span class='keyglyph'>=</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isText</span>-<a name="line-541"></a> <span class='varid'>insertNL</span> <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-542"></a> <span class='varid'>indentChild</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>replaceChildren</span>-<a name="line-543"></a> <span class='layout'>(</span> <span class='varid'>getChildren</span>-<a name="line-544"></a> <span class='varop'>>>.</span>-<a name="line-545"></a> <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>-<a name="line-546"></a> <span class='layout'>)</span>-<a name="line-547"></a> <span class='varop'>`whenNot`</span> <span class='varid'>isDTD</span>-<a name="line-548"></a> <span class='layout'>)</span>-<a name="line-549"></a>-<a name="line-550"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-551"></a><span class='comment'>--</span>-<a name="line-552"></a><span class='comment'>-- copied from EditFilter and rewritten for arrows</span>-<a name="line-553"></a><span class='comment'>-- to remove dependency to the filter module</span>-<a name="line-554"></a>-<a name="line-555"></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'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</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-556"></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-557"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-558"></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-559"></a> <span class='keyglyph'>=</span> <span class='varid'>runLAs</span> <span class='varid'>lsf</span> <span class='varid'>ls</span>-<a name="line-560"></a> <span class='varop'>++</span>-<a name="line-561"></a> <span class='varid'>indentRest</span> <span class='varid'>rs</span>-<a name="line-562"></a> <span class='keyword'>where</span>-<a name="line-563"></a> <span class='varid'>runLAs</span> <span class='varid'>f</span> <span class='varid'>l</span>-<a name="line-564"></a> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='layout'>(</span><span class='varid'>constL</span> <span class='varid'>l</span> <span class='varop'>>>></span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varid'>undefined</span>-<a name="line-565"></a>-<a name="line-566"></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-567"></a> <span class='keyglyph'>=</span> <span class='varid'>break</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>isElem</span> <span class='varid'>ts</span>-<a name="line-568"></a>-<a name="line-569"></a> <span class='varid'>isSignificant</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span>-<a name="line-570"></a> <span class='varid'>isSignificant</span>-<a name="line-571"></a> <span class='keyglyph'>=</span> <span class='varid'>preserveSpace</span>-<a name="line-572"></a> <span class='varop'>||</span>-<a name="line-573"></a> <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'>runLAs</span> <span class='varid'>isSignificantPart</span><span class='layout'>)</span> <span class='varid'>ls</span>-<a name="line-574"></a>-<a name="line-575"></a> <span class='varid'>isSignificantPart</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-576"></a> <span class='varid'>isSignificantPart</span>-<a name="line-577"></a> <span class='keyglyph'>=</span> <span class='varid'>catA</span>-<a name="line-578"></a> <span class='keyglyph'>[</span> <span class='varid'>isText</span> <span class='varop'>`guards`</span> <span class='varid'>neg</span> <span class='varid'>isWhiteSpace</span>-<a name="line-579"></a> <span class='layout'>,</span> <span class='varid'>isCdata</span>-<a name="line-580"></a> <span class='layout'>,</span> <span class='varid'>isCharRef</span>-<a name="line-581"></a> <span class='layout'>,</span> <span class='varid'>isEntityRef</span>-<a name="line-582"></a> <span class='keyglyph'>]</span>-<a name="line-583"></a>-<a name="line-584"></a> <span class='varid'>lsf</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-585"></a> <span class='varid'>lsf</span>-<a name="line-586"></a> <span class='keyglyph'>|</span> <span class='varid'>isSignificant</span>-<a name="line-587"></a> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-588"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-589"></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-590"></a> <span class='varop'>>>></span>-<a name="line-591"></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-592"></a>-<a name="line-593"></a> <span class='varid'>indentRest</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-594"></a> <span class='varid'>indentRest</span> <span class='conid'>[]</span>-<a name="line-595"></a> <span class='keyglyph'>|</span> <span class='varid'>isSignificant</span>-<a name="line-596"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-597"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-598"></a> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='layout'>(</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'>undefined</span>-<a name="line-599"></a>-<a name="line-600"></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-601"></a> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>indentElem</span>-<a name="line-602"></a> <span class='varop'>>>></span>-<a name="line-603"></a> <span class='varid'>lsf</span>-<a name="line-604"></a> <span class='layout'>)</span>-<a name="line-605"></a> <span class='varop'>`when`</span> <span class='varid'>isElem</span>-<a name="line-606"></a> <span class='layout'>)</span> <span class='varid'>t'</span>-<a name="line-607"></a> <span class='varop'>++</span>-<a name="line-608"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>ts'</span>-<a name="line-609"></a> <span class='keyword'>then</span> <span class='varid'>indentRest</span>-<a name="line-610"></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>-<a name="line-611"></a> <span class='layout'>)</span> <span class='varid'>ts'</span>-<a name="line-612"></a> <span class='keyword'>where</span>-<a name="line-613"></a> <span class='varid'>indentElem</span>-<a name="line-614"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='varid'>getChildren</span>-<a name="line-615"></a> <span class='varop'>>>.</span>-<a name="line-616"></a> <span class='varid'>indentChildren</span>-<a name="line-617"></a> <span class='layout'>)</span>-<a name="line-618"></a>-<a name="line-619"></a> <span class='varid'>xmlSpaceAttrValue</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-620"></a> <span class='varid'>xmlSpaceAttrValue</span>-<a name="line-621"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>.</span> <span class='varid'>runLA</span> <span class='layout'>(</span><span class='varid'>getAttrValue</span> <span class='str'>"xml:space"</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>t'</span>-<a name="line-622"></a>-<a name="line-623"></a> <span class='varid'>preserveSpace'</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span>-<a name="line-624"></a> <span class='varid'>preserveSpace'</span>-<a name="line-625"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>fromMaybe</span> <span class='varid'>preserveSpace</span>-<a name="line-626"></a> <span class='varop'>.</span>-<a name="line-627"></a> <span class='varid'>lookup</span> <span class='varid'>xmlSpaceAttrValue</span>-<a name="line-628"></a> <span class='layout'>)</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-629"></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-630"></a> <span class='keyglyph'>]</span>-<a name="line-631"></a>-<a name="line-632"></a> <span class='varid'>indentChildren</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>-<a name="line-633"></a> <span class='varid'>indentChildren</span> <span class='varid'>cs'</span>-<a name="line-634"></a> <span class='keyglyph'>|</span> <span class='varid'>all</span> <span class='layout'>(</span><span class='varid'>maybe</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>all</span> <span class='varid'>isXmlSpaceChar</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span><span class='layout'>)</span> <span class='varid'>cs'</span>-<a name="line-635"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-636"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-637"></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> <span class='varid'>cs'</span>-<a name="line-638"></a>-<a name="line-639"></a> -<a name="line-640"></a><span class='comment'>-- filter for indenting elements</span>-<a name="line-641"></a>-<a name="line-642"></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'>LA</span> <span class='varid'>a</span> <span class='conid'>XmlTree</span>-<a name="line-643"></a><span class='definition'>insertIndentation</span> <span class='varid'>indentWidth</span> <span class='varid'>level</span>-<a name="line-644"></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-645"></a>-<a name="line-646"></a><span class='comment'>-- filter for removing all whitespace</span>-<a name="line-647"></a>-<a name="line-648"></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'>LA</span> <span class='varid'>a</span> <span class='conid'>XmlTree</span>-<a name="line-649"></a><span class='definition'>insertNothing</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>none</span>-<a name="line-650"></a>-<a name="line-651"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-652"></a>-<a name="line-653"></a><a name="transfCdata'"></a><span class='definition'>transfCdata'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-654"></a><span class='definition'>transfCdata'</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>getCdata</span> <span class='varop'>>>></span> <span class='varid'>mkText</span><span class='layout'>)</span> <span class='varop'>`when`</span> <span class='varid'>isCdata</span>-<a name="line-655"></a>-<a name="line-656"></a><span class='comment'>-- |</span>-<a name="line-657"></a><span class='comment'>-- converts a CDATA section node into a normal text node</span>-<a name="line-658"></a>-<a name="line-659"></a><a name="transfCdata"></a><span class='definition'>transfCdata</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-660"></a><span class='definition'>transfCdata</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-661"></a> <span class='varid'>transfCdata'</span>-<a name="line-662"></a>-<a name="line-663"></a><span class='comment'>-- |</span>-<a name="line-664"></a><span class='comment'>-- converts CDATA sections in whole document tree into normal text nodes</span>-<a name="line-665"></a>-<a name="line-666"></a><a name="transfAllCdata"></a><span class='definition'>transfAllCdata</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-667"></a><span class='definition'>transfAllCdata</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-668"></a> <span class='varid'>processBottomUp</span> <span class='varid'>transfCdata'</span>-<a name="line-669"></a> -<a name="line-670"></a><span class='comment'>--</span>-<a name="line-671"></a>-<a name="line-672"></a><a name="transfCharRef'"></a><span class='definition'>transfCharRef'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-673"></a><span class='definition'>transfCharRef'</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getCharRef</span> <span class='varop'>>>></span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>i</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>toEnum</span> <span class='varid'>i</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='varop'>>>></span> <span class='varid'>mkText</span> <span class='layout'>)</span>-<a name="line-674"></a> <span class='varop'>`when`</span>-<a name="line-675"></a> <span class='varid'>isCharRef</span>-<a name="line-676"></a>-<a name="line-677"></a><span class='comment'>-- |</span>-<a name="line-678"></a><span class='comment'>-- converts character references to normal text</span>-<a name="line-679"></a>-<a name="line-680"></a><a name="transfCharRef"></a><span class='definition'>transfCharRef</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-681"></a><span class='definition'>transfCharRef</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-682"></a> <span class='varid'>transfCharRef'</span>-<a name="line-683"></a>-<a name="line-684"></a><span class='comment'>-- |</span>-<a name="line-685"></a><span class='comment'>-- recursively converts all character references to normal text</span>-<a name="line-686"></a>-<a name="line-687"></a><a name="transfAllCharRef"></a><span class='definition'>transfAllCharRef</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-688"></a><span class='definition'>transfAllCharRef</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-689"></a> <span class='varid'>processBottomUp</span> <span class='varid'>transfCharRef'</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><a name="hasXmlPi"></a><span class='definition'>hasXmlPi</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-694"></a><span class='definition'>hasXmlPi</span>-<a name="line-695"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span>-<a name="line-696"></a> <span class='layout'>(</span> <span class='varid'>getChildren</span>-<a name="line-697"></a> <span class='varop'>>>></span>-<a name="line-698"></a> <span class='varid'>isPi</span>-<a name="line-699"></a> <span class='varop'>>>></span>-<a name="line-700"></a> <span class='varid'>hasName</span> <span class='varid'>t_xml</span>-<a name="line-701"></a> <span class='layout'>)</span>-<a name="line-702"></a>-<a name="line-703"></a><span class='comment'>-- | add an \<?xml version=\"1.0\"?\> processing instruction</span>-<a name="line-704"></a><span class='comment'>-- if it's not already there</span>-<a name="line-705"></a>-<a name="line-706"></a><a name="addXmlPi"></a><span class='definition'>addXmlPi</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-707"></a><span class='definition'>addXmlPi</span>-<a name="line-708"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span>-<a name="line-709"></a> <span class='layout'>(</span> <span class='varid'>insertChildrenAt</span> <span class='num'>0</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>mkPi</span> <span class='layout'>(</span><span class='varid'>mkSNsName</span> <span class='varid'>t_xml</span><span class='layout'>)</span> <span class='varid'>none</span>-<a name="line-710"></a> <span class='varop'>>>></span>-<a name="line-711"></a> <span class='varid'>addAttr</span> <span class='varid'>a_version</span> <span class='str'>"1.0"</span>-<a name="line-712"></a> <span class='layout'>)</span>-<a name="line-713"></a> <span class='varop'><+></span>-<a name="line-714"></a> <span class='varid'>txt</span> <span class='str'>"\n"</span>-<a name="line-715"></a> <span class='layout'>)</span>-<a name="line-716"></a> <span class='varop'>`whenNot`</span>-<a name="line-717"></a> <span class='varid'>hasXmlPi</span>-<a name="line-718"></a> <span class='layout'>)</span>-<a name="line-719"></a>-<a name="line-720"></a><span class='comment'>-- | add an encoding spec to the \<?xml version=\"1.0\"?\> processing instruction</span>-<a name="line-721"></a>-<a name="line-722"></a><a name="addXmlPiEncoding"></a><span class='definition'>addXmlPiEncoding</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-723"></a><span class='definition'>addXmlPiEncoding</span> <span class='varid'>enc</span>-<a name="line-724"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-725"></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>-<a name="line-726"></a> <span class='varop'>`when`</span>-<a name="line-727"></a> <span class='layout'>(</span> <span class='varid'>isPi</span> <span class='varop'>>>></span> <span class='varid'>hasName</span> <span class='varid'>t_xml</span> <span class='layout'>)</span>-<a name="line-728"></a> <span class='layout'>)</span>-<a name="line-729"></a>-<a name="line-730"></a><span class='comment'>-- | add an XHTML strict doctype declaration to a document</span>-<a name="line-731"></a>-<a name="line-732"></a><a name="addXHtmlDoctypeStrict"></a><span class='definition'>addXHtmlDoctypeStrict</span>-<a name="line-733"></a> <span class='layout'>,</span> <span class='varid'>addXHtmlDoctypeTransitional</span>-<a name="line-734"></a> <span class='layout'>,</span> <span class='varid'>addXHtmlDoctypeFrameset</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-735"></a>-<a name="line-736"></a><span class='comment'>-- | add an XHTML strict doctype declaration to a document</span>-<a name="line-737"></a>-<a name="line-738"></a><span class='definition'>addXHtmlDoctypeStrict</span>-<a name="line-739"></a> <span class='keyglyph'>=</span> <span class='varid'>addDoctypeDecl</span> <span class='str'>"html"</span> <span class='str'>"-//W3C//DTD XHTML 1.0 Strict//EN"</span> <span class='str'>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"</span>-<a name="line-740"></a>-<a name="line-741"></a><span class='comment'>-- | add an XHTML transitional doctype declaration to a document</span>-<a name="line-742"></a>-<a name="line-743"></a><a name="addXHtmlDoctypeTransitional"></a><span class='definition'>addXHtmlDoctypeTransitional</span>-<a name="line-744"></a> <span class='keyglyph'>=</span> <span class='varid'>addDoctypeDecl</span> <span class='str'>"html"</span> <span class='str'>"-//W3C//DTD XHTML 1.0 Transitional//EN"</span> <span class='str'>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span>-<a name="line-745"></a>-<a name="line-746"></a><span class='comment'>-- | add an XHTML frameset doctype declaration to a document</span>-<a name="line-747"></a>-<a name="line-748"></a><a name="addXHtmlDoctypeFrameset"></a><span class='definition'>addXHtmlDoctypeFrameset</span>-<a name="line-749"></a> <span class='keyglyph'>=</span> <span class='varid'>addDoctypeDecl</span> <span class='str'>"html"</span> <span class='str'>"-//W3C//DTD XHTML 1.0 Frameset//EN"</span> <span class='str'>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"</span>-<a name="line-750"></a>-<a name="line-751"></a><span class='comment'>-- | add a doctype declaration to a document</span>-<a name="line-752"></a><span class='comment'>--</span>-<a name="line-753"></a><span class='comment'>-- The arguments are the root element name, the PUBLIC id and the SYSTEM id</span>-<a name="line-754"></a>-<a name="line-755"></a><a name="addDoctypeDecl"></a><span class='definition'>addDoctypeDecl</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</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> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-756"></a><span class='definition'>addDoctypeDecl</span> <span class='varid'>rootElem</span> <span class='varid'>public</span> <span class='varid'>system</span>-<a name="line-757"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-758"></a> <span class='varid'>replaceChildren</span>-<a name="line-759"></a> <span class='layout'>(</span> <span class='varid'>mkDTDDoctype</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>public</span> <span class='keyword'>then</span> <span class='varid'>id</span> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>k_public</span><span class='layout'>,</span> <span class='varid'>public</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-760"></a> <span class='varop'>.</span>-<a name="line-761"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>system</span> <span class='keyword'>then</span> <span class='varid'>id</span> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>k_system</span><span class='layout'>,</span> <span class='varid'>system</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-762"></a> <span class='varop'>$</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_name</span><span class='layout'>,</span> <span class='varid'>rootElem</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-763"></a> <span class='layout'>)</span> <span class='varid'>none</span>-<a name="line-764"></a> <span class='varop'><+></span>-<a name="line-765"></a> <span class='varid'>txt</span> <span class='str'>"\n"</span>-<a name="line-766"></a> <span class='varop'><+></span>-<a name="line-767"></a> <span class='varid'>getChildren</span>-<a name="line-768"></a> <span class='layout'>)</span>-<a name="line-769"></a>-<a name="line-770"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-5"></a> Copyright : Copyright (C) 2006-9 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> common edit arrows+<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'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>+<a name="line-19"></a> <span class='layout'>(</span> <span class='varid'>canonicalizeAllNodes</span>+<a name="line-20"></a> <span class='layout'>,</span> <span class='varid'>canonicalizeForXPath</span>+<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>canonicalizeContents</span>+<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>collapseAllXText</span>+<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>collapseXText</span>+<a name="line-24"></a>+<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>xshowEscapeXml</span>+<a name="line-26"></a>+<a name="line-27"></a> <span class='layout'>,</span> <span class='varid'>escapeXmlDoc</span>+<a name="line-28"></a> <span class='layout'>,</span> <span class='varid'>escapeHtmlDoc</span>+<a name="line-29"></a>+<a name="line-30"></a> <span class='layout'>,</span> <span class='varid'>haskellRepOfXmlDoc</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'>addHeadlineToXmlDoc</span>+<a name="line-33"></a>+<a name="line-34"></a> <span class='layout'>,</span> <span class='varid'>indentDoc</span>+<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>numberLinesInXmlDoc</span>+<a name="line-36"></a> <span class='layout'>,</span> <span class='varid'>preventEmptyElements</span>+<a name="line-37"></a> +<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>removeComment</span>+<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>removeAllComment</span>+<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>removeWhiteSpace</span>+<a name="line-41"></a> <span class='layout'>,</span> <span class='varid'>removeAllWhiteSpace</span>+<a name="line-42"></a> <span class='layout'>,</span> <span class='varid'>removeDocWhiteSpace</span>+<a name="line-43"></a>+<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>transfCdata</span>+<a name="line-45"></a> <span class='layout'>,</span> <span class='varid'>transfAllCdata</span>+<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>transfCharRef</span>+<a name="line-47"></a> <span class='layout'>,</span> <span class='varid'>transfAllCharRef</span>+<a name="line-48"></a>+<a name="line-49"></a> <span class='layout'>,</span> <span class='varid'>hasXmlPi</span>+<a name="line-50"></a> <span class='layout'>,</span> <span class='varid'>addXmlPi</span>+<a name="line-51"></a> <span class='layout'>,</span> <span class='varid'>addXmlPiEncoding</span>+<a name="line-52"></a>+<a name="line-53"></a> <span class='layout'>,</span> <span class='varid'>addDoctypeDecl</span>+<a name="line-54"></a> <span class='layout'>,</span> <span class='varid'>addXHtmlDoctypeStrict</span>+<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>addXHtmlDoctypeTransitional</span>+<a name="line-56"></a> <span class='layout'>,</span> <span class='varid'>addXHtmlDoctypeFrameset</span>+<a name="line-57"></a> <span class='layout'>)</span>+<a name="line-58"></a><span class='keyword'>where</span>+<a name="line-59"></a>+<a name="line-60"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span>+<a name="line-61"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>+<a name="line-62"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>+<a name="line-63"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>+<a name="line-64"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrow</span>+<a name="line-65"></a>+<a name="line-66"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>+<a name="line-67"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>+<a name="line-68"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span> <span class='keyword'>as</span> <span class='conid'>XN</span>+<a name="line-69"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>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-70"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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> <span class='layout'>(</span> <span class='varid'>formatXmlTree</span> <span class='layout'>)</span>+<a name="line-71"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParsec</span> <span class='layout'>(</span> <span class='varid'>emptyHtmlTags</span> <span class='layout'>)</span>+<a name="line-72"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlEntities</span> <span class='layout'>(</span> <span class='varid'>xmlEntities</span> <span class='layout'>)</span>+<a name="line-73"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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> <span class='layout'>(</span> <span class='varid'>xhtmlEntities</span> <span class='layout'>)</span>+<a name="line-74"></a>+<a name="line-75"></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-76"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-77"></a>+<a name="line-78"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-79"></a>+<a name="line-80"></a><span class='comment'>-- |</span>+<a name="line-81"></a><span class='comment'>-- Applies some "Canonical XML" rules to a document tree.</span>+<a name="line-82"></a><span class='comment'>--</span>+<a name="line-83"></a><span class='comment'>-- The rule differ slightly for canonical XML and XPath in handling of comments</span>+<a name="line-84"></a><span class='comment'>--</span>+<a name="line-85"></a><span class='comment'>-- Note: This is not the whole canonicalization as it is specified by the W3C</span>+<a name="line-86"></a><span class='comment'>-- Recommendation. Adding attribute defaults or sorting attributes in lexicographic</span>+<a name="line-87"></a><span class='comment'>-- order is done by the @transform@ function of module @Text.XML.HXT.Validator.Validation@.</span>+<a name="line-88"></a><span class='comment'>-- Replacing entities or line feed normalization is done by the parser.</span>+<a name="line-89"></a><span class='comment'>--</span>+<a name="line-90"></a><span class='comment'>--</span>+<a name="line-91"></a><span class='comment'>-- Not implemented yet:</span>+<a name="line-92"></a><span class='comment'>--</span>+<a name="line-93"></a><span class='comment'>-- - Whitespace within start and end tags is normalized</span>+<a name="line-94"></a><span class='comment'>--</span>+<a name="line-95"></a><span class='comment'>-- - Special characters in attribute values and character content are replaced by character references</span>+<a name="line-96"></a><span class='comment'>--</span>+<a name="line-97"></a><span class='comment'>-- see 'canonicalizeAllNodes' and 'canonicalizeForXPath'</span>+<a name="line-98"></a>+<a name="line-99"></a><a name="canonicalizeTree'"></a><span class='definition'>canonicalizeTree'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-100"></a><span class='definition'>canonicalizeTree'</span> <span class='varid'>toBeRemoved</span>+<a name="line-101"></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'>isText</span><span class='layout'>)</span>+<a name="line-102"></a> <span class='varop'>>>></span>+<a name="line-103"></a> <span class='varid'>processBottomUp</span> <span class='varid'>canonicalize1Node</span>+<a name="line-104"></a> <span class='keyword'>where</span>+<a name="line-105"></a> <span class='varid'>canonicalize1Node</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-106"></a> <span class='varid'>canonicalize1Node</span>+<a name="line-107"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>deep</span> <span class='varid'>isPi</span> <span class='varop'>`when`</span> <span class='varid'>isDTD</span><span class='layout'>)</span> <span class='comment'>-- remove DTD parts, except PIs</span>+<a name="line-108"></a> <span class='varop'>>>></span>+<a name="line-109"></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-110"></a> <span class='varop'>>>></span>+<a name="line-111"></a> <span class='layout'>(</span> <span class='varid'>processAttrl</span> <span class='layout'>(</span> <span class='varid'>processChildren</span> <span class='varid'>transfCharRef</span>+<a name="line-112"></a> <span class='varop'>>>></span>+<a name="line-113"></a> <span class='varid'>collapseXText</span>+<a name="line-114"></a> <span class='layout'>)</span>+<a name="line-115"></a> <span class='varop'>`when`</span> <span class='varid'>isElem</span>+<a name="line-116"></a> <span class='layout'>)</span>+<a name="line-117"></a> <span class='varop'>>>></span>+<a name="line-118"></a> <span class='varid'>transfCdata</span> <span class='comment'>-- CDATA -> text</span>+<a name="line-119"></a> <span class='varop'>>>></span>+<a name="line-120"></a> <span class='varid'>transfCharRef</span> <span class='comment'>-- Char refs -> text</span>+<a name="line-121"></a> <span class='varop'>>>></span>+<a name="line-122"></a> <span class='varid'>collapseXText</span> <span class='comment'>-- combine text</span>+<a name="line-123"></a>+<a name="line-124"></a>+<a name="line-125"></a><span class='comment'>-- |</span>+<a name="line-126"></a><span class='comment'>-- Applies some "Canonical XML" rules to a document tree.</span>+<a name="line-127"></a><span class='comment'>--</span>+<a name="line-128"></a><span class='comment'>-- The rule differ slightly for canonical XML and XPath in handling of comments</span>+<a name="line-129"></a><span class='comment'>--</span>+<a name="line-130"></a><span class='comment'>-- Note: This is not the whole canonicalization as it is specified by the W3C</span>+<a name="line-131"></a><span class='comment'>-- Recommendation. Adding attribute defaults or sorting attributes in lexicographic</span>+<a name="line-132"></a><span class='comment'>-- order is done by the @transform@ function of module @Text.XML.HXT.Validator.Validation@.</span>+<a name="line-133"></a><span class='comment'>-- Replacing entities or line feed normalization is done by the parser.</span>+<a name="line-134"></a><span class='comment'>--</span>+<a name="line-135"></a><span class='comment'>-- Rules: remove DTD parts, processing instructions, comments and substitute char refs in attribute</span>+<a name="line-136"></a><span class='comment'>-- values and text</span>+<a name="line-137"></a><span class='comment'>--</span>+<a name="line-138"></a><span class='comment'>-- Not implemented yet:</span>+<a name="line-139"></a><span class='comment'>--</span>+<a name="line-140"></a><span class='comment'>-- - Whitespace within start and end tags is normalized</span>+<a name="line-141"></a><span class='comment'>--</span>+<a name="line-142"></a><span class='comment'>-- - Special characters in attribute values and character content are replaced by character references</span>+<a name="line-143"></a>+<a name="line-144"></a><a name="canonicalizeAllNodes"></a><span class='definition'>canonicalizeAllNodes</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-145"></a><span class='definition'>canonicalizeAllNodes</span>+<a name="line-146"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-147"></a> <span class='varid'>canonicalizeTree'</span> <span class='layout'>(</span> <span class='varid'>isCmt</span> <span class='comment'>-- remove comment</span>+<a name="line-148"></a> <span class='varop'><+></span>+<a name="line-149"></a> <span class='varid'>isXmlPi</span> <span class='comment'>-- remove xml declaration</span>+<a name="line-150"></a> <span class='layout'>)</span>+<a name="line-151"></a>+<a name="line-152"></a><span class='comment'>-- |</span>+<a name="line-153"></a><span class='comment'>-- Canonicalize a tree for XPath</span>+<a name="line-154"></a><span class='comment'>-- Like 'canonicalizeAllNodes' but comment nodes are not removed</span>+<a name="line-155"></a><span class='comment'>--</span>+<a name="line-156"></a><span class='comment'>-- see 'canonicalizeAllNodes'</span>+<a name="line-157"></a>+<a name="line-158"></a><a name="canonicalizeForXPath"></a><span class='definition'>canonicalizeForXPath</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-159"></a><span class='definition'>canonicalizeForXPath</span>+<a name="line-160"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-161"></a> <span class='varid'>canonicalizeTree'</span> <span class='varid'>isXmlPi</span>+<a name="line-162"></a>+<a name="line-163"></a><span class='comment'>-- |</span>+<a name="line-164"></a><span class='comment'>-- Canonicalize the contents of a document</span>+<a name="line-165"></a><span class='comment'>--</span>+<a name="line-166"></a><span class='comment'>-- substitutes all char refs in text and attribute values,</span>+<a name="line-167"></a><span class='comment'>-- removes CDATA section and combines all sequences of resulting text</span>+<a name="line-168"></a><span class='comment'>-- nodes into a single text node</span>+<a name="line-169"></a><span class='comment'>--</span>+<a name="line-170"></a><span class='comment'>-- see 'canonicalizeAllNodes'</span>+<a name="line-171"></a>+<a name="line-172"></a><a name="canonicalizeContents"></a><span class='definition'>canonicalizeContents</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-173"></a><span class='definition'>canonicalizeContents</span>+<a name="line-174"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-175"></a> <span class='varid'>processBottomUp</span> <span class='varid'>canonicalize1Node</span>+<a name="line-176"></a> <span class='keyword'>where</span>+<a name="line-177"></a> <span class='varid'>canonicalize1Node</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-178"></a> <span class='varid'>canonicalize1Node</span>+<a name="line-179"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>processAttrl</span> <span class='layout'>(</span> <span class='varid'>processChildren</span> <span class='varid'>transfCharRef</span>+<a name="line-180"></a> <span class='varop'>>>></span>+<a name="line-181"></a> <span class='varid'>collapseXText</span>+<a name="line-182"></a> <span class='layout'>)</span>+<a name="line-183"></a> <span class='varop'>`when`</span> <span class='varid'>isElem</span>+<a name="line-184"></a> <span class='layout'>)</span>+<a name="line-185"></a> <span class='varop'>>>></span>+<a name="line-186"></a> <span class='varid'>transfCdata</span> <span class='comment'>-- CDATA -> text</span>+<a name="line-187"></a> <span class='varop'>>>></span>+<a name="line-188"></a> <span class='varid'>transfCharRef</span> <span class='comment'>-- Char refs -> text</span>+<a name="line-189"></a> <span class='varop'>>>></span>+<a name="line-190"></a> <span class='varid'>collapseXText</span> <span class='comment'>-- combine text</span>+<a name="line-191"></a>+<a name="line-192"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-193"></a>+<a name="line-194"></a><a name="collapseXText'"></a><span class='definition'>collapseXText'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-195"></a><span class='definition'>collapseXText'</span>+<a name="line-196"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='varid'>listA</span> <span class='varid'>getChildren</span> <span class='varop'>>>></span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>foldr</span> <span class='varid'>mergeText'</span> <span class='conid'>[]</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-197"></a> <span class='keyword'>where</span>+<a name="line-198"></a> <span class='varid'>mergeText'</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'>XmlTrees</span>+<a name="line-199"></a> <span class='varid'>mergeText'</span> <span class='varid'>t1</span> <span class='layout'>(</span><span class='varid'>t2</span> <span class='conop'>:</span> <span class='varid'>ts2</span><span class='layout'>)</span>+<a name="line-200"></a> <span class='keyglyph'>|</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>isText</span> <span class='varid'>t1</span> <span class='varop'>&&</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>isText</span> <span class='varid'>t2</span>+<a name="line-201"></a> <span class='keyglyph'>=</span> <span class='keyword'>let</span>+<a name="line-202"></a> <span class='varid'>s1</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span> <span class='varop'>$</span> <span class='varid'>t1</span>+<a name="line-203"></a> <span class='varid'>s2</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span> <span class='varop'>$</span> <span class='varid'>t2</span>+<a name="line-204"></a> <span class='varid'>t</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='layout'>(</span><span class='varid'>s1</span> <span class='varop'>++</span> <span class='varid'>s2</span><span class='layout'>)</span>+<a name="line-205"></a> <span class='keyword'>in</span>+<a name="line-206"></a> <span class='varid'>t</span> <span class='conop'>:</span> <span class='varid'>ts2</span>+<a name="line-207"></a> <span class='varid'>mergeText'</span> <span class='varid'>t1</span> <span class='varid'>ts</span>+<a name="line-208"></a> <span class='keyglyph'>=</span> <span class='varid'>t1</span> <span class='conop'>:</span> <span class='varid'>ts</span>+<a name="line-209"></a>+<a name="line-210"></a><span class='comment'>-- |</span>+<a name="line-211"></a><span class='comment'>-- Collects sequences of text nodes in the list of children of a node into one single text node.</span>+<a name="line-212"></a><span class='comment'>-- This is useful, e.g. after char and entity reference substitution</span>+<a name="line-213"></a>+<a name="line-214"></a><a name="collapseXText"></a><span class='definition'>collapseXText</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-215"></a><span class='definition'>collapseXText</span>+<a name="line-216"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-217"></a> <span class='varid'>collapseXText'</span>+<a name="line-218"></a>+<a name="line-219"></a><span class='comment'>-- |</span>+<a name="line-220"></a><span class='comment'>-- Applies collapseXText recursively.</span>+<a name="line-221"></a><span class='comment'>--</span>+<a name="line-222"></a><span class='comment'>--</span>+<a name="line-223"></a><span class='comment'>-- see also : 'collapseXText'</span>+<a name="line-224"></a>+<a name="line-225"></a><a name="collapseAllXText"></a><span class='definition'>collapseAllXText</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-226"></a><span class='definition'>collapseAllXText</span>+<a name="line-227"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-228"></a> <span class='varid'>processBottomUp</span> <span class='varid'>collapseXText'</span>+<a name="line-229"></a>+<a name="line-230"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-231"></a>+<a name="line-232"></a><span class='comment'>-- | apply an arrow to the input and convert the resulting XML trees into an XML escaped string</span>+<a name="line-233"></a><span class='comment'>--</span>+<a name="line-234"></a><span class='comment'>-- This is a save variant for converting a tree into an XML string representation that is parsable with 'Text.XML.HXT.Arrow.ReadDocument'.</span>+<a name="line-235"></a><span class='comment'>-- It is implemented with 'Text.XML.HXT.Arrow.XmlArrow.xshow', but xshow does no XML escaping. The XML escaping is done with</span>+<a name="line-236"></a><span class='comment'>-- 'Text.XML.HXT.Arrow.Edit.escapeXmlDoc' before xshow is applied.</span>+<a name="line-237"></a><span class='comment'>--</span>+<a name="line-238"></a><span class='comment'>-- So the following law holds</span>+<a name="line-239"></a><span class='comment'>--</span>+<a name="line-240"></a><span class='comment'>-- > xshowEscape f >>> xread == f</span>+<a name="line-241"></a>+<a name="line-242"></a><a name="xshowEscapeXml"></a><span class='definition'>xshowEscapeXml</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>String</span>+<a name="line-243"></a><span class='definition'>xshowEscapeXml</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varop'>>>></span> <span class='varid'>escapeXmlDoc</span><span class='layout'>)</span>+<a name="line-244"></a>+<a name="line-245"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-246"></a>+<a name="line-247"></a><span class='comment'>-- |</span>+<a name="line-248"></a><span class='comment'>-- escape XmlText,</span>+<a name="line-249"></a><span class='comment'>-- transform all special XML chars into char- or entity- refs</span>+<a name="line-250"></a>+<a name="line-251"></a><a name="EntityRefTable"></a><span class='keyword'>type</span> <span class='conid'>EntityRefTable</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>Int</span> <span class='conid'>String</span>+<a name="line-252"></a>+<a name="line-253"></a><a name="xmlEntityRefTable"></a><span class='definition'>xmlEntityRefTable</span>+<a name="line-254"></a> <span class='layout'>,</span> <span class='varid'>xhtmlEntityRefTable</span> <span class='keyglyph'>::</span> <span class='conid'>EntityRefTable</span>+<a name="line-255"></a>+<a name="line-256"></a><span class='definition'>xmlEntityRefTable</span> <span class='keyglyph'>=</span> <span class='varid'>buildEntityRefTable</span> <span class='varop'>$</span> <span class='varid'>xmlEntities</span>+<a name="line-257"></a><a name="xhtmlEntityRefTable"></a><span class='definition'>xhtmlEntityRefTable</span> <span class='keyglyph'>=</span> <span class='varid'>buildEntityRefTable</span> <span class='varop'>$</span> <span class='varid'>xhtmlEntities</span>+<a name="line-258"></a>+<a name="line-259"></a><a name="buildEntityRefTable"></a><span class='definition'>buildEntityRefTable</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'>Int</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>EntityRefTable</span>+<a name="line-260"></a><span class='definition'>buildEntityRefTable</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>fromList</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'>x</span><span class='layout'>,</span><span class='varid'>y</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>y</span><span class='layout'>,</span><span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-261"></a>+<a name="line-262"></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'>XmlTree</span><span class='layout'>)</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'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>+<a name="line-263"></a><span class='definition'>escapeText''</span> <span class='varid'>escChar</span> <span class='varid'>isEsc</span> <span class='varid'>t</span>+<a name="line-264"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span> <span class='varid'>escape'</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span> <span class='varop'>$</span> <span class='varid'>t</span>+<a name="line-265"></a> <span class='keyword'>where</span>+<a name="line-266"></a> <span class='varid'>escape'</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span> <span class='comment'>-- empty text nodes remain empty text nodes</span>+<a name="line-267"></a> <span class='varid'>escape'</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>escape</span> <span class='varid'>s</span> <span class='comment'>-- they do not disapear</span>+<a name="line-268"></a>+<a name="line-269"></a> <span class='varid'>escape</span> <span class='str'>""</span>+<a name="line-270"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-271"></a> <span class='varid'>escape</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-272"></a> <span class='keyglyph'>|</span> <span class='varid'>isEsc</span> <span class='varid'>c</span>+<a name="line-273"></a> <span class='keyglyph'>=</span> <span class='varid'>escChar</span> <span class='varid'>c</span> <span class='conop'>:</span> <span class='varid'>escape</span> <span class='varid'>s1</span>+<a name="line-274"></a> <span class='varid'>escape</span> <span class='varid'>s</span>+<a name="line-275"></a> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='varid'>s1</span> <span class='conop'>:</span> <span class='varid'>escape</span> <span class='varid'>s2</span>+<a name="line-276"></a> <span class='keyword'>where</span>+<a name="line-277"></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-278"></a>+<a name="line-279"></a><span class='comment'>{-+<a name="line-280"></a>escapeCharRef :: Char -> XmlTree+<a name="line-281"></a>escapeCharRef = XN.mkCharRef . fromEnum+<a name="line-282"></a>-}</span>+<a name="line-283"></a>+<a name="line-284"></a><a name="escapeEntityRef"></a><span class='definition'>escapeEntityRef</span> <span class='keyglyph'>::</span> <span class='conid'>EntityRefTable</span> <span class='keyglyph'>-></span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>+<a name="line-285"></a><span class='definition'>escapeEntityRef</span> <span class='varid'>entityTable</span> <span class='varid'>c</span>+<a name="line-286"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkCharRef</span> <span class='varid'>c'</span><span class='layout'>)</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkEntityRef</span> <span class='varop'>.</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>c'</span> <span class='varop'>$</span> <span class='varid'>entityTable</span>+<a name="line-287"></a> <span class='keyword'>where</span>+<a name="line-288"></a> <span class='varid'>c'</span> <span class='keyglyph'>=</span> <span class='varid'>fromEnum</span> <span class='varid'>c</span>+<a name="line-289"></a>+<a name="line-290"></a><a name="escapeXmlEntityRef"></a><span class='definition'>escapeXmlEntityRef</span> <span class='keyglyph'>::</span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>+<a name="line-291"></a><span class='definition'>escapeXmlEntityRef</span> <span class='keyglyph'>=</span> <span class='varid'>escapeEntityRef</span> <span class='varid'>xmlEntityRefTable</span>+<a name="line-292"></a>+<a name="line-293"></a><a name="escapeHtmlEntityRef"></a><span class='definition'>escapeHtmlEntityRef</span> <span class='keyglyph'>::</span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>+<a name="line-294"></a><span class='definition'>escapeHtmlEntityRef</span> <span class='keyglyph'>=</span> <span class='varid'>escapeEntityRef</span> <span class='varid'>xhtmlEntityRefTable</span>+<a name="line-295"></a>+<a name="line-296"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-297"></a>+<a name="line-298"></a><span class='comment'>-- |</span>+<a name="line-299"></a><span class='comment'>-- escape all special XML chars into XML entity references or char references</span>+<a name="line-300"></a><span class='comment'>--</span>+<a name="line-301"></a><span class='comment'>-- convert the special XML chars \< and & in text nodes into prefefiened XML entity references,</span>+<a name="line-302"></a><span class='comment'>-- in attribute values also \', \", \>, \\n, \\r and \\t are converted into entity or char references,</span>+<a name="line-303"></a><span class='comment'>-- in comments nothing is converted (see XML standard 2.4, useful e.g. for JavaScript).</span>+<a name="line-304"></a>+<a name="line-305"></a><a name="escapeXmlDoc"></a><span class='definition'>escapeXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-306"></a><span class='definition'>escapeXmlDoc</span>+<a name="line-307"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>escapeDoc</span> <span class='varid'>escXmlText</span> <span class='varid'>escXmlAttrValue</span>+<a name="line-308"></a> <span class='keyword'>where</span>+<a name="line-309"></a> <span class='varid'>escXmlText</span>+<a name="line-310"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='varop'>$</span> <span class='varid'>escapeText''</span> <span class='varid'>escapeXmlEntityRef</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-311"></a> <span class='varid'>escXmlAttrValue</span>+<a name="line-312"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='varop'>$</span> <span class='varid'>escapeText''</span> <span class='varid'>escapeXmlEntityRef</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='str'>"<>\"\'&\n\r\t"</span><span class='layout'>)</span>+<a name="line-313"></a>+<a name="line-314"></a>+<a name="line-315"></a><span class='comment'>-- |</span>+<a name="line-316"></a><span class='comment'>-- escape all special HTML chars into XHTML entity references or char references</span>+<a name="line-317"></a><span class='comment'>--</span>+<a name="line-318"></a><span class='comment'>-- convert the special XML chars \< and & and all none ASCII chars in text nodes into prefefiened XML or XHTML entity references,</span>+<a name="line-319"></a><span class='comment'>-- in attribute values also \', \", \>, \\n, \\r and \\t are converted into entity or char references,</span>+<a name="line-320"></a><span class='comment'>-- in comments nothing is converted</span>+<a name="line-321"></a>+<a name="line-322"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-323"></a>+<a name="line-324"></a><a name="escapeHtmlDoc"></a><span class='definition'>escapeHtmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-325"></a><span class='definition'>escapeHtmlDoc</span>+<a name="line-326"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>escapeDoc</span> <span class='varid'>escHtmlText</span> <span class='varid'>escHtmlAttrValue</span>+<a name="line-327"></a> <span class='keyword'>where</span>+<a name="line-328"></a> <span class='varid'>escHtmlText</span>+<a name="line-329"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='varop'>$</span> <span class='varid'>escapeText''</span> <span class='varid'>escapeHtmlEntityRef</span> <span class='varid'>isHtmlTextEsc</span>+<a name="line-330"></a> <span class='varid'>escHtmlAttrValue</span>+<a name="line-331"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='varop'>$</span> <span class='varid'>escapeText''</span> <span class='varid'>escapeHtmlEntityRef</span> <span class='varid'>isHtmlAttrEsc</span>+<a name="line-332"></a>+<a name="line-333"></a> <span class='varid'>isHtmlTextEsc</span> <span class='varid'>c</span>+<a name="line-334"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>>=</span> <span class='varid'>toEnum</span><span class='layout'>(</span><span class='num'>128</span><span class='layout'>)</span> <span class='varop'>||</span> <span class='layout'>(</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='str'>"<&"</span> <span class='layout'>)</span>+<a name="line-335"></a> <span class='varid'>isHtmlAttrEsc</span> <span class='varid'>c</span>+<a name="line-336"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>>=</span> <span class='varid'>toEnum</span><span class='layout'>(</span><span class='num'>128</span><span class='layout'>)</span> <span class='varop'>||</span> <span class='layout'>(</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='str'>"<>\"\'&\n\r\t"</span> <span class='layout'>)</span>+<a name="line-337"></a>+<a name="line-338"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-339"></a>+<a name="line-340"></a><a name="escapeDoc"></a><span class='definition'>escapeDoc</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-341"></a><span class='definition'>escapeDoc</span> <span class='varid'>escText</span> <span class='varid'>escAttr</span>+<a name="line-342"></a> <span class='keyglyph'>=</span> <span class='varid'>escape</span>+<a name="line-343"></a> <span class='keyword'>where</span>+<a name="line-344"></a> <span class='varid'>escape</span>+<a name="line-345"></a> <span class='keyglyph'>=</span> <span class='varid'>choiceA</span>+<a name="line-346"></a> <span class='keyglyph'>[</span> <span class='varid'>isElem</span> <span class='conop'>:-></span> <span class='layout'>(</span> <span class='varid'>processChildren</span> <span class='varid'>escape</span>+<a name="line-347"></a> <span class='varop'>>>></span>+<a name="line-348"></a> <span class='varid'>processAttrl</span> <span class='varid'>escVal</span>+<a name="line-349"></a> <span class='layout'>)</span>+<a name="line-350"></a> <span class='layout'>,</span> <span class='varid'>isText</span> <span class='conop'>:-></span> <span class='varid'>escText</span>+<a name="line-351"></a> <span class='comment'>-- , isCmt :-> escCmt</span>+<a name="line-352"></a> <span class='layout'>,</span> <span class='varid'>isDTD</span> <span class='conop'>:-></span> <span class='varid'>processTopDown</span> <span class='varid'>escDTD</span>+<a name="line-353"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>+<a name="line-354"></a> <span class='keyglyph'>]</span>+<a name="line-355"></a> <span class='varid'>escVal</span> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='varid'>escAttr</span>+<a name="line-356"></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'>isDTDEntity</span> <span class='varop'><+></span> <span class='varid'>isDTDPEntity</span> <span class='layout'>)</span>+<a name="line-357"></a>+<a name="line-358"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-359"></a>+<a name="line-360"></a><a name="preventEmptyElements"></a><span class='definition'>preventEmptyElements</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-361"></a><span class='definition'>preventEmptyElements</span> <span class='varid'>isHtml</span>+<a name="line-362"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>insertDummyElem</span>+<a name="line-363"></a> <span class='keyword'>where</span>+<a name="line-364"></a> <span class='varid'>isNoneEmpty</span>+<a name="line-365"></a> <span class='keyglyph'>|</span> <span class='varid'>isHtml</span> <span class='keyglyph'>=</span> <span class='varid'>hasNameWith</span> <span class='layout'>(</span><span class='varid'>localPart</span> <span class='varop'>>>></span> <span class='layout'>(</span><span class='varop'>`notElem`</span> <span class='varid'>emptyHtmlTags</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-366"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>+<a name="line-367"></a>+<a name="line-368"></a> <span class='varid'>insertDummyElem</span>+<a name="line-369"></a> <span class='keyglyph'>=</span> <span class='varid'>processBottomUp</span>+<a name="line-370"></a> <span class='layout'>(</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='str'>""</span><span class='layout'>)</span>+<a name="line-371"></a> <span class='varop'>`when`</span>+<a name="line-372"></a> <span class='layout'>(</span> <span class='varid'>isElem</span>+<a name="line-373"></a> <span class='varop'>>>></span>+<a name="line-374"></a> <span class='varid'>isNoneEmpty</span>+<a name="line-375"></a> <span class='varop'>>>></span>+<a name="line-376"></a> <span class='varid'>neg</span> <span class='varid'>getChildren</span>+<a name="line-377"></a> <span class='layout'>)</span>+<a name="line-378"></a> <span class='layout'>)</span>+<a name="line-379"></a>+<a name="line-380"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-381"></a>+<a name="line-382"></a><span class='comment'>-- |</span>+<a name="line-383"></a><span class='comment'>-- convert a document into a Haskell representation (with show).</span>+<a name="line-384"></a><span class='comment'>--</span>+<a name="line-385"></a><span class='comment'>-- Useful for debugging and trace output.</span>+<a name="line-386"></a><span class='comment'>-- see also : 'treeRepOfXmlDoc', 'numberLinesInXmlDoc'</span>+<a name="line-387"></a>+<a name="line-388"></a><a name="haskellRepOfXmlDoc"></a><span class='definition'>haskellRepOfXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-389"></a><span class='definition'>haskellRepOfXmlDoc</span>+<a name="line-390"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-391"></a> <span class='varid'>root</span> <span class='keyglyph'>[</span><span class='varid'>getAttrl</span><span class='keyglyph'>]</span> <span class='keyglyph'>[</span><span class='varid'>show</span> <span class='varop'>^>></span> <span class='varid'>mkText</span><span class='keyglyph'>]</span>+<a name="line-392"></a>+<a name="line-393"></a><span class='comment'>-- |</span>+<a name="line-394"></a><span class='comment'>-- convert a document into a text and add line numbers to the text representation.</span>+<a name="line-395"></a><span class='comment'>-- </span>+<a name="line-396"></a><span class='comment'>-- Result is a root node with a single text node as child.</span>+<a name="line-397"></a><span class='comment'>-- Useful for debugging and trace output.</span>+<a name="line-398"></a><span class='comment'>-- see also : 'haskellRepOfXmlDoc', 'treeRepOfXmlDoc'</span>+<a name="line-399"></a>+<a name="line-400"></a><a name="numberLinesInXmlDoc"></a><span class='definition'>numberLinesInXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-401"></a><span class='definition'>numberLinesInXmlDoc</span>+<a name="line-402"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-403"></a> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>changeText</span> <span class='varid'>numberLines</span><span class='layout'>)</span>+<a name="line-404"></a> <span class='keyword'>where</span>+<a name="line-405"></a> <span class='varid'>numberLines</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-406"></a> <span class='varid'>numberLines</span> <span class='varid'>str</span>+<a name="line-407"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>$</span>+<a name="line-408"></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-409"></a> <span class='keyword'>where</span>+<a name="line-410"></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-411"></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-412"></a>+<a name="line-413"></a><span class='comment'>-- |</span>+<a name="line-414"></a><span class='comment'>-- convert a document into a text representation in tree form.</span>+<a name="line-415"></a><span class='comment'>--</span>+<a name="line-416"></a><span class='comment'>-- Useful for debugging and trace output.</span>+<a name="line-417"></a><span class='comment'>-- see also : 'haskellRepOfXmlDoc', 'numberLinesInXmlDoc'</span>+<a name="line-418"></a>+<a name="line-419"></a><a name="treeRepOfXmlDoc"></a><span class='definition'>treeRepOfXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-420"></a><span class='definition'>treeRepOfXmlDoc</span>+<a name="line-421"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-422"></a> <span class='varid'>root</span> <span class='keyglyph'>[</span><span class='varid'>getAttrl</span><span class='keyglyph'>]</span> <span class='keyglyph'>[</span><span class='varid'>formatXmlTree</span> <span class='varop'>^>></span> <span class='varid'>mkText</span><span class='keyglyph'>]</span>+<a name="line-423"></a>+<a name="line-424"></a><a name="addHeadlineToXmlDoc"></a><span class='definition'>addHeadlineToXmlDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-425"></a><span class='definition'>addHeadlineToXmlDoc</span>+<a name="line-426"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='layout'>(</span> <span class='varid'>addTitle</span> <span class='varop'>$<</span> <span class='layout'>(</span><span class='varid'>getAttrValue</span> <span class='varid'>a_source</span> <span class='varop'>>>^</span> <span class='varid'>formatTitle</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-427"></a> <span class='keyword'>where</span>+<a name="line-428"></a> <span class='varid'>addTitle</span> <span class='varid'>str</span>+<a name="line-429"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='varid'>txt</span> <span class='varid'>str</span> <span class='varop'><+></span> <span class='varid'>getChildren</span> <span class='varop'><+></span> <span class='varid'>txt</span> <span class='str'>"\n"</span> <span class='layout'>)</span>+<a name="line-430"></a> <span class='varid'>formatTitle</span> <span class='varid'>str</span>+<a name="line-431"></a> <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-432"></a> <span class='keyword'>where</span>+<a name="line-433"></a> <span class='varid'>headline</span> <span class='keyglyph'>=</span> <span class='str'>"content of: "</span> <span class='varop'>++</span> <span class='varid'>str</span>+<a name="line-434"></a> <span class='varid'>underline</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='chr'>'='</span><span class='layout'>)</span> <span class='varid'>headline</span>+<a name="line-435"></a>+<a name="line-436"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-437"></a>+<a name="line-438"></a><a name="removeComment'"></a><span class='definition'>removeComment'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-439"></a><span class='definition'>removeComment'</span> <span class='keyglyph'>=</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isCmt</span>+<a name="line-440"></a>+<a name="line-441"></a><span class='comment'>-- |</span>+<a name="line-442"></a><span class='comment'>-- remove Comments: @none `when` isCmt@</span>+<a name="line-443"></a>+<a name="line-444"></a><a name="removeComment"></a><span class='definition'>removeComment</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-445"></a><span class='definition'>removeComment</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>removeComment'</span>+<a name="line-446"></a>+<a name="line-447"></a><span class='comment'>-- |</span>+<a name="line-448"></a><span class='comment'>-- remove all comments recursively</span>+<a name="line-449"></a>+<a name="line-450"></a><a name="removeAllComment"></a><span class='definition'>removeAllComment</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-451"></a><span class='definition'>removeAllComment</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>processBottomUp</span> <span class='varid'>removeComment'</span>+<a name="line-452"></a>+<a name="line-453"></a><span class='comment'>-- ----------</span>+<a name="line-454"></a>+<a name="line-455"></a><a name="removeWhiteSpace'"></a><span class='definition'>removeWhiteSpace'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-456"></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-457"></a>+<a name="line-458"></a><span class='comment'>-- |</span>+<a name="line-459"></a><span class='comment'>-- simple filter for removing whitespace.</span>+<a name="line-460"></a><span class='comment'>--</span>+<a name="line-461"></a><span class='comment'>-- no check on sigificant whitespace, e.g. in HTML \<pre\>-elements, is done.</span>+<a name="line-462"></a><span class='comment'>--</span>+<a name="line-463"></a><span class='comment'>--</span>+<a name="line-464"></a><span class='comment'>-- see also : 'removeAllWhiteSpace', 'removeDocWhiteSpace'</span>+<a name="line-465"></a>+<a name="line-466"></a><a name="removeWhiteSpace"></a><span class='definition'>removeWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-467"></a><span class='definition'>removeWhiteSpace</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>removeWhiteSpace'</span>+<a name="line-468"></a>+<a name="line-469"></a><span class='comment'>-- |</span>+<a name="line-470"></a><span class='comment'>-- simple recursive filter for removing all whitespace.</span>+<a name="line-471"></a><span class='comment'>--</span>+<a name="line-472"></a><span class='comment'>-- removes all text nodes in a tree that consist only of whitespace.</span>+<a name="line-473"></a><span class='comment'>--</span>+<a name="line-474"></a><span class='comment'>--</span>+<a name="line-475"></a><span class='comment'>-- see also : 'removeWhiteSpace', 'removeDocWhiteSpace'</span>+<a name="line-476"></a>+<a name="line-477"></a><a name="removeAllWhiteSpace"></a><span class='definition'>removeAllWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-478"></a><span class='definition'>removeAllWhiteSpace</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>processBottomUp</span> <span class='varid'>removeWhiteSpace'</span>+<a name="line-479"></a>+<a name="line-480"></a><span class='comment'>-- |</span>+<a name="line-481"></a><span class='comment'>-- filter for removing all not significant whitespace.</span>+<a name="line-482"></a><span class='comment'>--</span>+<a name="line-483"></a><span class='comment'>-- the tree traversed for removing whitespace between elements,</span>+<a name="line-484"></a><span class='comment'>-- that was inserted for indentation and readability.</span>+<a name="line-485"></a><span class='comment'>-- whitespace is only removed at places, where it's not significat</span>+<a name="line-486"></a><span class='comment'>-- preserving whitespace may be controlled in a document tree</span>+<a name="line-487"></a><span class='comment'>-- by a tag attribute @xml:space@</span>+<a name="line-488"></a><span class='comment'>--</span>+<a name="line-489"></a><span class='comment'>-- allowed values for this attribute are @default | preserve@</span>+<a name="line-490"></a><span class='comment'>--</span>+<a name="line-491"></a><span class='comment'>-- input is root node of the document to be cleaned up,</span>+<a name="line-492"></a><span class='comment'>-- output the semantically equivalent simplified tree</span>+<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'>-- see also : 'indentDoc', 'removeAllWhiteSpace'</span>+<a name="line-496"></a>+<a name="line-497"></a><a name="removeDocWhiteSpace"></a><span class='definition'>removeDocWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-498"></a><span class='definition'>removeDocWhiteSpace</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>removeRootWhiteSpace</span>+<a name="line-499"></a>+<a name="line-500"></a>+<a name="line-501"></a><a name="removeRootWhiteSpace"></a><span class='definition'>removeRootWhiteSpace</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-502"></a><span class='definition'>removeRootWhiteSpace</span>+<a name="line-503"></a> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='varid'>processRootElement</span>+<a name="line-504"></a> <span class='varop'>`when`</span>+<a name="line-505"></a> <span class='varid'>isRoot</span>+<a name="line-506"></a> <span class='keyword'>where</span>+<a name="line-507"></a> <span class='varid'>processRootElement</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-508"></a> <span class='varid'>processRootElement</span>+<a name="line-509"></a> <span class='keyglyph'>=</span> <span class='varid'>removeWhiteSpace</span> <span class='varop'>>>></span> <span class='varid'>processChild</span>+<a name="line-510"></a> <span class='keyword'>where</span>+<a name="line-511"></a> <span class='varid'>processChild</span>+<a name="line-512"></a> <span class='keyglyph'>=</span> <span class='varid'>choiceA</span> <span class='keyglyph'>[</span> <span class='varid'>isDTD</span>+<a name="line-513"></a> <span class='conop'>:-></span> <span class='varid'>removeAllWhiteSpace</span> <span class='comment'>-- whitespace in DTD is redundant</span>+<a name="line-514"></a> <span class='layout'>,</span> <span class='varid'>this</span>+<a name="line-515"></a> <span class='conop'>:-></span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='varid'>getChildren</span>+<a name="line-516"></a> <span class='varop'>>>.</span> <span class='varid'>indentTrees</span> <span class='varid'>insertNothing</span> <span class='conid'>False</span> <span class='num'>1</span>+<a name="line-517"></a> <span class='layout'>)</span>+<a name="line-518"></a> <span class='keyglyph'>]</span>+<a name="line-519"></a>+<a name="line-520"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-521"></a>+<a name="line-522"></a><span class='comment'>-- |</span>+<a name="line-523"></a><span class='comment'>-- filter for indenting a document tree for pretty printing.</span>+<a name="line-524"></a><span class='comment'>--</span>+<a name="line-525"></a><span class='comment'>-- the tree is traversed for inserting whitespace for tag indentation.</span>+<a name="line-526"></a><span class='comment'>--</span>+<a name="line-527"></a><span class='comment'>-- whitespace is only inserted or changed at places, where it isn't significant,</span>+<a name="line-528"></a><span class='comment'>-- is's not inserted between tags and text containing non whitespace chars.</span>+<a name="line-529"></a><span class='comment'>--</span>+<a name="line-530"></a><span class='comment'>-- whitespace is only inserted or changed at places, where it's not significant.</span>+<a name="line-531"></a><span class='comment'>-- preserving whitespace may be controlled in a document tree</span>+<a name="line-532"></a><span class='comment'>-- by a tag attribute @xml:space@</span>+<a name="line-533"></a><span class='comment'>--</span>+<a name="line-534"></a><span class='comment'>-- allowed values for this attribute are @default | preserve@.</span>+<a name="line-535"></a><span class='comment'>--</span>+<a name="line-536"></a><span class='comment'>-- input is a complete document tree or a document fragment</span>+<a name="line-537"></a><span class='comment'>-- result is the semantically equivalent formatted tree.</span>+<a name="line-538"></a><span class='comment'>--</span>+<a name="line-539"></a><span class='comment'>--</span>+<a name="line-540"></a><span class='comment'>-- see also : 'removeDocWhiteSpace'</span>+<a name="line-541"></a>+<a name="line-542"></a><a name="indentDoc"></a><span class='definition'>indentDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-543"></a><span class='definition'>indentDoc</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-544"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>isRoot</span> <span class='varop'>`guards`</span> <span class='varid'>indentRoot</span> <span class='layout'>)</span>+<a name="line-545"></a> <span class='varop'>`orElse`</span>+<a name="line-546"></a> <span class='layout'>(</span><span class='varid'>root</span> <span class='conid'>[]</span> <span class='keyglyph'>[</span><span class='varid'>this</span><span class='keyglyph'>]</span> <span class='varop'>>>></span> <span class='varid'>indentRoot</span> <span class='varop'>>>></span> <span class='varid'>getChildren</span><span class='layout'>)</span>+<a name="line-547"></a> <span class='layout'>)</span>+<a name="line-548"></a>+<a name="line-549"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-550"></a>+<a name="line-551"></a><a name="indentRoot"></a><span class='definition'>indentRoot</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-552"></a><span class='definition'>indentRoot</span> <span class='keyglyph'>=</span> <span class='varid'>processChildren</span> <span class='varid'>indentRootChildren</span>+<a name="line-553"></a> <span class='keyword'>where</span>+<a name="line-554"></a> <span class='varid'>indentRootChildren</span>+<a name="line-555"></a> <span class='keyglyph'>=</span> <span class='varid'>removeText</span> <span class='varop'>>>></span> <span class='varid'>indentChild</span> <span class='varop'>>>></span> <span class='varid'>insertNL</span>+<a name="line-556"></a> <span class='keyword'>where</span>+<a name="line-557"></a> <span class='varid'>removeText</span> <span class='keyglyph'>=</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isText</span>+<a name="line-558"></a> <span class='varid'>insertNL</span> <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-559"></a> <span class='varid'>indentChild</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>replaceChildren</span>+<a name="line-560"></a> <span class='layout'>(</span> <span class='varid'>getChildren</span>+<a name="line-561"></a> <span class='varop'>>>.</span>+<a name="line-562"></a> <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>+<a name="line-563"></a> <span class='layout'>)</span>+<a name="line-564"></a> <span class='varop'>`whenNot`</span> <span class='varid'>isDTD</span>+<a name="line-565"></a> <span class='layout'>)</span>+<a name="line-566"></a>+<a name="line-567"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-568"></a><span class='comment'>--</span>+<a name="line-569"></a><span class='comment'>-- copied from EditFilter and rewritten for arrows</span>+<a name="line-570"></a><span class='comment'>-- to remove dependency to the filter module</span>+<a name="line-571"></a>+<a name="line-572"></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'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</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-573"></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-574"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-575"></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-576"></a> <span class='keyglyph'>=</span> <span class='varid'>runLAs</span> <span class='varid'>lsf</span> <span class='varid'>ls</span>+<a name="line-577"></a> <span class='varop'>++</span>+<a name="line-578"></a> <span class='varid'>indentRest</span> <span class='varid'>rs</span>+<a name="line-579"></a> <span class='keyword'>where</span>+<a name="line-580"></a> <span class='varid'>runLAs</span> <span class='varid'>f</span> <span class='varid'>l</span>+<a name="line-581"></a> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='layout'>(</span><span class='varid'>constL</span> <span class='varid'>l</span> <span class='varop'>>>></span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varid'>undefined</span>+<a name="line-582"></a>+<a name="line-583"></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-584"></a> <span class='keyglyph'>=</span> <span class='varid'>break</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>isElem</span> <span class='varid'>ts</span>+<a name="line-585"></a>+<a name="line-586"></a> <span class='varid'>isSignificant</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span>+<a name="line-587"></a> <span class='varid'>isSignificant</span>+<a name="line-588"></a> <span class='keyglyph'>=</span> <span class='varid'>preserveSpace</span>+<a name="line-589"></a> <span class='varop'>||</span>+<a name="line-590"></a> <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'>runLAs</span> <span class='varid'>isSignificantPart</span><span class='layout'>)</span> <span class='varid'>ls</span>+<a name="line-591"></a>+<a name="line-592"></a> <span class='varid'>isSignificantPart</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-593"></a> <span class='varid'>isSignificantPart</span>+<a name="line-594"></a> <span class='keyglyph'>=</span> <span class='varid'>catA</span>+<a name="line-595"></a> <span class='keyglyph'>[</span> <span class='varid'>isText</span> <span class='varop'>`guards`</span> <span class='varid'>neg</span> <span class='varid'>isWhiteSpace</span>+<a name="line-596"></a> <span class='layout'>,</span> <span class='varid'>isCdata</span>+<a name="line-597"></a> <span class='layout'>,</span> <span class='varid'>isCharRef</span>+<a name="line-598"></a> <span class='layout'>,</span> <span class='varid'>isEntityRef</span>+<a name="line-599"></a> <span class='keyglyph'>]</span>+<a name="line-600"></a>+<a name="line-601"></a> <span class='varid'>lsf</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-602"></a> <span class='varid'>lsf</span>+<a name="line-603"></a> <span class='keyglyph'>|</span> <span class='varid'>isSignificant</span>+<a name="line-604"></a> <span class='keyglyph'>=</span> <span class='varid'>this</span>+<a name="line-605"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-606"></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-607"></a> <span class='varop'>>>></span>+<a name="line-608"></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-609"></a>+<a name="line-610"></a> <span class='varid'>indentRest</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>+<a name="line-611"></a> <span class='varid'>indentRest</span> <span class='conid'>[]</span>+<a name="line-612"></a> <span class='keyglyph'>|</span> <span class='varid'>isSignificant</span>+<a name="line-613"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-614"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-615"></a> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='layout'>(</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'>undefined</span>+<a name="line-616"></a>+<a name="line-617"></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-618"></a> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>indentElem</span>+<a name="line-619"></a> <span class='varop'>>>></span>+<a name="line-620"></a> <span class='varid'>lsf</span>+<a name="line-621"></a> <span class='layout'>)</span>+<a name="line-622"></a> <span class='varop'>`when`</span> <span class='varid'>isElem</span>+<a name="line-623"></a> <span class='layout'>)</span> <span class='varid'>t'</span>+<a name="line-624"></a> <span class='varop'>++</span>+<a name="line-625"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>ts'</span>+<a name="line-626"></a> <span class='keyword'>then</span> <span class='varid'>indentRest</span>+<a name="line-627"></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>+<a name="line-628"></a> <span class='layout'>)</span> <span class='varid'>ts'</span>+<a name="line-629"></a> <span class='keyword'>where</span>+<a name="line-630"></a> <span class='varid'>indentElem</span>+<a name="line-631"></a> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='varid'>getChildren</span>+<a name="line-632"></a> <span class='varop'>>>.</span>+<a name="line-633"></a> <span class='varid'>indentChildren</span>+<a name="line-634"></a> <span class='layout'>)</span>+<a name="line-635"></a>+<a name="line-636"></a> <span class='varid'>xmlSpaceAttrValue</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-637"></a> <span class='varid'>xmlSpaceAttrValue</span>+<a name="line-638"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>.</span> <span class='varid'>runLA</span> <span class='layout'>(</span><span class='varid'>getAttrValue</span> <span class='str'>"xml:space"</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>t'</span>+<a name="line-639"></a>+<a name="line-640"></a> <span class='varid'>preserveSpace'</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span>+<a name="line-641"></a> <span class='varid'>preserveSpace'</span>+<a name="line-642"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>fromMaybe</span> <span class='varid'>preserveSpace</span>+<a name="line-643"></a> <span class='varop'>.</span>+<a name="line-644"></a> <span class='varid'>lookup</span> <span class='varid'>xmlSpaceAttrValue</span>+<a name="line-645"></a> <span class='layout'>)</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-646"></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-647"></a> <span class='keyglyph'>]</span>+<a name="line-648"></a>+<a name="line-649"></a> <span class='varid'>indentChildren</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTrees</span>+<a name="line-650"></a> <span class='varid'>indentChildren</span> <span class='varid'>cs'</span>+<a name="line-651"></a> <span class='keyglyph'>|</span> <span class='varid'>all</span> <span class='layout'>(</span><span class='varid'>maybe</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>all</span> <span class='varid'>isXmlSpaceChar</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span><span class='layout'>)</span> <span class='varid'>cs'</span>+<a name="line-652"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-653"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-654"></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> <span class='varid'>cs'</span>+<a name="line-655"></a>+<a name="line-656"></a> +<a name="line-657"></a><span class='comment'>-- filter for indenting elements</span>+<a name="line-658"></a>+<a name="line-659"></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'>LA</span> <span class='varid'>a</span> <span class='conid'>XmlTree</span>+<a name="line-660"></a><span class='definition'>insertIndentation</span> <span class='varid'>indentWidth</span> <span class='varid'>level</span>+<a name="line-661"></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-662"></a>+<a name="line-663"></a><span class='comment'>-- filter for removing all whitespace</span>+<a name="line-664"></a>+<a name="line-665"></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'>LA</span> <span class='varid'>a</span> <span class='conid'>XmlTree</span>+<a name="line-666"></a><span class='definition'>insertNothing</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>none</span>+<a name="line-667"></a>+<a name="line-668"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-669"></a>+<a name="line-670"></a><a name="transfCdata'"></a><span class='definition'>transfCdata'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-671"></a><span class='definition'>transfCdata'</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>getCdata</span> <span class='varop'>>>></span> <span class='varid'>mkText</span><span class='layout'>)</span> <span class='varop'>`when`</span> <span class='varid'>isCdata</span>+<a name="line-672"></a>+<a name="line-673"></a><span class='comment'>-- |</span>+<a name="line-674"></a><span class='comment'>-- converts a CDATA section node into a normal text node</span>+<a name="line-675"></a>+<a name="line-676"></a><a name="transfCdata"></a><span class='definition'>transfCdata</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-677"></a><span class='definition'>transfCdata</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-678"></a> <span class='varid'>transfCdata'</span>+<a name="line-679"></a>+<a name="line-680"></a><span class='comment'>-- |</span>+<a name="line-681"></a><span class='comment'>-- converts CDATA sections in whole document tree into normal text nodes</span>+<a name="line-682"></a>+<a name="line-683"></a><a name="transfAllCdata"></a><span class='definition'>transfAllCdata</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-684"></a><span class='definition'>transfAllCdata</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-685"></a> <span class='varid'>processBottomUp</span> <span class='varid'>transfCdata'</span>+<a name="line-686"></a> +<a name="line-687"></a><span class='comment'>--</span>+<a name="line-688"></a>+<a name="line-689"></a><a name="transfCharRef'"></a><span class='definition'>transfCharRef'</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-690"></a><span class='definition'>transfCharRef'</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getCharRef</span> <span class='varop'>>>></span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>i</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>toEnum</span> <span class='varid'>i</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='varop'>>>></span> <span class='varid'>mkText</span> <span class='layout'>)</span>+<a name="line-691"></a> <span class='varop'>`when`</span>+<a name="line-692"></a> <span class='varid'>isCharRef</span>+<a name="line-693"></a>+<a name="line-694"></a><span class='comment'>-- |</span>+<a name="line-695"></a><span class='comment'>-- converts character references to normal text</span>+<a name="line-696"></a>+<a name="line-697"></a><a name="transfCharRef"></a><span class='definition'>transfCharRef</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-698"></a><span class='definition'>transfCharRef</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-699"></a> <span class='varid'>transfCharRef'</span>+<a name="line-700"></a>+<a name="line-701"></a><span class='comment'>-- |</span>+<a name="line-702"></a><span class='comment'>-- recursively converts all character references to normal text</span>+<a name="line-703"></a>+<a name="line-704"></a><a name="transfAllCharRef"></a><span class='definition'>transfAllCharRef</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-705"></a><span class='definition'>transfAllCharRef</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-706"></a> <span class='varid'>processBottomUp</span> <span class='varid'>transfCharRef'</span>+<a name="line-707"></a>+<a name="line-708"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-709"></a>+<a name="line-710"></a><a name="hasXmlPi"></a><span class='definition'>hasXmlPi</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-711"></a><span class='definition'>hasXmlPi</span>+<a name="line-712"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span>+<a name="line-713"></a> <span class='layout'>(</span> <span class='varid'>getChildren</span>+<a name="line-714"></a> <span class='varop'>>>></span>+<a name="line-715"></a> <span class='varid'>isPi</span>+<a name="line-716"></a> <span class='varop'>>>></span>+<a name="line-717"></a> <span class='varid'>hasName</span> <span class='varid'>t_xml</span>+<a name="line-718"></a> <span class='layout'>)</span>+<a name="line-719"></a>+<a name="line-720"></a><span class='comment'>-- | add an \<?xml version=\"1.0\"?\> processing instruction</span>+<a name="line-721"></a><span class='comment'>-- if it's not already there</span>+<a name="line-722"></a>+<a name="line-723"></a><a name="addXmlPi"></a><span class='definition'>addXmlPi</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-724"></a><span class='definition'>addXmlPi</span>+<a name="line-725"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span>+<a name="line-726"></a> <span class='layout'>(</span> <span class='varid'>insertChildrenAt</span> <span class='num'>0</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>mkPi</span> <span class='layout'>(</span><span class='varid'>mkSNsName</span> <span class='varid'>t_xml</span><span class='layout'>)</span> <span class='varid'>none</span>+<a name="line-727"></a> <span class='varop'>>>></span>+<a name="line-728"></a> <span class='varid'>addAttr</span> <span class='varid'>a_version</span> <span class='str'>"1.0"</span>+<a name="line-729"></a> <span class='layout'>)</span>+<a name="line-730"></a> <span class='varop'><+></span>+<a name="line-731"></a> <span class='varid'>txt</span> <span class='str'>"\n"</span>+<a name="line-732"></a> <span class='layout'>)</span>+<a name="line-733"></a> <span class='varop'>`whenNot`</span>+<a name="line-734"></a> <span class='varid'>hasXmlPi</span>+<a name="line-735"></a> <span class='layout'>)</span>+<a name="line-736"></a>+<a name="line-737"></a><span class='comment'>-- | add an encoding spec to the \<?xml version=\"1.0\"?\> processing instruction</span>+<a name="line-738"></a>+<a name="line-739"></a><a name="addXmlPiEncoding"></a><span class='definition'>addXmlPiEncoding</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-740"></a><span class='definition'>addXmlPiEncoding</span> <span class='varid'>enc</span>+<a name="line-741"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-742"></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>+<a name="line-743"></a> <span class='varop'>`when`</span>+<a name="line-744"></a> <span class='layout'>(</span> <span class='varid'>isPi</span> <span class='varop'>>>></span> <span class='varid'>hasName</span> <span class='varid'>t_xml</span> <span class='layout'>)</span>+<a name="line-745"></a> <span class='layout'>)</span>+<a name="line-746"></a>+<a name="line-747"></a><span class='comment'>-- | add an XHTML strict doctype declaration to a document</span>+<a name="line-748"></a>+<a name="line-749"></a><a name="addXHtmlDoctypeStrict"></a><span class='definition'>addXHtmlDoctypeStrict</span>+<a name="line-750"></a> <span class='layout'>,</span> <span class='varid'>addXHtmlDoctypeTransitional</span>+<a name="line-751"></a> <span class='layout'>,</span> <span class='varid'>addXHtmlDoctypeFrameset</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-752"></a>+<a name="line-753"></a><span class='comment'>-- | add an XHTML strict doctype declaration to a document</span>+<a name="line-754"></a>+<a name="line-755"></a><span class='definition'>addXHtmlDoctypeStrict</span>+<a name="line-756"></a> <span class='keyglyph'>=</span> <span class='varid'>addDoctypeDecl</span> <span class='str'>"html"</span> <span class='str'>"-//W3C//DTD XHTML 1.0 Strict//EN"</span> <span class='str'>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"</span>+<a name="line-757"></a>+<a name="line-758"></a><span class='comment'>-- | add an XHTML transitional doctype declaration to a document</span>+<a name="line-759"></a>+<a name="line-760"></a><a name="addXHtmlDoctypeTransitional"></a><span class='definition'>addXHtmlDoctypeTransitional</span>+<a name="line-761"></a> <span class='keyglyph'>=</span> <span class='varid'>addDoctypeDecl</span> <span class='str'>"html"</span> <span class='str'>"-//W3C//DTD XHTML 1.0 Transitional//EN"</span> <span class='str'>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span>+<a name="line-762"></a>+<a name="line-763"></a><span class='comment'>-- | add an XHTML frameset doctype declaration to a document</span>+<a name="line-764"></a>+<a name="line-765"></a><a name="addXHtmlDoctypeFrameset"></a><span class='definition'>addXHtmlDoctypeFrameset</span>+<a name="line-766"></a> <span class='keyglyph'>=</span> <span class='varid'>addDoctypeDecl</span> <span class='str'>"html"</span> <span class='str'>"-//W3C//DTD XHTML 1.0 Frameset//EN"</span> <span class='str'>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"</span>+<a name="line-767"></a>+<a name="line-768"></a><span class='comment'>-- | add a doctype declaration to a document</span>+<a name="line-769"></a><span class='comment'>--</span>+<a name="line-770"></a><span class='comment'>-- The arguments are the root element name, the PUBLIC id and the SYSTEM id</span>+<a name="line-771"></a>+<a name="line-772"></a><a name="addDoctypeDecl"></a><span class='definition'>addDoctypeDecl</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</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> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-773"></a><span class='definition'>addDoctypeDecl</span> <span class='varid'>rootElem</span> <span class='varid'>public</span> <span class='varid'>system</span>+<a name="line-774"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-775"></a> <span class='varid'>replaceChildren</span>+<a name="line-776"></a> <span class='layout'>(</span> <span class='varid'>mkDTDDoctype</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>public</span> <span class='keyword'>then</span> <span class='varid'>id</span> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>k_public</span><span class='layout'>,</span> <span class='varid'>public</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-777"></a> <span class='varop'>.</span>+<a name="line-778"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>system</span> <span class='keyword'>then</span> <span class='varid'>id</span> <span class='keyword'>else</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>k_system</span><span class='layout'>,</span> <span class='varid'>system</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-779"></a> <span class='varop'>$</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_name</span><span class='layout'>,</span> <span class='varid'>rootElem</span><span class='layout'>)</span> <span class='keyglyph'>]</span>+<a name="line-780"></a> <span class='layout'>)</span> <span class='varid'>none</span>+<a name="line-781"></a> <span class='varop'><+></span>+<a name="line-782"></a> <span class='varid'>txt</span> <span class='str'>"\n"</span>+<a name="line-783"></a> <span class='varop'><+></span>+<a name="line-784"></a> <span class='varid'>getChildren</span>+<a name="line-785"></a> <span class='layout'>)</span>+<a name="line-786"></a>+<a name="line-787"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-Arrow-GeneralEntitySubstitution.html view
@@ -140,7 +140,7 @@ <a name="line-132"></a> <span class='varid'>addInternalEntity</span> <a name="line-133"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getDTDAttrValue</span> <span class='varid'>a_name</span> <a name="line-134"></a> <span class='varop'>>>></span>-<a name="line-135"></a> <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"processGeneralEntity: general entity definition for "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>+<a name="line-135"></a> <span class='varid'>traceValue</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"processGeneralEntity: general entity definition for "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span> <a name="line-136"></a> <span class='layout'>)</span> <a name="line-137"></a> <span class='varop'>&&&</span> <a name="line-138"></a> <span class='varid'>xshow</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varop'>>>></span> <span class='varid'>isText</span><span class='layout'>)</span>@@ -168,7 +168,7 @@ <a name="line-160"></a> <span class='varid'>addExternalEntity</span> <a name="line-161"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getDTDAttrValue</span> <span class='varid'>a_name</span> <a name="line-162"></a> <span class='varop'>>>></span>-<a name="line-163"></a> <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"processGeneralEntity: external entity definition for "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>+<a name="line-163"></a> <span class='varid'>traceValue</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"processGeneralEntity: external entity definition for "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span> <a name="line-164"></a> <span class='layout'>)</span> <a name="line-165"></a> <span class='varop'>&&&</span> <a name="line-166"></a> <span class='varid'>getDTDAttrValue</span> <span class='varid'>a_url</span> <span class='comment'>-- the absolute URL, not the relative in attr: k_system</span>@@ -182,7 +182,7 @@ <a name="line-174"></a> <span class='varid'>addUnparsedEntity</span> <a name="line-175"></a> <span class='keyglyph'>=</span> <span class='varid'>getDTDAttrValue</span> <span class='varid'>a_name</span> <a name="line-176"></a> <span class='varop'>>>></span>-<a name="line-177"></a> <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"processGeneralEntity: unparsed entity definition for "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>+<a name="line-177"></a> <span class='varid'>traceValue</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"processGeneralEntity: unparsed entity definition for "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span> <a name="line-178"></a> <span class='varop'>>>></span> <a name="line-179"></a> <span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='layout'>(</span><span class='varid'>insertEntity</span> <span class='varid'>substUnparsed</span><span class='layout'>)</span><span class='layout'>)</span> <a name="line-180"></a> <span class='varop'>>>></span>@@ -244,7 +244,7 @@ <a name="line-236"></a> <span class='varid'>substEntityRef</span> <a name="line-237"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getEntityRef</span> <span class='comment'>-- get the entity name and the env</span> <a name="line-238"></a> <span class='varop'>>>></span> <span class='comment'>-- and compute the arrow to be applied</span>-<a name="line-239"></a> <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"processGeneralEntity: entity reference for entity "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>+<a name="line-239"></a> <span class='varid'>traceValue</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"processGeneralEntity: entity reference for entity "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span> <a name="line-240"></a> <span class='varop'>>>></span> <a name="line-241"></a> <span class='varid'>traceMsg</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'>recl</span><span class='layout'>)</span> <a name="line-242"></a> <span class='layout'>)</span>
doc/hdoc/src/Text-XML-HXT-Arrow-Namespace.html view
@@ -10,433 +10,416 @@ <a name="line-2"></a> <a name="line-3"></a><span class='comment'>{- | <a name="line-4"></a> Module : Text.XML.HXT.Arrow.Namespace-<a name="line-5"></a> Copyright : Copyright (C) 2005 Uwe Schmidt+<a name="line-5"></a> Copyright : Copyright (C) 2005-2008 Uwe Schmidt <a name="line-6"></a> License : MIT <a name="line-7"></a> <a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de) <a name="line-9"></a> Stability : experimental <a name="line-10"></a> Portability: portable-<a name="line-11"></a> Version : $Id: Namespace.hs,v 1.13 2006/11/12 14:52:59 hxml Exp $-<a name="line-12"></a>-<a name="line-13"></a> namespace specific arrows-<a name="line-14"></a>-<a name="line-15"></a>-}</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Namespace</span>-<a name="line-20"></a> <span class='layout'>(</span> <span class='varid'>attachNsEnv</span>-<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>cleanupNamespaces</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>collectNamespaceDecl</span>-<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>collectPrefixUriPairs</span>-<a name="line-24"></a> <span class='layout'>,</span> <span class='varid'>isNamespaceDeclAttr</span>-<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>getNamespaceDecl</span>-<a name="line-26"></a> <span class='layout'>,</span> <span class='varid'>processWithNsEnv</span>-<a name="line-27"></a> <span class='layout'>,</span> <span class='varid'>processWithNsEnvWithoutAttrl</span>-<a name="line-28"></a> <span class='layout'>,</span> <span class='varid'>propagateNamespaces</span>-<a name="line-29"></a> <span class='layout'>,</span> <span class='varid'>uniqueNamespaces</span>-<a name="line-30"></a> <span class='layout'>,</span> <span class='varid'>uniqueNamespacesFromDeclAndQNames</span>-<a name="line-31"></a> <span class='layout'>,</span> <span class='varid'>validateNamespaces</span>-<a name="line-32"></a> <span class='layout'>)</span>-<a name="line-33"></a><span class='keyword'>where</span>-<a name="line-34"></a>-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span> <span class='comment'>-- arrow classes</span>-<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>-<a name="line-37"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>-<a name="line-38"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>-<a name="line-39"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrow</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'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>-<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'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>-<a name="line-43"></a>-<a name="line-44"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-45"></a> <span class='layout'>(</span> <span class='varid'>isNothing</span>-<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>fromJust</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'>Data</span><span class='varop'>.</span><span class='conid'>List</span>-<a name="line-50"></a> <span class='layout'>(</span> <span class='varid'>nub</span> <span class='layout'>)</span>+<a name="line-11"></a>+<a name="line-12"></a> namespace specific arrows+<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'>Arrow</span><span class='varop'>.</span><span class='conid'>Namespace</span>+<a name="line-19"></a> <span class='layout'>(</span> <span class='varid'>attachNsEnv</span>+<a name="line-20"></a> <span class='layout'>,</span> <span class='varid'>cleanupNamespaces</span>+<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>collectNamespaceDecl</span>+<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>collectPrefixUriPairs</span>+<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>isNamespaceDeclAttr</span>+<a name="line-24"></a> <span class='layout'>,</span> <span class='varid'>getNamespaceDecl</span>+<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>processWithNsEnv</span>+<a name="line-26"></a> <span class='layout'>,</span> <span class='varid'>processWithNsEnvWithoutAttrl</span>+<a name="line-27"></a> <span class='layout'>,</span> <span class='varid'>propagateNamespaces</span>+<a name="line-28"></a> <span class='layout'>,</span> <span class='varid'>uniqueNamespaces</span>+<a name="line-29"></a> <span class='layout'>,</span> <span class='varid'>uniqueNamespacesFromDeclAndQNames</span>+<a name="line-30"></a> <span class='layout'>,</span> <span class='varid'>validateNamespaces</span>+<a name="line-31"></a> <span class='layout'>)</span>+<a name="line-32"></a><span class='keyword'>where</span>+<a name="line-33"></a>+<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span> <span class='comment'>-- arrow classes</span>+<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>+<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>+<a name="line-37"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>+<a name="line-38"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrow</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'>Interface</span>+<a name="line-41"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>+<a name="line-42"></a>+<a name="line-43"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span> <span class='layout'>(</span> <span class='varid'>isNothing</span>+<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>fromJust</span>+<a name="line-45"></a> <span class='layout'>)</span>+<a name="line-46"></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'>nub</span> <span class='layout'>)</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'>-- | test whether an attribute node contains an XML Namespace declaration</span> <a name="line-51"></a>-<a name="line-52"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-53"></a>-<a name="line-54"></a><span class='comment'>-- | test whether an attribute node contains an XML Namespace declaration</span>-<a name="line-55"></a>-<a name="line-56"></a><a name="isNamespaceDeclAttr"></a><span class='definition'>isNamespaceDeclAttr</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-57"></a><span class='definition'>isNamespaceDeclAttr</span>-<a name="line-58"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-59"></a> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varop'>>>></span> <span class='varid'>isA</span> <span class='varid'>isNsQName</span><span class='layout'>)</span> <span class='varop'>`guards`</span> <span class='varid'>this</span>-<a name="line-60"></a> <span class='keyword'>where</span>-<a name="line-61"></a> <span class='varid'>isNsQName</span> <span class='varid'>n</span>-<a name="line-62"></a> <span class='keyglyph'>=</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span>-<a name="line-63"></a> <span class='varop'>&&</span>-<a name="line-64"></a> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>lp</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>tail</span> <span class='varop'>$</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-65"></a> <span class='keyword'>where</span>-<a name="line-66"></a> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>qualifiedName</span> <span class='varop'>$</span> <span class='varid'>n</span>-<a name="line-67"></a>-<a name="line-68"></a><span class='comment'>-- | get the namespace prefix and the namespace URI out of</span>-<a name="line-69"></a><span class='comment'>-- an attribute tree with a namespace declaration (see 'isNamespaceDeclAttr')</span>-<a name="line-70"></a><span class='comment'>-- for all other nodes this arrow fails</span>-<a name="line-71"></a>-<a name="line-72"></a><a name="getNamespaceDecl"></a><span class='definition'>getNamespaceDecl</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-73"></a><span class='definition'>getNamespaceDecl</span>-<a name="line-74"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-75"></a> <span class='varid'>isNamespaceDeclAttr</span>-<a name="line-76"></a> <span class='varop'>>>></span>-<a name="line-77"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getAttrName</span>-<a name="line-78"></a> <span class='varop'>>>></span>-<a name="line-79"></a> <span class='varid'>arr</span> <span class='varid'>getNsPrefix</span>-<a name="line-80"></a> <span class='layout'>)</span>-<a name="line-81"></a> <span class='varop'>&&&</span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>-<a name="line-82"></a> <span class='layout'>)</span>-<a name="line-83"></a> <span class='keyword'>where</span>-<a name="line-84"></a> <span class='varid'>getNsPrefix</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>6</span> <span class='varop'>.</span> <span class='varid'>qualifiedName</span> <span class='comment'>-- drop "xmlns:"</span>-<a name="line-85"></a>-<a name="line-86"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-87"></a>-<a name="line-88"></a><span class='comment'>-- | collect all namespace declarations contained in a document</span>-<a name="line-89"></a><span class='comment'>--</span>-<a name="line-90"></a><span class='comment'>-- apply 'getNamespaceDecl' to a whole XmlTree</span>-<a name="line-91"></a>-<a name="line-92"></a><a name="collectNamespaceDecl"></a><span class='definition'>collectNamespaceDecl</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-93"></a><span class='definition'>collectNamespaceDecl</span> <span class='keyglyph'>=</span> <span class='varid'>multi</span> <span class='varid'>getAttrl</span> <span class='varop'>>>></span> <span class='varid'>getNamespaceDecl</span>-<a name="line-94"></a>-<a name="line-95"></a><span class='comment'>-- | collect all (namePrefix, namespaceUri) pairs from a tree</span>-<a name="line-96"></a><span class='comment'>--</span>-<a name="line-97"></a><span class='comment'>-- all qualified names are inspected, whether a namespace uri is defined,</span>-<a name="line-98"></a><span class='comment'>-- for these uris the prefix and uri is returned. This arrow is useful for</span>-<a name="line-99"></a><span class='comment'>-- namespace cleanup, e.g. for documents generated with XSLT. It can be used</span>-<a name="line-100"></a><span class='comment'>-- together with 'collectNamespaceDecl' to 'cleanupNamespaces'</span>-<a name="line-101"></a>-<a name="line-102"></a><a name="collectPrefixUriPairs"></a><span class='definition'>collectPrefixUriPairs</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-103"></a><span class='definition'>collectPrefixUriPairs</span>-<a name="line-104"></a> <span class='keyglyph'>=</span> <span class='varid'>multi</span> <span class='layout'>(</span><span class='varid'>isElem</span> <span class='varop'><+></span> <span class='varid'>getAttrl</span> <span class='varop'><+></span> <span class='varid'>isPi</span><span class='layout'>)</span>-<a name="line-105"></a> <span class='varop'>>>></span>-<a name="line-106"></a> <span class='varid'>getQName</span>-<a name="line-107"></a> <span class='varop'>>>></span>-<a name="line-108"></a> <span class='varid'>arrL</span> <span class='varid'>getPrefixUri</span>-<a name="line-109"></a> <span class='keyword'>where</span>-<a name="line-110"></a> <span class='varid'>getPrefixUri</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-111"></a> <span class='varid'>getPrefixUri</span> <span class='varid'>n</span>-<a name="line-112"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>uri</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-113"></a> <span class='keyglyph'>|</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span>-<a name="line-114"></a> <span class='varop'>||</span>-<a name="line-115"></a> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xml</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span> <span class='comment'>-- these ones are reserved an predefined</span>-<a name="line-116"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>namePrefix</span> <span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>uri</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-117"></a> <span class='keyword'>where</span>-<a name="line-118"></a> <span class='varid'>uri</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri</span> <span class='varid'>n</span>-<a name="line-119"></a> <span class='varid'>px</span> <span class='keyglyph'>=</span> <span class='varid'>namePrefix</span> <span class='varid'>n</span>+<a name="line-52"></a><a name="isNamespaceDeclAttr"></a><span class='definition'>isNamespaceDeclAttr</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-53"></a><span class='definition'>isNamespaceDeclAttr</span>+<a name="line-54"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-55"></a> <span class='layout'>(</span><span class='varid'>getAttrName</span> <span class='varop'>>>></span> <span class='varid'>isA</span> <span class='varid'>isNameSpaceName</span><span class='layout'>)</span> <span class='varop'>`guards`</span> <span class='varid'>this</span>+<a name="line-56"></a>+<a name="line-57"></a><span class='comment'>-- | get the namespace prefix and the namespace URI out of</span>+<a name="line-58"></a><span class='comment'>-- an attribute tree with a namespace declaration (see 'isNamespaceDeclAttr')</span>+<a name="line-59"></a><span class='comment'>-- for all other nodes this arrow fails</span>+<a name="line-60"></a>+<a name="line-61"></a><a name="getNamespaceDecl"></a><span class='definition'>getNamespaceDecl</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-62"></a><span class='definition'>getNamespaceDecl</span>+<a name="line-63"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-64"></a> <span class='varid'>isNamespaceDeclAttr</span>+<a name="line-65"></a> <span class='varop'>>>></span>+<a name="line-66"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getAttrName</span>+<a name="line-67"></a> <span class='varop'>>>></span>+<a name="line-68"></a> <span class='varid'>arr</span> <span class='varid'>getNsPrefix</span>+<a name="line-69"></a> <span class='layout'>)</span>+<a name="line-70"></a> <span class='varop'>&&&</span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>+<a name="line-71"></a> <span class='layout'>)</span>+<a name="line-72"></a> <span class='keyword'>where</span>+<a name="line-73"></a> <span class='varid'>getNsPrefix</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>6</span> <span class='varop'>.</span> <span class='varid'>qualifiedName</span> <span class='comment'>-- drop "xmlns:"</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><span class='comment'>-- | collect all namespace declarations contained in a document</span>+<a name="line-78"></a><span class='comment'>--</span>+<a name="line-79"></a><span class='comment'>-- apply 'getNamespaceDecl' to a whole XmlTree</span>+<a name="line-80"></a>+<a name="line-81"></a><a name="collectNamespaceDecl"></a><span class='definition'>collectNamespaceDecl</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-82"></a><span class='definition'>collectNamespaceDecl</span> <span class='keyglyph'>=</span> <span class='varid'>multi</span> <span class='varid'>getAttrl</span> <span class='varop'>>>></span> <span class='varid'>getNamespaceDecl</span>+<a name="line-83"></a>+<a name="line-84"></a><span class='comment'>-- | collect all (namePrefix, namespaceUri) pairs from a tree</span>+<a name="line-85"></a><span class='comment'>--</span>+<a name="line-86"></a><span class='comment'>-- all qualified names are inspected, whether a namespace uri is defined,</span>+<a name="line-87"></a><span class='comment'>-- for these uris the prefix and uri is returned. This arrow is useful for</span>+<a name="line-88"></a><span class='comment'>-- namespace cleanup, e.g. for documents generated with XSLT. It can be used</span>+<a name="line-89"></a><span class='comment'>-- together with 'collectNamespaceDecl' to 'cleanupNamespaces'</span>+<a name="line-90"></a>+<a name="line-91"></a><a name="collectPrefixUriPairs"></a><span class='definition'>collectPrefixUriPairs</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-92"></a><span class='definition'>collectPrefixUriPairs</span>+<a name="line-93"></a> <span class='keyglyph'>=</span> <span class='varid'>multi</span> <span class='layout'>(</span><span class='varid'>isElem</span> <span class='varop'><+></span> <span class='varid'>getAttrl</span> <span class='varop'><+></span> <span class='varid'>isPi</span><span class='layout'>)</span>+<a name="line-94"></a> <span class='varop'>>>></span>+<a name="line-95"></a> <span class='varid'>getQName</span>+<a name="line-96"></a> <span class='varop'>>>></span>+<a name="line-97"></a> <span class='varid'>arrL</span> <span class='varid'>getPrefixUri</span>+<a name="line-98"></a> <span class='keyword'>where</span>+<a name="line-99"></a> <span class='varid'>getPrefixUri</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-100"></a> <span class='varid'>getPrefixUri</span> <span class='varid'>n</span>+<a name="line-101"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>uri</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-102"></a> <span class='keyglyph'>|</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span>+<a name="line-103"></a> <span class='varop'>||</span>+<a name="line-104"></a> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xml</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span> <span class='comment'>-- these ones are reserved an predefined</span>+<a name="line-105"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>namePrefix</span> <span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>uri</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-106"></a> <span class='keyword'>where</span>+<a name="line-107"></a> <span class='varid'>uri</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri</span> <span class='varid'>n</span>+<a name="line-108"></a> <span class='varid'>px</span> <span class='keyglyph'>=</span> <span class='varid'>namePrefix</span> <span class='varid'>n</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'>-- | generate unique namespaces and add all namespace declarations to the root element</span>+<a name="line-113"></a><span class='comment'>--</span>+<a name="line-114"></a><span class='comment'>-- Calls 'cleanupNamespaces' with 'collectNamespaceDecl'</span>+<a name="line-115"></a>+<a name="line-116"></a><a name="uniqueNamespaces"></a><span class='definition'>uniqueNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-117"></a><span class='definition'>uniqueNamespaces</span>+<a name="line-118"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-119"></a> <span class='varid'>cleanupNamespaces</span> <span class='varid'>collectNamespaceDecl</span> <a name="line-120"></a>-<a name="line-121"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-122"></a>-<a name="line-123"></a><span class='comment'>-- | generate unique namespaces and add all namespace declarations to the root element</span>-<a name="line-124"></a><span class='comment'>--</span>-<a name="line-125"></a><span class='comment'>-- Calls 'cleanupNamespaces' with 'collectNamespaceDecl'</span>-<a name="line-126"></a>-<a name="line-127"></a><a name="uniqueNamespaces"></a><span class='definition'>uniqueNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-128"></a><span class='definition'>uniqueNamespaces</span>-<a name="line-129"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-130"></a> <span class='varid'>cleanupNamespaces</span> <span class='varid'>collectNamespaceDecl</span>-<a name="line-131"></a>-<a name="line-132"></a><span class='comment'>-- | generate unique namespaces and add all namespace declarations for all prefix-uri pairs in all qualified names</span>-<a name="line-133"></a><span class='comment'>--</span>-<a name="line-134"></a><span class='comment'>-- useful for cleanup of namespaces in generated documents.</span>-<a name="line-135"></a><span class='comment'>-- Calls 'cleanupNamespaces' with @ collectNamespaceDecl <+> collectPrefixUriPairs @</span>-<a name="line-136"></a>-<a name="line-137"></a><a name="uniqueNamespacesFromDeclAndQNames"></a><span class='definition'>uniqueNamespacesFromDeclAndQNames</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-138"></a><span class='definition'>uniqueNamespacesFromDeclAndQNames</span>-<a name="line-139"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>-<a name="line-140"></a> <span class='varid'>cleanupNamespaces</span> <span class='layout'>(</span><span class='varid'>collectNamespaceDecl</span> <span class='varop'><+></span> <span class='varid'>collectPrefixUriPairs</span><span class='layout'>)</span>-<a name="line-141"></a>-<a name="line-142"></a><span class='comment'>-- | does the real work for namespace cleanup.</span>-<a name="line-143"></a><span class='comment'>--</span>-<a name="line-144"></a><span class='comment'>-- The parameter is used for collecting namespace uris and prefixes from the input tree</span>-<a name="line-145"></a>-<a name="line-146"></a><a name="cleanupNamespaces"></a><span class='definition'>cleanupNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-147"></a><span class='definition'>cleanupNamespaces</span> <span class='varid'>collectNamespaces</span>-<a name="line-148"></a> <span class='keyglyph'>=</span> <span class='varid'>renameNamespaces</span> <span class='varop'>$<</span> <span class='layout'>(</span><span class='varid'>listA</span> <span class='varid'>collectNamespaces</span> <span class='varop'>>>^</span> <span class='varid'>nub</span><span class='layout'>)</span>-<a name="line-149"></a> <span class='keyword'>where</span>-<a name="line-150"></a> <span class='varid'>renameNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-151"></a> <span class='varid'>renameNamespaces</span> <span class='varid'>env</span>-<a name="line-152"></a> <span class='keyglyph'>=</span> <span class='varid'>processBottomUp</span>-<a name="line-153"></a> <span class='layout'>(</span> <span class='varid'>processAttrl</span>-<a name="line-154"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isNamespaceDeclAttr</span> <span class='layout'>)</span> <span class='comment'>-- remove all namespace declarations</span>-<a name="line-155"></a> <span class='varop'>>>></span>-<a name="line-156"></a> <span class='varid'>changeQName</span> <span class='varid'>renamePrefix</span> <span class='comment'>-- update namespace prefix of attribute names, if namespace uri is set</span>-<a name="line-157"></a> <span class='layout'>)</span>-<a name="line-158"></a> <span class='varop'>>>></span>-<a name="line-159"></a> <span class='varid'>changeQName</span> <span class='varid'>renamePrefix</span> <span class='comment'>-- update namespace prefix of element names</span>-<a name="line-160"></a> <span class='layout'>)</span>-<a name="line-161"></a> <span class='varop'>>>></span>-<a name="line-162"></a> <span class='varid'>attachEnv</span> <span class='varid'>env1</span> <span class='comment'>-- all all namespaces as attributes to the root node attribute list</span>-<a name="line-163"></a> <span class='keyword'>where</span>-<a name="line-164"></a> <span class='varid'>renamePrefix</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>-<a name="line-165"></a> <span class='varid'>renamePrefix</span> <span class='varid'>n</span>-<a name="line-166"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>uri</span> <span class='keyglyph'>=</span> <span class='varid'>n</span>-<a name="line-167"></a> <span class='keyglyph'>|</span> <span class='varid'>isNothing</span> <span class='varid'>newPx</span> <span class='keyglyph'>=</span> <span class='varid'>n</span>-<a name="line-168"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>n</span> <span class='layout'>{</span><span class='varid'>namePrefix</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varid'>newPx</span><span class='layout'>}</span>-<a name="line-169"></a> <span class='keyword'>where</span>-<a name="line-170"></a> <span class='varid'>uri</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri</span> <span class='varid'>n</span>-<a name="line-171"></a> <span class='varid'>newPx</span> <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='varid'>uri</span> <span class='varid'>revEnv1</span>-<a name="line-172"></a> -<a name="line-173"></a> <span class='varid'>revEnv1</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>y</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>y</span><span class='layout'>,</span> <span class='varid'>x</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>env1</span>-<a name="line-174"></a>-<a name="line-175"></a> <span class='varid'>env1</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span>-<a name="line-176"></a> <span class='varid'>env1</span> <span class='keyglyph'>=</span> <span class='varid'>newEnv</span> <span class='conid'>[]</span> <span class='varid'>uris</span>-<a name="line-177"></a>-<a name="line-178"></a> <span class='varid'>uris</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-179"></a> <span class='varid'>uris</span> <span class='keyglyph'>=</span> <span class='varid'>nub</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>snd</span> <span class='varop'>$</span> <span class='varid'>env</span>-<a name="line-180"></a>-<a name="line-181"></a> <span class='varid'>genPrefixes</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-182"></a> <span class='varid'>genPrefixes</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"ns"</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</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-183"></a>-<a name="line-184"></a> <span class='varid'>newEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</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'>NsEnv</span>-<a name="line-185"></a> <span class='varid'>newEnv</span> <span class='varid'>env'</span> <span class='conid'>[]</span>-<a name="line-186"></a> <span class='keyglyph'>=</span> <span class='varid'>env'</span>+<a name="line-121"></a><span class='comment'>-- | generate unique namespaces and add all namespace declarations for all prefix-uri pairs in all qualified names</span>+<a name="line-122"></a><span class='comment'>--</span>+<a name="line-123"></a><span class='comment'>-- useful for cleanup of namespaces in generated documents.</span>+<a name="line-124"></a><span class='comment'>-- Calls 'cleanupNamespaces' with @ collectNamespaceDecl <+> collectPrefixUriPairs @</span>+<a name="line-125"></a>+<a name="line-126"></a><a name="uniqueNamespacesFromDeclAndQNames"></a><span class='definition'>uniqueNamespacesFromDeclAndQNames</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-127"></a><span class='definition'>uniqueNamespacesFromDeclAndQNames</span>+<a name="line-128"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-129"></a> <span class='varid'>cleanupNamespaces</span> <span class='layout'>(</span><span class='varid'>collectNamespaceDecl</span> <span class='varop'><+></span> <span class='varid'>collectPrefixUriPairs</span><span class='layout'>)</span>+<a name="line-130"></a>+<a name="line-131"></a><span class='comment'>-- | does the real work for namespace cleanup.</span>+<a name="line-132"></a><span class='comment'>--</span>+<a name="line-133"></a><span class='comment'>-- The parameter is used for collecting namespace uris and prefixes from the input tree</span>+<a name="line-134"></a>+<a name="line-135"></a><a name="cleanupNamespaces"></a><span class='definition'>cleanupNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-136"></a><span class='definition'>cleanupNamespaces</span> <span class='varid'>collectNamespaces</span>+<a name="line-137"></a> <span class='keyglyph'>=</span> <span class='varid'>renameNamespaces</span> <span class='varop'>$<</span> <span class='layout'>(</span><span class='varid'>listA</span> <span class='varid'>collectNamespaces</span> <span class='varop'>>>^</span> <span class='layout'>(</span><span class='varid'>toNsEnv</span> <span class='varop'>>>></span> <span class='varid'>nub</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-138"></a> <span class='keyword'>where</span>+<a name="line-139"></a> <span class='varid'>renameNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-140"></a> <span class='varid'>renameNamespaces</span> <span class='varid'>env</span>+<a name="line-141"></a> <span class='keyglyph'>=</span> <span class='varid'>processBottomUp</span>+<a name="line-142"></a> <span class='layout'>(</span> <span class='varid'>processAttrl</span>+<a name="line-143"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isNamespaceDeclAttr</span> <span class='layout'>)</span> <span class='comment'>-- remove all namespace declarations</span>+<a name="line-144"></a> <span class='varop'>>>></span>+<a name="line-145"></a> <span class='varid'>changeQName</span> <span class='varid'>renamePrefix</span> <span class='comment'>-- update namespace prefix of attribute names, if namespace uri is set</span>+<a name="line-146"></a> <span class='layout'>)</span>+<a name="line-147"></a> <span class='varop'>>>></span>+<a name="line-148"></a> <span class='varid'>changeQName</span> <span class='varid'>renamePrefix</span> <span class='comment'>-- update namespace prefix of element names</span>+<a name="line-149"></a> <span class='layout'>)</span>+<a name="line-150"></a> <span class='varop'>>>></span>+<a name="line-151"></a> <span class='varid'>attachEnv</span> <span class='varid'>env1</span> <span class='comment'>-- all all namespaces as attributes to the root node attribute list</span>+<a name="line-152"></a> <span class='keyword'>where</span>+<a name="line-153"></a> <span class='varid'>renamePrefix</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-154"></a> <span class='varid'>renamePrefix</span> <span class='varid'>n</span>+<a name="line-155"></a> <span class='keyglyph'>|</span> <span class='varid'>isNullXName</span> <span class='varid'>uri</span> <span class='keyglyph'>=</span> <span class='varid'>n</span>+<a name="line-156"></a> <span class='keyglyph'>|</span> <span class='varid'>isNothing</span> <span class='varid'>newPx</span> <span class='keyglyph'>=</span> <span class='varid'>n</span>+<a name="line-157"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>setNamePrefix'</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varid'>newPx</span><span class='layout'>)</span> <span class='varid'>n</span>+<a name="line-158"></a> <span class='keyword'>where</span>+<a name="line-159"></a> <span class='varid'>uri</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri'</span> <span class='varid'>n</span>+<a name="line-160"></a> <span class='varid'>newPx</span> <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='varid'>uri</span> <span class='varid'>revEnv1</span>+<a name="line-161"></a> +<a name="line-162"></a> <span class='varid'>revEnv1</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>y</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>y</span><span class='layout'>,</span> <span class='varid'>x</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>env1</span>+<a name="line-163"></a>+<a name="line-164"></a> <span class='varid'>env1</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span>+<a name="line-165"></a> <span class='varid'>env1</span> <span class='keyglyph'>=</span> <span class='varid'>newEnv</span> <span class='conid'>[]</span> <span class='varid'>uris</span>+<a name="line-166"></a>+<a name="line-167"></a> <span class='varid'>uris</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XName</span><span class='keyglyph'>]</span>+<a name="line-168"></a> <span class='varid'>uris</span> <span class='keyglyph'>=</span> <span class='varid'>nub</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>snd</span> <span class='varop'>$</span> <span class='varid'>env</span>+<a name="line-169"></a>+<a name="line-170"></a> <span class='varid'>genPrefixes</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XName</span><span class='keyglyph'>]</span>+<a name="line-171"></a> <span class='varid'>genPrefixes</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>newXName</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>"ns"</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</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-172"></a>+<a name="line-173"></a> <span class='varid'>newEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XName</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span>+<a name="line-174"></a> <span class='varid'>newEnv</span> <span class='varid'>env'</span> <span class='conid'>[]</span>+<a name="line-175"></a> <span class='keyglyph'>=</span> <span class='varid'>env'</span>+<a name="line-176"></a>+<a name="line-177"></a> <span class='varid'>newEnv</span> <span class='varid'>env'</span> <span class='layout'>(</span><span class='varid'>uri</span><span class='conop'>:</span><span class='varid'>rest</span><span class='layout'>)</span>+<a name="line-178"></a> <span class='keyglyph'>=</span> <span class='varid'>newEnv</span> <span class='varid'>env''</span> <span class='varid'>rest</span>+<a name="line-179"></a> <span class='keyword'>where</span>+<a name="line-180"></a> <span class='varid'>env''</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>prefix</span><span class='layout'>,</span> <span class='varid'>uri</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>env'</span>+<a name="line-181"></a> <span class='varid'>prefix</span>+<a name="line-182"></a> <span class='keyglyph'>=</span> <span class='varid'>head</span> <span class='layout'>(</span><span class='varid'>filter</span> <span class='varid'>notAlreadyUsed</span> <span class='varop'>$</span> <span class='varid'>preferedPrefixes</span> <span class='varop'>++</span> <span class='varid'>genPrefixes</span><span class='layout'>)</span>+<a name="line-183"></a> <span class='varid'>preferedPrefixes</span>+<a name="line-184"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span><span class='varid'>uri</span><span class='layout'>)</span><span class='varop'>.</span><span class='varid'>snd</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>env</span>+<a name="line-185"></a> <span class='varid'>notAlreadyUsed</span> <span class='varid'>s</span>+<a name="line-186"></a> <span class='keyglyph'>=</span> <span class='varid'>isNothing</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>s</span> <span class='varop'>$</span> <span class='varid'>env'</span> <a name="line-187"></a>-<a name="line-188"></a> <span class='varid'>newEnv</span> <span class='varid'>env'</span> <span class='layout'>(</span><span class='varid'>uri</span><span class='conop'>:</span><span class='varid'>rest</span><span class='layout'>)</span>-<a name="line-189"></a> <span class='keyglyph'>=</span> <span class='varid'>newEnv</span> <span class='varid'>env''</span> <span class='varid'>rest</span>-<a name="line-190"></a> <span class='keyword'>where</span>-<a name="line-191"></a> <span class='varid'>env''</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>prefix</span><span class='layout'>,</span> <span class='varid'>uri</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>env'</span>-<a name="line-192"></a> <span class='varid'>prefix</span>-<a name="line-193"></a> <span class='keyglyph'>=</span> <span class='varid'>head</span> <span class='layout'>(</span><span class='varid'>filter</span> <span class='varid'>notAlreadyUsed</span> <span class='varop'>$</span> <span class='varid'>preferedPrefixes</span> <span class='varop'>++</span> <span class='varid'>genPrefixes</span><span class='layout'>)</span>-<a name="line-194"></a> <span class='varid'>preferedPrefixes</span>-<a name="line-195"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span><span class='varid'>uri</span><span class='layout'>)</span><span class='varop'>.</span><span class='varid'>snd</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>env</span>-<a name="line-196"></a> <span class='varid'>notAlreadyUsed</span> <span class='varid'>s</span>-<a name="line-197"></a> <span class='keyglyph'>=</span> <span class='varid'>isNothing</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>s</span> <span class='varop'>$</span> <span class='varid'>env'</span>-<a name="line-198"></a>-<a name="line-199"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-200"></a>-<a name="line-201"></a><span class='comment'>-- | auxiliary arrow for processing with a namespace environment</span>-<a name="line-202"></a><span class='comment'>--</span>-<a name="line-203"></a><span class='comment'>-- process a document tree with an arrow, containing always the</span>-<a name="line-204"></a><span class='comment'>-- valid namespace environment as extra parameter.</span>-<a name="line-205"></a><span class='comment'>-- The namespace environment is implemented as a 'Data.AssocList.AssocList'.</span>-<a name="line-206"></a><span class='comment'>-- Processing of attributes can be controlled by a boolean parameter</span>-<a name="line-207"></a>-<a name="line-208"></a><a name="processWithNsEnv1"></a><span class='definition'>processWithNsEnv1</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-209"></a><span class='definition'>processWithNsEnv1</span> <span class='varid'>withAttr</span> <span class='varid'>f</span> <span class='varid'>env</span>-<a name="line-210"></a> <span class='keyglyph'>=</span> <span class='varid'>ifA</span> <span class='varid'>isElem</span> <span class='comment'>-- the test is just an optimization</span>-<a name="line-211"></a> <span class='layout'>(</span> <span class='varid'>processWithExtendedEnv</span> <span class='varop'>$<</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='varid'>extendEnv</span> <span class='varid'>env</span><span class='layout'>)</span> <span class='layout'>)</span> <span class='comment'>-- only element nodes contain namespace declarations</span>-<a name="line-212"></a> <span class='layout'>(</span> <span class='varid'>processWithExtendedEnv</span> <span class='varid'>env</span> <span class='layout'>)</span>-<a name="line-213"></a> <span class='keyword'>where</span>-<a name="line-214"></a> <span class='varid'>processWithExtendedEnv</span> <span class='varid'>env'</span>-<a name="line-215"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>env'</span> <span class='comment'>-- apply the env filter</span>-<a name="line-216"></a> <span class='varop'>>>></span>-<a name="line-217"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>withAttr</span>-<a name="line-218"></a> <span class='keyword'>then</span> <span class='varid'>processAttrl</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>env'</span><span class='layout'>)</span> <span class='comment'>-- apply the env to all attributes</span>-<a name="line-219"></a> <span class='keyword'>else</span> <span class='varid'>this</span>-<a name="line-220"></a> <span class='layout'>)</span>-<a name="line-221"></a> <span class='varop'>>>></span>-<a name="line-222"></a> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processWithNsEnv</span> <span class='varid'>f</span> <span class='varid'>env'</span><span class='layout'>)</span> <span class='comment'>-- apply the env recursively to all children</span>-<a name="line-223"></a> <span class='layout'>)</span>-<a name="line-224"></a> <span class='varop'>`when`</span> <span class='varid'>isElem</span> <span class='comment'>-- attrl and children only need processing for elem nodes</span>-<a name="line-225"></a>-<a name="line-226"></a> <span class='varid'>extendEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span>-<a name="line-227"></a> <span class='varid'>extendEnv</span> <span class='varid'>env'</span> <span class='varid'>t'</span>-<a name="line-228"></a> <span class='keyglyph'>=</span> <span class='varid'>addEntries</span> <span class='varid'>newDecls</span> <span class='varid'>env'</span>-<a name="line-229"></a> <span class='keyword'>where</span>-<a name="line-230"></a> <span class='varid'>newDecls</span> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>getAttrl</span> <span class='varop'>>>></span> <span class='varid'>getNamespaceDecl</span> <span class='layout'>)</span> <span class='varid'>t'</span>-<a name="line-231"></a>-<a name="line-232"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-233"></a>-<a name="line-234"></a><span class='comment'>-- | process a document tree with an arrow, containing always the</span>-<a name="line-235"></a><span class='comment'>-- valid namespace environment as extra parameter.</span>-<a name="line-236"></a><span class='comment'>--</span>-<a name="line-237"></a><span class='comment'>-- The namespace environment is implemented as a 'Data.AssocList.AssocList'</span>+<a name="line-188"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-189"></a>+<a name="line-190"></a><span class='comment'>-- | auxiliary arrow for processing with a namespace environment</span>+<a name="line-191"></a><span class='comment'>--</span>+<a name="line-192"></a><span class='comment'>-- process a document tree with an arrow, containing always the</span>+<a name="line-193"></a><span class='comment'>-- valid namespace environment as extra parameter.</span>+<a name="line-194"></a><span class='comment'>-- The namespace environment is implemented as a 'Data.AssocList.AssocList'.</span>+<a name="line-195"></a><span class='comment'>-- Processing of attributes can be controlled by a boolean parameter</span>+<a name="line-196"></a>+<a name="line-197"></a><a name="processWithNsEnv1"></a><span class='definition'>processWithNsEnv1</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-198"></a><span class='definition'>processWithNsEnv1</span> <span class='varid'>withAttr</span> <span class='varid'>f</span> <span class='varid'>env</span>+<a name="line-199"></a> <span class='keyglyph'>=</span> <span class='varid'>ifA</span> <span class='varid'>isElem</span> <span class='comment'>-- the test is just an optimization</span>+<a name="line-200"></a> <span class='layout'>(</span> <span class='varid'>processWithExtendedEnv</span> <span class='varop'>$<</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='varid'>extendEnv</span> <span class='varid'>env</span><span class='layout'>)</span> <span class='layout'>)</span> <span class='comment'>-- only element nodes contain namespace declarations</span>+<a name="line-201"></a> <span class='layout'>(</span> <span class='varid'>processWithExtendedEnv</span> <span class='varid'>env</span> <span class='layout'>)</span>+<a name="line-202"></a> <span class='keyword'>where</span>+<a name="line-203"></a> <span class='varid'>processWithExtendedEnv</span> <span class='varid'>env'</span>+<a name="line-204"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>env'</span> <span class='comment'>-- apply the env filter</span>+<a name="line-205"></a> <span class='varop'>>>></span>+<a name="line-206"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>withAttr</span>+<a name="line-207"></a> <span class='keyword'>then</span> <span class='varid'>processAttrl</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>env'</span><span class='layout'>)</span> <span class='comment'>-- apply the env to all attributes</span>+<a name="line-208"></a> <span class='keyword'>else</span> <span class='varid'>this</span>+<a name="line-209"></a> <span class='layout'>)</span>+<a name="line-210"></a> <span class='varop'>>>></span>+<a name="line-211"></a> <span class='varid'>processChildren</span> <span class='layout'>(</span><span class='varid'>processWithNsEnv</span> <span class='varid'>f</span> <span class='varid'>env'</span><span class='layout'>)</span> <span class='comment'>-- apply the env recursively to all children</span>+<a name="line-212"></a> <span class='layout'>)</span>+<a name="line-213"></a> <span class='varop'>`when`</span> <span class='varid'>isElem</span> <span class='comment'>-- attrl and children only need processing for elem nodes</span>+<a name="line-214"></a>+<a name="line-215"></a> <span class='varid'>extendEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span>+<a name="line-216"></a> <span class='varid'>extendEnv</span> <span class='varid'>env'</span> <span class='varid'>t'</span>+<a name="line-217"></a> <span class='keyglyph'>=</span> <span class='varid'>addEntries</span> <span class='layout'>(</span><span class='varid'>toNsEnv</span> <span class='varid'>newDecls</span><span class='layout'>)</span> <span class='varid'>env'</span>+<a name="line-218"></a> <span class='keyword'>where</span>+<a name="line-219"></a> <span class='varid'>newDecls</span> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>getAttrl</span> <span class='varop'>>>></span> <span class='varid'>getNamespaceDecl</span> <span class='layout'>)</span> <span class='varid'>t'</span>+<a name="line-220"></a>+<a name="line-221"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-222"></a>+<a name="line-223"></a><span class='comment'>-- | process a document tree with an arrow, containing always the</span>+<a name="line-224"></a><span class='comment'>-- valid namespace environment as extra parameter.</span>+<a name="line-225"></a><span class='comment'>--</span>+<a name="line-226"></a><span class='comment'>-- The namespace environment is implemented as a 'Data.AssocList.AssocList'</span>+<a name="line-227"></a>+<a name="line-228"></a><a name="processWithNsEnv"></a><span class='definition'>processWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-229"></a><span class='definition'>processWithNsEnv</span> <span class='keyglyph'>=</span> <span class='varid'>processWithNsEnv1</span> <span class='conid'>True</span>+<a name="line-230"></a>+<a name="line-231"></a><span class='comment'>-- | process all element nodes of a document tree with an arrow, containing always the</span>+<a name="line-232"></a><span class='comment'>-- valid namespace environment as extra parameter. Attribute lists are not processed.</span>+<a name="line-233"></a><span class='comment'>--</span>+<a name="line-234"></a><span class='comment'>-- See also: 'processWithNsEnv'</span>+<a name="line-235"></a>+<a name="line-236"></a><a name="processWithNsEnvWithoutAttrl"></a><span class='definition'>processWithNsEnvWithoutAttrl</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-237"></a><span class='definition'>processWithNsEnvWithoutAttrl</span> <span class='keyglyph'>=</span> <span class='varid'>processWithNsEnv1</span> <span class='conid'>False</span> <a name="line-238"></a>-<a name="line-239"></a><a name="processWithNsEnv"></a><span class='definition'>processWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-240"></a><span class='definition'>processWithNsEnv</span> <span class='keyglyph'>=</span> <span class='varid'>processWithNsEnv1</span> <span class='conid'>True</span>-<a name="line-241"></a>-<a name="line-242"></a><span class='comment'>-- | process all element nodes of a document tree with an arrow, containing always the</span>-<a name="line-243"></a><span class='comment'>-- valid namespace environment as extra parameter. Attribute lists are not processed.</span>-<a name="line-244"></a><span class='comment'>--</span>-<a name="line-245"></a><span class='comment'>-- See also: 'processWithNsEnv'</span>-<a name="line-246"></a>-<a name="line-247"></a><a name="processWithNsEnvWithoutAttrl"></a><span class='definition'>processWithNsEnvWithoutAttrl</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-248"></a><span class='definition'>processWithNsEnvWithoutAttrl</span> <span class='keyglyph'>=</span> <span class='varid'>processWithNsEnv1</span> <span class='conid'>False</span>-<a name="line-249"></a>-<a name="line-250"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-251"></a>-<a name="line-252"></a><span class='comment'>-- | attach all valid namespace declarations to the attribute list of element nodes.</span>-<a name="line-253"></a><span class='comment'>--</span>-<a name="line-254"></a><span class='comment'>-- This arrow is useful for document processing, that requires access to all namespace</span>-<a name="line-255"></a><span class='comment'>-- declarations at any element node, but which cannot be done with a simple 'processWithNsEnv'.</span>-<a name="line-256"></a>-<a name="line-257"></a><a name="attachNsEnv"></a><span class='definition'>attachNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-258"></a><span class='definition'>attachNsEnv</span> <span class='varid'>initialEnv</span>-<a name="line-259"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>processWithNsEnvWithoutAttrl</span> <span class='varid'>attachEnv</span> <span class='varid'>initialEnv</span>-<a name="line-260"></a> <span class='keyword'>where</span>+<a name="line-239"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-240"></a>+<a name="line-241"></a><span class='comment'>-- | attach all valid namespace declarations to the attribute list of element nodes.</span>+<a name="line-242"></a><span class='comment'>--</span>+<a name="line-243"></a><span class='comment'>-- This arrow is useful for document processing, that requires access to all namespace</span>+<a name="line-244"></a><span class='comment'>-- declarations at any element node, but which cannot be done with a simple 'processWithNsEnv'.</span>+<a name="line-245"></a>+<a name="line-246"></a><a name="attachNsEnv"></a><span class='definition'>attachNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-247"></a><span class='definition'>attachNsEnv</span> <span class='varid'>initialEnv</span>+<a name="line-248"></a> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>processWithNsEnvWithoutAttrl</span> <span class='varid'>attachEnv</span> <span class='varid'>initialEnv</span>+<a name="line-249"></a> <span class='keyword'>where</span>+<a name="line-250"></a>+<a name="line-251"></a><a name="attachEnv"></a><span class='definition'>attachEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-252"></a><span class='definition'>attachEnv</span> <span class='varid'>env</span>+<a name="line-253"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>processAttrl</span> <span class='layout'>(</span><span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isNamespaceDeclAttr</span><span class='layout'>)</span>+<a name="line-254"></a> <span class='varop'>>>></span>+<a name="line-255"></a> <span class='varid'>addAttrl</span> <span class='layout'>(</span><span class='varid'>catA</span> <span class='varid'>nsAttrl</span><span class='layout'>)</span>+<a name="line-256"></a> <span class='layout'>)</span>+<a name="line-257"></a> <span class='varop'>`when`</span> <span class='varid'>isElem</span>+<a name="line-258"></a> <span class='keyword'>where</span>+<a name="line-259"></a> <span class='varid'>nsAttrl</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='keyglyph'>]</span>+<a name="line-260"></a> <span class='varid'>nsAttrl</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>nsDeclToAttr</span> <span class='varid'>env</span> <a name="line-261"></a>-<a name="line-262"></a><a name="attachEnv"></a><span class='definition'>attachEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-263"></a><span class='definition'>attachEnv</span> <span class='varid'>env</span>-<a name="line-264"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>processAttrl</span> <span class='layout'>(</span><span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isNamespaceDeclAttr</span><span class='layout'>)</span>-<a name="line-265"></a> <span class='varop'>>>></span>-<a name="line-266"></a> <span class='varid'>addAttrl</span> <span class='layout'>(</span><span class='varid'>catA</span> <span class='varid'>nsAttrl</span><span class='layout'>)</span>-<a name="line-267"></a> <span class='layout'>)</span>-<a name="line-268"></a> <span class='varop'>`when`</span> <span class='varid'>isElem</span>-<a name="line-269"></a> <span class='keyword'>where</span>-<a name="line-270"></a> <span class='varid'>nsAttrl</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='keyglyph'>]</span>-<a name="line-271"></a> <span class='varid'>nsAttrl</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>nsDeclToAttr</span> <span class='varid'>env</span>-<a name="line-272"></a>-<a name="line-273"></a> <span class='varid'>nsDeclToAttr</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-274"></a> <span class='varid'>nsDeclToAttr</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>uri</span><span class='layout'>)</span>-<a name="line-275"></a> <span class='keyglyph'>=</span> <span class='varid'>mkAttr</span> <span class='varid'>qn</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>uri</span><span class='layout'>)</span>-<a name="line-276"></a> <span class='keyword'>where</span>-<a name="line-277"></a> <span class='varid'>qn</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span>-<a name="line-278"></a> <span class='varid'>qn</span> <span class='keyglyph'>=</span> <span class='varid'>mkNsName</span> <span class='layout'>(</span><span class='varid'>a_xmlns</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>n</span> <span class='keyword'>then</span> <span class='str'>""</span> <span class='keyword'>else</span> <span class='chr'>':'</span> <span class='conop'>:</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>xmlnsNamespace</span>+<a name="line-262"></a> <span class='varid'>nsDeclToAttr</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>XName</span><span class='layout'>,</span> <span class='conid'>XName</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-263"></a> <span class='varid'>nsDeclToAttr</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>uri</span><span class='layout'>)</span>+<a name="line-264"></a> <span class='keyglyph'>=</span> <span class='varid'>mkAttr</span> <span class='varid'>qn</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>uri</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-265"></a> <span class='keyword'>where</span>+<a name="line-266"></a> <span class='varid'>qn</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span>+<a name="line-267"></a> <span class='varid'>qn</span> <span class='keyglyph'>|</span> <span class='varid'>isNullXName</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>mkQName'</span> <span class='varid'>nullXName</span> <span class='varid'>xmlnsXName</span> <span class='varid'>xmlnsNamespaceXName</span>+<a name="line-268"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>mkQName'</span> <span class='varid'>xmlnsXName</span> <span class='varid'>n</span> <span class='varid'>xmlnsNamespaceXName</span>+<a name="line-269"></a>+<a name="line-270"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-271"></a>+<a name="line-272"></a><span class='comment'>-- |</span>+<a name="line-273"></a><span class='comment'>-- propagate all namespace declarations \"xmlns:ns=...\" to all element and attribute nodes of a document.</span>+<a name="line-274"></a><span class='comment'>--</span>+<a name="line-275"></a><span class='comment'>-- This arrow does not check for illegal use of namespaces.</span>+<a name="line-276"></a><span class='comment'>-- The real work is done by 'propagateNamespaceEnv'.</span>+<a name="line-277"></a><span class='comment'>--</span>+<a name="line-278"></a><span class='comment'>-- The arrow may be applied repeatedly if neccessary.</span> <a name="line-279"></a>-<a name="line-280"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-281"></a>-<a name="line-282"></a><span class='comment'>-- |</span>-<a name="line-283"></a><span class='comment'>-- propagate all namespace declarations \"xmlns:ns=...\" to all element and attribute nodes of a document.</span>-<a name="line-284"></a><span class='comment'>--</span>-<a name="line-285"></a><span class='comment'>-- This arrow does not check for illegal use of namespaces.</span>-<a name="line-286"></a><span class='comment'>-- The real work is done by 'propagateNamespaceEnv'.</span>-<a name="line-287"></a><span class='comment'>--</span>-<a name="line-288"></a><span class='comment'>-- The arrow may be applied repeatedly if neccessary.</span>+<a name="line-280"></a><a name="propagateNamespaces"></a><span class='definition'>propagateNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-281"></a><span class='definition'>propagateNamespaces</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span>+<a name="line-282"></a> <span class='varid'>propagateNamespaceEnv</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xmlXName</span><span class='layout'>,</span> <span class='varid'>xmlNamespaceXName</span><span class='layout'>)</span>+<a name="line-283"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xmlnsXName</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespaceXName</span><span class='layout'>)</span>+<a name="line-284"></a> <span class='keyglyph'>]</span>+<a name="line-285"></a>+<a name="line-286"></a><span class='comment'>-- |</span>+<a name="line-287"></a><span class='comment'>-- attaches the namespace info given by the namespace table</span>+<a name="line-288"></a><span class='comment'>-- to a tag node and its attributes and children.</span> <a name="line-289"></a>-<a name="line-290"></a><a name="propagateNamespaces"></a><span class='definition'>propagateNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-291"></a><span class='definition'>propagateNamespaces</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>propagateNamespaceEnv</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_xml</span><span class='layout'>,</span> <span class='varid'>xmlNamespace</span><span class='layout'>)</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_xmlns</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span><span class='layout'>)</span> <span class='keyglyph'>]</span>-<a name="line-292"></a>-<a name="line-293"></a><span class='comment'>-- |</span>-<a name="line-294"></a><span class='comment'>-- attaches the namespace info given by the namespace table</span>-<a name="line-295"></a><span class='comment'>-- to a tag node and its attributes and children.</span>-<a name="line-296"></a>-<a name="line-297"></a><a name="propagateNamespaceEnv"></a><span class='definition'>propagateNamespaceEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-298"></a><span class='definition'>propagateNamespaceEnv</span>-<a name="line-299"></a> <span class='keyglyph'>=</span> <span class='varid'>processWithNsEnv</span> <span class='varid'>addNamespaceUri</span>-<a name="line-300"></a> <span class='keyword'>where</span>-<a name="line-301"></a> <span class='varid'>addNamespaceUri</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-302"></a> <span class='varid'>addNamespaceUri</span> <span class='varid'>env'</span>-<a name="line-303"></a> <span class='keyglyph'>=</span> <span class='varid'>choiceA</span> <span class='keyglyph'>[</span> <span class='varid'>isElem</span> <span class='conop'>:-></span> <span class='varid'>changeElemName</span> <span class='layout'>(</span><span class='varid'>setNamespace</span> <span class='varid'>env'</span><span class='layout'>)</span>-<a name="line-304"></a> <span class='layout'>,</span> <span class='varid'>isAttr</span> <span class='conop'>:-></span> <span class='varid'>attachNamespaceUriToAttr</span> <span class='varid'>env'</span>-<a name="line-305"></a> <span class='layout'>,</span> <span class='varid'>isPi</span> <span class='conop'>:-></span> <span class='varid'>changePiName</span> <span class='layout'>(</span><span class='varid'>setNamespace</span> <span class='varid'>env'</span><span class='layout'>)</span>-<a name="line-306"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>-<a name="line-307"></a> <span class='keyglyph'>]</span>-<a name="line-308"></a>-<a name="line-309"></a> <span class='varid'>attachNamespaceUriToAttr</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-310"></a> <span class='varid'>attachNamespaceUriToAttr</span> <span class='varid'>attrEnv</span>-<a name="line-311"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getName</span> <span class='varop'>>>></span> <span class='varid'>isA</span> <span class='varid'>hasPrefixLocalPart</span> <span class='layout'>)</span>-<a name="line-312"></a> <span class='varop'>`guards`</span>-<a name="line-313"></a> <span class='varid'>changeAttrName</span> <span class='layout'>(</span><span class='varid'>setNamespace</span> <span class='varid'>attrEnv</span><span class='layout'>)</span>-<a name="line-314"></a> <span class='layout'>)</span>-<a name="line-315"></a> <span class='varop'>`orElse`</span>-<a name="line-316"></a> <span class='layout'>(</span> <span class='varid'>changeAttrName</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>xmlnsQN</span><span class='layout'>)</span>-<a name="line-317"></a> <span class='varop'>`when`</span>-<a name="line-318"></a> <span class='varid'>hasName</span> <span class='varid'>a_xmlns</span>-<a name="line-319"></a> <span class='layout'>)</span>-<a name="line-320"></a> <span class='keyword'>where</span>-<a name="line-321"></a> <span class='varid'>hasPrefixLocalPart</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-322"></a> <span class='varid'>hasPrefixLocalPart</span> <span class='varid'>s</span>-<a name="line-323"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='chr'>':'</span> <span class='varop'>`elem`</span> <span class='varid'>s</span> <span class='layout'>)</span> <span class='comment'>-- small optimization: only do some string handling when is ':' found</span>-<a name="line-324"></a> <span class='varop'>&&</span>-<a name="line-325"></a> <span class='layout'>(</span> <span class='keyword'>let</span> <span class='comment'>-- check none empty prefix and local part</span>-<a name="line-326"></a> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>s</span>-<a name="line-327"></a> <span class='keyword'>in</span>-<a name="line-328"></a> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>px</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>drop</span> <span class='num'>1</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-329"></a> <span class='layout'>)</span>-<a name="line-330"></a>-<a name="line-331"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-332"></a>-<a name="line-333"></a><span class='comment'>-- |</span>-<a name="line-334"></a><span class='comment'>-- validate the namespace constraints in a whole tree.</span>-<a name="line-335"></a><span class='comment'>--</span>-<a name="line-336"></a><span class='comment'>-- Result is the list of errors concerning namespaces.</span>-<a name="line-337"></a><span class='comment'>-- Predicates 'isWellformedQName', 'isWellformedQualifiedName', 'isDeclaredNamespaces'</span>-<a name="line-338"></a><span class='comment'>-- and 'isWellformedNSDecl' are applied to the appropriate elements and attributes.</span>-<a name="line-339"></a>-<a name="line-340"></a><a name="validateNamespaces"></a><span class='definition'>validateNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-341"></a><span class='definition'>validateNamespaces</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varid'>validateNamespaces1</span>-<a name="line-342"></a>-<a name="line-343"></a><a name="validateNamespaces1"></a><span class='definition'>validateNamespaces1</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-344"></a><span class='definition'>validateNamespaces1</span>-<a name="line-345"></a> <span class='keyglyph'>=</span> <span class='varid'>choiceA</span> <span class='keyglyph'>[</span> <span class='varid'>isRoot</span> <span class='conop'>:-></span> <span class='layout'>(</span> <span class='varid'>getChildren</span> <span class='varop'>>>></span> <span class='varid'>validateNamespaces1</span> <span class='layout'>)</span> <span class='comment'>-- root is correct by definition</span>-<a name="line-346"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>multi</span> <span class='varid'>validate1Namespaces</span>-<a name="line-347"></a> <span class='keyglyph'>]</span>-<a name="line-348"></a>-<a name="line-349"></a><span class='comment'>-- |</span>-<a name="line-350"></a><span class='comment'>-- a single node for namespace constrains.</span>-<a name="line-351"></a>-<a name="line-352"></a><a name="validate1Namespaces"></a><span class='definition'>validate1Namespaces</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-353"></a><span class='definition'>validate1Namespaces</span>-<a name="line-354"></a> <span class='keyglyph'>=</span> <span class='varid'>choiceA</span>-<a name="line-355"></a> <span class='keyglyph'>[</span> <span class='varid'>isElem</span> <span class='conop'>:-></span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>isA</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-290"></a><a name="propagateNamespaceEnv"></a><span class='definition'>propagateNamespaceEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-291"></a><span class='definition'>propagateNamespaceEnv</span>+<a name="line-292"></a> <span class='keyglyph'>=</span> <span class='varid'>processWithNsEnv</span> <span class='varid'>addNamespaceUri</span>+<a name="line-293"></a> <span class='keyword'>where</span>+<a name="line-294"></a> <span class='varid'>addNamespaceUri</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-295"></a> <span class='varid'>addNamespaceUri</span> <span class='varid'>env'</span>+<a name="line-296"></a> <span class='keyglyph'>=</span> <span class='varid'>choiceA</span> <span class='keyglyph'>[</span> <span class='varid'>isElem</span> <span class='conop'>:-></span> <span class='varid'>changeElemName</span> <span class='layout'>(</span><span class='varid'>setNamespace</span> <span class='varid'>env'</span><span class='layout'>)</span>+<a name="line-297"></a> <span class='layout'>,</span> <span class='varid'>isAttr</span> <span class='conop'>:-></span> <span class='varid'>attachNamespaceUriToAttr</span> <span class='varid'>env'</span>+<a name="line-298"></a> <span class='layout'>,</span> <span class='varid'>isPi</span> <span class='conop'>:-></span> <span class='varid'>changePiName</span> <span class='layout'>(</span><span class='varid'>setNamespace</span> <span class='varid'>env'</span><span class='layout'>)</span>+<a name="line-299"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>+<a name="line-300"></a> <span class='keyglyph'>]</span>+<a name="line-301"></a>+<a name="line-302"></a> <span class='varid'>attachNamespaceUriToAttr</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-303"></a> <span class='varid'>attachNamespaceUriToAttr</span> <span class='varid'>attrEnv</span>+<a name="line-304"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>isA</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'>namePrefix</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-305"></a> <span class='varop'>`guards`</span>+<a name="line-306"></a> <span class='varid'>changeAttrName</span> <span class='layout'>(</span><span class='varid'>setNamespace</span> <span class='varid'>attrEnv</span><span class='layout'>)</span>+<a name="line-307"></a> <span class='layout'>)</span>+<a name="line-308"></a> <span class='varop'>`orElse`</span>+<a name="line-309"></a> <span class='layout'>(</span> <span class='varid'>changeAttrName</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>xmlnsQN</span><span class='layout'>)</span>+<a name="line-310"></a> <span class='varop'>`when`</span>+<a name="line-311"></a> <span class='varid'>hasName</span> <span class='varid'>a_xmlns</span>+<a name="line-312"></a> <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'>-- validate the namespace constraints in a whole tree.</span>+<a name="line-318"></a><span class='comment'>--</span>+<a name="line-319"></a><span class='comment'>-- Result is the list of errors concerning namespaces.</span>+<a name="line-320"></a><span class='comment'>-- Predicates 'isWellformedQName', 'isWellformedQualifiedName', 'isDeclaredNamespace'</span>+<a name="line-321"></a><span class='comment'>-- and 'isWellformedNSDecl' are applied to the appropriate elements and attributes.</span>+<a name="line-322"></a>+<a name="line-323"></a><a name="validateNamespaces"></a><span class='definition'>validateNamespaces</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-324"></a><span class='definition'>validateNamespaces</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varid'>validateNamespaces1</span>+<a name="line-325"></a>+<a name="line-326"></a><a name="validateNamespaces1"></a><span class='definition'>validateNamespaces1</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-327"></a><span class='definition'>validateNamespaces1</span>+<a name="line-328"></a> <span class='keyglyph'>=</span> <span class='varid'>choiceA</span> <span class='keyglyph'>[</span> <span class='varid'>isRoot</span> <span class='conop'>:-></span> <span class='layout'>(</span> <span class='varid'>getChildren</span> <span class='varop'>>>></span> <span class='varid'>validateNamespaces1</span> <span class='layout'>)</span> <span class='comment'>-- root is correct by definition</span>+<a name="line-329"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>multi</span> <span class='varid'>validate1Namespaces</span>+<a name="line-330"></a> <span class='keyglyph'>]</span>+<a name="line-331"></a>+<a name="line-332"></a><span class='comment'>-- |</span>+<a name="line-333"></a><span class='comment'>-- a single node for namespace constrains.</span>+<a name="line-334"></a>+<a name="line-335"></a><a name="validate1Namespaces"></a><span class='definition'>validate1Namespaces</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-336"></a><span class='definition'>validate1Namespaces</span>+<a name="line-337"></a> <span class='keyglyph'>=</span> <span class='varid'>choiceA</span>+<a name="line-338"></a> <span class='keyglyph'>[</span> <span class='varid'>isElem</span> <span class='conop'>:-></span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>isA</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-339"></a> <span class='layout'>)</span>+<a name="line-340"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"element name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" is not a wellformed qualified name"</span> <span class='layout'>)</span>+<a name="line-341"></a>+<a name="line-342"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>isA</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-343"></a> <span class='layout'>)</span>+<a name="line-344"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"namespace for prefix in element name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" is undefined"</span> <span class='layout'>)</span>+<a name="line-345"></a>+<a name="line-346"></a> <span class='layout'>,</span> <span class='varid'>doubleOcc</span> <span class='varop'>$<</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varop'>>>></span> <span class='varid'>getUniversalName</span><span class='layout'>)</span> <span class='varop'>>>.</span> <span class='varid'>doubles</span> <span class='layout'>)</span>+<a name="line-347"></a>+<a name="line-348"></a> <span class='layout'>,</span> <span class='varid'>getAttrl</span> <span class='varop'>>>></span> <span class='varid'>validate1Namespaces</span>+<a name="line-349"></a> <span class='keyglyph'>]</span>+<a name="line-350"></a>+<a name="line-351"></a> <span class='layout'>,</span> <span class='varid'>isAttr</span> <span class='conop'>:-></span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>isA</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-352"></a> <span class='layout'>)</span>+<a name="line-353"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"attribute name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" is not a wellformed qualified name"</span> <span class='layout'>)</span>+<a name="line-354"></a>+<a name="line-355"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>isA</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-356"></a> <span class='layout'>)</span>-<a name="line-357"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"element name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" is not a wellformed qualified name"</span> <span class='layout'>)</span>+<a name="line-357"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"namespace for prefix in attribute name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" is undefined"</span> <span class='layout'>)</span> <a name="line-358"></a>-<a name="line-359"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>isA</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-359"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>hasNamePrefix</span> <span class='varid'>a_xmlns</span> <span class='varop'>>>></span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span> <span class='varop'>>>></span> <span class='varid'>isA</span> <span class='varid'>null</span> <a name="line-360"></a> <span class='layout'>)</span>-<a name="line-361"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"namespace for prefix in element name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" is undefined"</span> <span class='layout'>)</span>+<a name="line-361"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"namespace value of namespace declaration for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" has no value"</span> <span class='layout'>)</span> <a name="line-362"></a>-<a name="line-363"></a> <span class='layout'>,</span> <span class='varid'>doubleOcc</span> <span class='varop'>$<</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>getAttrl</span> <span class='varop'>>>></span> <span class='varid'>getUniversalName</span><span class='layout'>)</span> <span class='varop'>>>.</span> <span class='varid'>doubles</span> <span class='layout'>)</span>-<a name="line-364"></a>-<a name="line-365"></a> <span class='layout'>,</span> <span class='varid'>getAttrl</span> <span class='varop'>>>></span> <span class='varid'>validate1Namespaces</span>-<a name="line-366"></a> <span class='keyglyph'>]</span>+<a name="line-363"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>isA</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-364"></a> <span class='layout'>)</span>+<a name="line-365"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"illegal namespace declaration for name "</span> <span class='varop'>++</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" starting with reserved prefix "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='str'>"xml"</span> <span class='layout'>)</span>+<a name="line-366"></a> <span class='keyglyph'>]</span> <a name="line-367"></a>-<a name="line-368"></a> <span class='layout'>,</span> <span class='varid'>isAttr</span> <span class='conop'>:-></span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>isA</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-369"></a> <span class='layout'>)</span>-<a name="line-370"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"attribute name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" is not a wellformed qualified name"</span> <span class='layout'>)</span>-<a name="line-371"></a>-<a name="line-372"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>isA</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-373"></a> <span class='layout'>)</span>-<a name="line-374"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"namespace for prefix in attribute name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" is undefined"</span> <span class='layout'>)</span>-<a name="line-375"></a>-<a name="line-376"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>hasNamePrefix</span> <span class='varid'>a_xmlns</span> <span class='varop'>>>></span> <span class='varid'>xshow</span> <span class='varid'>getChildren</span> <span class='varop'>>>></span> <span class='varid'>isA</span> <span class='varid'>null</span>-<a name="line-377"></a> <span class='layout'>)</span>-<a name="line-378"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"namespace value of namespace declaration for "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" has no value"</span> <span class='layout'>)</span>-<a name="line-379"></a>-<a name="line-380"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>isA</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-381"></a> <span class='layout'>)</span>-<a name="line-382"></a> <span class='varop'>`guards`</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"illegal namespace declaration for name "</span> <span class='varop'>++</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" starting with reserved prefix "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='str'>"xml"</span> <span class='layout'>)</span>-<a name="line-383"></a> <span class='keyglyph'>]</span>-<a name="line-384"></a>-<a name="line-385"></a> <span class='layout'>,</span> <span class='varid'>isDTD</span> <span class='conop'>:-></span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='varid'>isDTDDoctype</span> <span class='varop'><+></span> <span class='varid'>isDTDAttlist</span> <span class='varop'><+></span> <span class='varid'>isDTDElement</span> <span class='varop'><+></span> <span class='varid'>isDTDName</span>-<a name="line-386"></a> <span class='varop'>>>></span>-<a name="line-387"></a> <span class='varid'>getDTDAttrValue</span> <span class='varid'>a_name</span>-<a name="line-388"></a> <span class='varop'>>>></span>-<a name="line-389"></a> <span class='layout'>(</span> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQualifiedName</span><span class='layout'>)</span>-<a name="line-390"></a> <span class='varop'>`guards`</span>-<a name="line-391"></a> <span class='varid'>nsErr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></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='varid'>n</span><span class='layout'>)</span>-<a name="line-392"></a> <span class='layout'>)</span>-<a name="line-393"></a>-<a name="line-394"></a> <span class='layout'>,</span> <span class='varid'>isDTDAttlist</span>-<a name="line-395"></a> <span class='varop'>>>></span>-<a name="line-396"></a> <span class='varid'>getDTDAttrValue</span> <span class='varid'>a_value</span>-<a name="line-397"></a> <span class='varop'>>>></span>-<a name="line-398"></a> <span class='layout'>(</span> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQualifiedName</span><span class='layout'>)</span>-<a name="line-399"></a> <span class='varop'>`guards`</span>-<a name="line-400"></a> <span class='varid'>nsErr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></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='varid'>n</span><span class='layout'>)</span>-<a name="line-401"></a> <span class='layout'>)</span>-<a name="line-402"></a>-<a name="line-403"></a> <span class='layout'>,</span> <span class='varid'>isDTDEntity</span> <span class='varop'><+></span> <span class='varid'>isDTDPEntity</span> <span class='varop'><+></span> <span class='varid'>isDTDNotation</span>-<a name="line-404"></a> <span class='varop'>>>></span>-<a name="line-405"></a> <span class='varid'>getDTDAttrValue</span> <span class='varid'>a_name</span>-<a name="line-406"></a> <span class='varop'>>>></span>-<a name="line-407"></a> <span class='layout'>(</span> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isNCName</span><span class='layout'>)</span>-<a name="line-408"></a> <span class='varop'>`guards`</span>-<a name="line-409"></a> <span class='varid'>nsErr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></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='varid'>n</span><span class='layout'>)</span>-<a name="line-410"></a> <span class='layout'>)</span>-<a name="line-411"></a> <span class='keyglyph'>]</span>-<a name="line-412"></a> <span class='layout'>,</span> <span class='varid'>isPi</span> <span class='conop'>:-></span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='varid'>getName</span>-<a name="line-413"></a> <span class='varop'>>>></span>-<a name="line-414"></a> <span class='layout'>(</span> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isNCName</span><span class='layout'>)</span>-<a name="line-415"></a> <span class='varop'>`guards`</span>-<a name="line-416"></a> <span class='varid'>nsErr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"a PI contains a not wellformed NCName: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-417"></a> <span class='layout'>)</span>-<a name="line-418"></a> <span class='keyglyph'>]</span>-<a name="line-419"></a> <span class='keyglyph'>]</span>-<a name="line-420"></a> <span class='keyword'>where</span>-<a name="line-421"></a> <span class='varid'>nsError</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'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-422"></a> <span class='varid'>nsError</span> <span class='varid'>msg</span>-<a name="line-423"></a> <span class='keyglyph'>=</span> <span class='varid'>getName</span> <span class='varop'>>>></span> <span class='varid'>nsErr</span> <span class='varid'>msg</span>-<a name="line-424"></a>-<a name="line-425"></a> <span class='varid'>nsErr</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'>LA</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>-<a name="line-426"></a> <span class='varid'>nsErr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='varid'>msg</span> <span class='varop'>>>></span> <span class='varid'>mkError</span> <span class='varid'>c_err</span>-<a name="line-427"></a>-<a name="line-428"></a> <span class='varid'>doubleOcc</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-429"></a> <span class='varid'>doubleOcc</span> <span class='varid'>an</span>-<a name="line-430"></a> <span class='keyglyph'>=</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"multiple occurences of universal name for attributes of tag "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" : "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>an</span> <span class='layout'>)</span>-<a name="line-431"></a>-<a name="line-432"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-368"></a> <span class='layout'>,</span> <span class='varid'>isDTD</span> <span class='conop'>:-></span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='varid'>isDTDDoctype</span> <span class='varop'><+></span> <span class='varid'>isDTDAttlist</span> <span class='varop'><+></span> <span class='varid'>isDTDElement</span> <span class='varop'><+></span> <span class='varid'>isDTDName</span>+<a name="line-369"></a> <span class='varop'>>>></span>+<a name="line-370"></a> <span class='varid'>getDTDAttrValue</span> <span class='varid'>a_name</span>+<a name="line-371"></a> <span class='varop'>>>></span>+<a name="line-372"></a> <span class='layout'>(</span> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQualifiedName</span><span class='layout'>)</span>+<a name="line-373"></a> <span class='varop'>`guards`</span>+<a name="line-374"></a> <span class='varid'>nsErr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></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='varid'>n</span><span class='layout'>)</span>+<a name="line-375"></a> <span class='layout'>)</span>+<a name="line-376"></a>+<a name="line-377"></a> <span class='layout'>,</span> <span class='varid'>isDTDAttlist</span>+<a name="line-378"></a> <span class='varop'>>>></span>+<a name="line-379"></a> <span class='varid'>getDTDAttrValue</span> <span class='varid'>a_value</span>+<a name="line-380"></a> <span class='varop'>>>></span>+<a name="line-381"></a> <span class='layout'>(</span> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isWellformedQualifiedName</span><span class='layout'>)</span>+<a name="line-382"></a> <span class='varop'>`guards`</span>+<a name="line-383"></a> <span class='varid'>nsErr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></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='varid'>n</span><span class='layout'>)</span>+<a name="line-384"></a> <span class='layout'>)</span>+<a name="line-385"></a>+<a name="line-386"></a> <span class='layout'>,</span> <span class='varid'>isDTDEntity</span> <span class='varop'><+></span> <span class='varid'>isDTDPEntity</span> <span class='varop'><+></span> <span class='varid'>isDTDNotation</span>+<a name="line-387"></a> <span class='varop'>>>></span>+<a name="line-388"></a> <span class='varid'>getDTDAttrValue</span> <span class='varid'>a_name</span>+<a name="line-389"></a> <span class='varop'>>>></span>+<a name="line-390"></a> <span class='layout'>(</span> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isNCName</span><span class='layout'>)</span>+<a name="line-391"></a> <span class='varop'>`guards`</span>+<a name="line-392"></a> <span class='varid'>nsErr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></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='varid'>n</span><span class='layout'>)</span>+<a name="line-393"></a> <span class='layout'>)</span>+<a name="line-394"></a> <span class='keyglyph'>]</span>+<a name="line-395"></a> <span class='layout'>,</span> <span class='varid'>isPi</span> <span class='conop'>:-></span> <span class='varid'>catA</span> <span class='keyglyph'>[</span> <span class='varid'>getName</span>+<a name="line-396"></a> <span class='varop'>>>></span>+<a name="line-397"></a> <span class='layout'>(</span> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isNCName</span><span class='layout'>)</span>+<a name="line-398"></a> <span class='varop'>`guards`</span>+<a name="line-399"></a> <span class='varid'>nsErr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"a PI contains a not wellformed NCName: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-400"></a> <span class='layout'>)</span>+<a name="line-401"></a> <span class='keyglyph'>]</span>+<a name="line-402"></a> <span class='keyglyph'>]</span>+<a name="line-403"></a> <span class='keyword'>where</span>+<a name="line-404"></a> <span class='varid'>nsError</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'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-405"></a> <span class='varid'>nsError</span> <span class='varid'>msg</span>+<a name="line-406"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>getQName</span> <span class='varop'>>>></span> <span class='varid'>arr</span> <span class='varid'>show</span><span class='layout'>)</span> <span class='varop'>>>></span> <span class='varid'>nsErr</span> <span class='varid'>msg</span>+<a name="line-407"></a>+<a name="line-408"></a> <span class='varid'>nsErr</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'>LA</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>+<a name="line-409"></a> <span class='varid'>nsErr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='varid'>msg</span> <span class='varop'>>>></span> <span class='varid'>mkError</span> <span class='varid'>c_err</span>+<a name="line-410"></a>+<a name="line-411"></a> <span class='varid'>doubleOcc</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-412"></a> <span class='varid'>doubleOcc</span> <span class='varid'>an</span>+<a name="line-413"></a> <span class='keyglyph'>=</span> <span class='varid'>nsError</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='str'>"multiple occurences of universal name for attributes of tag "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" : "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>an</span> <span class='layout'>)</span>+<a name="line-414"></a>+<a name="line-415"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-Arrow-Pickle-Xml.html view
@@ -10,682 +10,695 @@ <a name="line-2"></a> <a name="line-3"></a><span class='comment'>{- | <a name="line-4"></a> Module : Text.XML.HXT.Arrow.Pickle.Xml-<a name="line-5"></a> Copyright : Copyright (C) 2005 Uwe Schmidt-<a name="line-6"></a> License : MIT-<a name="line-7"></a>-<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de)-<a name="line-9"></a> Stability : experimental-<a name="line-10"></a> Portability: portable-<a name="line-11"></a> Version : $Id$-<a name="line-12"></a>-<a name="line-13"></a>Pickler functions for converting between user defined data types-<a name="line-14"></a>and XmlTree data. Usefull for persistent storage and retreival-<a name="line-15"></a>of arbitray data as XML documents-<a name="line-16"></a>-<a name="line-17"></a>This module is an adaptation of the pickler combinators-<a name="line-18"></a>developed by Andrew Kennedy-<a name="line-19"></a>( http:\/\/research.microsoft.com\/~akenn\/fun\/picklercombinators.pdf )-<a name="line-20"></a>-<a name="line-21"></a>The difference to Kennedys approach is that the target is not-<a name="line-22"></a>a list of Chars but a list of XmlTrees. The basic picklers will-<a name="line-23"></a>convert data into XML text nodes. New are the picklers for-<a name="line-24"></a>creating elements and attributes.-<a name="line-25"></a>-<a name="line-26"></a>One extension was neccessary: The unpickling may fail.-<a name="line-27"></a>Therefore the unpickler has a Maybe result type.-<a name="line-28"></a>Failure is used to unpickle optional elements-<a name="line-29"></a>(Maybe data) and lists of arbitray length-<a name="line-30"></a>-<a name="line-31"></a>There is an example program demonstrating the use-<a name="line-32"></a>of the picklers for a none trivial data structure.-<a name="line-33"></a>(see \"examples\/arrows\/pickle\" directory)-<a name="line-34"></a>-<a name="line-35"></a>-}</span>-<a name="line-36"></a>-<a name="line-37"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-38"></a>-<a name="line-39"></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'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>Xml</span>-<a name="line-40"></a><span class='keyword'>where</span>-<a name="line-41"></a>-<a name="line-42"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-43"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='layout'>)</span>-<a name="line-44"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='keyword'>as</span> <span class='conid'>M</span>-<a name="line-45"></a>-<a name="line-46"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>-<a name="line-47"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span> <span class='keyword'>as</span> <span class='conid'>XN</span>-<a name="line-48"></a>-<a name="line-49"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrows</span>-<a name="line-50"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>-<a name="line-51"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>Schema</span>-<a name="line-52"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ReadDocument</span> <span class='layout'>(</span><span class='varid'>xread</span><span class='layout'>)</span>-<a name="line-53"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span> <span class='layout'>(</span><span class='varid'>xshowEscapeXml</span><span class='layout'>)</span>-<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="St"></a><span class='keyword'>data</span> <span class='conid'>St</span> <span class='keyglyph'>=</span> <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>-<a name="line-58"></a> <span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>-<a name="line-59"></a> <span class='layout'>}</span>-<a name="line-60"></a>-<a name="line-61"></a><a name="PU"></a><span class='keyword'>data</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>St</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>St</span>-<a name="line-62"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>St</span><span class='layout'>)</span>-<a name="line-63"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>::</span> <span class='conid'>Schema</span>-<a name="line-64"></a> <span class='layout'>}</span>-<a name="line-65"></a>-<a name="line-66"></a><a name="emptySt"></a><span class='definition'>emptySt</span> <span class='keyglyph'>::</span> <span class='conid'>St</span>-<a name="line-67"></a><span class='definition'>emptySt</span> <span class='keyglyph'>=</span> <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-68"></a> <span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-69"></a> <span class='layout'>}</span>-<a name="line-70"></a>-<a name="line-71"></a><a name="addAtt"></a><span class='definition'>addAtt</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='conid'>St</span>-<a name="line-72"></a><span class='definition'>addAtt</span> <span class='varid'>x</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>attributes</span> <span class='varid'>s</span><span class='layout'>}</span>-<a name="line-73"></a>-<a name="line-74"></a><a name="addCont"></a><span class='definition'>addCont</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='conid'>St</span>-<a name="line-75"></a><span class='definition'>addCont</span> <span class='varid'>x</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span><span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>contents</span> <span class='varid'>s</span><span class='layout'>}</span>-<a name="line-76"></a>-<a name="line-77"></a><a name="dropCont"></a><span class='definition'>dropCont</span> <span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='conid'>St</span>-<a name="line-78"></a><span class='definition'>dropCont</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>1</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-79"></a>-<a name="line-80"></a><a name="getAtt"></a><span class='definition'>getAtt</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span>-<a name="line-81"></a><span class='definition'>getAtt</span> <span class='varid'>name</span> <span class='varid'>s</span>-<a name="line-82"></a> <span class='keyglyph'>=</span> <span class='varid'>listToMaybe</span> <span class='varop'>$</span>-<a name="line-83"></a> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>arrL</span> <span class='varid'>attributes</span>-<a name="line-84"></a> <span class='varop'>>>></span>-<a name="line-85"></a> <span class='varid'>isAttr</span> <span class='varop'>>>></span> <span class='varid'>hasName</span> <span class='varid'>name</span>-<a name="line-86"></a> <span class='layout'>)</span> <span class='varid'>s</span>-<a name="line-87"></a>-<a name="line-88"></a><a name="getCont"></a><span class='definition'>getCont</span> <span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span>-<a name="line-89"></a><span class='definition'>getCont</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>listToMaybe</span> <span class='varop'>.</span> <span class='varid'>contents</span> <span class='varop'>$</span> <span class='varid'>s</span>-<a name="line-90"></a>-<a name="line-91"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-92"></a>-<a name="line-93"></a><span class='comment'>-- | conversion of an arbitrary value into an XML document tree.</span>-<a name="line-94"></a><span class='comment'>--</span>-<a name="line-95"></a><span class='comment'>-- The pickler, first parameter, controls the conversion process.</span>-<a name="line-96"></a><span class='comment'>-- Result is a complete document tree including a root node</span>-<a name="line-97"></a>-<a name="line-98"></a><a name="pickleDoc"></a><span class='definition'>pickleDoc</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-99"></a><span class='definition'>pickleDoc</span> <span class='varid'>p</span> <span class='varid'>v</span>-<a name="line-100"></a> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkRoot</span> <span class='layout'>(</span><span class='varid'>attributes</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-101"></a> <span class='keyword'>where</span>-<a name="line-102"></a> <span class='varid'>st</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='varid'>v</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>-<a name="line-103"></a>-<a name="line-104"></a><span class='comment'>-- | Conversion of an XML document tree into an arbitrary data type</span>-<a name="line-105"></a><span class='comment'>--</span>-<a name="line-106"></a><span class='comment'>-- The inverse of 'pickleDoc'.</span>-<a name="line-107"></a><span class='comment'>-- This law should hold for all picklers: @ unpickle px . pickle px $ v == Just v @.</span>-<a name="line-108"></a><span class='comment'>-- Not every possible combination of picklers make sense.</span>-<a name="line-109"></a><span class='comment'>-- For reconverting a value from an XML tree, is becomes neccessary,</span>-<a name="line-110"></a><span class='comment'>-- to introduce \"enough\" markup for unpickling the value</span>-<a name="line-111"></a>-<a name="line-112"></a><a name="unpickleDoc"></a><span class='definition'>unpickleDoc</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='varid'>a</span>-<a name="line-113"></a><span class='definition'>unpickleDoc</span> <span class='varid'>p</span> <span class='varid'>t</span>-<a name="line-114"></a> <span class='keyglyph'>|</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>isRoot</span> <span class='varid'>t</span>-<a name="line-115"></a> <span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>p</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getAttrl</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-116"></a> <span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>t</span>-<a name="line-117"></a> <span class='layout'>}</span>-<a name="line-118"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-119"></a> <span class='keyglyph'>=</span> <span class='varid'>unpickleDoc</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkRoot</span> <span class='conid'>[]</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-120"></a>-<a name="line-121"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-122"></a>-<a name="line-123"></a><span class='comment'>-- | The zero pickler</span>-<a name="line-124"></a><span class='comment'>--</span>-<a name="line-125"></a><span class='comment'>-- Encodes nothing, fails always during unpickling</span>-<a name="line-126"></a>-<a name="line-127"></a><a name="xpZero"></a><span class='definition'>xpZero</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span>-<a name="line-128"></a><span class='definition'>xpZero</span> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='varid'>snd</span>-<a name="line-129"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-130"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scNull</span>-<a name="line-131"></a> <span class='layout'>}</span>-<a name="line-132"></a>-<a name="line-133"></a><span class='comment'>-- unit pickler</span>-<a name="line-134"></a>-<a name="line-135"></a><a name="xpUnit"></a><span class='definition'>xpUnit</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>()</span>-<a name="line-136"></a><span class='definition'>xpUnit</span> <span class='keyglyph'>=</span> <span class='varid'>xpLift</span> <span class='conid'>()</span>-<a name="line-137"></a>-<a name="line-138"></a><span class='comment'>-- | Lift a value to a pickler</span>-<a name="line-139"></a><span class='comment'>--</span>-<a name="line-140"></a><span class='comment'>-- When pickling, nothing is encoded, when unpickling, the given value is inserted.</span>-<a name="line-141"></a><span class='comment'>-- This pickler always succeeds.</span>-<a name="line-142"></a>-<a name="line-143"></a><a name="xpLift"></a><span class='definition'>xpLift</span> <span class='keyglyph'>::</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>-<a name="line-144"></a><span class='definition'>xpLift</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='varid'>snd</span>-<a name="line-145"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-146"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scEmpty</span>-<a name="line-147"></a> <span class='layout'>}</span>-<a name="line-148"></a>-<a name="line-149"></a><span class='comment'>-- | Lift a Maybe value to a pickler.</span>-<a name="line-150"></a><span class='comment'>--</span>-<a name="line-151"></a><span class='comment'>-- @Nothing@ is mapped to the zero pickler, @Just x@ is pickled with @xpLift x@.</span>-<a name="line-152"></a>-<a name="line-153"></a><a name="xpLiftMaybe"></a><span class='definition'>xpLiftMaybe</span> <span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>-<a name="line-154"></a><span class='definition'>xpLiftMaybe</span> <span class='varid'>v</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpLiftMaybe'</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scOption</span> <span class='varid'>scEmpty</span> <span class='layout'>}</span>-<a name="line-155"></a> <span class='keyword'>where</span>-<a name="line-156"></a> <span class='varid'>xpLiftMaybe'</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>xpZero</span>-<a name="line-157"></a> <span class='varid'>xpLiftMaybe'</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>xpLift</span> <span class='varid'>x</span>-<a name="line-158"></a>-<a name="line-159"></a>-<a name="line-160"></a><span class='comment'>-- | pickle\/unpickle combinator for sequence and choice.</span>-<a name="line-161"></a><span class='comment'>--</span>-<a name="line-162"></a><span class='comment'>-- When the first unpickler fails,</span>-<a name="line-163"></a><span class='comment'>-- the second one is taken, else the third one configured with the result from the first</span>-<a name="line-164"></a><span class='comment'>-- is taken. This pickler is a generalisation for 'xpSeq' and 'xpChoice' .</span>-<a name="line-165"></a><span class='comment'>--</span>-<a name="line-166"></a><span class='comment'>-- The schema must be attached later, e.g. in xpPair or other higher level combinators</span>-<a name="line-167"></a>-<a name="line-168"></a><a name="xpCondSeq"></a><span class='definition'>xpCondSeq</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span>-<a name="line-169"></a><span class='definition'>xpCondSeq</span> <span class='varid'>pd</span> <span class='varid'>f</span> <span class='varid'>pa</span> <span class='varid'>k</span>-<a name="line-170"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>-></span>-<a name="line-171"></a> <span class='keyword'>let</span>-<a name="line-172"></a> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>b</span>-<a name="line-173"></a> <span class='varid'>pb</span> <span class='keyglyph'>=</span> <span class='varid'>k</span> <span class='varid'>a</span>-<a name="line-174"></a> <span class='keyword'>in</span>-<a name="line-175"></a> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>appPickle</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-176"></a> <span class='layout'>)</span>-<a name="line-177"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span>-<a name="line-178"></a> <span class='keyword'>let</span>-<a name="line-179"></a> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>s'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varid'>s</span>-<a name="line-180"></a> <span class='keyword'>in</span>-<a name="line-181"></a> <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>-<a name="line-182"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='varid'>appUnPickle</span> <span class='varid'>pd</span> <span class='varid'>s</span>-<a name="line-183"></a> <span class='conid'>Just</span> <span class='varid'>a'</span> <span class='keyglyph'>-></span> <span class='varid'>appUnPickle</span> <span class='layout'>(</span><span class='varid'>k</span> <span class='varid'>a'</span><span class='layout'>)</span> <span class='varid'>s'</span>-<a name="line-184"></a> <span class='layout'>)</span>-<a name="line-185"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>-<a name="line-186"></a> <span class='layout'>}</span>-<a name="line-187"></a>-<a name="line-188"></a>-<a name="line-189"></a><span class='comment'>-- | Combine two picklers sequentially.</span>-<a name="line-190"></a><span class='comment'>--</span>-<a name="line-191"></a><span class='comment'>-- If the first fails during</span>-<a name="line-192"></a><span class='comment'>-- unpickling, the whole unpickler fails</span>-<a name="line-193"></a>-<a name="line-194"></a><a name="xpSeq"></a><span class='definition'>xpSeq</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span>-<a name="line-195"></a><span class='definition'>xpSeq</span> <span class='keyglyph'>=</span> <span class='varid'>xpCondSeq</span> <span class='varid'>xpZero</span>-<a name="line-196"></a>-<a name="line-197"></a>-<a name="line-198"></a><span class='comment'>-- | combine tow picklers with a choice</span>-<a name="line-199"></a><span class='comment'>--</span>-<a name="line-200"></a><span class='comment'>-- Run two picklers in sequence like with xpSeq.</span>-<a name="line-201"></a><span class='comment'>-- When during unpickling the first one fails,</span>-<a name="line-202"></a><span class='comment'>-- an alternative pickler (first argument) is applied.</span>-<a name="line-203"></a><span class='comment'>-- This pickler is only used as combinator for unpickling.</span>-<a name="line-204"></a> -<a name="line-205"></a><a name="xpChoice"></a><span class='definition'>xpChoice</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span>-<a name="line-206"></a><span class='definition'>xpChoice</span> <span class='varid'>pb</span> <span class='keyglyph'>=</span> <span class='varid'>xpCondSeq</span> <span class='varid'>pb</span> <span class='varid'>undefined</span>-<a name="line-207"></a>-<a name="line-208"></a>-<a name="line-209"></a><span class='comment'>-- | map value into another domain and apply pickler there</span>-<a name="line-210"></a><span class='comment'>--</span>-<a name="line-211"></a><span class='comment'>-- One of the most often used picklers.</span>-<a name="line-212"></a>-<a name="line-213"></a><a name="xpWrap"></a><span class='definition'>xpWrap</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span>-<a name="line-214"></a><span class='definition'>xpWrap</span> <span class='layout'>(</span><span class='varid'>i</span><span class='layout'>,</span> <span class='varid'>j</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpSeq</span> <span class='varid'>j</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='varop'>.</span> <span class='varid'>i</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>theSchema</span> <span class='varid'>pa</span> <span class='layout'>}</span>-<a name="line-215"></a>-<a name="line-216"></a><span class='comment'>-- | like 'xpWrap', but if the inverse mapping is undefined, the unpickler fails</span>-<a name="line-217"></a><span class='comment'>--</span>-<a name="line-218"></a><span class='comment'>-- Map a value into another domain. If the inverse mapping is</span>-<a name="line-219"></a><span class='comment'>-- undefined (Nothing), the unpickler fails</span>-<a name="line-220"></a>-<a name="line-221"></a><a name="xpWrapMaybe"></a><span class='definition'>xpWrapMaybe</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span>-<a name="line-222"></a><span class='definition'>xpWrapMaybe</span> <span class='layout'>(</span><span class='varid'>i</span><span class='layout'>,</span> <span class='varid'>j</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpSeq</span> <span class='varid'>j</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLiftMaybe</span> <span class='varop'>.</span> <span class='varid'>i</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>theSchema</span> <span class='varid'>pa</span> <span class='layout'>}</span>-<a name="line-223"></a>-<a name="line-224"></a><span class='comment'>-- | pickle a pair of values sequentially</span>-<a name="line-225"></a><span class='comment'>--</span>-<a name="line-226"></a><span class='comment'>-- Used for pairs or together with wrap for pickling</span>-<a name="line-227"></a><span class='comment'>-- algebraic data types with two components</span>-<a name="line-228"></a>-<a name="line-229"></a><a name="xpPair"></a><span class='definition'>xpPair</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span>-<a name="line-230"></a><span class='definition'>xpPair</span> <span class='varid'>pa</span> <span class='varid'>pb</span>-<a name="line-231"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpSeq</span> <span class='varid'>fst</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>a</span> <span class='keyglyph'>-></span>-<a name="line-232"></a> <span class='varid'>xpSeq</span> <span class='varid'>snd</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='keyglyph'>-></span>-<a name="line-233"></a> <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-234"></a> <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scSeq</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pb</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-235"></a>-<a name="line-236"></a><span class='comment'>-- | Like 'xpPair' but for triples</span>-<a name="line-237"></a>-<a name="line-238"></a><a name="xpTriple"></a><span class='definition'>xpTriple</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-239"></a><span class='definition'>xpTriple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span>-<a name="line-240"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toTriple</span><span class='layout'>,</span> <span class='varid'>fromTriple</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='varid'>pc</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-241"></a> <span class='keyword'>where</span>-<a name="line-242"></a> <span class='varid'>toTriple</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span> <span class='layout'>)</span>-<a name="line-243"></a> <span class='varid'>fromTriple</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-244"></a>-<a name="line-245"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 4-tuples</span>-<a name="line-246"></a>-<a name="line-247"></a><a name="xp4Tuple"></a><span class='definition'>xp4Tuple</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span>-<a name="line-248"></a><span class='definition'>xp4Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span>-<a name="line-249"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toQuad</span><span class='layout'>,</span> <span class='varid'>fromQuad</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='varid'>pd</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-250"></a> <span class='keyword'>where</span>-<a name="line-251"></a> <span class='varid'>toQuad</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span> <span class='layout'>)</span>-<a name="line-252"></a> <span class='varid'>fromQuad</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-253"></a>-<a name="line-254"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 5-tuples</span>-<a name="line-255"></a>-<a name="line-256"></a><a name="xp5Tuple"></a><span class='definition'>xp5Tuple</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span>-<a name="line-257"></a><span class='definition'>xp5Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span> <span class='varid'>pe</span>-<a name="line-258"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toQuint</span><span class='layout'>,</span> <span class='varid'>fromQuint</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pd</span> <span class='varid'>pe</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-259"></a> <span class='keyword'>where</span>-<a name="line-260"></a> <span class='varid'>toQuint</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span> <span class='layout'>)</span>-<a name="line-261"></a> <span class='varid'>fromQuint</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-262"></a>-<a name="line-263"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 6-tuples</span>-<a name="line-264"></a>-<a name="line-265"></a><a name="xp6Tuple"></a><span class='definition'>xp6Tuple</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>f</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span>-<a name="line-266"></a><span class='definition'>xp6Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span> <span class='varid'>pe</span> <span class='varid'>pf</span>-<a name="line-267"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toSix</span><span class='layout'>,</span> <span class='varid'>fromSix</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pd</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pe</span> <span class='varid'>pf</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-268"></a> <span class='keyword'>where</span>-<a name="line-269"></a> <span class='varid'>toSix</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span> <span class='layout'>)</span>-<a name="line-270"></a> <span class='varid'>fromSix</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-271"></a>-<a name="line-272"></a><span class='comment'>-- | Pickle a string into an XML text node</span>-<a name="line-273"></a><span class='comment'>--</span>-<a name="line-274"></a><span class='comment'>-- One of the most often used primitive picklers. Attention:</span>-<a name="line-275"></a><span class='comment'>-- For pickling empty strings use 'xpText0'. If the text has a more</span>-<a name="line-276"></a><span class='comment'>-- specific datatype than xsd:string, use 'xpTextDT'</span>-<a name="line-277"></a>-<a name="line-278"></a><a name="xpText"></a><span class='definition'>xpText</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>String</span>-<a name="line-279"></a><span class='definition'>xpText</span> <span class='keyglyph'>=</span> <span class='varid'>xpTextDT</span> <span class='varid'>scString1</span>-<a name="line-280"></a>-<a name="line-281"></a><span class='comment'>-- | Pickle a string into an XML text node</span>-<a name="line-282"></a><span class='comment'>--</span>-<a name="line-283"></a><span class='comment'>-- Text pickler with a description of the structure of the text</span>-<a name="line-284"></a><span class='comment'>-- by a schema. A schema for a data type can be defined by 'Text.XML.HXT.Arrow.Pickle.Schema.scDT'.</span>-<a name="line-285"></a><span class='comment'>-- In 'Text.XML.HXT.Arrow.Pickle.Schema' there are some more functions for creating</span>-<a name="line-286"></a><span class='comment'>-- simple datatype descriptions.</span>-<a name="line-287"></a>-<a name="line-288"></a><a name="xpTextDT"></a><span class='definition'>xpTextDT</span> <span class='keyglyph'>::</span> <span class='conid'>Schema</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='conid'>String</span>-<a name="line-289"></a><span class='definition'>xpTextDT</span> <span class='varid'>sc</span>-<a name="line-290"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>addCont</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>st</span>-<a name="line-291"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-></span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleString</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-292"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>sc</span>-<a name="line-293"></a> <span class='layout'>}</span>-<a name="line-294"></a> <span class='keyword'>where</span>-<a name="line-295"></a> <span class='varid'>unpickleString</span> <span class='varid'>st</span>-<a name="line-296"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-297"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>-<a name="line-298"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span> <span class='varid'>t</span>-<a name="line-299"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-300"></a>-<a name="line-301"></a><span class='comment'>-- | Pickle a possibly empty string into an XML node.</span>-<a name="line-302"></a><span class='comment'>--</span>-<a name="line-303"></a><span class='comment'>-- Must be used in all places, where empty strings are legal values.</span>-<a name="line-304"></a><span class='comment'>-- If the content of an element can be an empty string, this string disapears</span>-<a name="line-305"></a><span class='comment'>-- during storing the DOM into a document and reparse the document.</span>-<a name="line-306"></a><span class='comment'>-- So the empty text node becomes nothing, and the pickler must deliver an empty string,</span>-<a name="line-307"></a><span class='comment'>-- if there is no text node in the document.</span>-<a name="line-308"></a>-<a name="line-309"></a><a name="xpText0"></a><span class='definition'>xpText0</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>String</span>-<a name="line-310"></a><span class='definition'>xpText0</span> <span class='keyglyph'>=</span> <span class='varid'>xpText0DT</span> <span class='varid'>scString1</span>-<a name="line-311"></a>-<a name="line-312"></a><span class='comment'>-- | Pickle a possibly empty string with a datatype description into an XML node.</span>-<a name="line-313"></a><span class='comment'>--</span>-<a name="line-314"></a><span class='comment'>-- Like 'xpText0' but with extra Parameter for datatype description as in 'xpTextDT'.</span>-<a name="line-315"></a>-<a name="line-316"></a><a name="xpText0DT"></a><span class='definition'>xpText0DT</span> <span class='keyglyph'>::</span> <span class='conid'>Schema</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='conid'>String</span>-<a name="line-317"></a><span class='definition'>xpText0DT</span> <span class='varid'>sc</span>-<a name="line-318"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='str'>""</span><span class='layout'>,</span> <span class='varid'>emptyToNothing</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>xpOption</span> <span class='varop'>$</span> <span class='varid'>xpTextDT</span> <span class='varid'>sc</span>-<a name="line-319"></a> <span class='keyword'>where</span>-<a name="line-320"></a> <span class='varid'>emptyToNothing</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>-<a name="line-321"></a> <span class='varid'>emptyToNothing</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varid'>x</span>-<a name="line-322"></a>-<a name="line-323"></a><span class='comment'>-- | Pickle an arbitrary value by applyling show during pickling</span>-<a name="line-324"></a><span class='comment'>-- and read during unpickling.</span>-<a name="line-325"></a><span class='comment'>--</span>-<a name="line-326"></a><span class='comment'>-- Real pickling is then done with 'xpText'.</span>-<a name="line-327"></a><span class='comment'>-- One of the most often used pimitive picklers. Applicable for all</span>-<a name="line-328"></a><span class='comment'>-- types which are instances of @Read@ and @Show@</span>-<a name="line-329"></a>-<a name="line-330"></a><a name="xpPrim"></a><span class='definition'>xpPrim</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Read</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>PU</span> <span class='varid'>a</span>-<a name="line-331"></a><span class='definition'>xpPrim</span>-<a name="line-332"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrapMaybe</span> <span class='layout'>(</span><span class='varid'>readMaybe</span><span class='layout'>,</span> <span class='varid'>show</span><span class='layout'>)</span> <span class='varid'>xpText</span>-<a name="line-333"></a> <span class='keyword'>where</span>-<a name="line-334"></a> <span class='varid'>readMaybe</span> <span class='keyglyph'>::</span> <span class='conid'>Read</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='varid'>a</span>-<a name="line-335"></a> <span class='varid'>readMaybe</span> <span class='varid'>str</span>-<a name="line-336"></a> <span class='keyglyph'>=</span> <span class='varid'>val</span> <span class='layout'>(</span><span class='varid'>reads</span> <span class='varid'>str</span><span class='layout'>)</span>-<a name="line-337"></a> <span class='keyword'>where</span>-<a name="line-338"></a> <span class='varid'>val</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span><span class='str'>""</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varid'>x</span>-<a name="line-339"></a> <span class='varid'>val</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>-<a name="line-340"></a>-<a name="line-341"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-342"></a>-<a name="line-343"></a><span class='comment'>-- | Pickle an XmlTree by just adding it</span>-<a name="line-344"></a><span class='comment'>--</span>-<a name="line-345"></a><span class='comment'>-- Usefull for components of type XmlTree in other data structures</span>-<a name="line-346"></a>-<a name="line-347"></a><a name="xpTree"></a><span class='definition'>xpTree</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>XmlTree</span>-<a name="line-348"></a><span class='definition'>xpTree</span> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>addCont</span> <span class='varid'>s</span> <span class='varid'>st</span>-<a name="line-349"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-></span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleTree</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-350"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='conid'>Any</span>-<a name="line-351"></a> <span class='layout'>}</span>-<a name="line-352"></a> <span class='keyword'>where</span>-<a name="line-353"></a> <span class='varid'>unpickleTree</span> <span class='varid'>st</span>-<a name="line-354"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-355"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>-<a name="line-356"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>t</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-357"></a>-<a name="line-358"></a><span class='comment'>-- | Pickle a whole list of XmlTrees by just adding the list, unpickle is done by taking all element contens.</span>-<a name="line-359"></a><span class='comment'>--</span>-<a name="line-360"></a><span class='comment'>-- This pickler should always combined with 'xpElem' for taking the whole contents of an element.</span>-<a name="line-361"></a>-<a name="line-362"></a><a name="xpTrees"></a><span class='definition'>xpTrees</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>-<a name="line-363"></a><span class='definition'>xpTrees</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>xpTree</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='conid'>Any</span> <span class='layout'>}</span>-<a name="line-364"></a>-<a name="line-365"></a><span class='comment'>-- | Pickle a string representing XML contents by inserting the tree representation into the XML document.</span>-<a name="line-366"></a><span class='comment'>--</span>-<a name="line-367"></a><span class='comment'>-- Unpickling is done by converting the contents with</span>-<a name="line-368"></a><span class='comment'>-- 'Text.XML.HXT.Arrow.Edit.xshowEscapeXml' into a string,</span>-<a name="line-369"></a><span class='comment'>-- this function will escape all XML special chars, such that pickling the value back becomes save.</span>-<a name="line-370"></a><span class='comment'>-- Pickling is done with 'Text.XML.HXT.Arrow.ReadDocument.xread'</span>-<a name="line-371"></a>-<a name="line-372"></a><a name="xpXmlText"></a><span class='definition'>xpXmlText</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>String</span>-<a name="line-373"></a><span class='definition'>xpXmlText</span>-<a name="line-374"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='varid'>showXML</span><span class='layout'>,</span> <span class='varid'>readXML</span> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>xpTrees</span>-<a name="line-375"></a> <span class='keyword'>where</span>-<a name="line-376"></a> <span class='varid'>showXML</span> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>.</span> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>xshowEscapeXml</span> <span class='varid'>unlistA</span> <span class='layout'>)</span>-<a name="line-377"></a> <span class='varid'>readXML</span> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='varid'>xread</span>-<a name="line-378"></a>-<a name="line-379"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-380"></a>-<a name="line-381"></a><span class='comment'>-- | Encoding of optional data by ignoring the Nothing case during pickling</span>-<a name="line-382"></a><span class='comment'>-- and relying on failure during unpickling to recompute the Nothing case</span>-<a name="line-383"></a><span class='comment'>--</span>-<a name="line-384"></a><span class='comment'>-- The default pickler for Maybe types</span>-<a name="line-385"></a>-<a name="line-386"></a><a name="xpOption"></a><span class='definition'>xpOption</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span>-<a name="line-387"></a><span class='definition'>xpOption</span> <span class='varid'>pa</span>-<a name="line-388"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>-<a name="line-389"></a> <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>-<a name="line-390"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='varid'>st</span>-<a name="line-391"></a> <span class='conid'>Just</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-392"></a> <span class='layout'>)</span>-<a name="line-393"></a>-<a name="line-394"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>-<a name="line-395"></a> <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='varop'>.</span> <span class='conid'>Just</span><span class='layout'>)</span>-<a name="line-396"></a>-<a name="line-397"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scOption</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>-<a name="line-398"></a> <span class='layout'>}</span>-<a name="line-399"></a>-<a name="line-400"></a><span class='comment'>-- | Optional conversion with default value</span>-<a name="line-401"></a><span class='comment'>--</span>-<a name="line-402"></a><span class='comment'>-- The default value is not encoded in the XML document,</span>-<a name="line-403"></a><span class='comment'>-- during unpickling the default value is inserted if the pickler fails</span>-<a name="line-404"></a>-<a name="line-405"></a><a name="xpDefault"></a><span class='definition'>xpDefault</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Eq</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>-<a name="line-406"></a><span class='definition'>xpDefault</span> <span class='varid'>df</span>-<a name="line-407"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='varid'>fromMaybe</span> <span class='varid'>df</span>-<a name="line-408"></a> <span class='layout'>,</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>df</span> <span class='keyword'>then</span> <span class='conid'>Nothing</span> <span class='keyword'>else</span> <span class='conid'>Just</span> <span class='varid'>x</span>-<a name="line-409"></a> <span class='layout'>)</span> <span class='varop'>.</span>-<a name="line-410"></a> <span class='varid'>xpOption</span>-<a name="line-411"></a>-<a name="line-412"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-413"></a>-<a name="line-414"></a><span class='comment'>-- | Encoding of list values by pickling all list elements sequentially.</span>-<a name="line-415"></a><span class='comment'>--</span>-<a name="line-416"></a><span class='comment'>-- Unpickler relies on failure for detecting the end of the list.</span>-<a name="line-417"></a><span class='comment'>-- The standard pickler for lists. Can also be used in combination with 'xpWrap'</span>-<a name="line-418"></a><span class='comment'>-- for constructing set and map picklers</span>-<a name="line-419"></a>-<a name="line-420"></a><a name="xpList"></a><span class='definition'>xpList</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>-<a name="line-421"></a><span class='definition'>xpList</span> <span class='varid'>pa</span>-<a name="line-422"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>-<a name="line-423"></a> <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>-<a name="line-424"></a> <span class='conid'>[]</span> <span class='keyglyph'>-></span> <span class='varid'>st</span>-<a name="line-425"></a> <span class='keyword'>_</span><span class='conop'>:</span><span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>appPickle</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-426"></a> <span class='layout'>)</span>-<a name="line-427"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>-<a name="line-428"></a> <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='conid'>[]</span><span class='layout'>)</span> <span class='varid'>pa</span>-<a name="line-429"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>xpSeq</span> <span class='varid'>id</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>xs</span> <span class='keyglyph'>-></span> <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-430"></a>-<a name="line-431"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scList</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>-<a name="line-432"></a> <span class='layout'>}</span>-<a name="line-433"></a> <span class='keyword'>where</span>-<a name="line-434"></a> <span class='varid'>pc</span> <span class='keyglyph'>=</span> <span class='varid'>xpSeq</span> <span class='varid'>head</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span>-<a name="line-435"></a> <span class='varid'>xpSeq</span> <span class='varid'>tail</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>xs</span> <span class='keyglyph'>-></span>-<a name="line-436"></a> <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-437"></a>-<a name="line-438"></a><span class='comment'>-- | Encoding of a none empty list of values</span>-<a name="line-439"></a><span class='comment'>--</span>-<a name="line-440"></a><span class='comment'>-- Attention: when calling this pickler with an empty list,</span>-<a name="line-441"></a><span class='comment'>-- an internal error \"head of empty list is raised\".</span>-<a name="line-442"></a>-<a name="line-443"></a><a name="xpList1"></a><span class='definition'>xpList1</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>-<a name="line-444"></a><span class='definition'>xpList1</span> <span class='varid'>pa</span>-<a name="line-445"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>xs</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>xs</span>-<a name="line-446"></a> <span class='layout'>,</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>xs</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>xs</span><span class='layout'>)</span>-<a name="line-447"></a> <span class='layout'>)</span> <span class='varop'>$</span>-<a name="line-448"></a> <span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span>-<a name="line-449"></a> <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scList1</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-450"></a>-<a name="line-451"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-452"></a>-<a name="line-453"></a><span class='comment'>-- | Standard pickler for maps</span>-<a name="line-454"></a><span class='comment'>--</span>-<a name="line-455"></a><span class='comment'>-- This pickler converts a map into a list of pairs.</span>-<a name="line-456"></a><span class='comment'>-- All key value pairs are mapped to an element with name (1.arg),</span>-<a name="line-457"></a><span class='comment'>-- the key is encoded as an attribute named by the 2. argument,</span>-<a name="line-458"></a><span class='comment'>-- the 3. arg is the pickler for the keys, the last one for the values</span>-<a name="line-459"></a>-<a name="line-460"></a><a name="xpMap"></a><span class='definition'>xpMap</span> <span class='keyglyph'>::</span> <span class='conid'>Ord</span> <span class='varid'>k</span> <span class='keyglyph'>=></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>k</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='conid'>Map</span> <span class='varid'>k</span> <span class='varid'>v</span><span class='layout'>)</span>-<a name="line-461"></a><span class='definition'>xpMap</span> <span class='varid'>en</span> <span class='varid'>an</span> <span class='varid'>xpk</span> <span class='varid'>xpv</span>-<a name="line-462"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>fromList</span>-<a name="line-463"></a> <span class='layout'>,</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>toList</span>-<a name="line-464"></a> <span class='layout'>)</span> <span class='varop'>$</span>-<a name="line-465"></a> <span class='varid'>xpList</span> <span class='varop'>$</span>-<a name="line-466"></a> <span class='varid'>xpElem</span> <span class='varid'>en</span> <span class='varop'>$</span>-<a name="line-467"></a> <span class='varid'>xpPair</span> <span class='layout'>(</span> <span class='varid'>xpAttr</span> <span class='varid'>an</span> <span class='varop'>$</span> <span class='varid'>xpk</span> <span class='layout'>)</span> <span class='varid'>xpv</span>-<a name="line-468"></a>-<a name="line-469"></a>-<a name="line-470"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-471"></a>-<a name="line-472"></a><span class='comment'>-- | Pickler for sum data types.</span>-<a name="line-473"></a><span class='comment'>--</span>-<a name="line-474"></a><span class='comment'>-- Every constructor is mapped to an index into the list of picklers.</span>-<a name="line-475"></a><span class='comment'>-- The index is used only during pickling, not during unpickling, there the 1. match is taken</span>-<a name="line-476"></a>-<a name="line-477"></a><a name="xpAlt"></a><span class='definition'>xpAlt</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>PU</span> <span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>-<a name="line-478"></a><span class='definition'>xpAlt</span> <span class='varid'>tag</span> <span class='varid'>ps</span>-<a name="line-479"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>-<a name="line-480"></a> <span class='keyword'>let</span>-<a name="line-481"></a> <span class='varid'>pa</span> <span class='keyglyph'>=</span> <span class='varid'>ps</span> <span class='varop'>!!</span> <span class='layout'>(</span><span class='varid'>tag</span> <span class='varid'>a</span><span class='layout'>)</span>-<a name="line-482"></a> <span class='keyword'>in</span>-<a name="line-483"></a> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-484"></a> <span class='layout'>)</span>-<a name="line-485"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>-<a name="line-486"></a> <span class='layout'>(</span> <span class='keyword'>case</span> <span class='varid'>ps</span> <span class='keyword'>of</span>-<a name="line-487"></a> <span class='conid'>[]</span> <span class='keyglyph'>-></span> <span class='varid'>xpZero</span>-<a name="line-488"></a> <span class='varid'>pa</span><span class='conop'>:</span><span class='varid'>ps1</span> <span class='keyglyph'>-></span> <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpAlt</span> <span class='varid'>tag</span> <span class='varid'>ps1</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='varid'>xpLift</span>-<a name="line-489"></a> <span class='layout'>)</span>-<a name="line-490"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scAlts</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>theSchema</span> <span class='varid'>ps</span><span class='layout'>)</span>-<a name="line-491"></a> <span class='layout'>}</span>-<a name="line-492"></a>-<a name="line-493"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-494"></a>-<a name="line-495"></a><span class='comment'>-- | Pickler for wrapping\/unwrapping data into an XML element</span>-<a name="line-496"></a><span class='comment'>--</span>-<a name="line-497"></a><span class='comment'>-- Extra parameter is the element name. THE pickler for constructing</span>-<a name="line-498"></a><span class='comment'>-- nested structures</span>-<a name="line-499"></a><span class='comment'>--</span>-<a name="line-500"></a><span class='comment'>-- Example:</span>-<a name="line-501"></a><span class='comment'>--</span>-<a name="line-502"></a><span class='comment'>-- > xpElem "number" $ xpickle</span>-<a name="line-503"></a><span class='comment'>--</span>-<a name="line-504"></a><span class='comment'>-- will map an (42::Int) onto</span>-<a name="line-505"></a><span class='comment'>--</span>-<a name="line-506"></a><span class='comment'>-- > <number>42</number></span>-<a name="line-507"></a>-<a name="line-508"></a><a name="xpElem"></a><span class='definition'>xpElem</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>-<a name="line-509"></a><span class='definition'>xpElem</span> <span class='varid'>name</span> <span class='varid'>pa</span>-<a name="line-510"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>-<a name="line-511"></a> <span class='keyword'>let</span>-<a name="line-512"></a> <span class='varid'>st'</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>-<a name="line-513"></a> <span class='keyword'>in</span>-<a name="line-514"></a> <span class='varid'>addCont</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>attributes</span> <span class='varid'>st'</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>st</span>-<a name="line-515"></a> <span class='layout'>)</span>-<a name="line-516"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-></span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleElement</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-517"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scElem</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>-<a name="line-518"></a> <span class='layout'>}</span>-<a name="line-519"></a> <span class='keyword'>where</span>-<a name="line-520"></a> <span class='varid'>unpickleElement</span> <span class='varid'>st</span>-<a name="line-521"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-522"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>-<a name="line-523"></a> <span class='varid'>n</span> <span class='keyglyph'><-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getElemName</span> <span class='varid'>t</span>-<a name="line-524"></a> <span class='keyword'>if</span> <span class='varid'>qualifiedName</span> <span class='varid'>n</span> <span class='varop'>/=</span> <span class='varid'>name</span>-<a name="line-525"></a> <span class='keyword'>then</span> <span class='varid'>fail</span> <span class='str'>"element name does not match"</span>-<a name="line-526"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>-<a name="line-527"></a> <span class='keyword'>let</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>t</span>-<a name="line-528"></a> <span class='varid'>al</span> <span class='keyglyph'><-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getAttrl</span> <span class='varid'>t</span>-<a name="line-529"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>cs</span><span class='layout'>}</span>-<a name="line-530"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-531"></a>-<a name="line-532"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-533"></a>-<a name="line-534"></a><span class='comment'>-- | Pickler for wrapping\/unwrapping data into an XML element with an attribute with given value</span>-<a name="line-535"></a><span class='comment'>--</span>-<a name="line-536"></a><span class='comment'>-- To make XML structures flexible but limit the number of different elements, it's sometimes</span>-<a name="line-537"></a><span class='comment'>-- useful to use a kind of generic element with a key value structure</span>-<a name="line-538"></a><span class='comment'>--</span>-<a name="line-539"></a><span class='comment'>-- Example:</span>-<a name="line-540"></a><span class='comment'>--</span>-<a name="line-541"></a><span class='comment'>-- > <attr name="key1">value1</attr></span>-<a name="line-542"></a><span class='comment'>-- > <attr name="key2">value2</attr></span>-<a name="line-543"></a><span class='comment'>-- > <attr name="key3">value3</attr></span>-<a name="line-544"></a><span class='comment'>--</span>-<a name="line-545"></a><span class='comment'>-- the Haskell datatype may look like this</span>-<a name="line-546"></a><span class='comment'>--</span>-<a name="line-547"></a><span class='comment'>-- > type T = T { key1 :: Int ; key2 :: String ; key3 :: Double }</span>-<a name="line-548"></a><span class='comment'>--</span>-<a name="line-549"></a><span class='comment'>-- Then the picker for that type looks like this</span>-<a name="line-550"></a><span class='comment'>--</span>-<a name="line-551"></a><span class='comment'>-- > xpT :: PU T</span>-<a name="line-552"></a><span class='comment'>-- > xpT = xpWrap ( uncurry3 T, \ t -> (key1 t, key2 t, key3 t) ) $</span>-<a name="line-553"></a><span class='comment'>-- > xpTriple (xpElemWithAttrValue "attr" "name" "key1" $ xpickle)</span>-<a name="line-554"></a><span class='comment'>-- > (xpElemWithAttrValue "attr" "name" "key2" $ xpText0)</span>-<a name="line-555"></a><span class='comment'>-- > (xpElemWithAttrValue "attr" "name" "key3" $ xpickle)</span>-<a name="line-556"></a>-<a name="line-557"></a><a name="xpElemWithAttrValue"></a><span class='definition'>xpElemWithAttrValue</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> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>-<a name="line-558"></a><span class='definition'>xpElemWithAttrValue</span> <span class='varid'>name</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='varid'>pa</span>-<a name="line-559"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>-<a name="line-560"></a> <span class='keyword'>let</span>-<a name="line-561"></a> <span class='varid'>st'</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>pa'</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>-<a name="line-562"></a> <span class='keyword'>in</span>-<a name="line-563"></a> <span class='varid'>addCont</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>attributes</span> <span class='varid'>st'</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>st</span>-<a name="line-564"></a> <span class='layout'>)</span>-<a name="line-565"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-></span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleElement</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-566"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scElem</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa'</span><span class='layout'>)</span>-<a name="line-567"></a> <span class='layout'>}</span>-<a name="line-568"></a> <span class='keyword'>where</span>-<a name="line-569"></a> <span class='varid'>pa'</span> <span class='keyglyph'>=</span> <span class='varid'>xpAddFixedAttr</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='varop'>$</span> <span class='varid'>pa</span>-<a name="line-570"></a> <span class='varid'>noMatch</span> <span class='keyglyph'>=</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>isElem</span>-<a name="line-571"></a> <span class='varop'>>>></span>-<a name="line-572"></a> <span class='varid'>hasName</span> <span class='varid'>name</span>-<a name="line-573"></a> <span class='varop'>>>></span>-<a name="line-574"></a> <span class='varid'>hasAttrValue</span> <span class='varid'>an</span> <span class='layout'>(</span><span class='varop'>==</span><span class='varid'>av</span><span class='layout'>)</span>-<a name="line-575"></a> <span class='layout'>)</span>-<a name="line-576"></a> <span class='varid'>unpickleElement</span> <span class='varid'>st</span>-<a name="line-577"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-578"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>-<a name="line-579"></a> <span class='keyword'>if</span> <span class='varid'>noMatch</span> <span class='varid'>t</span>-<a name="line-580"></a> <span class='keyword'>then</span> <span class='varid'>fail</span> <span class='str'>"element name or attr value does not match"</span>-<a name="line-581"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>-<a name="line-582"></a> <span class='keyword'>let</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>t</span>-<a name="line-583"></a> <span class='varid'>al</span> <span class='keyglyph'><-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getAttrl</span> <span class='varid'>t</span>-<a name="line-584"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>cs</span><span class='layout'>}</span>-<a name="line-585"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-586"></a>-<a name="line-587"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-588"></a>-<a name="line-589"></a><span class='comment'>-- | Pickler for storing\/retreiving data into\/from an attribute value</span>-<a name="line-590"></a><span class='comment'>--</span>-<a name="line-591"></a><span class='comment'>-- The attribute is inserted in the surrounding element constructed by the 'xpElem' pickler</span>-<a name="line-592"></a>-<a name="line-593"></a><a name="xpAttr"></a><span class='definition'>xpAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>-<a name="line-594"></a><span class='definition'>xpAttr</span> <span class='varid'>name</span> <span class='varid'>pa</span>-<a name="line-595"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>-<a name="line-596"></a> <span class='keyword'>let</span>-<a name="line-597"></a> <span class='varid'>st'</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>-<a name="line-598"></a> <span class='keyword'>in</span>-<a name="line-599"></a> <span class='varid'>addAtt</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkAttr</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>st</span>-<a name="line-600"></a> <span class='layout'>)</span>-<a name="line-601"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-></span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleAttr</span> <span class='varid'>st</span><span class='layout'>)</span>-<a name="line-602"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scAttr</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>-<a name="line-603"></a> <span class='layout'>}</span>-<a name="line-604"></a> <span class='keyword'>where</span>-<a name="line-605"></a> <span class='varid'>unpickleAttr</span> <span class='varid'>st</span>-<a name="line-606"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-607"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>getAtt</span> <span class='varid'>name</span> <span class='varid'>st</span>-<a name="line-608"></a> <span class='keyword'>let</span> <span class='varid'>av</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>a</span>-<a name="line-609"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span><span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>av</span><span class='layout'>}</span>-<a name="line-610"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='comment'>-- attribute is not removed from attribute list,</span>-<a name="line-611"></a> <span class='comment'>-- attributes are selected by name</span>-<a name="line-612"></a>-<a name="line-613"></a><span class='comment'>-- | Add an optional attribute for an optional value (Maybe a).</span>-<a name="line-614"></a>-<a name="line-615"></a><a name="xpAttrImplied"></a><span class='definition'>xpAttrImplied</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span>-<a name="line-616"></a><span class='definition'>xpAttrImplied</span> <span class='varid'>name</span> <span class='varid'>pa</span>-<a name="line-617"></a> <span class='keyglyph'>=</span> <span class='varid'>xpOption</span> <span class='varop'>$</span> <span class='varid'>xpAttr</span> <span class='varid'>name</span> <span class='varid'>pa</span>-<a name="line-618"></a>-<a name="line-619"></a><a name="xpAttrFixed"></a><span class='definition'>xpAttrFixed</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'>PU</span> <span class='conid'>()</span>-<a name="line-620"></a><span class='definition'>xpAttrFixed</span> <span class='varid'>name</span> <span class='varid'>val</span>-<a name="line-621"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpWrapMaybe</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>v</span> <span class='varop'>==</span> <span class='varid'>val</span> <span class='keyword'>then</span> <span class='conid'>Just</span> <span class='conid'>()</span> <span class='keyword'>else</span> <span class='conid'>Nothing</span>-<a name="line-622"></a> <span class='layout'>,</span> <span class='varid'>const</span> <span class='varid'>val</span>-<a name="line-623"></a> <span class='layout'>)</span> <span class='varop'>$</span>-<a name="line-624"></a> <span class='varid'>xpAttr</span> <span class='varid'>name</span> <span class='varid'>xpText</span>-<a name="line-625"></a> <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scAttr</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>scFixed</span> <span class='varid'>val</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-626"></a>-<a name="line-627"></a><span class='comment'>-- | Add an attribute with a fixed value.</span>-<a name="line-628"></a><span class='comment'>--</span>-<a name="line-629"></a><span class='comment'>-- Useful e.g. to declare namespaces. Is implemented by 'xpAttrFixed'</span>-<a name="line-630"></a>-<a name="line-631"></a><a name="xpAddFixedAttr"></a><span class='definition'>xpAddFixedAttr</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'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>-<a name="line-632"></a><span class='definition'>xpAddFixedAttr</span> <span class='varid'>name</span> <span class='varid'>val</span> <span class='varid'>pa</span>-<a name="line-633"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='varid'>snd</span>-<a name="line-634"></a> <span class='layout'>,</span> <span class='conid'>(,)</span> <span class='conid'>()</span>-<a name="line-635"></a> <span class='layout'>)</span> <span class='varop'>$</span>-<a name="line-636"></a> <span class='varid'>xpPair</span> <span class='layout'>(</span><span class='varid'>xpAttrFixed</span> <span class='varid'>name</span> <span class='varid'>val</span><span class='layout'>)</span> <span class='varid'>pa</span>-<a name="line-637"></a>-<a name="line-638"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-639"></a>-<a name="line-640"></a><span class='comment'>-- | The class for overloading 'xpickle', the default pickler</span>-<a name="line-641"></a>-<a name="line-642"></a><a name="XmlPickler"></a><span class='keyword'>class</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyword'>where</span>-<a name="line-643"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span>-<a name="line-644"></a>-<a name="line-645"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>Int</span> <span class='keyword'>where</span>-<a name="line-646"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPrim</span>-<a name="line-647"></a>-<a name="line-648"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>Integer</span> <span class='keyword'>where</span>-<a name="line-649"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPrim</span>-<a name="line-650"></a>-<a name="line-651"></a><span class='comment'>{--<a name="line-652"></a> no instance of XmlPickler Char-<a name="line-653"></a> because then every text would be encoded-<a name="line-654"></a> char by char, because of the instance for lists-<a name="line-655"></a>-<a name="line-656"></a>instance XmlPickler Char where-<a name="line-657"></a> xpickle = xpPrim-<a name="line-658"></a>-}</span>-<a name="line-659"></a>-<a name="line-660"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>()</span> <span class='keyword'>where</span>-<a name="line-661"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpUnit</span>-<a name="line-662"></a>-<a name="line-663"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>)</span> <span class='keyword'>where</span>-<a name="line-664"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPair</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>-<a name="line-665"></a>-<a name="line-666"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>)</span> <span class='keyword'>where</span>-<a name="line-667"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpTriple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>-<a name="line-668"></a>-<a name="line-669"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>d</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>,</span><span class='varid'>d</span><span class='layout'>)</span> <span class='keyword'>where</span>-<a name="line-670"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xp4Tuple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>-<a name="line-671"></a>-<a name="line-672"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>,</span><span class='varid'>d</span><span class='layout'>,</span><span class='varid'>e</span><span class='layout'>)</span> <span class='keyword'>where</span>-<a name="line-673"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xp5Tuple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>-<a name="line-674"></a>-<a name="line-675"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyword'>where</span>-<a name="line-676"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpList</span> <span class='varid'>xpickle</span>-<a name="line-677"></a>-<a name="line-678"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyword'>where</span>-<a name="line-679"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpOption</span> <span class='varid'>xpickle</span>-<a name="line-680"></a>-<a name="line-681"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-5"></a> Copyright : Copyright (C) 2005-2008 Uwe Schmidt+<a name="line-6"></a> License : MIT+<a name="line-7"></a>+<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de)+<a name="line-9"></a> Stability : experimental+<a name="line-10"></a> Portability: portable+<a name="line-11"></a>+<a name="line-12"></a> Pickler functions for converting between user defined data types+<a name="line-13"></a> and XmlTree data. Usefull for persistent storage and retreival+<a name="line-14"></a> of arbitray data as XML documents+<a name="line-15"></a>+<a name="line-16"></a> This module is an adaptation of the pickler combinators+<a name="line-17"></a> developed by Andrew Kennedy+<a name="line-18"></a> ( http:\/\/research.microsoft.com\/~akenn\/fun\/picklercombinators.pdf )+<a name="line-19"></a>+<a name="line-20"></a> The difference to Kennedys approach is that the target is not+<a name="line-21"></a> a list of Chars but a list of XmlTrees. The basic picklers will+<a name="line-22"></a> convert data into XML text nodes. New are the picklers for+<a name="line-23"></a> creating elements and attributes.+<a name="line-24"></a>+<a name="line-25"></a> One extension was neccessary: The unpickling may fail.+<a name="line-26"></a> Therefore the unpickler has a Maybe result type.+<a name="line-27"></a> Failure is used to unpickle optional elements+<a name="line-28"></a> (Maybe data) and lists of arbitray length+<a name="line-29"></a>+<a name="line-30"></a> There is an example program demonstrating the use+<a name="line-31"></a> of the picklers for a none trivial data structure.+<a name="line-32"></a> (see \"examples\/arrows\/pickle\" directory)+<a name="line-33"></a>+<a name="line-34"></a>-}</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='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>Xml</span>+<a name="line-39"></a><span class='keyword'>where</span>+<a name="line-40"></a>+<a name="line-41"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-42"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='layout'>)</span>+<a name="line-43"></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-44"></a>+<a name="line-45"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>+<a name="line-46"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span> <span class='keyword'>as</span> <span class='conid'>XN</span>+<a name="line-47"></a>+<a name="line-48"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrows</span>+<a name="line-49"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>+<a name="line-50"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Pickle</span><span class='varop'>.</span><span class='conid'>Schema</span>+<a name="line-51"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ReadDocument</span> <span class='layout'>(</span><span class='varid'>xread</span><span class='layout'>)</span>+<a name="line-52"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span> <span class='layout'>(</span><span class='varid'>xshowEscapeXml</span><span class='layout'>)</span>+<a name="line-53"></a>+<a name="line-54"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-55"></a>+<a name="line-56"></a><a name="St"></a><span class='keyword'>data</span> <span class='conid'>St</span> <span class='keyglyph'>=</span> <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>+<a name="line-57"></a> <span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>+<a name="line-58"></a> <span class='layout'>}</span>+<a name="line-59"></a>+<a name="line-60"></a><a name="PU"></a><span class='keyword'>data</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>St</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>St</span>+<a name="line-61"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>St</span><span class='layout'>)</span>+<a name="line-62"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>::</span> <span class='conid'>Schema</span>+<a name="line-63"></a> <span class='layout'>}</span>+<a name="line-64"></a>+<a name="line-65"></a><a name="emptySt"></a><span class='definition'>emptySt</span> <span class='keyglyph'>::</span> <span class='conid'>St</span>+<a name="line-66"></a><span class='definition'>emptySt</span> <span class='keyglyph'>=</span> <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-67"></a> <span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-68"></a> <span class='layout'>}</span>+<a name="line-69"></a>+<a name="line-70"></a><a name="addAtt"></a><span class='definition'>addAtt</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='conid'>St</span>+<a name="line-71"></a><span class='definition'>addAtt</span> <span class='varid'>x</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>attributes</span> <span class='varid'>s</span><span class='layout'>}</span>+<a name="line-72"></a>+<a name="line-73"></a><a name="addCont"></a><span class='definition'>addCont</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='conid'>St</span>+<a name="line-74"></a><span class='definition'>addCont</span> <span class='varid'>x</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span><span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>contents</span> <span class='varid'>s</span><span class='layout'>}</span>+<a name="line-75"></a>+<a name="line-76"></a><a name="dropCont"></a><span class='definition'>dropCont</span> <span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='conid'>St</span>+<a name="line-77"></a><span class='definition'>dropCont</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>1</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>+<a name="line-78"></a>+<a name="line-79"></a><a name="getAtt"></a><span class='definition'>getAtt</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span>+<a name="line-80"></a><span class='definition'>getAtt</span> <span class='varid'>qn</span> <span class='varid'>s</span>+<a name="line-81"></a> <span class='keyglyph'>=</span> <span class='varid'>listToMaybe</span> <span class='varop'>$</span>+<a name="line-82"></a> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>arrL</span> <span class='varid'>attributes</span>+<a name="line-83"></a> <span class='varop'>>>></span>+<a name="line-84"></a> <span class='varid'>isAttr</span> <span class='varop'>>>></span> <span class='varid'>hasQName</span> <span class='varid'>qn</span>+<a name="line-85"></a> <span class='layout'>)</span> <span class='varid'>s</span>+<a name="line-86"></a>+<a name="line-87"></a><a name="getCont"></a><span class='definition'>getCont</span> <span class='keyglyph'>::</span> <span class='conid'>St</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>XmlTree</span>+<a name="line-88"></a><span class='definition'>getCont</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>listToMaybe</span> <span class='varop'>.</span> <span class='varid'>contents</span> <span class='varop'>$</span> <span class='varid'>s</span>+<a name="line-89"></a>+<a name="line-90"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-91"></a>+<a name="line-92"></a><span class='comment'>-- | conversion of an arbitrary value into an XML document tree.</span>+<a name="line-93"></a><span class='comment'>--</span>+<a name="line-94"></a><span class='comment'>-- The pickler, first parameter, controls the conversion process.</span>+<a name="line-95"></a><span class='comment'>-- Result is a complete document tree including a root node</span>+<a name="line-96"></a>+<a name="line-97"></a><a name="pickleDoc"></a><span class='definition'>pickleDoc</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>+<a name="line-98"></a><span class='definition'>pickleDoc</span> <span class='varid'>p</span> <span class='varid'>v</span>+<a name="line-99"></a> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkRoot</span> <span class='layout'>(</span><span class='varid'>attributes</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-100"></a> <span class='keyword'>where</span>+<a name="line-101"></a> <span class='varid'>st</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='varid'>v</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>+<a name="line-102"></a>+<a name="line-103"></a><span class='comment'>-- | Conversion of an XML document tree into an arbitrary data type</span>+<a name="line-104"></a><span class='comment'>--</span>+<a name="line-105"></a><span class='comment'>-- The inverse of 'pickleDoc'.</span>+<a name="line-106"></a><span class='comment'>-- This law should hold for all picklers: @ unpickle px . pickle px $ v == Just v @.</span>+<a name="line-107"></a><span class='comment'>-- Not every possible combination of picklers make sense.</span>+<a name="line-108"></a><span class='comment'>-- For reconverting a value from an XML tree, is becomes neccessary,</span>+<a name="line-109"></a><span class='comment'>-- to introduce \"enough\" markup for unpickling the value</span>+<a name="line-110"></a>+<a name="line-111"></a><a name="unpickleDoc"></a><span class='definition'>unpickleDoc</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='varid'>a</span>+<a name="line-112"></a><span class='definition'>unpickleDoc</span> <span class='varid'>p</span> <span class='varid'>t</span>+<a name="line-113"></a> <span class='keyglyph'>|</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>isRoot</span> <span class='varid'>t</span>+<a name="line-114"></a> <span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>p</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span> <span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getAttrl</span> <span class='varop'>$</span> <span class='varid'>t</span>+<a name="line-115"></a> <span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>t</span>+<a name="line-116"></a> <span class='layout'>}</span>+<a name="line-117"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-118"></a> <span class='keyglyph'>=</span> <span class='varid'>unpickleDoc</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkRoot</span> <span class='conid'>[]</span> <span class='keyglyph'>[</span><span class='varid'>t</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-119"></a>+<a name="line-120"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-121"></a>+<a name="line-122"></a><span class='comment'>-- | The zero pickler</span>+<a name="line-123"></a><span class='comment'>--</span>+<a name="line-124"></a><span class='comment'>-- Encodes nothing, fails always during unpickling</span>+<a name="line-125"></a>+<a name="line-126"></a><a name="xpZero"></a><span class='definition'>xpZero</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-127"></a><span class='definition'>xpZero</span> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='varid'>snd</span>+<a name="line-128"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-129"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scNull</span>+<a name="line-130"></a> <span class='layout'>}</span>+<a name="line-131"></a>+<a name="line-132"></a><span class='comment'>-- unit pickler</span>+<a name="line-133"></a>+<a name="line-134"></a><a name="xpUnit"></a><span class='definition'>xpUnit</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>()</span>+<a name="line-135"></a><span class='definition'>xpUnit</span> <span class='keyglyph'>=</span> <span class='varid'>xpLift</span> <span class='conid'>()</span>+<a name="line-136"></a>+<a name="line-137"></a><span class='comment'>-- | Lift a value to a pickler</span>+<a name="line-138"></a><span class='comment'>--</span>+<a name="line-139"></a><span class='comment'>-- When pickling, nothing is encoded, when unpickling, the given value is inserted.</span>+<a name="line-140"></a><span class='comment'>-- This pickler always succeeds.</span>+<a name="line-141"></a>+<a name="line-142"></a><a name="xpLift"></a><span class='definition'>xpLift</span> <span class='keyglyph'>::</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-143"></a><span class='definition'>xpLift</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='varid'>snd</span>+<a name="line-144"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-145"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scEmpty</span>+<a name="line-146"></a> <span class='layout'>}</span>+<a name="line-147"></a>+<a name="line-148"></a><span class='comment'>-- | Lift a Maybe value to a pickler.</span>+<a name="line-149"></a><span class='comment'>--</span>+<a name="line-150"></a><span class='comment'>-- @Nothing@ is mapped to the zero pickler, @Just x@ is pickled with @xpLift x@.</span>+<a name="line-151"></a>+<a name="line-152"></a><a name="xpLiftMaybe"></a><span class='definition'>xpLiftMaybe</span> <span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-153"></a><span class='definition'>xpLiftMaybe</span> <span class='varid'>v</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpLiftMaybe'</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scOption</span> <span class='varid'>scEmpty</span> <span class='layout'>}</span>+<a name="line-154"></a> <span class='keyword'>where</span>+<a name="line-155"></a> <span class='varid'>xpLiftMaybe'</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>xpZero</span>+<a name="line-156"></a> <span class='varid'>xpLiftMaybe'</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>xpLift</span> <span class='varid'>x</span>+<a name="line-157"></a>+<a name="line-158"></a>+<a name="line-159"></a><span class='comment'>-- | pickle\/unpickle combinator for sequence and choice.</span>+<a name="line-160"></a><span class='comment'>--</span>+<a name="line-161"></a><span class='comment'>-- When the first unpickler fails,</span>+<a name="line-162"></a><span class='comment'>-- the second one is taken, else the third one configured with the result from the first</span>+<a name="line-163"></a><span class='comment'>-- is taken. This pickler is a generalisation for 'xpSeq' and 'xpChoice' .</span>+<a name="line-164"></a><span class='comment'>--</span>+<a name="line-165"></a><span class='comment'>-- The schema must be attached later, e.g. in xpPair or other higher level combinators</span>+<a name="line-166"></a>+<a name="line-167"></a><a name="xpCondSeq"></a><span class='definition'>xpCondSeq</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span>+<a name="line-168"></a><span class='definition'>xpCondSeq</span> <span class='varid'>pd</span> <span class='varid'>f</span> <span class='varid'>pa</span> <span class='varid'>k</span>+<a name="line-169"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>-></span>+<a name="line-170"></a> <span class='keyword'>let</span>+<a name="line-171"></a> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>b</span>+<a name="line-172"></a> <span class='varid'>pb</span> <span class='keyglyph'>=</span> <span class='varid'>k</span> <span class='varid'>a</span>+<a name="line-173"></a> <span class='keyword'>in</span>+<a name="line-174"></a> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>appPickle</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-175"></a> <span class='layout'>)</span>+<a name="line-176"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span>+<a name="line-177"></a> <span class='keyword'>let</span>+<a name="line-178"></a> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>s'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varid'>s</span>+<a name="line-179"></a> <span class='keyword'>in</span>+<a name="line-180"></a> <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>+<a name="line-181"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='varid'>appUnPickle</span> <span class='varid'>pd</span> <span class='varid'>s</span>+<a name="line-182"></a> <span class='conid'>Just</span> <span class='varid'>a'</span> <span class='keyglyph'>-></span> <span class='varid'>appUnPickle</span> <span class='layout'>(</span><span class='varid'>k</span> <span class='varid'>a'</span><span class='layout'>)</span> <span class='varid'>s'</span>+<a name="line-183"></a> <span class='layout'>)</span>+<a name="line-184"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>+<a name="line-185"></a> <span class='layout'>}</span>+<a name="line-186"></a>+<a name="line-187"></a>+<a name="line-188"></a><span class='comment'>-- | Combine two picklers sequentially.</span>+<a name="line-189"></a><span class='comment'>--</span>+<a name="line-190"></a><span class='comment'>-- If the first fails during</span>+<a name="line-191"></a><span class='comment'>-- unpickling, the whole unpickler fails</span>+<a name="line-192"></a>+<a name="line-193"></a><a name="xpSeq"></a><span class='definition'>xpSeq</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span>+<a name="line-194"></a><span class='definition'>xpSeq</span> <span class='keyglyph'>=</span> <span class='varid'>xpCondSeq</span> <span class='varid'>xpZero</span>+<a name="line-195"></a>+<a name="line-196"></a>+<a name="line-197"></a><span class='comment'>-- | combine tow picklers with a choice</span>+<a name="line-198"></a><span class='comment'>--</span>+<a name="line-199"></a><span class='comment'>-- Run two picklers in sequence like with xpSeq.</span>+<a name="line-200"></a><span class='comment'>-- When during unpickling the first one fails,</span>+<a name="line-201"></a><span class='comment'>-- an alternative pickler (first argument) is applied.</span>+<a name="line-202"></a><span class='comment'>-- This pickler is only used as combinator for unpickling.</span>+<a name="line-203"></a> +<a name="line-204"></a><a name="xpChoice"></a><span class='definition'>xpChoice</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span>+<a name="line-205"></a><span class='definition'>xpChoice</span> <span class='varid'>pb</span> <span class='keyglyph'>=</span> <span class='varid'>xpCondSeq</span> <span class='varid'>pb</span> <span class='varid'>undefined</span>+<a name="line-206"></a>+<a name="line-207"></a>+<a name="line-208"></a><span class='comment'>-- | map value into another domain and apply pickler there</span>+<a name="line-209"></a><span class='comment'>--</span>+<a name="line-210"></a><span class='comment'>-- One of the most often used picklers.</span>+<a name="line-211"></a>+<a name="line-212"></a><a name="xpWrap"></a><span class='definition'>xpWrap</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span>+<a name="line-213"></a><span class='definition'>xpWrap</span> <span class='layout'>(</span><span class='varid'>i</span><span class='layout'>,</span> <span class='varid'>j</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpSeq</span> <span class='varid'>j</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='varop'>.</span> <span class='varid'>i</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>theSchema</span> <span class='varid'>pa</span> <span class='layout'>}</span>+<a name="line-214"></a>+<a name="line-215"></a><span class='comment'>-- | like 'xpWrap', but if the inverse mapping is undefined, the unpickler fails</span>+<a name="line-216"></a><span class='comment'>--</span>+<a name="line-217"></a><span class='comment'>-- Map a value into another domain. If the inverse mapping is</span>+<a name="line-218"></a><span class='comment'>-- undefined (Nothing), the unpickler fails</span>+<a name="line-219"></a>+<a name="line-220"></a><a name="xpWrapMaybe"></a><span class='definition'>xpWrapMaybe</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span>+<a name="line-221"></a><span class='definition'>xpWrapMaybe</span> <span class='layout'>(</span><span class='varid'>i</span><span class='layout'>,</span> <span class='varid'>j</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpSeq</span> <span class='varid'>j</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLiftMaybe</span> <span class='varop'>.</span> <span class='varid'>i</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>theSchema</span> <span class='varid'>pa</span> <span class='layout'>}</span>+<a name="line-222"></a>+<a name="line-223"></a><span class='comment'>-- | pickle a pair of values sequentially</span>+<a name="line-224"></a><span class='comment'>--</span>+<a name="line-225"></a><span class='comment'>-- Used for pairs or together with wrap for pickling</span>+<a name="line-226"></a><span class='comment'>-- algebraic data types with two components</span>+<a name="line-227"></a>+<a name="line-228"></a><a name="xpPair"></a><span class='definition'>xpPair</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span>+<a name="line-229"></a><span class='definition'>xpPair</span> <span class='varid'>pa</span> <span class='varid'>pb</span>+<a name="line-230"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpSeq</span> <span class='varid'>fst</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>a</span> <span class='keyglyph'>-></span>+<a name="line-231"></a> <span class='varid'>xpSeq</span> <span class='varid'>snd</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='keyglyph'>-></span>+<a name="line-232"></a> <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-233"></a> <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scSeq</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pb</span><span class='layout'>)</span> <span class='layout'>}</span>+<a name="line-234"></a>+<a name="line-235"></a><span class='comment'>-- | Like 'xpPair' but for triples</span>+<a name="line-236"></a>+<a name="line-237"></a><a name="xpTriple"></a><span class='definition'>xpTriple</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>+<a name="line-238"></a><span class='definition'>xpTriple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span>+<a name="line-239"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toTriple</span><span class='layout'>,</span> <span class='varid'>fromTriple</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='varid'>pc</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-240"></a> <span class='keyword'>where</span>+<a name="line-241"></a> <span class='varid'>toTriple</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span> <span class='layout'>)</span>+<a name="line-242"></a> <span class='varid'>fromTriple</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-243"></a>+<a name="line-244"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 4-tuples</span>+<a name="line-245"></a>+<a name="line-246"></a><a name="xp4Tuple"></a><span class='definition'>xp4Tuple</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span>+<a name="line-247"></a><span class='definition'>xp4Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span>+<a name="line-248"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toQuad</span><span class='layout'>,</span> <span class='varid'>fromQuad</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='varid'>pd</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-249"></a> <span class='keyword'>where</span>+<a name="line-250"></a> <span class='varid'>toQuad</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span> <span class='layout'>)</span>+<a name="line-251"></a> <span class='varid'>fromQuad</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-252"></a>+<a name="line-253"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 5-tuples</span>+<a name="line-254"></a>+<a name="line-255"></a><a name="xp5Tuple"></a><span class='definition'>xp5Tuple</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span>+<a name="line-256"></a><span class='definition'>xp5Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span> <span class='varid'>pe</span>+<a name="line-257"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toQuint</span><span class='layout'>,</span> <span class='varid'>fromQuint</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pd</span> <span class='varid'>pe</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-258"></a> <span class='keyword'>where</span>+<a name="line-259"></a> <span class='varid'>toQuint</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span> <span class='layout'>)</span>+<a name="line-260"></a> <span class='varid'>fromQuint</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span> <span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-261"></a>+<a name="line-262"></a><span class='comment'>-- | Like 'xpPair' and 'xpTriple' but for 6-tuples</span>+<a name="line-263"></a>+<a name="line-264"></a><a name="xp6Tuple"></a><span class='definition'>xp6Tuple</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>d</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>e</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>f</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span>+<a name="line-265"></a><span class='definition'>xp6Tuple</span> <span class='varid'>pa</span> <span class='varid'>pb</span> <span class='varid'>pc</span> <span class='varid'>pd</span> <span class='varid'>pe</span> <span class='varid'>pf</span>+<a name="line-266"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>toSix</span><span class='layout'>,</span> <span class='varid'>fromSix</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pb</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pd</span> <span class='layout'>(</span><span class='varid'>xpPair</span> <span class='varid'>pe</span> <span class='varid'>pf</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-267"></a> <span class='keyword'>where</span>+<a name="line-268"></a> <span class='varid'>toSix</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span> <span class='layout'>)</span>+<a name="line-269"></a> <span class='varid'>fromSix</span> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>d</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>e</span><span class='layout'>,</span> <span class='varid'>f</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-270"></a>+<a name="line-271"></a><span class='comment'>-- | Pickle a string into an XML text node</span>+<a name="line-272"></a><span class='comment'>--</span>+<a name="line-273"></a><span class='comment'>-- One of the most often used primitive picklers. Attention:</span>+<a name="line-274"></a><span class='comment'>-- For pickling empty strings use 'xpText0'. If the text has a more</span>+<a name="line-275"></a><span class='comment'>-- specific datatype than xsd:string, use 'xpTextDT'</span>+<a name="line-276"></a>+<a name="line-277"></a><a name="xpText"></a><span class='definition'>xpText</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>String</span>+<a name="line-278"></a><span class='definition'>xpText</span> <span class='keyglyph'>=</span> <span class='varid'>xpTextDT</span> <span class='varid'>scString1</span>+<a name="line-279"></a>+<a name="line-280"></a><span class='comment'>-- | Pickle a string into an XML text node</span>+<a name="line-281"></a><span class='comment'>--</span>+<a name="line-282"></a><span class='comment'>-- Text pickler with a description of the structure of the text</span>+<a name="line-283"></a><span class='comment'>-- by a schema. A schema for a data type can be defined by 'Text.XML.HXT.Arrow.Pickle.Schema.scDT'.</span>+<a name="line-284"></a><span class='comment'>-- In 'Text.XML.HXT.Arrow.Pickle.Schema' there are some more functions for creating</span>+<a name="line-285"></a><span class='comment'>-- simple datatype descriptions.</span>+<a name="line-286"></a>+<a name="line-287"></a><a name="xpTextDT"></a><span class='definition'>xpTextDT</span> <span class='keyglyph'>::</span> <span class='conid'>Schema</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='conid'>String</span>+<a name="line-288"></a><span class='definition'>xpTextDT</span> <span class='varid'>sc</span>+<a name="line-289"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>addCont</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>st</span>+<a name="line-290"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-></span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleString</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-291"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>sc</span>+<a name="line-292"></a> <span class='layout'>}</span>+<a name="line-293"></a> <span class='keyword'>where</span>+<a name="line-294"></a> <span class='varid'>unpickleString</span> <span class='varid'>st</span>+<a name="line-295"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-296"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>+<a name="line-297"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getText</span> <span class='varid'>t</span>+<a name="line-298"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-299"></a>+<a name="line-300"></a><span class='comment'>-- | Pickle a possibly empty string into an XML node.</span>+<a name="line-301"></a><span class='comment'>--</span>+<a name="line-302"></a><span class='comment'>-- Must be used in all places, where empty strings are legal values.</span>+<a name="line-303"></a><span class='comment'>-- If the content of an element can be an empty string, this string disapears</span>+<a name="line-304"></a><span class='comment'>-- during storing the DOM into a document and reparse the document.</span>+<a name="line-305"></a><span class='comment'>-- So the empty text node becomes nothing, and the pickler must deliver an empty string,</span>+<a name="line-306"></a><span class='comment'>-- if there is no text node in the document.</span>+<a name="line-307"></a>+<a name="line-308"></a><a name="xpText0"></a><span class='definition'>xpText0</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>String</span>+<a name="line-309"></a><span class='definition'>xpText0</span> <span class='keyglyph'>=</span> <span class='varid'>xpText0DT</span> <span class='varid'>scString1</span>+<a name="line-310"></a>+<a name="line-311"></a><span class='comment'>-- | Pickle a possibly empty string with a datatype description into an XML node.</span>+<a name="line-312"></a><span class='comment'>--</span>+<a name="line-313"></a><span class='comment'>-- Like 'xpText0' but with extra Parameter for datatype description as in 'xpTextDT'.</span>+<a name="line-314"></a>+<a name="line-315"></a><a name="xpText0DT"></a><span class='definition'>xpText0DT</span> <span class='keyglyph'>::</span> <span class='conid'>Schema</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='conid'>String</span>+<a name="line-316"></a><span class='definition'>xpText0DT</span> <span class='varid'>sc</span>+<a name="line-317"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='str'>""</span><span class='layout'>,</span> <span class='varid'>emptyToNothing</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>xpOption</span> <span class='varop'>$</span> <span class='varid'>xpTextDT</span> <span class='varid'>sc</span>+<a name="line-318"></a> <span class='keyword'>where</span>+<a name="line-319"></a> <span class='varid'>emptyToNothing</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>+<a name="line-320"></a> <span class='varid'>emptyToNothing</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varid'>x</span>+<a name="line-321"></a>+<a name="line-322"></a><span class='comment'>-- | Pickle an arbitrary value by applyling show during pickling</span>+<a name="line-323"></a><span class='comment'>-- and read during unpickling.</span>+<a name="line-324"></a><span class='comment'>--</span>+<a name="line-325"></a><span class='comment'>-- Real pickling is then done with 'xpText'.</span>+<a name="line-326"></a><span class='comment'>-- One of the most often used pimitive picklers. Applicable for all</span>+<a name="line-327"></a><span class='comment'>-- types which are instances of @Read@ and @Show@</span>+<a name="line-328"></a>+<a name="line-329"></a><a name="xpPrim"></a><span class='definition'>xpPrim</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Read</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>Show</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-330"></a><span class='definition'>xpPrim</span>+<a name="line-331"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrapMaybe</span> <span class='layout'>(</span><span class='varid'>readMaybe</span><span class='layout'>,</span> <span class='varid'>show</span><span class='layout'>)</span> <span class='varid'>xpText</span>+<a name="line-332"></a> <span class='keyword'>where</span>+<a name="line-333"></a> <span class='varid'>readMaybe</span> <span class='keyglyph'>::</span> <span class='conid'>Read</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='varid'>a</span>+<a name="line-334"></a> <span class='varid'>readMaybe</span> <span class='varid'>str</span>+<a name="line-335"></a> <span class='keyglyph'>=</span> <span class='varid'>val</span> <span class='layout'>(</span><span class='varid'>reads</span> <span class='varid'>str</span><span class='layout'>)</span>+<a name="line-336"></a> <span class='keyword'>where</span>+<a name="line-337"></a> <span class='varid'>val</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span><span class='str'>""</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varid'>x</span>+<a name="line-338"></a> <span class='varid'>val</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>+<a name="line-339"></a>+<a name="line-340"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-341"></a>+<a name="line-342"></a><span class='comment'>-- | Pickle an XmlTree by just adding it</span>+<a name="line-343"></a><span class='comment'>--</span>+<a name="line-344"></a><span class='comment'>-- Usefull for components of type XmlTree in other data structures</span>+<a name="line-345"></a>+<a name="line-346"></a><a name="xpTree"></a><span class='definition'>xpTree</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>XmlTree</span>+<a name="line-347"></a><span class='definition'>xpTree</span> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>addCont</span> <span class='varid'>s</span> <span class='varid'>st</span>+<a name="line-348"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-></span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleTree</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-349"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='conid'>Any</span>+<a name="line-350"></a> <span class='layout'>}</span>+<a name="line-351"></a> <span class='keyword'>where</span>+<a name="line-352"></a> <span class='varid'>unpickleTree</span> <span class='varid'>st</span>+<a name="line-353"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-354"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>+<a name="line-355"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>t</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-356"></a>+<a name="line-357"></a><span class='comment'>-- | Pickle a whole list of XmlTrees by just adding the list, unpickle is done by taking all element contens.</span>+<a name="line-358"></a><span class='comment'>--</span>+<a name="line-359"></a><span class='comment'>-- This pickler should always combined with 'xpElem' for taking the whole contents of an element.</span>+<a name="line-360"></a>+<a name="line-361"></a><a name="xpTrees"></a><span class='definition'>xpTrees</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>+<a name="line-362"></a><span class='definition'>xpTrees</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>xpTree</span><span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='conid'>Any</span> <span class='layout'>}</span>+<a name="line-363"></a>+<a name="line-364"></a><span class='comment'>-- | Pickle a string representing XML contents by inserting the tree representation into the XML document.</span>+<a name="line-365"></a><span class='comment'>--</span>+<a name="line-366"></a><span class='comment'>-- Unpickling is done by converting the contents with</span>+<a name="line-367"></a><span class='comment'>-- 'Text.XML.HXT.Arrow.Edit.xshowEscapeXml' into a string,</span>+<a name="line-368"></a><span class='comment'>-- this function will escape all XML special chars, such that pickling the value back becomes save.</span>+<a name="line-369"></a><span class='comment'>-- Pickling is done with 'Text.XML.HXT.Arrow.ReadDocument.xread'</span>+<a name="line-370"></a>+<a name="line-371"></a><a name="xpXmlText"></a><span class='definition'>xpXmlText</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='conid'>String</span>+<a name="line-372"></a><span class='definition'>xpXmlText</span>+<a name="line-373"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='varid'>showXML</span><span class='layout'>,</span> <span class='varid'>readXML</span> <span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>xpTrees</span>+<a name="line-374"></a> <span class='keyword'>where</span>+<a name="line-375"></a> <span class='varid'>showXML</span> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>.</span> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>xshowEscapeXml</span> <span class='varid'>unlistA</span> <span class='layout'>)</span>+<a name="line-376"></a> <span class='varid'>readXML</span> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='varid'>xread</span>+<a name="line-377"></a>+<a name="line-378"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-379"></a>+<a name="line-380"></a><span class='comment'>-- | Encoding of optional data by ignoring the Nothing case during pickling</span>+<a name="line-381"></a><span class='comment'>-- and relying on failure during unpickling to recompute the Nothing case</span>+<a name="line-382"></a><span class='comment'>--</span>+<a name="line-383"></a><span class='comment'>-- The default pickler for Maybe types</span>+<a name="line-384"></a>+<a name="line-385"></a><a name="xpOption"></a><span class='definition'>xpOption</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span>+<a name="line-386"></a><span class='definition'>xpOption</span> <span class='varid'>pa</span>+<a name="line-387"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>+<a name="line-388"></a> <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>+<a name="line-389"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='varid'>st</span>+<a name="line-390"></a> <span class='conid'>Just</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-391"></a> <span class='layout'>)</span>+<a name="line-392"></a>+<a name="line-393"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>+<a name="line-394"></a> <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='varop'>.</span> <span class='conid'>Just</span><span class='layout'>)</span>+<a name="line-395"></a>+<a name="line-396"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scOption</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>+<a name="line-397"></a> <span class='layout'>}</span>+<a name="line-398"></a>+<a name="line-399"></a><span class='comment'>-- | Optional conversion with default value</span>+<a name="line-400"></a><span class='comment'>--</span>+<a name="line-401"></a><span class='comment'>-- The default value is not encoded in the XML document,</span>+<a name="line-402"></a><span class='comment'>-- during unpickling the default value is inserted if the pickler fails</span>+<a name="line-403"></a>+<a name="line-404"></a><a name="xpDefault"></a><span class='definition'>xpDefault</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Eq</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-405"></a><span class='definition'>xpDefault</span> <span class='varid'>df</span>+<a name="line-406"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='varid'>fromMaybe</span> <span class='varid'>df</span>+<a name="line-407"></a> <span class='layout'>,</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>df</span> <span class='keyword'>then</span> <span class='conid'>Nothing</span> <span class='keyword'>else</span> <span class='conid'>Just</span> <span class='varid'>x</span>+<a name="line-408"></a> <span class='layout'>)</span> <span class='varop'>.</span>+<a name="line-409"></a> <span class='varid'>xpOption</span>+<a name="line-410"></a>+<a name="line-411"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-412"></a>+<a name="line-413"></a><span class='comment'>-- | Encoding of list values by pickling all list elements sequentially.</span>+<a name="line-414"></a><span class='comment'>--</span>+<a name="line-415"></a><span class='comment'>-- Unpickler relies on failure for detecting the end of the list.</span>+<a name="line-416"></a><span class='comment'>-- The standard pickler for lists. Can also be used in combination with 'xpWrap'</span>+<a name="line-417"></a><span class='comment'>-- for constructing set and map picklers</span>+<a name="line-418"></a>+<a name="line-419"></a><a name="xpList"></a><span class='definition'>xpList</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>+<a name="line-420"></a><span class='definition'>xpList</span> <span class='varid'>pa</span>+<a name="line-421"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>+<a name="line-422"></a> <span class='keyword'>case</span> <span class='varid'>a</span> <span class='keyword'>of</span>+<a name="line-423"></a> <span class='conid'>[]</span> <span class='keyglyph'>-></span> <span class='varid'>st</span>+<a name="line-424"></a> <span class='keyword'>_</span><span class='conop'>:</span><span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>appPickle</span> <span class='varid'>pc</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-425"></a> <span class='layout'>)</span>+<a name="line-426"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>+<a name="line-427"></a> <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpLift</span> <span class='conid'>[]</span><span class='layout'>)</span> <span class='varid'>pa</span>+<a name="line-428"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>xpSeq</span> <span class='varid'>id</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>xs</span> <span class='keyglyph'>-></span> <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-429"></a>+<a name="line-430"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scList</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>+<a name="line-431"></a> <span class='layout'>}</span>+<a name="line-432"></a> <span class='keyword'>where</span>+<a name="line-433"></a> <span class='varid'>pc</span> <span class='keyglyph'>=</span> <span class='varid'>xpSeq</span> <span class='varid'>head</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span>+<a name="line-434"></a> <span class='varid'>xpSeq</span> <span class='varid'>tail</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>xs</span> <span class='keyglyph'>-></span>+<a name="line-435"></a> <span class='varid'>xpLift</span> <span class='layout'>(</span><span class='varid'>x</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-436"></a>+<a name="line-437"></a><span class='comment'>-- | Encoding of a none empty list of values</span>+<a name="line-438"></a><span class='comment'>--</span>+<a name="line-439"></a><span class='comment'>-- Attention: when calling this pickler with an empty list,</span>+<a name="line-440"></a><span class='comment'>-- an internal error \"head of empty list is raised\".</span>+<a name="line-441"></a>+<a name="line-442"></a><a name="xpList1"></a><span class='definition'>xpList1</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>+<a name="line-443"></a><span class='definition'>xpList1</span> <span class='varid'>pa</span>+<a name="line-444"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>xs</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>xs</span>+<a name="line-445"></a> <span class='layout'>,</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x</span> <span class='conop'>:</span> <span class='varid'>xs</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>xs</span><span class='layout'>)</span>+<a name="line-446"></a> <span class='layout'>)</span> <span class='varop'>$</span>+<a name="line-447"></a> <span class='varid'>xpPair</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>xpList</span> <span class='varid'>pa</span><span class='layout'>)</span>+<a name="line-448"></a> <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scList1</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span> <span class='layout'>}</span>+<a name="line-449"></a>+<a name="line-450"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-451"></a>+<a name="line-452"></a><span class='comment'>-- | Standard pickler for maps</span>+<a name="line-453"></a><span class='comment'>--</span>+<a name="line-454"></a><span class='comment'>-- This pickler converts a map into a list of pairs.</span>+<a name="line-455"></a><span class='comment'>-- All key value pairs are mapped to an element with name (1.arg),</span>+<a name="line-456"></a><span class='comment'>-- the key is encoded as an attribute named by the 2. argument,</span>+<a name="line-457"></a><span class='comment'>-- the 3. arg is the pickler for the keys, the last one for the values</span>+<a name="line-458"></a>+<a name="line-459"></a><a name="xpMap"></a><span class='definition'>xpMap</span> <span class='keyglyph'>::</span> <span class='conid'>Ord</span> <span class='varid'>k</span> <span class='keyglyph'>=></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>k</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='conid'>Map</span> <span class='varid'>k</span> <span class='varid'>v</span><span class='layout'>)</span>+<a name="line-460"></a><span class='definition'>xpMap</span> <span class='varid'>en</span> <span class='varid'>an</span> <span class='varid'>xpk</span> <span class='varid'>xpv</span>+<a name="line-461"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>fromList</span>+<a name="line-462"></a> <span class='layout'>,</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>toList</span>+<a name="line-463"></a> <span class='layout'>)</span> <span class='varop'>$</span>+<a name="line-464"></a> <span class='varid'>xpList</span> <span class='varop'>$</span>+<a name="line-465"></a> <span class='varid'>xpElem</span> <span class='varid'>en</span> <span class='varop'>$</span>+<a name="line-466"></a> <span class='varid'>xpPair</span> <span class='layout'>(</span> <span class='varid'>xpAttr</span> <span class='varid'>an</span> <span class='varop'>$</span> <span class='varid'>xpk</span> <span class='layout'>)</span> <span class='varid'>xpv</span>+<a name="line-467"></a>+<a name="line-468"></a>+<a name="line-469"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-470"></a>+<a name="line-471"></a><span class='comment'>-- | Pickler for sum data types.</span>+<a name="line-472"></a><span class='comment'>--</span>+<a name="line-473"></a><span class='comment'>-- Every constructor is mapped to an index into the list of picklers.</span>+<a name="line-474"></a><span class='comment'>-- The index is used only during pickling, not during unpickling, there the 1. match is taken</span>+<a name="line-475"></a>+<a name="line-476"></a><a name="xpAlt"></a><span class='definition'>xpAlt</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>PU</span> <span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-477"></a><span class='definition'>xpAlt</span> <span class='varid'>tag</span> <span class='varid'>ps</span>+<a name="line-478"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>+<a name="line-479"></a> <span class='keyword'>let</span>+<a name="line-480"></a> <span class='varid'>pa</span> <span class='keyglyph'>=</span> <span class='varid'>ps</span> <span class='varop'>!!</span> <span class='layout'>(</span><span class='varid'>tag</span> <span class='varid'>a</span><span class='layout'>)</span>+<a name="line-481"></a> <span class='keyword'>in</span>+<a name="line-482"></a> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-483"></a> <span class='layout'>)</span>+<a name="line-484"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='varid'>appUnPickle</span> <span class='varop'>$</span>+<a name="line-485"></a> <span class='layout'>(</span> <span class='keyword'>case</span> <span class='varid'>ps</span> <span class='keyword'>of</span>+<a name="line-486"></a> <span class='conid'>[]</span> <span class='keyglyph'>-></span> <span class='varid'>xpZero</span>+<a name="line-487"></a> <span class='varid'>pa</span><span class='conop'>:</span><span class='varid'>ps1</span> <span class='keyglyph'>-></span> <span class='varid'>xpChoice</span> <span class='layout'>(</span><span class='varid'>xpAlt</span> <span class='varid'>tag</span> <span class='varid'>ps1</span><span class='layout'>)</span> <span class='varid'>pa</span> <span class='varid'>xpLift</span>+<a name="line-488"></a> <span class='layout'>)</span>+<a name="line-489"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scAlts</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>theSchema</span> <span class='varid'>ps</span><span class='layout'>)</span>+<a name="line-490"></a> <span class='layout'>}</span>+<a name="line-491"></a>+<a name="line-492"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-493"></a>+<a name="line-494"></a><span class='comment'>-- | Pickler for wrapping\/unwrapping data into an XML element</span>+<a name="line-495"></a><span class='comment'>--</span>+<a name="line-496"></a><span class='comment'>-- Extra parameter is the element name given as a QName. THE pickler for constructing</span>+<a name="line-497"></a><span class='comment'>-- nested structures</span>+<a name="line-498"></a><span class='comment'>--</span>+<a name="line-499"></a><span class='comment'>-- Example:</span>+<a name="line-500"></a><span class='comment'>--</span>+<a name="line-501"></a><span class='comment'>-- > xpElemQN (mkName "number") $ xpickle</span>+<a name="line-502"></a><span class='comment'>--</span>+<a name="line-503"></a><span class='comment'>-- will map an (42::Int) onto</span>+<a name="line-504"></a><span class='comment'>--</span>+<a name="line-505"></a><span class='comment'>-- > <number>42</number></span>+<a name="line-506"></a>+<a name="line-507"></a><a name="xpElemQN"></a><span class='definition'>xpElemQN</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-508"></a><span class='definition'>xpElemQN</span> <span class='varid'>qn</span> <span class='varid'>pa</span>+<a name="line-509"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>+<a name="line-510"></a> <span class='keyword'>let</span>+<a name="line-511"></a> <span class='varid'>st'</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>+<a name="line-512"></a> <span class='keyword'>in</span>+<a name="line-513"></a> <span class='varid'>addCont</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='varid'>qn</span> <span class='layout'>(</span><span class='varid'>attributes</span> <span class='varid'>st'</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>st</span>+<a name="line-514"></a> <span class='layout'>)</span>+<a name="line-515"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-></span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleElement</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-516"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scElem</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>+<a name="line-517"></a> <span class='layout'>}</span>+<a name="line-518"></a> <span class='keyword'>where</span>+<a name="line-519"></a> <span class='varid'>unpickleElement</span> <span class='varid'>st</span>+<a name="line-520"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-521"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>+<a name="line-522"></a> <span class='varid'>n</span> <span class='keyglyph'><-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getElemName</span> <span class='varid'>t</span>+<a name="line-523"></a> <span class='keyword'>if</span> <span class='varid'>n</span> <span class='varop'>/=</span> <span class='varid'>qn</span>+<a name="line-524"></a> <span class='keyword'>then</span> <span class='varid'>fail</span> <span class='layout'>(</span><span class='str'>"element name "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" does not match"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>qn</span><span class='layout'>)</span>+<a name="line-525"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>+<a name="line-526"></a> <span class='keyword'>let</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>t</span>+<a name="line-527"></a> <span class='varid'>al</span> <span class='keyglyph'><-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getAttrl</span> <span class='varid'>t</span>+<a name="line-528"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>cs</span><span class='layout'>}</span>+<a name="line-529"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-530"></a>+<a name="line-531"></a><span class='comment'>-- | convenient Pickler for xpElemQN</span>+<a name="line-532"></a><span class='comment'>--</span>+<a name="line-533"></a><span class='comment'>-- > xpElem n = xpElemQN (mkName n)</span>+<a name="line-534"></a>+<a name="line-535"></a><a name="xpElem"></a><span class='definition'>xpElem</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-536"></a><span class='definition'>xpElem</span> <span class='keyglyph'>=</span> <span class='varid'>xpElemQN</span> <span class='varop'>.</span> <span class='varid'>mkName</span>+<a name="line-537"></a>+<a name="line-538"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-539"></a>+<a name="line-540"></a><span class='comment'>-- | Pickler for wrapping\/unwrapping data into an XML element with an attribute with given value</span>+<a name="line-541"></a><span class='comment'>--</span>+<a name="line-542"></a><span class='comment'>-- To make XML structures flexible but limit the number of different elements, it's sometimes</span>+<a name="line-543"></a><span class='comment'>-- useful to use a kind of generic element with a key value structure</span>+<a name="line-544"></a><span class='comment'>--</span>+<a name="line-545"></a><span class='comment'>-- Example:</span>+<a name="line-546"></a><span class='comment'>--</span>+<a name="line-547"></a><span class='comment'>-- > <attr name="key1">value1</attr></span>+<a name="line-548"></a><span class='comment'>-- > <attr name="key2">value2</attr></span>+<a name="line-549"></a><span class='comment'>-- > <attr name="key3">value3</attr></span>+<a name="line-550"></a><span class='comment'>--</span>+<a name="line-551"></a><span class='comment'>-- the Haskell datatype may look like this</span>+<a name="line-552"></a><span class='comment'>--</span>+<a name="line-553"></a><span class='comment'>-- > type T = T { key1 :: Int ; key2 :: String ; key3 :: Double }</span>+<a name="line-554"></a><span class='comment'>--</span>+<a name="line-555"></a><span class='comment'>-- Then the picker for that type looks like this</span>+<a name="line-556"></a><span class='comment'>--</span>+<a name="line-557"></a><span class='comment'>-- > xpT :: PU T</span>+<a name="line-558"></a><span class='comment'>-- > xpT = xpWrap ( uncurry3 T, \ t -> (key1 t, key2 t, key3 t) ) $</span>+<a name="line-559"></a><span class='comment'>-- > xpTriple (xpElemWithAttrValue "attr" "name" "key1" $ xpickle)</span>+<a name="line-560"></a><span class='comment'>-- > (xpElemWithAttrValue "attr" "name" "key2" $ xpText0)</span>+<a name="line-561"></a><span class='comment'>-- > (xpElemWithAttrValue "attr" "name" "key3" $ xpickle)</span>+<a name="line-562"></a>+<a name="line-563"></a><a name="xpElemWithAttrValue"></a><span class='definition'>xpElemWithAttrValue</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> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-564"></a><span class='definition'>xpElemWithAttrValue</span> <span class='varid'>name</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='varid'>pa</span>+<a name="line-565"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>+<a name="line-566"></a> <span class='keyword'>let</span>+<a name="line-567"></a> <span class='varid'>st'</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>pa'</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>+<a name="line-568"></a> <span class='keyword'>in</span>+<a name="line-569"></a> <span class='varid'>addCont</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>attributes</span> <span class='varid'>st'</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>st</span>+<a name="line-570"></a> <span class='layout'>)</span>+<a name="line-571"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-></span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleElement</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-572"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scElem</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa'</span><span class='layout'>)</span>+<a name="line-573"></a> <span class='layout'>}</span>+<a name="line-574"></a> <span class='keyword'>where</span>+<a name="line-575"></a> <span class='varid'>pa'</span> <span class='keyglyph'>=</span> <span class='varid'>xpAddFixedAttr</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='varop'>$</span> <span class='varid'>pa</span>+<a name="line-576"></a> <span class='varid'>noMatch</span> <span class='keyglyph'>=</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>isElem</span>+<a name="line-577"></a> <span class='varop'>>>></span>+<a name="line-578"></a> <span class='varid'>hasName</span> <span class='varid'>name</span>+<a name="line-579"></a> <span class='varop'>>>></span>+<a name="line-580"></a> <span class='varid'>hasAttrValue</span> <span class='varid'>an</span> <span class='layout'>(</span><span class='varop'>==</span><span class='varid'>av</span><span class='layout'>)</span>+<a name="line-581"></a> <span class='layout'>)</span>+<a name="line-582"></a> <span class='varid'>unpickleElement</span> <span class='varid'>st</span>+<a name="line-583"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-584"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getCont</span> <span class='varid'>st</span>+<a name="line-585"></a> <span class='keyword'>if</span> <span class='varid'>noMatch</span> <span class='varid'>t</span>+<a name="line-586"></a> <span class='keyword'>then</span> <span class='varid'>fail</span> <span class='str'>"element name or attr value does not match"</span>+<a name="line-587"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>+<a name="line-588"></a> <span class='keyword'>let</span> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>t</span>+<a name="line-589"></a> <span class='varid'>al</span> <span class='keyglyph'><-</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getAttrl</span> <span class='varid'>t</span>+<a name="line-590"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>al</span><span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>cs</span><span class='layout'>}</span>+<a name="line-591"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>dropCont</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-592"></a>+<a name="line-593"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-594"></a>+<a name="line-595"></a><span class='comment'>-- | Pickler for storing\/retreiving data into\/from an attribute value</span>+<a name="line-596"></a><span class='comment'>--</span>+<a name="line-597"></a><span class='comment'>-- The attribute is inserted in the surrounding element constructed by the 'xpElem' pickler</span>+<a name="line-598"></a>+<a name="line-599"></a><a name="xpAttrQN"></a><span class='definition'>xpAttrQN</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-600"></a><span class='definition'>xpAttrQN</span> <span class='varid'>qn</span> <span class='varid'>pa</span>+<a name="line-601"></a> <span class='keyglyph'>=</span> <span class='conid'>PU</span> <span class='layout'>{</span> <span class='varid'>appPickle</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='keyglyph'>-></span>+<a name="line-602"></a> <span class='keyword'>let</span>+<a name="line-603"></a> <span class='varid'>st'</span> <span class='keyglyph'>=</span> <span class='varid'>appPickle</span> <span class='varid'>pa</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>emptySt</span><span class='layout'>)</span>+<a name="line-604"></a> <span class='keyword'>in</span>+<a name="line-605"></a> <span class='varid'>addAtt</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkAttr</span> <span class='varid'>qn</span> <span class='layout'>(</span><span class='varid'>contents</span> <span class='varid'>st'</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>st</span>+<a name="line-606"></a> <span class='layout'>)</span>+<a name="line-607"></a> <span class='layout'>,</span> <span class='varid'>appUnPickle</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>st</span> <span class='keyglyph'>-></span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='conid'>Nothing</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>unpickleAttr</span> <span class='varid'>st</span><span class='layout'>)</span>+<a name="line-608"></a> <span class='layout'>,</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scAttr</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>theSchema</span> <span class='varid'>pa</span><span class='layout'>)</span>+<a name="line-609"></a> <span class='layout'>}</span>+<a name="line-610"></a> <span class='keyword'>where</span>+<a name="line-611"></a> <span class='varid'>unpickleAttr</span> <span class='varid'>st</span>+<a name="line-612"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-613"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>getAtt</span> <span class='varid'>qn</span> <span class='varid'>st</span>+<a name="line-614"></a> <span class='keyword'>let</span> <span class='varid'>av</span> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>getChildren</span> <span class='varid'>a</span>+<a name="line-615"></a> <span class='varid'>res</span> <span class='keyglyph'><-</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>appUnPickle</span> <span class='varid'>pa</span> <span class='varop'>$</span> <span class='conid'>St</span> <span class='layout'>{</span><span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span><span class='layout'>,</span> <span class='varid'>contents</span> <span class='keyglyph'>=</span> <span class='varid'>av</span><span class='layout'>}</span>+<a name="line-616"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>st</span><span class='layout'>)</span> <span class='comment'>-- attribute is not removed from attribute list,</span>+<a name="line-617"></a> <span class='comment'>-- attributes are selected by name</span>+<a name="line-618"></a>+<a name="line-619"></a><span class='comment'>-- | convenient Pickler for xpAttrQN</span>+<a name="line-620"></a><span class='comment'>--</span>+<a name="line-621"></a><span class='comment'>-- > xpAttr n = xpAttrQN (mkName n)</span>+<a name="line-622"></a>+<a name="line-623"></a><a name="xpAttr"></a><span class='definition'>xpAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-624"></a><span class='definition'>xpAttr</span> <span class='keyglyph'>=</span> <span class='varid'>xpAttrQN</span> <span class='varop'>.</span> <span class='varid'>mkName</span>+<a name="line-625"></a>+<a name="line-626"></a><span class='comment'>-- | Add an optional attribute for an optional value (Maybe a).</span>+<a name="line-627"></a>+<a name="line-628"></a><a name="xpAttrImplied"></a><span class='definition'>xpAttrImplied</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span>+<a name="line-629"></a><span class='definition'>xpAttrImplied</span> <span class='varid'>name</span> <span class='varid'>pa</span>+<a name="line-630"></a> <span class='keyglyph'>=</span> <span class='varid'>xpOption</span> <span class='varop'>$</span> <span class='varid'>xpAttr</span> <span class='varid'>name</span> <span class='varid'>pa</span>+<a name="line-631"></a>+<a name="line-632"></a><a name="xpAttrFixed"></a><span class='definition'>xpAttrFixed</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'>PU</span> <span class='conid'>()</span>+<a name="line-633"></a><span class='definition'>xpAttrFixed</span> <span class='varid'>name</span> <span class='varid'>val</span>+<a name="line-634"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>xpWrapMaybe</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>v</span> <span class='varop'>==</span> <span class='varid'>val</span> <span class='keyword'>then</span> <span class='conid'>Just</span> <span class='conid'>()</span> <span class='keyword'>else</span> <span class='conid'>Nothing</span>+<a name="line-635"></a> <span class='layout'>,</span> <span class='varid'>const</span> <span class='varid'>val</span>+<a name="line-636"></a> <span class='layout'>)</span> <span class='varop'>$</span>+<a name="line-637"></a> <span class='varid'>xpAttr</span> <span class='varid'>name</span> <span class='varid'>xpText</span>+<a name="line-638"></a> <span class='layout'>)</span> <span class='layout'>{</span> <span class='varid'>theSchema</span> <span class='keyglyph'>=</span> <span class='varid'>scAttr</span> <span class='varid'>name</span> <span class='layout'>(</span><span class='varid'>scFixed</span> <span class='varid'>val</span><span class='layout'>)</span> <span class='layout'>}</span>+<a name="line-639"></a>+<a name="line-640"></a><span class='comment'>-- | Add an attribute with a fixed value.</span>+<a name="line-641"></a><span class='comment'>--</span>+<a name="line-642"></a><span class='comment'>-- Useful e.g. to declare namespaces. Is implemented by 'xpAttrFixed'</span>+<a name="line-643"></a>+<a name="line-644"></a><a name="xpAddFixedAttr"></a><span class='definition'>xpAddFixedAttr</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'>PU</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-645"></a><span class='definition'>xpAddFixedAttr</span> <span class='varid'>name</span> <span class='varid'>val</span> <span class='varid'>pa</span>+<a name="line-646"></a> <span class='keyglyph'>=</span> <span class='varid'>xpWrap</span> <span class='layout'>(</span> <span class='varid'>snd</span>+<a name="line-647"></a> <span class='layout'>,</span> <span class='conid'>(,)</span> <span class='conid'>()</span>+<a name="line-648"></a> <span class='layout'>)</span> <span class='varop'>$</span>+<a name="line-649"></a> <span class='varid'>xpPair</span> <span class='layout'>(</span><span class='varid'>xpAttrFixed</span> <span class='varid'>name</span> <span class='varid'>val</span><span class='layout'>)</span> <span class='varid'>pa</span>+<a name="line-650"></a>+<a name="line-651"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-652"></a>+<a name="line-653"></a><span class='comment'>-- | The class for overloading 'xpickle', the default pickler</span>+<a name="line-654"></a>+<a name="line-655"></a><a name="XmlPickler"></a><span class='keyword'>class</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyword'>where</span>+<a name="line-656"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>::</span> <span class='conid'>PU</span> <span class='varid'>a</span>+<a name="line-657"></a>+<a name="line-658"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>Int</span> <span class='keyword'>where</span>+<a name="line-659"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPrim</span>+<a name="line-660"></a>+<a name="line-661"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>Integer</span> <span class='keyword'>where</span>+<a name="line-662"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPrim</span>+<a name="line-663"></a>+<a name="line-664"></a><span class='comment'>{-+<a name="line-665"></a> no instance of XmlPickler Char+<a name="line-666"></a> because then every text would be encoded+<a name="line-667"></a> char by char, because of the instance for lists+<a name="line-668"></a>+<a name="line-669"></a>instance XmlPickler Char where+<a name="line-670"></a> xpickle = xpPrim+<a name="line-671"></a>-}</span>+<a name="line-672"></a>+<a name="line-673"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='conid'>()</span> <span class='keyword'>where</span>+<a name="line-674"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpUnit</span>+<a name="line-675"></a>+<a name="line-676"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>)</span> <span class='keyword'>where</span>+<a name="line-677"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpPair</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>+<a name="line-678"></a>+<a name="line-679"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>)</span> <span class='keyword'>where</span>+<a name="line-680"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpTriple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>+<a name="line-681"></a>+<a name="line-682"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>d</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>,</span><span class='varid'>d</span><span class='layout'>)</span> <span class='keyword'>where</span>+<a name="line-683"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xp4Tuple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>+<a name="line-684"></a>+<a name="line-685"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>XmlPickler</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>b</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>c</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>d</span><span class='layout'>,</span> <span class='conid'>XmlPickler</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>,</span><span class='varid'>c</span><span class='layout'>,</span><span class='varid'>d</span><span class='layout'>,</span><span class='varid'>e</span><span class='layout'>)</span> <span class='keyword'>where</span>+<a name="line-686"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xp5Tuple</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span> <span class='varid'>xpickle</span>+<a name="line-687"></a>+<a name="line-688"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span> <span class='keyword'>where</span>+<a name="line-689"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpList</span> <span class='varid'>xpickle</span>+<a name="line-690"></a>+<a name="line-691"></a><span class='keyword'>instance</span> <span class='conid'>XmlPickler</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>XmlPickler</span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyword'>where</span>+<a name="line-692"></a> <span class='varid'>xpickle</span> <span class='keyglyph'>=</span> <span class='varid'>xpOption</span> <span class='varid'>xpickle</span>+<a name="line-693"></a>+<a name="line-694"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-Arrow-ProcessDocument.html view
@@ -18,9 +18,9 @@ <a name="line-10"></a> Portability: portable <a name="line-11"></a> Version : $Id: ProcessDocument.hs,v 1.3 2006/08/30 16:20:52 hxml Exp $ <a name="line-12"></a>-<a name="line-13"></a>Compound arrows for reading, parsing, validating and writing XML documents+<a name="line-13"></a> Compound arrows for reading, parsing, validating and writing XML documents <a name="line-14"></a>-<a name="line-15"></a>All arrows use IO and a global state for options, errorhandling, ...+<a name="line-15"></a> All arrows use IO and a global state for options, errorhandling, ... <a name="line-16"></a>-}</span> <a name="line-17"></a> <a name="line-18"></a><span class='comment'>-- ------------------------------------------------------------</span>@@ -139,7 +139,7 @@ <a name="line-131"></a> <a name="line-132"></a><a name="parseHtmlDocument"></a><span class='definition'>parseHtmlDocument</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <a name="line-133"></a><span class='definition'>parseHtmlDocument</span> <span class='varid'>withTagSoup</span> <span class='varid'>withNamespaces</span> <span class='varid'>warnings</span> <span class='varid'>preserveCmt</span> <span class='varid'>removeWhitespace</span> <span class='varid'>asHtml</span>-<a name="line-134"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span> <span class='varop'>>>></span> <span class='varid'>traceString</span> <span class='num'>1</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"parseHtmlDoc: parse HTML document "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-134"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span> <span class='varop'>>>></span> <span class='varid'>traceValue</span> <span class='num'>1</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"parseHtmlDoc: parse HTML document "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span> <span class='layout'>)</span> <a name="line-135"></a> <span class='varop'>>>></span> <a name="line-136"></a> <span class='varid'>replaceChildren</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span> <span class='comment'>-- get source name</span> <a name="line-137"></a> <span class='varop'>&&&</span>@@ -159,7 +159,7 @@ <a name="line-151"></a> <span class='varop'>>>></span> <a name="line-152"></a> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getAttrValue</span> <span class='varid'>a_source</span> <a name="line-153"></a> <span class='varop'>>>></span>-<a name="line-154"></a> <span class='varid'>traceString</span> <span class='num'>1</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>src</span> <span class='keyglyph'>-></span> <span class='str'>"parse HTML document "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" finished"</span><span class='layout'>)</span>+<a name="line-154"></a> <span class='varid'>traceValue</span> <span class='num'>1</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>src</span> <span class='keyglyph'>-></span> <span class='str'>"parse HTML document "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" finished"</span><span class='layout'>)</span> <a name="line-155"></a> <span class='layout'>)</span> <a name="line-156"></a> <span class='layout'>)</span> <a name="line-157"></a> <span class='varop'>`when`</span> <span class='varid'>documentStatusOk</span>
doc/hdoc/src/Text-XML-HXT-Arrow-ReadDocument.html view
@@ -117,264 +117,270 @@ <a name="line-109"></a> <a name="line-110"></a>- 'a_use_curl' : obsolete and ignored, HTTP acccess is always done with curl bindings for libcurl <a name="line-111"></a>-<a name="line-112"></a>- 'a_options_curl' : deprecated but for compatibility reasons still supported.-<a name="line-113"></a> More options passed to the curl binding.-<a name="line-114"></a> Instead of using this option to set a whole bunch of options at once for curl-<a name="line-115"></a> it is recomended to use the @curl-.*@ options syntax described below.-<a name="line-116"></a>-<a name="line-117"></a>- 'a_encoding' : default document encoding ('utf8', 'isoLatin1', 'usAscii', 'iso8859_2', ... , 'iso8859_16', ...).-<a name="line-118"></a> Only XML and HTML documents are decoded, documents with none XML\/HTML mime types are not decoded. The whole content is returned in a single text node-<a name="line-119"></a>-<a name="line-120"></a>- 'a_mime_types' : set the mime type table for file input with given file. The format of this config file must be in the syntax of a debian linux \"mime.types\" config file-<a name="line-121"></a>-<a name="line-122"></a>- curl options : the HTTP interface with libcurl can be configured with a lot of options. To support these options in an easy way, there is a naming convetion:-<a name="line-123"></a> Every option, which has the prefix @curl@ and the rest of the name forms an option as described in the curl man page, is passed to the curl binding lib.-<a name="line-124"></a> See 'Text.XML.HXT.IO.GetHTTPLibCurl.getCont' for examples. Currently most of the options concerning HTTP requests are implemented.+<a name="line-112"></a>- 'a_strict_input' : file input is done strictly using the 'Data.ByteString' input functions. This ensures correct closing of files, especially when working with+<a name="line-113"></a> the tagsoup parser and not processing the whole input data. Default is off. The @ByteString@ input usually is not faster than the buildin @hGetContents@+<a name="line-114"></a> for strings.+<a name="line-115"></a>+<a name="line-116"></a>- 'a_options_curl' : deprecated but for compatibility reasons still supported.+<a name="line-117"></a> More options passed to the curl binding.+<a name="line-118"></a> Instead of using this option to set a whole bunch of options at once for curl+<a name="line-119"></a> it is recomended to use the @curl-.*@ options syntax described below.+<a name="line-120"></a>+<a name="line-121"></a>- 'a_encoding' : default document encoding ('utf8', 'isoLatin1', 'usAscii', 'iso8859_2', ... , 'iso8859_16', ...).+<a name="line-122"></a> Only XML and HTML documents are decoded, documents with none XML\/HTML mime types are not decoded. The whole content is returned in a single text node+<a name="line-123"></a>+<a name="line-124"></a>- 'a_mime_types' : set the mime type table for file input with given file. The format of this config file must be in the syntax of a debian linux \"mime.types\" config file <a name="line-125"></a>-<a name="line-126"></a>All attributes not evaluated by readDocument are stored in the created document root node for easy access of the various-<a name="line-127"></a>options in e.g. the input\/output modules-<a name="line-128"></a>-<a name="line-129"></a>If the document name is the empty string or an uri of the form \"stdin:\", the document is read from standard input.-<a name="line-130"></a>-<a name="line-131"></a>examples:+<a name="line-126"></a>- curl options : the HTTP interface with libcurl can be configured with a lot of options. To support these options in an easy way, there is a naming convetion:+<a name="line-127"></a> Every option, which has the prefix @curl@ and the rest of the name forms an option as described in the curl man page, is passed to the curl binding lib.+<a name="line-128"></a> See 'Text.XML.HXT.IO.GetHTTPLibCurl.getCont' for examples. Currently most of the options concerning HTTP requests are implemented.+<a name="line-129"></a>+<a name="line-130"></a>All attributes not evaluated by readDocument are stored in the created document root node for easy access of the various+<a name="line-131"></a>options in e.g. the input\/output modules <a name="line-132"></a>-<a name="line-133"></a>> readDocument [ ] "test.xml"+<a name="line-133"></a>If the document name is the empty string or an uri of the form \"stdin:\", the document is read from standard input. <a name="line-134"></a>-<a name="line-135"></a>reads and validates a document \"test.xml\", no namespace propagation, only canonicalization is performed +<a name="line-135"></a>examples: <a name="line-136"></a>-<a name="line-137"></a>> readDocument [ (a_validate, "0")-<a name="line-138"></a>> , (a_encoding, isoLatin1)-<a name="line-139"></a>> , (a_parse_by_mimetype, "1")-<a name="line-140"></a>> ] "<a href="http://localhost/test.php">http://localhost/test.php</a>"-<a name="line-141"></a>-<a name="line-142"></a>reads document \"test.php\", parses it as HTML or XML depending on the mimetype given from the server, but without validation, default encoding 'isoLatin1'.-<a name="line-143"></a>-<a name="line-144"></a>-<a name="line-145"></a>> readDocument [ (a_parse_html, "1")-<a name="line-146"></a>> , (a_encoding, isoLatin1)-<a name="line-147"></a>> ] ""+<a name="line-137"></a>> readDocument [ ] "test.xml"+<a name="line-138"></a>+<a name="line-139"></a>reads and validates a document \"test.xml\", no namespace propagation, only canonicalization is performed +<a name="line-140"></a>+<a name="line-141"></a>> readDocument [ (a_validate, "0")+<a name="line-142"></a>> , (a_encoding, isoLatin1)+<a name="line-143"></a>> , (a_parse_by_mimetype, "1")+<a name="line-144"></a>> ] "<a href="http://localhost/test.php">http://localhost/test.php</a>"+<a name="line-145"></a>+<a name="line-146"></a>reads document \"test.php\", parses it as HTML or XML depending on the mimetype given from the server, but without validation, default encoding 'isoLatin1'.+<a name="line-147"></a> <a name="line-148"></a>-<a name="line-149"></a>reads a HTML document from standard input, no validation is done when parsing HTML, default encoding is 'isoLatin1',-<a name="line-150"></a>parsing is done with tagsoup parser-<a name="line-151"></a>-<a name="line-152"></a>> readDocument [ (a_encoding, isoLatin1)-<a name="line-153"></a>> , (a_mime_type, "/etc/mime.types")-<a name="line-154"></a>> , (a_tagsoup, "1")-<a name="line-155"></a>> ] "test.svg"-<a name="line-156"></a>-<a name="line-157"></a>reads an SVG document from standard input, sets the mime type by looking in the system mimetype config file, default encoding is 'isoLatin1',-<a name="line-158"></a>parsing is done with the lightweight tagsoup parser, which implies no validation.-<a name="line-159"></a>-<a name="line-160"></a>> readDocument [ (a_parse_html, "1")-<a name="line-161"></a>> , (a_proxy, "www-cache:3128")-<a name="line-162"></a>> , (a_curl, "1")-<a name="line-163"></a>> , (a_issue_warnings, "0")-<a name="line-164"></a>> ] "<a href="http://www.haskell.org/">http://www.haskell.org/</a>"-<a name="line-165"></a>-<a name="line-166"></a>reads Haskell homepage with HTML parser ignoring any warnings, with http access via external program curl and proxy \"www-cache\" at port 3128-<a name="line-167"></a>-<a name="line-168"></a>> readDocument [ (a_validate, "1")-<a name="line-169"></a>> , (a_check_namespace, "1")-<a name="line-170"></a>> , (a_remove_whitespace, "1")-<a name="line-171"></a>> , (a_trace, "2")-<a name="line-172"></a>> ] "<a href="http://www.w3c.org/">http://www.w3c.org/</a>"-<a name="line-173"></a>-<a name="line-174"></a>read w3c home page (xhtml), validate and check namespaces, remove whitespace between tags, trace activities with level 2-<a name="line-175"></a>-<a name="line-176"></a>for minimal complete examples see 'Text.XML.HXT.Arrow.WriteDocument.writeDocument' and 'runX', the main starting point for running an XML arrow.-<a name="line-177"></a>-}</span>+<a name="line-149"></a>> readDocument [ (a_parse_html, "1")+<a name="line-150"></a>> , (a_encoding, isoLatin1)+<a name="line-151"></a>> ] ""+<a name="line-152"></a>+<a name="line-153"></a>reads a HTML document from standard input, no validation is done when parsing HTML, default encoding is 'isoLatin1',+<a name="line-154"></a>parsing is done with tagsoup parser, but input is read strictly+<a name="line-155"></a>+<a name="line-156"></a>> readDocument [ (a_encoding, isoLatin1)+<a name="line-157"></a>> , (a_mime_type, "/etc/mime.types")+<a name="line-158"></a>> , (a_tagsoup, "1")+<a name="line-159"></a>> , (a_strict_input, "1")+<a name="line-160"></a>> ] "test.svg"+<a name="line-161"></a>+<a name="line-162"></a>reads an SVG document from standard input, sets the mime type by looking in the system mimetype config file, default encoding is 'isoLatin1',+<a name="line-163"></a>parsing is done with the lightweight tagsoup parser, which implies no validation.+<a name="line-164"></a>+<a name="line-165"></a>> readDocument [ (a_parse_html, "1")+<a name="line-166"></a>> , (a_proxy, "www-cache:3128")+<a name="line-167"></a>> , (a_curl, "1")+<a name="line-168"></a>> , (a_issue_warnings, "0")+<a name="line-169"></a>> ] "<a href="http://www.haskell.org/">http://www.haskell.org/</a>"+<a name="line-170"></a>+<a name="line-171"></a>reads Haskell homepage with HTML parser ignoring any warnings, with http access via external program curl and proxy \"www-cache\" at port 3128+<a name="line-172"></a>+<a name="line-173"></a>> readDocument [ (a_validate, "1")+<a name="line-174"></a>> , (a_check_namespace, "1")+<a name="line-175"></a>> , (a_remove_whitespace, "1")+<a name="line-176"></a>> , (a_trace, "2")+<a name="line-177"></a>> ] "<a href="http://www.w3c.org/">http://www.w3c.org/</a>" <a name="line-178"></a>-<a name="line-179"></a><a name="readDocument"></a><span class='definition'>readDocument</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>-<a name="line-180"></a><span class='definition'>readDocument</span> <span class='varid'>userOptions</span> <span class='varid'>src</span>-<a name="line-181"></a> <span class='keyglyph'>=</span> <span class='varid'>traceLevel</span>-<a name="line-182"></a> <span class='varop'>>>></span>-<a name="line-183"></a> <span class='varid'>addInputOptionsToSystemState</span>-<a name="line-184"></a> <span class='varop'>>>></span>-<a name="line-185"></a> <span class='varid'>getDocumentContents</span> <span class='varid'>options</span> <span class='varid'>src</span>-<a name="line-186"></a> <span class='varop'>>>></span>-<a name="line-187"></a> <span class='layout'>(</span> <span class='varid'>processDoc</span> <span class='varop'>$<</span> <span class='varid'>getMimeType</span> <span class='layout'>)</span>-<a name="line-188"></a> <span class='varop'>>>></span>-<a name="line-189"></a> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"readDocument: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" processed"</span><span class='layout'>)</span>-<a name="line-190"></a> <span class='varop'>>>></span>-<a name="line-191"></a> <span class='varid'>traceSource</span>-<a name="line-192"></a> <span class='varop'>>>></span>-<a name="line-193"></a> <span class='varid'>traceTree</span>-<a name="line-194"></a> <span class='keyword'>where</span>-<a name="line-195"></a> <span class='varid'>options</span>-<a name="line-196"></a> <span class='keyglyph'>=</span> <span class='varid'>addEntries</span> <span class='varid'>userOptions</span> <span class='varid'>defaultOptions</span>-<a name="line-197"></a>-<a name="line-198"></a> <span class='varid'>defaultOptions</span>-<a name="line-199"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span> <span class='varid'>a_parse_html</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-200"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_tagsoup</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-201"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_validate</span><span class='layout'>,</span> <span class='varid'>v_1</span> <span class='layout'>)</span>-<a name="line-202"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_issue_warnings</span><span class='layout'>,</span> <span class='varid'>v_1</span> <span class='layout'>)</span>-<a name="line-203"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_check_namespaces</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-204"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_canonicalize</span><span class='layout'>,</span> <span class='varid'>v_1</span> <span class='layout'>)</span>-<a name="line-205"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_preserve_comment</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-206"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_remove_whitespace</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-207"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_parse_by_mimetype</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-208"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_ignore_encoding_errors</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-209"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_ignore_none_xml_contents</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-210"></a> <span class='keyglyph'>]</span>-<a name="line-211"></a>-<a name="line-212"></a> <span class='varid'>traceLevel</span>-<a name="line-213"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>this</span> <span class='layout'>(</span><span class='varid'>setTraceLevel</span> <span class='varop'>.</span> <span class='varid'>read</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>a_trace</span> <span class='varop'>$</span> <span class='varid'>options</span>-<a name="line-214"></a>-<a name="line-215"></a> <span class='varid'>addInputOptionsToSystemState</span>-<a name="line-216"></a> <span class='keyglyph'>=</span> <span class='varid'>addSysOptions</span> <span class='varid'>options</span>-<a name="line-217"></a> <span class='varop'>>>></span>-<a name="line-218"></a> <span class='varid'>loadMineTypes</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_mime_types</span> <span class='varid'>userOptions</span><span class='layout'>)</span>-<a name="line-219"></a> <span class='keyword'>where</span>-<a name="line-220"></a> <span class='varid'>addSysOptions</span>-<a name="line-221"></a> <span class='keyglyph'>=</span> <span class='varid'>seqA</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>setParamString</span><span class='layout'>)</span>-<a name="line-222"></a> <span class='varid'>loadMineTypes</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-223"></a> <span class='varid'>loadMineTypes</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>setMimeTypeTableFromFile</span> <span class='varid'>f</span>-<a name="line-224"></a>-<a name="line-225"></a> <span class='varid'>getMimeType</span>-<a name="line-226"></a> <span class='keyglyph'>=</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferMimeType</span> <span class='varop'>>>^</span> <span class='varid'>map</span> <span class='varid'>toLower</span>-<a name="line-227"></a>-<a name="line-228"></a> <span class='varid'>processDoc</span> <span class='varid'>mimeType</span>-<a name="line-229"></a> <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"readDocument: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" (mime type: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>mimeType</span> <span class='varop'>++</span> <span class='str'>") will be processed"</span><span class='layout'>)</span>-<a name="line-230"></a> <span class='varop'>>>></span>-<a name="line-231"></a> <span class='varid'>parse</span>-<a name="line-232"></a> <span class='varop'>>>></span>-<a name="line-233"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>isXmlOrHtml</span>-<a name="line-234"></a> <span class='keyword'>then</span> <span class='layout'>(</span> <span class='varid'>checknamespaces</span>-<a name="line-235"></a> <span class='varop'>>>></span>-<a name="line-236"></a> <span class='varid'>canonicalize</span>-<a name="line-237"></a> <span class='varop'>>>></span>-<a name="line-238"></a> <span class='varid'>whitespace</span>-<a name="line-239"></a> <span class='varop'>>>></span>-<a name="line-240"></a> <span class='varid'>relax</span>-<a name="line-241"></a> <span class='layout'>)</span>-<a name="line-242"></a> <span class='keyword'>else</span> <span class='varid'>this</span>-<a name="line-243"></a> <span class='layout'>)</span>-<a name="line-244"></a> <span class='keyword'>where</span>-<a name="line-245"></a> <span class='varid'>parse</span>-<a name="line-246"></a> <span class='keyglyph'>|</span> <span class='varid'>isHtml</span>-<a name="line-247"></a> <span class='varop'>||</span> -<a name="line-248"></a> <span class='varid'>withTagSoup</span> <span class='keyglyph'>=</span> <span class='varid'>parseHtmlDocument</span> <span class='comment'>-- parse as HTML or with tagsoup XML</span>-<a name="line-249"></a> <span class='varid'>withTagSoup</span>-<a name="line-250"></a> <span class='varid'>withNamespaces</span>-<a name="line-251"></a> <span class='varid'>issueW</span>-<a name="line-252"></a> <span class='layout'>(</span><span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>preserveCmt</span><span class='layout'>)</span>-<a name="line-253"></a> <span class='varid'>removeWS</span>-<a name="line-254"></a> <span class='varid'>isHtml</span>-<a name="line-255"></a> <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span> <span class='keyglyph'>=</span> <span class='varid'>parseXmlDocument</span> <span class='conid'>False</span> <span class='comment'>-- for Relax NG use XML parser without validation</span>-<a name="line-256"></a> <span class='keyglyph'>|</span> <span class='varid'>isXml</span> <span class='keyglyph'>=</span> <span class='varid'>parseXmlDocument</span> <span class='varid'>validate</span> <span class='comment'>-- parse as XML</span>-<a name="line-257"></a> <span class='keyglyph'>|</span> <span class='varid'>removeNoneXml</span> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='varid'>none</span> <span class='comment'>-- don't parse, if mime type is not XML nore HTML</span>-<a name="line-258"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span> <span class='comment'>-- but remove contents when option is set</span>-<a name="line-259"></a> <span class='varid'>checknamespaces</span>-<a name="line-260"></a> <span class='keyglyph'>|</span> <span class='layout'>(</span><span class='varid'>withNamespaces</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='varid'>withTagSoup</span><span class='layout'>)</span>-<a name="line-261"></a> <span class='varop'>||</span>-<a name="line-262"></a> <span class='varid'>validateWithRelax</span> <span class='keyglyph'>=</span> <span class='varid'>propagateAndValidateNamespaces</span>-<a name="line-263"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-264"></a> <span class='varid'>canonicalize</span>-<a name="line-265"></a> <span class='keyglyph'>|</span> <span class='varid'>withTagSoup</span> <span class='keyglyph'>=</span> <span class='varid'>this</span> <span class='comment'>-- tagsoup already removes redundant struff</span>-<a name="line-266"></a> <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span> <span class='keyglyph'>=</span> <span class='varid'>canonicalizeAllNodes</span>-<a name="line-267"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span>-<a name="line-268"></a> <span class='varop'>&&</span>-<a name="line-269"></a> <span class='varid'>preserveCmt</span> <span class='keyglyph'>=</span> <span class='varid'>canonicalizeForXPath</span>-<a name="line-270"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span> <span class='keyglyph'>=</span> <span class='varid'>canonicalizeAllNodes</span>-<a name="line-271"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-272"></a> <span class='varid'>relax</span>-<a name="line-273"></a> <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span> <span class='keyglyph'>=</span> <span class='varid'>validateDocumentWithRelaxSchema</span> <span class='varid'>options</span> <span class='varid'>relaxSchema</span>-<a name="line-274"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-275"></a> <span class='varid'>whitespace</span>-<a name="line-276"></a> <span class='keyglyph'>|</span> <span class='varid'>removeWS</span>-<a name="line-277"></a> <span class='varop'>&&</span>-<a name="line-278"></a> <span class='varid'>not</span> <span class='varid'>withTagSoup</span> <span class='keyglyph'>=</span> <span class='varid'>removeDocWhiteSpace</span> <span class='comment'>-- tagsoup already removes whitespace</span>-<a name="line-279"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-280"></a> <span class='varid'>validateWithRelax</span> <span class='keyglyph'>=</span> <span class='varid'>hasEntry</span> <span class='varid'>a_relax_schema</span> <span class='varid'>options</span>-<a name="line-281"></a> <span class='varid'>relaxSchema</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_relax_schema</span> <span class='varid'>options</span>-<a name="line-282"></a> <span class='varid'>parseHtml</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_parse_html</span>-<a name="line-283"></a> <span class='varid'>isHtml</span> <span class='keyglyph'>=</span> <span class='varid'>parseHtml</span> <span class='comment'>-- force HTML</span>-<a name="line-284"></a> <span class='varop'>||</span>-<a name="line-285"></a> <span class='layout'>(</span> <span class='varid'>parseByMimeType</span> <span class='varop'>&&</span> <span class='varid'>isHtmlMimeType</span> <span class='varid'>mimeType</span> <span class='layout'>)</span>-<a name="line-286"></a> <span class='varid'>isXml</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varid'>parseByMimeType</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='varid'>parseHtml</span> <span class='layout'>)</span>-<a name="line-287"></a> <span class='varop'>||</span>-<a name="line-288"></a> <span class='layout'>(</span> <span class='varid'>parseByMimeType</span>-<a name="line-289"></a> <span class='varop'>&&</span>-<a name="line-290"></a> <span class='layout'>(</span> <span class='varid'>isXmlMimeType</span> <span class='varid'>mimeType</span>-<a name="line-291"></a> <span class='varop'>||</span>-<a name="line-292"></a> <span class='varid'>null</span> <span class='varid'>mimeType</span>-<a name="line-293"></a> <span class='layout'>)</span> <span class='comment'>-- mime type is XML or not known</span>-<a name="line-294"></a> <span class='layout'>)</span>-<a name="line-295"></a> <span class='varid'>isXmlOrHtml</span> <span class='keyglyph'>=</span> <span class='varid'>isHtml</span> <span class='varop'>||</span> <span class='varid'>isXml</span>-<a name="line-296"></a> <span class='varid'>parseByMimeType</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_parse_by_mimetype</span>-<a name="line-297"></a> <span class='varid'>validate</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_validate</span>-<a name="line-298"></a> <span class='varid'>withNamespaces</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_check_namespaces</span>-<a name="line-299"></a> <span class='varid'>withTagSoup</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_tagsoup</span>-<a name="line-300"></a> <span class='varid'>issueW</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_issue_warnings</span>-<a name="line-301"></a> <span class='varid'>removeWS</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_remove_whitespace</span>-<a name="line-302"></a> <span class='varid'>preserveCmt</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_preserve_comment</span>-<a name="line-303"></a> <span class='varid'>removeNoneXml</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_ignore_none_xml_contents</span>-<a name="line-304"></a> <span class='varid'>hasOption</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>optionIsSet</span> <span class='varid'>n</span> <span class='varid'>options</span>-<a name="line-305"></a>-<a name="line-306"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-307"></a>-<a name="line-308"></a><span class='comment'>-- |</span>-<a name="line-309"></a><span class='comment'>-- the arrow version of 'readDocument', the arrow input is the source URI</span>-<a name="line-310"></a>-<a name="line-311"></a><a name="readFromDocument"></a><span class='definition'>readFromDocument</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>-<a name="line-312"></a><span class='definition'>readFromDocument</span> <span class='varid'>userOptions</span>-<a name="line-313"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>readDocument</span> <span class='varid'>userOptions</span> <span class='varid'>s</span> <span class='layout'>)</span>-<a name="line-314"></a>-<a name="line-315"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-179"></a>read w3c home page (xhtml), validate and check namespaces, remove whitespace between tags, trace activities with level 2+<a name="line-180"></a>+<a name="line-181"></a>for minimal complete examples see 'Text.XML.HXT.Arrow.WriteDocument.writeDocument' and 'runX', the main starting point for running an XML arrow.+<a name="line-182"></a>-}</span>+<a name="line-183"></a>+<a name="line-184"></a><a name="readDocument"></a><span class='definition'>readDocument</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'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>+<a name="line-185"></a><span class='definition'>readDocument</span> <span class='varid'>userOptions</span> <span class='varid'>src</span>+<a name="line-186"></a> <span class='keyglyph'>=</span> <span class='varid'>traceLevel</span>+<a name="line-187"></a> <span class='varop'>>>></span>+<a name="line-188"></a> <span class='varid'>addInputOptionsToSystemState</span>+<a name="line-189"></a> <span class='varop'>>>></span>+<a name="line-190"></a> <span class='varid'>getDocumentContents</span> <span class='varid'>options</span> <span class='varid'>src</span>+<a name="line-191"></a> <span class='varop'>>>></span>+<a name="line-192"></a> <span class='layout'>(</span> <span class='varid'>processDoc</span> <span class='varop'>$<</span> <span class='varid'>getMimeType</span> <span class='layout'>)</span>+<a name="line-193"></a> <span class='varop'>>>></span>+<a name="line-194"></a> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"readDocument: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" processed"</span><span class='layout'>)</span>+<a name="line-195"></a> <span class='varop'>>>></span>+<a name="line-196"></a> <span class='varid'>traceSource</span>+<a name="line-197"></a> <span class='varop'>>>></span>+<a name="line-198"></a> <span class='varid'>traceTree</span>+<a name="line-199"></a> <span class='keyword'>where</span>+<a name="line-200"></a> <span class='varid'>options</span>+<a name="line-201"></a> <span class='keyglyph'>=</span> <span class='varid'>addEntries</span> <span class='varid'>userOptions</span> <span class='varid'>defaultOptions</span>+<a name="line-202"></a>+<a name="line-203"></a> <span class='varid'>defaultOptions</span>+<a name="line-204"></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-205"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_tagsoup</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>+<a name="line-206"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_strict_input</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>+<a name="line-207"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_validate</span><span class='layout'>,</span> <span class='varid'>v_1</span> <span class='layout'>)</span>+<a name="line-208"></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-209"></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-210"></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-211"></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-212"></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-213"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_parse_by_mimetype</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>+<a name="line-214"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_ignore_encoding_errors</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>+<a name="line-215"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_ignore_none_xml_contents</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>+<a name="line-216"></a> <span class='keyglyph'>]</span>+<a name="line-217"></a>+<a name="line-218"></a> <span class='varid'>traceLevel</span>+<a name="line-219"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>this</span> <span class='layout'>(</span><span class='varid'>setTraceLevel</span> <span class='varop'>.</span> <span class='varid'>read</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>a_trace</span> <span class='varop'>$</span> <span class='varid'>options</span>+<a name="line-220"></a>+<a name="line-221"></a> <span class='varid'>addInputOptionsToSystemState</span>+<a name="line-222"></a> <span class='keyglyph'>=</span> <span class='varid'>addSysOptions</span> <span class='varid'>options</span>+<a name="line-223"></a> <span class='varop'>>>></span>+<a name="line-224"></a> <span class='varid'>loadMineTypes</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_mime_types</span> <span class='varid'>userOptions</span><span class='layout'>)</span>+<a name="line-225"></a> <span class='keyword'>where</span>+<a name="line-226"></a> <span class='varid'>addSysOptions</span>+<a name="line-227"></a> <span class='keyglyph'>=</span> <span class='varid'>seqA</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>setParamString</span><span class='layout'>)</span>+<a name="line-228"></a> <span class='varid'>loadMineTypes</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>+<a name="line-229"></a> <span class='varid'>loadMineTypes</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>setMimeTypeTableFromFile</span> <span class='varid'>f</span>+<a name="line-230"></a>+<a name="line-231"></a> <span class='varid'>getMimeType</span>+<a name="line-232"></a> <span class='keyglyph'>=</span> <span class='varid'>getAttrValue</span> <span class='varid'>transferMimeType</span> <span class='varop'>>>^</span> <span class='varid'>map</span> <span class='varid'>toLower</span>+<a name="line-233"></a>+<a name="line-234"></a> <span class='varid'>processDoc</span> <span class='varid'>mimeType</span>+<a name="line-235"></a> <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"readDocument: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>src</span> <span class='varop'>++</span> <span class='str'>" (mime type: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>mimeType</span> <span class='varop'>++</span> <span class='str'>") will be processed"</span><span class='layout'>)</span>+<a name="line-236"></a> <span class='varop'>>>></span>+<a name="line-237"></a> <span class='varid'>parse</span>+<a name="line-238"></a> <span class='varop'>>>></span>+<a name="line-239"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>isXmlOrHtml</span>+<a name="line-240"></a> <span class='keyword'>then</span> <span class='layout'>(</span> <span class='varid'>checknamespaces</span>+<a name="line-241"></a> <span class='varop'>>>></span>+<a name="line-242"></a> <span class='varid'>canonicalize</span>+<a name="line-243"></a> <span class='varop'>>>></span>+<a name="line-244"></a> <span class='varid'>whitespace</span>+<a name="line-245"></a> <span class='varop'>>>></span>+<a name="line-246"></a> <span class='varid'>relax</span>+<a name="line-247"></a> <span class='layout'>)</span>+<a name="line-248"></a> <span class='keyword'>else</span> <span class='varid'>this</span>+<a name="line-249"></a> <span class='layout'>)</span>+<a name="line-250"></a> <span class='keyword'>where</span>+<a name="line-251"></a> <span class='varid'>parse</span>+<a name="line-252"></a> <span class='keyglyph'>|</span> <span class='varid'>isHtml</span>+<a name="line-253"></a> <span class='varop'>||</span> +<a name="line-254"></a> <span class='varid'>withTagSoup</span> <span class='keyglyph'>=</span> <span class='varid'>parseHtmlDocument</span> <span class='comment'>-- parse as HTML or with tagsoup XML</span>+<a name="line-255"></a> <span class='varid'>withTagSoup</span>+<a name="line-256"></a> <span class='varid'>withNamespaces</span>+<a name="line-257"></a> <span class='varid'>issueW</span>+<a name="line-258"></a> <span class='layout'>(</span><span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>preserveCmt</span><span class='layout'>)</span>+<a name="line-259"></a> <span class='varid'>removeWS</span>+<a name="line-260"></a> <span class='varid'>isHtml</span>+<a name="line-261"></a> <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span> <span class='keyglyph'>=</span> <span class='varid'>parseXmlDocument</span> <span class='conid'>False</span> <span class='comment'>-- for Relax NG use XML parser without validation</span>+<a name="line-262"></a> <span class='keyglyph'>|</span> <span class='varid'>isXml</span> <span class='keyglyph'>=</span> <span class='varid'>parseXmlDocument</span> <span class='varid'>validate</span> <span class='comment'>-- parse as XML</span>+<a name="line-263"></a> <span class='keyglyph'>|</span> <span class='varid'>removeNoneXml</span> <span class='keyglyph'>=</span> <span class='varid'>replaceChildren</span> <span class='varid'>none</span> <span class='comment'>-- don't parse, if mime type is not XML nore HTML</span>+<a name="line-264"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span> <span class='comment'>-- but remove contents when option is set</span>+<a name="line-265"></a> <span class='varid'>checknamespaces</span>+<a name="line-266"></a> <span class='keyglyph'>|</span> <span class='layout'>(</span><span class='varid'>withNamespaces</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='varid'>withTagSoup</span><span class='layout'>)</span>+<a name="line-267"></a> <span class='varop'>||</span>+<a name="line-268"></a> <span class='varid'>validateWithRelax</span> <span class='keyglyph'>=</span> <span class='varid'>propagateAndValidateNamespaces</span>+<a name="line-269"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>+<a name="line-270"></a> <span class='varid'>canonicalize</span>+<a name="line-271"></a> <span class='keyglyph'>|</span> <span class='varid'>withTagSoup</span> <span class='keyglyph'>=</span> <span class='varid'>this</span> <span class='comment'>-- tagsoup already removes redundant struff</span>+<a name="line-272"></a> <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span> <span class='keyglyph'>=</span> <span class='varid'>canonicalizeAllNodes</span>+<a name="line-273"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span>+<a name="line-274"></a> <span class='varop'>&&</span>+<a name="line-275"></a> <span class='varid'>preserveCmt</span> <span class='keyglyph'>=</span> <span class='varid'>canonicalizeForXPath</span>+<a name="line-276"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_canonicalize</span> <span class='keyglyph'>=</span> <span class='varid'>canonicalizeAllNodes</span>+<a name="line-277"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>+<a name="line-278"></a> <span class='varid'>relax</span>+<a name="line-279"></a> <span class='keyglyph'>|</span> <span class='varid'>validateWithRelax</span> <span class='keyglyph'>=</span> <span class='varid'>validateDocumentWithRelaxSchema</span> <span class='varid'>options</span> <span class='varid'>relaxSchema</span>+<a name="line-280"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>+<a name="line-281"></a> <span class='varid'>whitespace</span>+<a name="line-282"></a> <span class='keyglyph'>|</span> <span class='varid'>removeWS</span>+<a name="line-283"></a> <span class='varop'>&&</span>+<a name="line-284"></a> <span class='varid'>not</span> <span class='varid'>withTagSoup</span> <span class='keyglyph'>=</span> <span class='varid'>removeDocWhiteSpace</span> <span class='comment'>-- tagsoup already removes whitespace</span>+<a name="line-285"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>+<a name="line-286"></a> <span class='varid'>validateWithRelax</span> <span class='keyglyph'>=</span> <span class='varid'>hasEntry</span> <span class='varid'>a_relax_schema</span> <span class='varid'>options</span>+<a name="line-287"></a> <span class='varid'>relaxSchema</span> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>a_relax_schema</span> <span class='varid'>options</span>+<a name="line-288"></a> <span class='varid'>parseHtml</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_parse_html</span>+<a name="line-289"></a> <span class='varid'>isHtml</span> <span class='keyglyph'>=</span> <span class='varid'>parseHtml</span> <span class='comment'>-- force HTML</span>+<a name="line-290"></a> <span class='varop'>||</span>+<a name="line-291"></a> <span class='layout'>(</span> <span class='varid'>parseByMimeType</span> <span class='varop'>&&</span> <span class='varid'>isHtmlMimeType</span> <span class='varid'>mimeType</span> <span class='layout'>)</span>+<a name="line-292"></a> <span class='varid'>isXml</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>not</span> <span class='varid'>parseByMimeType</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='varid'>parseHtml</span> <span class='layout'>)</span>+<a name="line-293"></a> <span class='varop'>||</span>+<a name="line-294"></a> <span class='layout'>(</span> <span class='varid'>parseByMimeType</span>+<a name="line-295"></a> <span class='varop'>&&</span>+<a name="line-296"></a> <span class='layout'>(</span> <span class='varid'>isXmlMimeType</span> <span class='varid'>mimeType</span>+<a name="line-297"></a> <span class='varop'>||</span>+<a name="line-298"></a> <span class='varid'>null</span> <span class='varid'>mimeType</span>+<a name="line-299"></a> <span class='layout'>)</span> <span class='comment'>-- mime type is XML or not known</span>+<a name="line-300"></a> <span class='layout'>)</span>+<a name="line-301"></a> <span class='varid'>isXmlOrHtml</span> <span class='keyglyph'>=</span> <span class='varid'>isHtml</span> <span class='varop'>||</span> <span class='varid'>isXml</span>+<a name="line-302"></a> <span class='varid'>parseByMimeType</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_parse_by_mimetype</span>+<a name="line-303"></a> <span class='varid'>validate</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_validate</span>+<a name="line-304"></a> <span class='varid'>withNamespaces</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_check_namespaces</span>+<a name="line-305"></a> <span class='varid'>withTagSoup</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_tagsoup</span>+<a name="line-306"></a> <span class='varid'>issueW</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_issue_warnings</span>+<a name="line-307"></a> <span class='varid'>removeWS</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_remove_whitespace</span>+<a name="line-308"></a> <span class='varid'>preserveCmt</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_preserve_comment</span>+<a name="line-309"></a> <span class='varid'>removeNoneXml</span> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_ignore_none_xml_contents</span>+<a name="line-310"></a> <span class='varid'>hasOption</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>optionIsSet</span> <span class='varid'>n</span> <span class='varid'>options</span>+<a name="line-311"></a>+<a name="line-312"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-313"></a>+<a name="line-314"></a><span class='comment'>-- |</span>+<a name="line-315"></a><span class='comment'>-- the arrow version of 'readDocument', the arrow input is the source URI</span> <a name="line-316"></a>-<a name="line-317"></a><span class='comment'>-- |</span>-<a name="line-318"></a><span class='comment'>-- read a document that is stored in a normal Haskell String</span>-<a name="line-319"></a><span class='comment'>--</span>-<a name="line-320"></a><span class='comment'>-- the same function as readDocument, but the parameter forms the input.</span>-<a name="line-321"></a><span class='comment'>-- All options available for 'readDocument' are applicable for readString.</span>-<a name="line-322"></a><span class='comment'>--</span>-<a name="line-323"></a><span class='comment'>-- Default encoding: No encoding is done, the String argument is taken as Unicode string</span>-<a name="line-324"></a>-<a name="line-325"></a><a name="readString"></a><span class='definition'>readString</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'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>-<a name="line-326"></a><span class='definition'>readString</span> <span class='varid'>userOptions</span> <span class='varid'>content</span>-<a name="line-327"></a> <span class='keyglyph'>=</span> <span class='varid'>readDocument</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>a_encoding</span><span class='layout'>,</span> <span class='varid'>unicodeString</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>userOptions</span> <span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>stringProtocol</span> <span class='varop'>++</span> <span class='varid'>content</span><span class='layout'>)</span>-<a name="line-328"></a>-<a name="line-329"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-317"></a><a name="readFromDocument"></a><span class='definition'>readFromDocument</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>+<a name="line-318"></a><span class='definition'>readFromDocument</span> <span class='varid'>userOptions</span>+<a name="line-319"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>readDocument</span> <span class='varid'>userOptions</span> <span class='varid'>s</span> <span class='layout'>)</span>+<a name="line-320"></a>+<a name="line-321"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-322"></a>+<a name="line-323"></a><span class='comment'>-- |</span>+<a name="line-324"></a><span class='comment'>-- read a document that is stored in a normal Haskell String</span>+<a name="line-325"></a><span class='comment'>--</span>+<a name="line-326"></a><span class='comment'>-- the same function as readDocument, but the parameter forms the input.</span>+<a name="line-327"></a><span class='comment'>-- All options available for 'readDocument' are applicable for readString.</span>+<a name="line-328"></a><span class='comment'>--</span>+<a name="line-329"></a><span class='comment'>-- Default encoding: No encoding is done, the String argument is taken as Unicode string</span> <a name="line-330"></a>-<a name="line-331"></a><span class='comment'>-- |</span>-<a name="line-332"></a><span class='comment'>-- the arrow version of 'readString', the arrow input is the source URI</span>-<a name="line-333"></a>-<a name="line-334"></a><a name="readFromString"></a><span class='definition'>readFromString</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>-<a name="line-335"></a><span class='definition'>readFromString</span> <span class='varid'>userOptions</span>-<a name="line-336"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>readString</span> <span class='varid'>userOptions</span> <span class='varid'>s</span> <span class='layout'>)</span>-<a name="line-337"></a>-<a name="line-338"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-331"></a><a name="readString"></a><span class='definition'>readString</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>+<a name="line-332"></a><span class='definition'>readString</span> <span class='varid'>userOptions</span> <span class='varid'>content</span>+<a name="line-333"></a> <span class='keyglyph'>=</span> <span class='varid'>readDocument</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>a_encoding</span><span class='layout'>,</span> <span class='varid'>unicodeString</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>userOptions</span> <span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>stringProtocol</span> <span class='varop'>++</span> <span class='varid'>content</span><span class='layout'>)</span>+<a name="line-334"></a>+<a name="line-335"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-336"></a>+<a name="line-337"></a><span class='comment'>-- |</span>+<a name="line-338"></a><span class='comment'>-- the arrow version of 'readString', the arrow input is the source URI</span> <a name="line-339"></a>-<a name="line-340"></a><span class='comment'>-- |</span>-<a name="line-341"></a><span class='comment'>-- parse a string as HTML content, substitute all HTML entity refs and canonicalize tree</span>-<a name="line-342"></a><span class='comment'>-- (substitute char refs, ...). Errors are ignored.</span>-<a name="line-343"></a><span class='comment'>-- </span>-<a name="line-344"></a><span class='comment'>-- A simpler version of 'readFromString' but with less functionality.</span>-<a name="line-345"></a><span class='comment'>-- Does not run in the IO monad</span>-<a name="line-346"></a>-<a name="line-347"></a><a name="hread"></a><span class='definition'>hread</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>-<a name="line-348"></a><span class='definition'>hread</span>-<a name="line-349"></a> <span class='keyglyph'>=</span> <span class='varid'>parseHtmlContent</span>-<a name="line-350"></a> <span class='varop'>>>></span>-<a name="line-351"></a> <span class='varid'>substHtmlEntityRefs</span>-<a name="line-352"></a> <span class='varop'>>>></span>-<a name="line-353"></a> <span class='varid'>processTopDown</span> <span class='layout'>(</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isError</span> <span class='layout'>)</span>-<a name="line-354"></a> <span class='varop'>>>></span>-<a name="line-355"></a> <span class='varid'>canonicalizeContents</span>-<a name="line-356"></a>-<a name="line-357"></a><span class='comment'>-- |</span>-<a name="line-358"></a><span class='comment'>-- parse a string as XML content, substitute all predefined XML entity refs and canonicalize tree</span>-<a name="line-359"></a><span class='comment'>-- (substitute char refs, ...)</span>-<a name="line-360"></a>-<a name="line-361"></a><a name="xread"></a><span class='definition'>xread</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>-<a name="line-362"></a><span class='definition'>xread</span>-<a name="line-363"></a> <span class='keyglyph'>=</span> <span class='varid'>parseXmlContent</span>-<a name="line-364"></a> <span class='varop'>>>></span>-<a name="line-365"></a> <span class='varid'>substXmlEntityRefs</span>-<a name="line-366"></a> <span class='varop'>>>></span>-<a name="line-367"></a> <span class='varid'>canonicalizeContents</span>-<a name="line-368"></a>-<a name="line-369"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-370"></a>+<a name="line-340"></a><a name="readFromString"></a><span class='definition'>readFromString</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>+<a name="line-341"></a><span class='definition'>readFromString</span> <span class='varid'>userOptions</span>+<a name="line-342"></a> <span class='keyglyph'>=</span> <span class='varid'>applyA</span> <span class='layout'>(</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>readString</span> <span class='varid'>userOptions</span> <span class='varid'>s</span> <span class='layout'>)</span>+<a name="line-343"></a>+<a name="line-344"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-345"></a>+<a name="line-346"></a><span class='comment'>-- |</span>+<a name="line-347"></a><span class='comment'>-- parse a string as HTML content, substitute all HTML entity refs and canonicalize tree</span>+<a name="line-348"></a><span class='comment'>-- (substitute char refs, ...). Errors are ignored.</span>+<a name="line-349"></a><span class='comment'>-- </span>+<a name="line-350"></a><span class='comment'>-- A simpler version of 'readFromString' but with less functionality.</span>+<a name="line-351"></a><span class='comment'>-- Does not run in the IO monad</span>+<a name="line-352"></a>+<a name="line-353"></a><a name="hread"></a><span class='definition'>hread</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>+<a name="line-354"></a><span class='definition'>hread</span>+<a name="line-355"></a> <span class='keyglyph'>=</span> <span class='varid'>parseHtmlContent</span>+<a name="line-356"></a> <span class='varop'>>>></span>+<a name="line-357"></a> <span class='varid'>substHtmlEntityRefs</span>+<a name="line-358"></a> <span class='varop'>>>></span>+<a name="line-359"></a> <span class='varid'>processTopDown</span> <span class='layout'>(</span> <span class='varid'>none</span> <span class='varop'>`when`</span> <span class='varid'>isError</span> <span class='layout'>)</span>+<a name="line-360"></a> <span class='varop'>>>></span>+<a name="line-361"></a> <span class='varid'>canonicalizeContents</span>+<a name="line-362"></a>+<a name="line-363"></a><span class='comment'>-- |</span>+<a name="line-364"></a><span class='comment'>-- parse a string as XML content, substitute all predefined XML entity refs and canonicalize tree</span>+<a name="line-365"></a><span class='comment'>-- (substitute char refs, ...)</span>+<a name="line-366"></a>+<a name="line-367"></a><a name="xread"></a><span class='definition'>xread</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span>+<a name="line-368"></a><span class='definition'>xread</span>+<a name="line-369"></a> <span class='keyglyph'>=</span> <span class='varid'>parseXmlContent</span>+<a name="line-370"></a> <span class='varop'>>>></span>+<a name="line-371"></a> <span class='varid'>substXmlEntityRefs</span>+<a name="line-372"></a> <span class='varop'>>>></span>+<a name="line-373"></a> <span class='varid'>canonicalizeContents</span>+<a name="line-374"></a>+<a name="line-375"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-376"></a> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-Arrow-WriteDocument.html view
@@ -10,197 +10,208 @@ <a name="line-2"></a> <a name="line-3"></a><span class='comment'>{- | <a name="line-4"></a> Module : Text.XML.HXT.Arrow.WriteDocument-<a name="line-5"></a> Copyright : Copyright (C) 2005 Uwe Schmidt+<a name="line-5"></a> Copyright : Copyright (C) 2005-9 Uwe Schmidt <a name="line-6"></a> License : MIT <a name="line-7"></a> <a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de) <a name="line-9"></a> Stability : experimental <a name="line-10"></a> Portability: portable-<a name="line-11"></a> Version : $Id: WriteDocument.hs,v 1.8 2006/11/09 20:27:42 hxml Exp $-<a name="line-12"></a>-<a name="line-13"></a>Compound arrow for writing XML documents-<a name="line-14"></a>-<a name="line-15"></a>-}</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>WriteDocument</span>-<a name="line-20"></a> <span class='layout'>(</span> <span class='varid'>writeDocument</span>-<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>writeDocumentToString</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>prepareContents</span>-<a name="line-23"></a> <span class='layout'>)</span>-<a name="line-24"></a><span class='keyword'>where</span>-<a name="line-25"></a>-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span> <span class='comment'>-- arrow classes</span>-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>-<a name="line-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'>Interface</span>-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlIOStateArrow</span>-<a name="line-34"></a>-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>-<a name="line-36"></a> <span class='layout'>(</span> <span class='varid'>indentDoc</span>-<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>removeDocWhiteSpace</span>-<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>treeRepOfXmlDoc</span>-<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>haskellRepOfXmlDoc</span>-<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>escapeXmlDoc</span>-<a name="line-41"></a> <span class='layout'>,</span> <span class='varid'>escapeHtmlDoc</span>-<a name="line-42"></a> <span class='layout'>)</span>-<a name="line-43"></a>-<a name="line-44"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>DocumentOutput</span>-<a name="line-45"></a> <span class='layout'>(</span> <span class='varid'>putXmlDocument</span>-<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>encodeDocument</span>-<a name="line-47"></a> <span class='layout'>)</span>+<a name="line-11"></a>+<a name="line-12"></a> Compound arrow for writing XML documents+<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'>Arrow</span><span class='varop'>.</span><span class='conid'>WriteDocument</span>+<a name="line-19"></a> <span class='layout'>(</span> <span class='varid'>writeDocument</span>+<a name="line-20"></a> <span class='layout'>,</span> <span class='varid'>writeDocumentToString</span>+<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>prepareContents</span>+<a name="line-22"></a> <span class='layout'>)</span>+<a name="line-23"></a><span class='keyword'>where</span>+<a name="line-24"></a>+<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span> <span class='comment'>-- arrow classes</span>+<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>+<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>+<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>+<a name="line-29"></a>+<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>+<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>+<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlIOStateArrow</span>+<a name="line-33"></a>+<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span> <span class='layout'>(</span> <span class='varid'>escapeHtmlDoc</span>+<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>escapeXmlDoc</span>+<a name="line-36"></a> <span class='layout'>,</span> <span class='varid'>haskellRepOfXmlDoc</span>+<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>indentDoc</span>+<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>preventEmptyElements</span>+<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>removeDocWhiteSpace</span>+<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>treeRepOfXmlDoc</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'>Arrow</span><span class='varop'>.</span><span class='conid'>DocumentOutput</span> <span class='layout'>(</span> <span class='varid'>putXmlDocument</span>+<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>encodeDocument</span>+<a name="line-45"></a> <span class='layout'>)</span>+<a name="line-46"></a>+<a name="line-47"></a><span class='comment'>-- ------------------------------------------------------------</span> <a name="line-48"></a>-<a name="line-49"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-50"></a>-<a name="line-51"></a><span class='comment'>{- |-<a name="line-52"></a>the main filter for writing documents+<a name="line-49"></a><span class='comment'>{- |+<a name="line-50"></a>the main filter for writing documents+<a name="line-51"></a>+<a name="line-52"></a>this filter can be configured by an option list like 'Text.XML.HXT.Arrow.ReadDocument.readDocument' <a name="line-53"></a>-<a name="line-54"></a>this filter can be configured by an option list like 'Text.XML.HXT.Arrow.ReadDocument.readDocument'+<a name="line-54"></a>usage: @ writeDocument optionList destination @ <a name="line-55"></a>-<a name="line-56"></a>usage: @ writeDocument optionList destination @+<a name="line-56"></a>if @ destination @ is the empty string or \"-\", stdout is used as output device <a name="line-57"></a>-<a name="line-58"></a>if @ destination @ is the empty string or \"-\", stdout is used as output device+<a name="line-58"></a>available options are <a name="line-59"></a>-<a name="line-60"></a>available options are+<a name="line-60"></a>* 'a_indent' : indent document for readability, (default: no indentation) <a name="line-61"></a>-<a name="line-62"></a>* 'a_indent' : indent document for readability, (default: no indentation)+<a name="line-62"></a>- 'a_remove_whitespace' : remove all redundant whitespace for shorten text (default: no removal) <a name="line-63"></a>-<a name="line-64"></a>- 'a_remove_whitespace' : remove all redundant whitespace for shorten text (default: no removal)+<a name="line-64"></a>- 'a_output_encoding' : encoding of document, default is 'a_encoding' or 'utf8' <a name="line-65"></a>-<a name="line-66"></a>- 'a_output_encoding' : encoding of document, default is 'a_encoding' or 'utf8'-<a name="line-67"></a>-<a name="line-68"></a>- 'a_output_xml' : (default) issue XML: quote special XML chars \>,\<,\",\',& where neccessary-<a name="line-69"></a> add XML processing instruction-<a name="line-70"></a> and encode document with respect to 'a_output_encoding',-<a name="line-71"></a> if explicitly switched of, the plain text is issued, this is useful-<a name="line-72"></a> for non XML output, e.g. generated Haskell code, LaTex, Java, ...+<a name="line-66"></a>- 'a_output_xml' : (default) issue XML: quote special XML chars \>,\<,\",\',& where neccessary+<a name="line-67"></a> add XML processing instruction+<a name="line-68"></a> and encode document with respect to 'a_output_encoding',+<a name="line-69"></a> if explicitly switched of, the plain text is issued, this is useful+<a name="line-70"></a> for non XML output, e.g. generated Haskell code, LaTex, Java, ...+<a name="line-71"></a>+<a name="line-72"></a>- 'a_output_html' : issue XHTML: quote alle XML chars, use HTML entity refs or char refs for none ASCII chars <a name="line-73"></a>-<a name="line-74"></a>- 'a_output_html' : issue XHTML: quote alle XML chars, use HTML entity refs or char refs for none ASCII chars-<a name="line-75"></a>-<a name="line-76"></a>- 'a_no_xml_pi' : suppress generation of \<?xml ... ?\> processing instruction-<a name="line-77"></a>-<a name="line-78"></a>- 'a_show_tree' : show tree representation of document (for debugging)-<a name="line-79"></a>-<a name="line-80"></a>- 'a_show_haskell' : show Haskell representaion of document (for debugging)-<a name="line-81"></a>-<a name="line-82"></a> a minimal main program for copying a document-<a name="line-83"></a> has the following structure:+<a name="line-74"></a>- 'a_no_empty_elements' : do not write the short form \<name .../\> for empty elements. When 'a_output_html' is set,+<a name="line-75"></a> the always empty HTML elements are still written in short form, but not the others, as e.g. the script element.+<a name="line-76"></a> Empty script elements, like \<script href=\"...\"/\>, are always a problem for firefox and others.+<a name="line-77"></a> When XML output is generated with this option, all empty elements are written in the long form.+<a name="line-78"></a>+<a name="line-79"></a>- 'a_no_xml_pi' : suppress generation of \<?xml ... ?\> processing instruction+<a name="line-80"></a>+<a name="line-81"></a>- 'a_show_tree' : show tree representation of document (for debugging)+<a name="line-82"></a>+<a name="line-83"></a>- 'a_show_haskell' : show Haskell representaion of document (for debugging) <a name="line-84"></a>-<a name="line-85"></a>> module Main-<a name="line-86"></a>> where-<a name="line-87"></a>> -<a name="line-88"></a>> import Text.XML.HXT.Arrow-<a name="line-89"></a>> -<a name="line-90"></a>> main :: IO ()-<a name="line-91"></a>> main-<a name="line-92"></a>> = do-<a name="line-93"></a>> runX ( readDocument [] "hello.xml"-<a name="line-94"></a>> >>>-<a name="line-95"></a>> writeDocument [] "bye.xml"-<a name="line-96"></a>> )-<a name="line-97"></a>> return ()-<a name="line-98"></a>-<a name="line-99"></a>an example for copying a document to standard output with tracing and evaluation of-<a name="line-100"></a>error code is:+<a name="line-85"></a> a minimal main program for copying a document+<a name="line-86"></a> has the following structure:+<a name="line-87"></a>+<a name="line-88"></a>> module Main+<a name="line-89"></a>> where+<a name="line-90"></a>> +<a name="line-91"></a>> import Text.XML.HXT.Arrow+<a name="line-92"></a>> +<a name="line-93"></a>> main :: IO ()+<a name="line-94"></a>> main+<a name="line-95"></a>> = do+<a name="line-96"></a>> runX ( readDocument [] "hello.xml"+<a name="line-97"></a>> >>>+<a name="line-98"></a>> writeDocument [] "bye.xml"+<a name="line-99"></a>> )+<a name="line-100"></a>> return () <a name="line-101"></a>-<a name="line-102"></a>> module Main-<a name="line-103"></a>> where-<a name="line-104"></a>> -<a name="line-105"></a>> import Text.XML.HXT.Arrow-<a name="line-106"></a>> import System.Exit+<a name="line-102"></a>an example for copying a document to standard output with tracing and evaluation of+<a name="line-103"></a>error code is:+<a name="line-104"></a>+<a name="line-105"></a>> module Main+<a name="line-106"></a>> where <a name="line-107"></a>> -<a name="line-108"></a>> main :: IO ()-<a name="line-109"></a>> main-<a name="line-110"></a>> = do-<a name="line-111"></a>> [rc] <- runX ( readDocument [ (a_trace, "1")-<a name="line-112"></a>> ] "hello.xml"-<a name="line-113"></a>> >>>-<a name="line-114"></a>> writeDocument [ (a_output_encoding, isoLatin1)-<a name="line-115"></a>> ] "-" -- output to stdout+<a name="line-108"></a>> import Text.XML.HXT.Arrow+<a name="line-109"></a>> import System.Exit+<a name="line-110"></a>> +<a name="line-111"></a>> main :: IO ()+<a name="line-112"></a>> main+<a name="line-113"></a>> = do+<a name="line-114"></a>> [rc] <- runX ( readDocument [ (a_trace, "1")+<a name="line-115"></a>> ] "hello.xml" <a name="line-116"></a>> >>>-<a name="line-117"></a>> getErrStatus-<a name="line-118"></a>> )-<a name="line-119"></a>> exitWith ( if rc >= c_err-<a name="line-120"></a>> then ExitFailure 1-<a name="line-121"></a>> else ExitSuccess-<a name="line-122"></a>> )-<a name="line-123"></a>-}</span>-<a name="line-124"></a>-<a name="line-125"></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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-126"></a><span class='definition'>writeDocument</span> <span class='varid'>userOptions</span> <span class='varid'>dst</span>-<a name="line-127"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"writeDocument: destination is "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>dst</span><span class='layout'>)</span>-<a name="line-128"></a> <span class='varop'>>>></span>-<a name="line-129"></a> <span class='varid'>prepareContents</span> <span class='varid'>userOptions</span>-<a name="line-130"></a> <span class='varop'>>>></span>-<a name="line-131"></a> <span class='varid'>putXmlDocument</span> <span class='varid'>dst</span>-<a name="line-132"></a> <span class='varop'>>>></span>-<a name="line-133"></a> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"writeDocument: finished"</span>-<a name="line-134"></a> <span class='layout'>)</span>-<a name="line-135"></a> <span class='varop'>`when`</span>-<a name="line-136"></a> <span class='varid'>documentStatusOk</span>-<a name="line-137"></a>-<a name="line-138"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-139"></a>-<a name="line-140"></a><span class='comment'>-- |</span>-<a name="line-141"></a><span class='comment'>-- Convert a document into a string. Formating is done the same way</span>-<a name="line-142"></a><span class='comment'>-- and with the same options as in 'writeDocument'.</span>-<a name="line-143"></a>-<a name="line-144"></a><a name="writeDocumentToString"></a><span class='definition'>writeDocumentToString</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>String</span>-<a name="line-145"></a><span class='definition'>writeDocumentToString</span> <span class='varid'>userOptions</span>-<a name="line-146"></a> <span class='keyglyph'>=</span> <span class='varid'>prepareContents</span> <span class='varid'>userOptions</span>-<a name="line-147"></a> <span class='varop'>>>></span>-<a name="line-148"></a> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>-<a name="line-149"></a>-<a name="line-150"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-151"></a>-<a name="line-152"></a><span class='comment'>-- |</span>-<a name="line-153"></a><span class='comment'>-- indent and format output</span>+<a name="line-117"></a>> writeDocument [ (a_output_encoding, isoLatin1)+<a name="line-118"></a>> ] "-" -- output to stdout+<a name="line-119"></a>> >>>+<a name="line-120"></a>> getErrStatus+<a name="line-121"></a>> )+<a name="line-122"></a>> exitWith ( if rc >= c_err+<a name="line-123"></a>> then ExitFailure 1+<a name="line-124"></a>> else ExitSuccess+<a name="line-125"></a>> )+<a name="line-126"></a>-}</span>+<a name="line-127"></a>+<a name="line-128"></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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-129"></a><span class='definition'>writeDocument</span> <span class='varid'>userOptions</span> <span class='varid'>dst</span>+<a name="line-130"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='layout'>(</span><span class='str'>"writeDocument: destination is "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>dst</span><span class='layout'>)</span>+<a name="line-131"></a> <span class='varop'>>>></span>+<a name="line-132"></a> <span class='varid'>prepareContents</span> <span class='varid'>userOptions</span>+<a name="line-133"></a> <span class='varop'>>>></span>+<a name="line-134"></a> <span class='varid'>putXmlDocument</span> <span class='varid'>dst</span>+<a name="line-135"></a> <span class='varop'>>>></span>+<a name="line-136"></a> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='str'>"writeDocument: finished"</span>+<a name="line-137"></a> <span class='layout'>)</span>+<a name="line-138"></a> <span class='varop'>`when`</span>+<a name="line-139"></a> <span class='varid'>documentStatusOk</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><span class='comment'>-- |</span>+<a name="line-144"></a><span class='comment'>-- Convert a document into a string. Formating is done the same way</span>+<a name="line-145"></a><span class='comment'>-- and with the same options as in 'writeDocument'.</span>+<a name="line-146"></a>+<a name="line-147"></a><a name="writeDocumentToString"></a><span class='definition'>writeDocumentToString</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>String</span>+<a name="line-148"></a><span class='definition'>writeDocumentToString</span> <span class='varid'>userOptions</span>+<a name="line-149"></a> <span class='keyglyph'>=</span> <span class='varid'>prepareContents</span> <span class='varid'>userOptions</span>+<a name="line-150"></a> <span class='varop'>>>></span>+<a name="line-151"></a> <span class='varid'>xshow</span> <span class='varid'>getChildren</span>+<a name="line-152"></a>+<a name="line-153"></a><span class='comment'>-- ------------------------------------------------------------</span> <a name="line-154"></a>-<a name="line-155"></a><a name="prepareContents"></a><span class='definition'>prepareContents</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-156"></a><span class='definition'>prepareContents</span> <span class='varid'>userOptions</span>-<a name="line-157"></a> <span class='keyglyph'>=</span> <span class='varid'>indent</span>-<a name="line-158"></a> <span class='varop'>>>></span>-<a name="line-159"></a> <span class='varid'>format</span>-<a name="line-160"></a> <span class='keyword'>where</span>-<a name="line-161"></a> <span class='varid'>indent</span>-<a name="line-162"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_indent</span> <span class='keyglyph'>=</span> <span class='varid'>indentDoc</span> <span class='comment'>-- document indentation</span>-<a name="line-163"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_remove_whitespace</span> <span class='keyglyph'>=</span> <span class='varid'>removeDocWhiteSpace</span> <span class='comment'>-- remove all whitespace between tags</span>-<a name="line-164"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-165"></a>-<a name="line-166"></a> <span class='varid'>format</span>-<a name="line-167"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_show_tree</span> <span class='keyglyph'>=</span> <span class='varid'>treeRepOfXmlDoc</span>-<a name="line-168"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_show_haskell</span> <span class='keyglyph'>=</span> <span class='varid'>haskellRepOfXmlDoc</span>-<a name="line-169"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_output_html</span> <span class='keyglyph'>=</span> <span class='varid'>escapeHtmlDoc</span> <span class='comment'>-- escape al XML and HTML chars >= 128</span>-<a name="line-170"></a> <span class='varop'>>>></span>-<a name="line-171"></a> <span class='varid'>encodeDocument</span> <span class='comment'>-- convert doc into text with respect to output encoding with ASCII as default</span>-<a name="line-172"></a> <span class='varid'>suppressXmlPi</span> <span class='layout'>(</span> <span class='varid'>lookupDef</span> <span class='varid'>usAscii</span> <span class='varid'>a_output_encoding</span> <span class='varid'>options</span> <span class='layout'>)</span>-<a name="line-173"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_output_xml</span> <span class='keyglyph'>=</span> <span class='varid'>escapeXmlDoc</span> <span class='comment'>-- escape lt, gt, amp, quot, </span>-<a name="line-174"></a> <span class='varop'>>>></span>-<a name="line-175"></a> <span class='varid'>encodeDocument</span> <span class='comment'>-- convert doc into text with respect to output encoding</span>-<a name="line-176"></a> <span class='varid'>suppressXmlPi</span> <span class='layout'>(</span> <span class='varid'>lookupDef</span> <span class='str'>""</span> <span class='varid'>a_output_encoding</span> <span class='varid'>options</span> <span class='layout'>)</span>-<a name="line-177"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-178"></a>-<a name="line-179"></a> <span class='varid'>suppressXmlPi</span> <span class='comment'>-- remove <?xml ... ?> when set</span>-<a name="line-180"></a> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_no_xml_pi</span>-<a name="line-181"></a>-<a name="line-182"></a> <span class='varid'>hasOption</span> <span class='varid'>n</span>-<a name="line-183"></a> <span class='keyglyph'>=</span> <span class='varid'>optionIsSet</span> <span class='varid'>n</span> <span class='varid'>options</span>-<a name="line-184"></a>-<a name="line-185"></a> <span class='varid'>options</span> <span class='keyglyph'>=</span> <span class='varid'>addEntries</span> -<a name="line-186"></a> <span class='varid'>userOptions</span> -<a name="line-187"></a> <span class='keyglyph'>[</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-188"></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-189"></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-190"></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-191"></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-192"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_output_html</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-193"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_no_xml_pi</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>-<a name="line-194"></a> <span class='keyglyph'>]</span>-<a name="line-195"></a>-<a name="line-196"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-155"></a><span class='comment'>-- |</span>+<a name="line-156"></a><span class='comment'>-- indent and format output</span>+<a name="line-157"></a>+<a name="line-158"></a><a name="prepareContents"></a><span class='definition'>prepareContents</span> <span class='keyglyph'>::</span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-159"></a><span class='definition'>prepareContents</span> <span class='varid'>userOptions</span>+<a name="line-160"></a> <span class='keyglyph'>=</span> <span class='varid'>indent</span>+<a name="line-161"></a> <span class='varop'>>>></span>+<a name="line-162"></a> <span class='varid'>format</span>+<a name="line-163"></a> <span class='keyword'>where</span>+<a name="line-164"></a> <span class='varid'>formatEmptyElems</span>+<a name="line-165"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_no_empty_elements</span> <span class='keyglyph'>=</span> <span class='varid'>preventEmptyElements</span>+<a name="line-166"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='varid'>this</span>+<a name="line-167"></a> <span class='varid'>indent</span>+<a name="line-168"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_indent</span> <span class='keyglyph'>=</span> <span class='varid'>indentDoc</span> <span class='comment'>-- document indentation</span>+<a name="line-169"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_remove_whitespace</span> <span class='keyglyph'>=</span> <span class='varid'>removeDocWhiteSpace</span> <span class='comment'>-- remove all whitespace between tags</span>+<a name="line-170"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>+<a name="line-171"></a>+<a name="line-172"></a> <span class='varid'>format</span>+<a name="line-173"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_show_tree</span> <span class='keyglyph'>=</span> <span class='varid'>treeRepOfXmlDoc</span>+<a name="line-174"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_show_haskell</span> <span class='keyglyph'>=</span> <span class='varid'>haskellRepOfXmlDoc</span>+<a name="line-175"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_output_html</span> <span class='keyglyph'>=</span> <span class='varid'>formatEmptyElems</span> <span class='conid'>True</span>+<a name="line-176"></a> <span class='varop'>>>></span>+<a name="line-177"></a> <span class='varid'>escapeHtmlDoc</span> <span class='comment'>-- escape al XML and HTML chars >= 128</span>+<a name="line-178"></a> <span class='varop'>>>></span>+<a name="line-179"></a> <span class='varid'>encodeDocument</span> <span class='comment'>-- convert doc into text with respect to output encoding with ASCII as default</span>+<a name="line-180"></a> <span class='varid'>suppressXmlPi</span> <span class='layout'>(</span> <span class='varid'>lookupDef</span> <span class='varid'>usAscii</span> <span class='varid'>a_output_encoding</span> <span class='varid'>options</span> <span class='layout'>)</span>+<a name="line-181"></a> <span class='keyglyph'>|</span> <span class='varid'>hasOption</span> <span class='varid'>a_output_xml</span> <span class='keyglyph'>=</span> <span class='varid'>formatEmptyElems</span> <span class='conid'>False</span>+<a name="line-182"></a> <span class='varop'>>>></span>+<a name="line-183"></a> <span class='varid'>escapeXmlDoc</span> <span class='comment'>-- escape lt, gt, amp, quot, </span>+<a name="line-184"></a> <span class='varop'>>>></span>+<a name="line-185"></a> <span class='varid'>encodeDocument</span> <span class='comment'>-- convert doc into text with respect to output encoding</span>+<a name="line-186"></a> <span class='varid'>suppressXmlPi</span> <span class='layout'>(</span> <span class='varid'>lookupDef</span> <span class='str'>""</span> <span class='varid'>a_output_encoding</span> <span class='varid'>options</span> <span class='layout'>)</span>+<a name="line-187"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>+<a name="line-188"></a>+<a name="line-189"></a> <span class='varid'>suppressXmlPi</span> <span class='comment'>-- remove <?xml ... ?> when set</span>+<a name="line-190"></a> <span class='keyglyph'>=</span> <span class='varid'>hasOption</span> <span class='varid'>a_no_xml_pi</span>+<a name="line-191"></a>+<a name="line-192"></a> <span class='varid'>hasOption</span> <span class='varid'>n</span>+<a name="line-193"></a> <span class='keyglyph'>=</span> <span class='varid'>optionIsSet</span> <span class='varid'>n</span> <span class='varid'>options</span>+<a name="line-194"></a>+<a name="line-195"></a> <span class='varid'>options</span> <span class='keyglyph'>=</span> <span class='varid'>addEntries</span> +<a name="line-196"></a> <span class='varid'>userOptions</span> +<a name="line-197"></a> <span class='keyglyph'>[</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-198"></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-199"></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-200"></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-201"></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-202"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_output_html</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>+<a name="line-203"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_no_xml_pi</span><span class='layout'>,</span> <span class='varid'>v_0</span> <span class='layout'>)</span>+<a name="line-204"></a> <span class='layout'>,</span> <span class='layout'>(</span> <span class='varid'>a_no_empty_elements</span><span class='layout'>,</span> <span class='varid'>v_0</span> <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> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-Arrow-XPath.html view
@@ -91,7 +91,7 @@ <a name="line-83"></a> <a name="line-84"></a><span class='comment'>-- | Same as 'getXPathTreesInDoc' but with namespace environment for the XPath names</span> <a name="line-85"></a>-<a name="line-86"></a><a name="getXPathTreesInDocWithNsEnv"></a><span class='definition'>getXPathTreesInDocWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-86"></a><a name="getXPathTreesInDocWithNsEnv"></a><span class='definition'>getXPathTreesInDocWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</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='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <a name="line-87"></a><span class='definition'>getXPathTreesInDocWithNsEnv</span> <span class='varid'>env</span> <span class='varid'>query</span> <span class='keyglyph'>=</span> <span class='varid'>canonicalizeForXPath</span> <a name="line-88"></a> <span class='varop'>>>></span> <a name="line-89"></a> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='conid'>PT</span><span class='varop'>.</span><span class='varid'>getXPathSubTreesWithNsEnv</span> <span class='varid'>env</span> <span class='varid'>query</span><span class='layout'>)</span>@@ -114,7 +114,7 @@ <a name="line-106"></a> <a name="line-107"></a><span class='comment'>-- | Same as 'getXPathTrees' but with namespace environment for the XPath names</span> <a name="line-108"></a>-<a name="line-109"></a><a name="getXPathTreesWithNsEnv"></a><span class='definition'>getXPathTreesWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-109"></a><a name="getXPathTreesWithNsEnv"></a><span class='definition'>getXPathTreesWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</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='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <a name="line-110"></a><span class='definition'>getXPathTreesWithNsEnv</span> <span class='varid'>env</span> <span class='varid'>query</span> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='conid'>PT</span><span class='varop'>.</span><span class='varid'>getXPathSubTreesWithNsEnv</span> <span class='varid'>env</span> <span class='varid'>query</span><span class='layout'>)</span> <a name="line-111"></a> <a name="line-112"></a><span class='comment'>-- | Select a set of nodes via an XPath expression from an arbitray XML tree</span>@@ -130,7 +130,7 @@ <a name="line-122"></a> <a name="line-123"></a><span class='comment'>-- | Same as 'getXPathNodeSet' but with namespace environment for the XPath names</span> <a name="line-124"></a>-<a name="line-125"></a><a name="getXPathNodeSetWithNsEnv"></a><span class='definition'>getXPathNodeSetWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlNodeSet</span>+<a name="line-125"></a><a name="getXPathNodeSetWithNsEnv"></a><span class='definition'>getXPathNodeSetWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</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='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlNodeSet</span> <a name="line-126"></a><span class='definition'>getXPathNodeSetWithNsEnv</span> <span class='varid'>nsEnv</span> <span class='varid'>query</span> <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='conid'>PT</span><span class='varop'>.</span><span class='varid'>getXPathNodeSetWithNsEnv</span> <span class='varid'>nsEnv</span> <span class='varid'>query</span><span class='layout'>)</span> <a name="line-127"></a> <a name="line-128"></a><span class='comment'>-- ------------------------------------------------------------</span>@@ -234,7 +234,7 @@ <a name="line-226"></a> <a name="line-227"></a><span class='comment'>-- | Same as 'processXPathTrees' but with namespace environment for the XPath names</span> <a name="line-228"></a>-<a name="line-229"></a><a name="processXPathTreesWithNsEnv"></a><span class='definition'>processXPathTreesWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-229"></a><a name="processXPathTreesWithNsEnv"></a><span class='definition'>processXPathTreesWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</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='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <a name="line-230"></a><span class='definition'>processXPathTreesWithNsEnv</span> <span class='varid'>f</span> <span class='varid'>nsEnv</span> <span class='varid'>query</span> <a name="line-231"></a> <span class='keyglyph'>=</span> <span class='varid'>choiceA</span> <a name="line-232"></a> <span class='keyglyph'>[</span> <span class='varid'>isRoot</span> <span class='conop'>:-></span> <span class='varid'>processChildren</span> <span class='varid'>pns</span>
doc/hdoc/src/Text-XML-HXT-Arrow-XPathSimple.html view
@@ -50,472 +50,468 @@ <a name="line-42"></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'>Arrow</span><span class='varop'>.</span><span class='conid'>XPathSimple</span> <a name="line-43"></a><span class='keyword'>where</span> <a name="line-44"></a>-<a name="line-45"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span>-<a name="line-46"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrows</span>-<a name="line-47"></a>-<a name="line-48"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-45"></a><span class='comment'>-- import qualified Debug.Trace as T</span>+<a name="line-46"></a>+<a name="line-47"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span>+<a name="line-48"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrows</span> <a name="line-49"></a>-<a name="line-50"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span>-<a name="line-51"></a> <span class='layout'>(</span> <span class='varid'>runParser</span> <span class='layout'>)</span>-<a name="line-52"></a>-<a name="line-53"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>-<a name="line-54"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>-<a name="line-55"></a>-<a name="line-56"></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'>Arrow</span><span class='varop'>.</span><span class='conid'>XPath</span> <span class='keyword'>as</span> <span class='conid'>XP</span>-<a name="line-57"></a> <span class='layout'>(</span> <span class='varid'>getXPathTreesWithNsEnv</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'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>-<a name="line-61"></a> <span class='layout'>(</span> <span class='varid'>canonicalizeForXPath</span>-<a name="line-62"></a> <span class='layout'>)</span>-<a name="line-63"></a>-<a name="line-64"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathDataTypes</span>-<a name="line-65"></a> <span class='layout'>(</span> <span class='conid'>XPNumber</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-66"></a> <span class='layout'>,</span> <span class='conid'>Expr</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-67"></a> <span class='layout'>,</span> <span class='conid'>Op</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-68"></a> <span class='layout'>,</span> <span class='conid'>XPathNode</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-69"></a> <span class='layout'>,</span> <span class='conid'>LocationPath</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-70"></a> <span class='layout'>,</span> <span class='conid'>Path</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-71"></a> <span class='layout'>,</span> <span class='conid'>XStep</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-72"></a> <span class='layout'>,</span> <span class='conid'>AxisSpec</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-73"></a> <span class='layout'>,</span> <span class='conid'>NodeTest</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-74"></a> <span class='layout'>,</span> <span class='conid'>XPathValue</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-75"></a> <span class='layout'>)</span>+<a name="line-50"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-51"></a>+<a name="line-52"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span> <span class='layout'>(</span> <span class='varid'>runParser</span> <span class='layout'>)</span>+<a name="line-53"></a>+<a name="line-54"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>+<a name="line-55"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>+<a name="line-56"></a>+<a name="line-57"></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'>Arrow</span><span class='varop'>.</span><span class='conid'>XPath</span> <span class='keyword'>as</span> <span class='conid'>XP</span> <span class='layout'>(</span> <span class='varid'>getXPathTreesWithNsEnv</span>+<a name="line-58"></a> <span class='layout'>)</span>+<a name="line-59"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span> <span class='layout'>(</span> <span class='varid'>canonicalizeForXPath</span>+<a name="line-60"></a> <span class='layout'>)</span>+<a name="line-61"></a>+<a name="line-62"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathDataTypes</span> <span class='layout'>(</span> <span class='conid'>XPNumber</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-63"></a> <span class='layout'>,</span> <span class='conid'>Expr</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-64"></a> <span class='layout'>,</span> <span class='conid'>Op</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-65"></a> <span class='layout'>,</span> <span class='conid'>XPathNode</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-66"></a> <span class='layout'>,</span> <span class='conid'>LocationPath</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-67"></a> <span class='layout'>,</span> <span class='conid'>Path</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-68"></a> <span class='layout'>,</span> <span class='conid'>XStep</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-69"></a> <span class='layout'>,</span> <span class='conid'>AxisSpec</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-70"></a> <span class='layout'>,</span> <span class='conid'>NodeTest</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-71"></a> <span class='layout'>,</span> <span class='conid'>XPathValue</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-72"></a> <span class='layout'>)</span>+<a name="line-73"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathParser</span> <span class='layout'>(</span> <span class='varid'>parseXPath</span>+<a name="line-74"></a> <span class='layout'>,</span> <span class='varid'>parseNumber</span>+<a name="line-75"></a> <span class='layout'>)</span> <a name="line-76"></a>-<a name="line-77"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathParser</span>-<a name="line-78"></a> <span class='layout'>(</span> <span class='varid'>parseXPath</span>-<a name="line-79"></a> <span class='layout'>,</span> <span class='varid'>parseNumber</span>-<a name="line-80"></a> <span class='layout'>)</span>+<a name="line-77"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-78"></a>+<a name="line-79"></a><span class='comment'>-- |</span>+<a name="line-80"></a><span class='comment'>-- Same Functionality as 'Text.XML.HXT.Arrow.XPath.getXPathTreesInDoc'</span> <a name="line-81"></a>-<a name="line-82"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-83"></a>-<a name="line-84"></a><span class='comment'>-- |</span>-<a name="line-85"></a><span class='comment'>-- Same Functionality as 'Text.XML.HXT.Arrow.XPath.getXPathTreesInDoc'</span>-<a name="line-86"></a>-<a name="line-87"></a><a name="getXPathTreesInDoc"></a><span class='definition'>getXPathTreesInDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-88"></a><span class='definition'>getXPathTreesInDoc</span> <span class='keyglyph'>=</span> <span class='varid'>getXPathTreesInDocWithNsEnv</span> <span class='conid'>[]</span>-<a name="line-89"></a>-<a name="line-90"></a><span class='comment'>-- |</span>-<a name="line-91"></a><span class='comment'>-- Same Functionality as 'Text.XML.HXT.Arrow.XPath.getXPathTreesInDocWithNsEnv'</span>-<a name="line-92"></a>-<a name="line-93"></a><a name="getXPathTreesInDocWithNsEnv"></a><span class='definition'>getXPathTreesInDocWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-94"></a><span class='definition'>getXPathTreesInDocWithNsEnv</span> <span class='varid'>env</span> <span class='varid'>query</span> <span class='keyglyph'>=</span> <span class='varid'>canonicalizeForXPath</span>-<a name="line-95"></a> <span class='varop'>>>></span>-<a name="line-96"></a> <span class='varid'>tryGetXPath</span> <span class='varid'>env</span> <span class='varid'>query</span>-<a name="line-97"></a><span class='comment'>-- |</span>-<a name="line-98"></a><span class='comment'>-- Same Functionality as 'Text.XML.HXT.Arrow.XPath.getXPathTrees'</span>-<a name="line-99"></a>-<a name="line-100"></a><a name="getXPathTrees"></a><span class='definition'>getXPathTrees</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-101"></a><span class='definition'>getXPathTrees</span> <span class='keyglyph'>=</span> <span class='varid'>getXPathTreesWithNsEnv</span> <span class='conid'>[]</span>-<a name="line-102"></a>-<a name="line-103"></a><span class='comment'>-- |</span>-<a name="line-104"></a><span class='comment'>-- Same Functionality as 'Text.XML.HXT.Arrow.XPath.getXPathTreesWithNsEnv'</span>-<a name="line-105"></a>-<a name="line-106"></a><a name="getXPathTreesWithNsEnv"></a><span class='definition'>getXPathTreesWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-107"></a><span class='definition'>getXPathTreesWithNsEnv</span> <span class='keyglyph'>=</span> <span class='varid'>tryGetXPath</span>-<a name="line-108"></a>-<a name="line-109"></a>-<a name="line-110"></a><a name="tryGetXPath"></a><span class='definition'>tryGetXPath</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-111"></a><span class='definition'>tryGetXPath</span> <span class='varid'>env</span> <span class='varid'>query</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>listA</span> <span class='layout'>(</span><span class='varid'>getXPathTreesWithNsEnvSimple</span> <span class='varid'>env</span> <span class='varid'>query</span><span class='layout'>)</span>-<a name="line-112"></a> <span class='varop'>&&&</span>-<a name="line-113"></a> <span class='varid'>listA</span> <span class='layout'>(</span> <span class='conid'>XP</span><span class='varop'>.</span><span class='varid'>getXPathTreesWithNsEnv</span> <span class='varid'>env</span> <span class='varid'>query</span><span class='layout'>)</span>-<a name="line-114"></a> <span class='layout'>)</span>-<a name="line-115"></a> <span class='varop'>>>></span>-<a name="line-116"></a> <span class='varid'>ifA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>fst</span> <span class='varop'>>>></span> <span class='layout'>(</span><span class='varid'>unlistA</span> <span class='varop'>>>.</span> <span class='varid'>take</span> <span class='num'>1</span><span class='layout'>)</span> <span class='varop'>>>></span> <span class='varid'>isError</span><span class='layout'>)</span>-<a name="line-117"></a> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>snd</span> <span class='varop'>>>></span> <span class='varid'>unlistA</span><span class='layout'>)</span>-<a name="line-118"></a> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>fst</span> <span class='varop'>>>></span> <span class='varid'>unlistA</span><span class='layout'>)</span>-<a name="line-119"></a>-<a name="line-120"></a><span class='comment'>-- |</span>-<a name="line-121"></a><span class='comment'>-- The xpath interpreter for simple xpath expressions.</span>-<a name="line-122"></a><span class='comment'>--</span>-<a name="line-123"></a><span class='comment'>-- In case of a too complicated or illegal xpath expression an error</span>-<a name="line-124"></a><span class='comment'>-- node is returned, else the list of selected XML trees</span>+<a name="line-82"></a><a name="getXPathTreesInDoc"></a><span class='definition'>getXPathTreesInDoc</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-83"></a><span class='definition'>getXPathTreesInDoc</span> <span class='keyglyph'>=</span> <span class='varid'>getXPathTreesInDocWithNsEnv</span> <span class='conid'>[]</span>+<a name="line-84"></a>+<a name="line-85"></a><span class='comment'>-- |</span>+<a name="line-86"></a><span class='comment'>-- Same Functionality as 'Text.XML.HXT.Arrow.XPath.getXPathTreesInDocWithNsEnv'</span>+<a name="line-87"></a>+<a name="line-88"></a><a name="getXPathTreesInDocWithNsEnv"></a><span class='definition'>getXPathTreesInDocWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</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='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-89"></a><span class='definition'>getXPathTreesInDocWithNsEnv</span> <span class='varid'>env</span> <span class='varid'>query</span> <span class='keyglyph'>=</span> <span class='varid'>canonicalizeForXPath</span>+<a name="line-90"></a> <span class='varop'>>>></span>+<a name="line-91"></a> <span class='varid'>tryGetXPath</span> <span class='varid'>env</span> <span class='varid'>query</span>+<a name="line-92"></a><span class='comment'>-- |</span>+<a name="line-93"></a><span class='comment'>-- Same Functionality as 'Text.XML.HXT.Arrow.XPath.getXPathTrees'</span>+<a name="line-94"></a>+<a name="line-95"></a><a name="getXPathTrees"></a><span class='definition'>getXPathTrees</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-96"></a><span class='definition'>getXPathTrees</span> <span class='keyglyph'>=</span> <span class='varid'>getXPathTreesWithNsEnv</span> <span class='conid'>[]</span>+<a name="line-97"></a>+<a name="line-98"></a><span class='comment'>-- |</span>+<a name="line-99"></a><span class='comment'>-- Same Functionality as 'Text.XML.HXT.Arrow.XPath.getXPathTreesWithNsEnv'</span>+<a name="line-100"></a>+<a name="line-101"></a><a name="getXPathTreesWithNsEnv"></a><span class='definition'>getXPathTreesWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</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='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-102"></a><span class='definition'>getXPathTreesWithNsEnv</span> <span class='keyglyph'>=</span> <span class='varid'>tryGetXPath</span>+<a name="line-103"></a>+<a name="line-104"></a>+<a name="line-105"></a><a name="tryGetXPath"></a><span class='definition'>tryGetXPath</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</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='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-106"></a><span class='definition'>tryGetXPath</span> <span class='varid'>env</span> <span class='varid'>query</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>listA</span> <span class='layout'>(</span><span class='varid'>getXPathTreesWithNsEnvSimple</span> <span class='varid'>env</span> <span class='varid'>query</span><span class='layout'>)</span>+<a name="line-107"></a> <span class='varop'>&&&</span>+<a name="line-108"></a> <span class='varid'>listA</span> <span class='layout'>(</span> <span class='conid'>XP</span><span class='varop'>.</span><span class='varid'>getXPathTreesWithNsEnv</span> <span class='varid'>env</span> <span class='varid'>query</span><span class='layout'>)</span>+<a name="line-109"></a> <span class='layout'>)</span>+<a name="line-110"></a> <span class='varop'>>>></span>+<a name="line-111"></a> <span class='varid'>ifA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>fst</span> <span class='varop'>>>></span> <span class='layout'>(</span><span class='varid'>unlistA</span> <span class='varop'>>>.</span> <span class='varid'>take</span> <span class='num'>1</span><span class='layout'>)</span> <span class='varop'>>>></span> <span class='varid'>isError</span><span class='layout'>)</span>+<a name="line-112"></a> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>snd</span> <span class='varop'>>>></span> <span class='varid'>unlistA</span><span class='layout'>)</span>+<a name="line-113"></a> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>fst</span> <span class='varop'>>>></span> <span class='varid'>unlistA</span><span class='layout'>)</span>+<a name="line-114"></a>+<a name="line-115"></a><span class='comment'>-- |</span>+<a name="line-116"></a><span class='comment'>-- The xpath interpreter for simple xpath expressions.</span>+<a name="line-117"></a><span class='comment'>--</span>+<a name="line-118"></a><span class='comment'>-- In case of a too complicated or illegal xpath expression an error</span>+<a name="line-119"></a><span class='comment'>-- node is returned, else the list of selected XML trees</span>+<a name="line-120"></a>+<a name="line-121"></a><a name="getXPathTreesWithNsEnvSimple"></a><span class='definition'>getXPathTreesWithNsEnvSimple</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</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='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-122"></a><span class='definition'>getXPathTreesWithNsEnvSimple</span> <span class='varid'>env</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>getXP</span> <span class='layout'>(</span><span class='varid'>toNsEnv</span> <span class='varid'>env</span><span class='layout'>)</span> <span class='varid'>s</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><a name="getXPathTreesWithNsEnvSimple"></a><span class='definition'>getXPathTreesWithNsEnvSimple</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-127"></a><span class='definition'>getXPathTreesWithNsEnvSimple</span> <span class='varid'>env</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>fromLA</span> <span class='varop'>$</span> <span class='varid'>getXP</span> <span class='varid'>env</span> <span class='varid'>s</span>-<a name="line-128"></a>-<a name="line-129"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-130"></a>-<a name="line-131"></a><a name="getXP"></a><span class='definition'>getXP</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-132"></a><span class='definition'>getXP</span> <span class='varid'>env</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>err</span>-<a name="line-133"></a> <span class='varop'>.</span>-<a name="line-134"></a> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"Syntax error in XPath expression "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>s</span> <span class='varop'>++</span> <span class='str'>": "</span><span class='layout'>)</span> <span class='varop'>++</span><span class='layout'>)</span>-<a name="line-135"></a> <span class='varop'>.</span>-<a name="line-136"></a> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>show</span>-<a name="line-137"></a> <span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='varid'>err</span> <span class='layout'>(</span> <span class='str'>"XPath expression "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>s</span> <span class='varop'>++</span>-<a name="line-138"></a> <span class='str'>" too complicated for simple arrow evaluation"</span>-<a name="line-139"></a> <span class='layout'>)</span>-<a name="line-140"></a> <span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>compXPath</span>-<a name="line-141"></a> <span class='layout'>)</span>-<a name="line-142"></a> <span class='varop'>.</span>-<a name="line-143"></a> <span class='varid'>runParser</span> <span class='varid'>parseXPath</span> <span class='varid'>env</span> <span class='str'>""</span>-<a name="line-144"></a> <span class='varop'>$</span> <span class='varid'>s</span>+<a name="line-126"></a><a name="getXP"></a><span class='definition'>getXP</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-127"></a><span class='definition'>getXP</span> <span class='varid'>env</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span> <span class='varid'>err</span>+<a name="line-128"></a> <span class='varop'>.</span>+<a name="line-129"></a> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"Syntax error in XPath expression "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>s</span> <span class='varop'>++</span> <span class='str'>": "</span><span class='layout'>)</span> <span class='varop'>++</span><span class='layout'>)</span>+<a name="line-130"></a> <span class='varop'>.</span>+<a name="line-131"></a> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>show</span>+<a name="line-132"></a> <span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='varid'>err</span> <span class='layout'>(</span> <span class='str'>"XPath expression "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>s</span> <span class='varop'>++</span>+<a name="line-133"></a> <span class='str'>" too complicated for simple arrow evaluation"</span>+<a name="line-134"></a> <span class='layout'>)</span>+<a name="line-135"></a> <span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>compXPath</span>+<a name="line-136"></a> <span class='layout'>)</span>+<a name="line-137"></a> <span class='comment'>-- . ( \ e -> T.trace (("getXP: xp = "++) . show $ e) e)</span>+<a name="line-138"></a> <span class='varop'>.</span>+<a name="line-139"></a> <span class='varid'>runParser</span> <span class='varid'>parseXPath</span> <span class='varid'>env</span> <span class='str'>""</span>+<a name="line-140"></a> <span class='varop'>$</span> <span class='varid'>s</span>+<a name="line-141"></a>+<a name="line-142"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-143"></a>+<a name="line-144"></a><a name="XPArrow"></a><span class='keyword'>type</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='conid'>Maybe</span> <span class='layout'>(</span><span class='conid'>LA</span> <span class='varid'>b</span> <span class='varid'>c</span><span class='layout'>)</span> <a name="line-145"></a>-<a name="line-146"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-147"></a>-<a name="line-148"></a><a name="XPArrow"></a><span class='keyword'>type</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='conid'>Maybe</span> <span class='layout'>(</span><span class='conid'>LA</span> <span class='varid'>b</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-149"></a>-<a name="line-150"></a><a name="mk"></a><span class='definition'>mk</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>c</span>-<a name="line-151"></a><span class='definition'>mk</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span>-<a name="line-152"></a>-<a name="line-153"></a><a name="unwrap"></a><span class='definition'>unwrap</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-154"></a><span class='definition'>unwrap</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='varid'>toThis</span>-<a name="line-155"></a>-<a name="line-156"></a><a name=">>>>"></a><span class='layout'>(</span><span class='varop'>>>>></span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-157"></a><span class='conid'>Nothing</span> <span class='varop'>>>>></span> <span class='varid'>a2</span> <span class='keyglyph'>=</span> <span class='varid'>a2</span>-<a name="line-158"></a><a name="a1"></a><span class='definition'>a1</span> <span class='varop'>>>>></span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>a1</span>-<a name="line-159"></a><span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f1</span><span class='layout'>)</span> <span class='varop'>>>>></span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>f1</span> <span class='varop'>>>></span> <span class='varid'>f2</span>-<a name="line-160"></a>-<a name="line-161"></a><a name="&&&&"></a><span class='layout'>(</span><span class='varop'>&&&&</span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span>-<a name="line-162"></a><span class='conid'>Nothing</span> <span class='varop'>&&&&</span> <span class='varid'>a2</span> <span class='keyglyph'>=</span> <span class='varid'>this''</span> <span class='varop'>&&&&</span> <span class='varid'>a2</span>-<a name="line-163"></a><span class='definition'>a1</span> <span class='varop'>&&&&</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>a1</span> <span class='varop'>&&&&</span> <span class='varid'>this''</span>-<a name="line-164"></a><span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f1</span><span class='layout'>)</span> <span class='varop'>&&&&</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>f1</span> <span class='varop'>&&&</span> <span class='varid'>f2</span>-<a name="line-165"></a>-<a name="line-166"></a><a name="<+>>"></a><span class='layout'>(</span><span class='varop'><+>></span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-167"></a><span class='conid'>Nothing</span> <span class='varop'><+>></span> <span class='sel'>_a2</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>-<a name="line-168"></a><span class='sel'>_a1</span> <span class='varop'><+>></span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>-<a name="line-169"></a><span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f1</span><span class='layout'>)</span> <span class='varop'><+>></span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>f1</span> <span class='varop'><+></span> <span class='varid'>f2</span>-<a name="line-170"></a>-<a name="line-171"></a><a name="guards'"></a><span class='definition'>guards'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-172"></a><span class='conid'>Nothing</span> <span class='varop'>`guards'`</span> <span class='varid'>a2</span> <span class='keyglyph'>=</span> <span class='varid'>a2</span>-<a name="line-173"></a><a name="guards'"></a><span class='definition'>a1</span> <span class='varop'>`guards'`</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>a1</span> <span class='varop'>`guards'`</span> <span class='varid'>this''</span>-<a name="line-174"></a><a name="guards'"></a><span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f1</span><span class='layout'>)</span> <span class='varop'>`guards'`</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>f1</span> <span class='varop'>`guards`</span> <span class='varid'>f2</span>-<a name="line-175"></a>-<a name="line-176"></a><a name="this'"></a><span class='definition'>this'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-177"></a><span class='definition'>this'</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>-<a name="line-178"></a>-<a name="line-179"></a><a name="this''"></a><span class='definition'>this''</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-180"></a><span class='definition'>this''</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='varid'>this</span>+<a name="line-146"></a><a name="mk"></a><span class='definition'>mk</span> <span class='keyglyph'>::</span> <span class='conid'>LA</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>c</span>+<a name="line-147"></a><span class='definition'>mk</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span>+<a name="line-148"></a>+<a name="line-149"></a><a name="unwrap"></a><span class='definition'>unwrap</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-150"></a><span class='definition'>unwrap</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='varid'>toThis</span>+<a name="line-151"></a>+<a name="line-152"></a><a name=">>>>"></a><span class='layout'>(</span><span class='varop'>>>>></span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-153"></a><span class='conid'>Nothing</span> <span class='varop'>>>>></span> <span class='varid'>a2</span> <span class='keyglyph'>=</span> <span class='varid'>a2</span>+<a name="line-154"></a><a name="a1"></a><span class='definition'>a1</span> <span class='varop'>>>>></span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>a1</span>+<a name="line-155"></a><span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f1</span><span class='layout'>)</span> <span class='varop'>>>>></span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>f1</span> <span class='varop'>>>></span> <span class='varid'>f2</span>+<a name="line-156"></a>+<a name="line-157"></a><a name="&&&&"></a><span class='layout'>(</span><span class='varop'>&&&&</span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='layout'>(</span><span class='varid'>b</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span>+<a name="line-158"></a><span class='conid'>Nothing</span> <span class='varop'>&&&&</span> <span class='varid'>a2</span> <span class='keyglyph'>=</span> <span class='varid'>this''</span> <span class='varop'>&&&&</span> <span class='varid'>a2</span>+<a name="line-159"></a><span class='definition'>a1</span> <span class='varop'>&&&&</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>a1</span> <span class='varop'>&&&&</span> <span class='varid'>this''</span>+<a name="line-160"></a><span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f1</span><span class='layout'>)</span> <span class='varop'>&&&&</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>f1</span> <span class='varop'>&&&</span> <span class='varid'>f2</span>+<a name="line-161"></a>+<a name="line-162"></a><a name="<+>>"></a><span class='layout'>(</span><span class='varop'><+>></span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-163"></a><span class='conid'>Nothing</span> <span class='varop'><+>></span> <span class='sel'>_a2</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>+<a name="line-164"></a><span class='sel'>_a1</span> <span class='varop'><+>></span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>+<a name="line-165"></a><span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f1</span><span class='layout'>)</span> <span class='varop'><+>></span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>f1</span> <span class='varop'><+></span> <span class='varid'>f2</span>+<a name="line-166"></a>+<a name="line-167"></a><a name="guards'"></a><span class='definition'>guards'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-168"></a><span class='conid'>Nothing</span> <span class='varop'>`guards'`</span> <span class='varid'>a2</span> <span class='keyglyph'>=</span> <span class='varid'>a2</span>+<a name="line-169"></a><a name="guards'"></a><span class='definition'>a1</span> <span class='varop'>`guards'`</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>a1</span> <span class='varop'>`guards'`</span> <span class='varid'>this''</span>+<a name="line-170"></a><a name="guards'"></a><span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f1</span><span class='layout'>)</span> <span class='varop'>`guards'`</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>f2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>f1</span> <span class='varop'>`guards`</span> <span class='varid'>f2</span>+<a name="line-171"></a>+<a name="line-172"></a><a name="this'"></a><span class='definition'>this'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-173"></a><span class='definition'>this'</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>+<a name="line-174"></a>+<a name="line-175"></a><a name="this''"></a><span class='definition'>this''</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-176"></a><span class='definition'>this''</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='varid'>this</span>+<a name="line-177"></a>+<a name="line-178"></a><a name="toThis"></a><span class='definition'>toThis</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-179"></a><span class='definition'>toThis</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>this''</span>+<a name="line-180"></a><span class='definition'>toThis</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>a</span> <a name="line-181"></a>-<a name="line-182"></a><a name="toThis"></a><span class='definition'>toThis</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-183"></a><span class='definition'>toThis</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>this''</span>-<a name="line-184"></a><span class='definition'>toThis</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>a</span>-<a name="line-185"></a>-<a name="line-186"></a><a name="getChildren'"></a><span class='definition'>getChildren'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-187"></a><span class='definition'>getChildren'</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='varid'>getChildren</span> <span class='varop'>>>>></span> <span class='varid'>a</span>-<a name="line-188"></a>-<a name="line-189"></a><a name="getAttrl'"></a><span class='definition'>getAttrl'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-190"></a><span class='definition'>getAttrl'</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='varid'>getAttrl</span> <span class='varop'>>>>></span> <span class='varid'>a</span>-<a name="line-191"></a>-<a name="line-192"></a><a name="multi'"></a><span class='definition'>multi'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-193"></a><span class='definition'>multi'</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='varop'>$</span> <span class='varid'>multi</span> <span class='layout'>(</span><span class='varid'>unwrap</span> <span class='varid'>a</span><span class='layout'>)</span>-<a name="line-194"></a>-<a name="line-195"></a><a name="deep'"></a><span class='definition'>deep'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-196"></a><span class='definition'>deep'</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='varop'>$</span> <span class='varid'>deep</span> <span class='layout'>(</span><span class='varid'>unwrap</span> <span class='varid'>a</span><span class='layout'>)</span>-<a name="line-197"></a>-<a name="line-198"></a><a name="xIndex"></a><span class='definition'>xIndex</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span> <span class='varid'>b</span>-<a name="line-199"></a><span class='definition'>xIndex</span> <span class='varid'>i</span>-<a name="line-200"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='varid'>none</span>-<a name="line-201"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>take</span> <span class='num'>1</span> <span class='varop'>.</span> <span class='varid'>drop</span> <span class='layout'>(</span><span class='varid'>i</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-202"></a>-<a name="line-203"></a><a name="xString"></a><span class='definition'>xString</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>String</span>-<a name="line-204"></a><span class='definition'>xString</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>unwrap</span> <span class='varid'>a</span> <span class='varop'>>>></span> <span class='varid'>xshow</span> <span class='layout'>(</span><span class='varid'>deep</span> <span class='varid'>isText</span><span class='layout'>)</span>-<a name="line-205"></a>-<a name="line-206"></a><a name="xNumber'"></a><span class='definition'>xNumber'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XPNumber</span>-<a name="line-207"></a><span class='definition'>xNumber'</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>xString</span> <span class='varid'>a</span> <span class='varop'>>>></span> <span class='varid'>arr</span> <span class='varid'>toNumber</span>-<a name="line-208"></a>-<a name="line-209"></a><span class='comment'>-- ------------------------------</span>-<a name="line-210"></a>-<a name="line-211"></a><a name="deadEndStreet"></a><span class='definition'>deadEndStreet</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='varid'>m</span> <span class='varid'>a</span>-<a name="line-212"></a><span class='definition'>deadEndStreet</span> <span class='keyglyph'>=</span> <span class='varid'>fail</span> <span class='str'>"XPath expression too complicated for XmlArrows"</span>-<a name="line-213"></a>-<a name="line-214"></a><a name="compXPath"></a><span class='definition'>compXPath</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-215"></a><span class='definition'>compXPath</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-216"></a> <span class='varid'>r</span> <span class='keyglyph'><-</span> <span class='varid'>compXP</span> <span class='varid'>e</span>-<a name="line-217"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>unwrap</span> <span class='varid'>r</span>-<a name="line-218"></a>-<a name="line-219"></a><a name="compXP"></a><span class='definition'>compXP</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-220"></a><span class='definition'>compXP</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Abs</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-221"></a> <span class='keyglyph'>=</span> <span class='varid'>compLP</span> <span class='varid'>lp</span> <span class='varid'>this'</span>-<a name="line-222"></a><span class='definition'>compXP</span> <span class='layout'>(</span><span class='conid'>FilterExpr</span> <span class='layout'>(</span><span class='varid'>e1</span><span class='conop'>:</span><span class='varid'>el</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-223"></a> <span class='varid'>r</span> <span class='keyglyph'><-</span> <span class='varid'>compXP</span> <span class='varid'>e1</span>-<a name="line-224"></a> <span class='varid'>compFP</span> <span class='varid'>el</span> <span class='varid'>r</span>-<a name="line-225"></a><span class='definition'>compXP</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>-<a name="line-226"></a>-<a name="line-227"></a><a name="compFP"></a><span class='definition'>compFP</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-228"></a><span class='definition'>compFP</span> <span class='conid'>[]</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>r</span>-<a name="line-229"></a><span class='definition'>compFP</span> <span class='layout'>(</span><span class='varid'>e1</span><span class='conop'>:</span><span class='varid'>es</span><span class='layout'>)</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-230"></a> <span class='varid'>r1</span> <span class='keyglyph'><-</span> <span class='varid'>compPred</span> <span class='keyglyph'>[</span><span class='varid'>e1</span><span class='keyglyph'>]</span> <span class='varid'>r</span>-<a name="line-231"></a> <span class='varid'>compFP</span> <span class='varid'>es</span> <span class='varid'>r1</span>-<a name="line-232"></a>-<a name="line-233"></a><a name="compLP"></a><span class='definition'>compLP</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='keyglyph'>[</span><span class='conid'>XStep</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-234"></a><span class='definition'>compLP</span> <span class='conid'>[]</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>r</span>-<a name="line-235"></a><span class='definition'>compLP</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='varid'>r</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-236"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compXS</span> <span class='varid'>x</span> <span class='varid'>r</span>-<a name="line-237"></a> <span class='keyword'>as</span> <span class='keyglyph'><-</span> <span class='varid'>compLP</span> <span class='varid'>xs</span> <span class='varid'>a1</span>-<a name="line-238"></a> <span class='varid'>return</span> <span class='keyword'>as</span>-<a name="line-239"></a>-<a name="line-240"></a><a name="compXS"></a><span class='definition'>compXS</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>XStep</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-241"></a><span class='definition'>compXS</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Child</span> <span class='varid'>nt</span> <span class='varid'>ps</span><span class='layout'>)</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-242"></a> <span class='varid'>an</span> <span class='keyglyph'><-</span> <span class='varid'>compNTE</span> <span class='varid'>nt</span>-<a name="line-243"></a> <span class='varid'>compPred</span> <span class='varid'>ps</span> <span class='layout'>(</span><span class='varid'>s</span> <span class='varop'>>>>></span> <span class='varid'>mk</span> <span class='varid'>getChildren</span> <span class='varop'>>>>></span> <span class='varid'>an</span><span class='layout'>)</span>-<a name="line-244"></a>-<a name="line-245"></a><span class='definition'>compXS</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>DescendantOrSelf</span> <span class='varid'>nt</span> <span class='varid'>ps</span><span class='layout'>)</span> <span class='varid'>s</span>-<a name="line-246"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-247"></a> <span class='varid'>an</span> <span class='keyglyph'><-</span> <span class='varid'>compNTE</span> <span class='varid'>nt</span>-<a name="line-248"></a> <span class='varid'>compPred</span> <span class='varid'>ps</span> <span class='layout'>(</span><span class='varid'>s</span> <span class='varop'>>>>></span> <span class='varid'>multi'</span> <span class='varid'>an</span><span class='layout'>)</span>-<a name="line-249"></a>-<a name="line-250"></a><span class='definition'>compXS</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Descendant</span> <span class='varid'>nt</span> <span class='varid'>ps</span><span class='layout'>)</span> <span class='varid'>s</span>-<a name="line-251"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-252"></a> <span class='varid'>an</span> <span class='keyglyph'><-</span> <span class='varid'>compNTE</span> <span class='varid'>nt</span>-<a name="line-253"></a> <span class='varid'>compPred</span> <span class='varid'>ps</span> <span class='layout'>(</span><span class='varid'>s</span> <span class='varop'>>>>></span> <span class='varid'>mk</span> <span class='varid'>getChildren</span> <span class='varop'>>>>></span> <span class='varid'>multi'</span> <span class='varid'>an</span><span class='layout'>)</span>-<a name="line-254"></a>-<a name="line-255"></a><span class='definition'>compXS</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Self</span> <span class='varid'>nt</span> <span class='varid'>ps</span><span class='layout'>)</span> <span class='varid'>s</span>+<a name="line-182"></a><a name="getChildren'"></a><span class='definition'>getChildren'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-183"></a><span class='definition'>getChildren'</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='varid'>getChildren</span> <span class='varop'>>>>></span> <span class='varid'>a</span>+<a name="line-184"></a>+<a name="line-185"></a><a name="getAttrl'"></a><span class='definition'>getAttrl'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-186"></a><span class='definition'>getAttrl'</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='varid'>getAttrl</span> <span class='varop'>>>>></span> <span class='varid'>a</span>+<a name="line-187"></a>+<a name="line-188"></a><a name="multi'"></a><span class='definition'>multi'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-189"></a><span class='definition'>multi'</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='varop'>$</span> <span class='varid'>multi</span> <span class='layout'>(</span><span class='varid'>unwrap</span> <span class='varid'>a</span><span class='layout'>)</span>+<a name="line-190"></a>+<a name="line-191"></a><a name="deep'"></a><span class='definition'>deep'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-192"></a><span class='definition'>deep'</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='varop'>$</span> <span class='varid'>deep</span> <span class='layout'>(</span><span class='varid'>unwrap</span> <span class='varid'>a</span><span class='layout'>)</span>+<a name="line-193"></a>+<a name="line-194"></a><a name="xIndex"></a><span class='definition'>xIndex</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='keyglyph'>[</span><span class='varid'>b</span><span class='keyglyph'>]</span> <span class='varid'>b</span>+<a name="line-195"></a><span class='definition'>xIndex</span> <span class='varid'>i</span>+<a name="line-196"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='varid'>none</span>+<a name="line-197"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>take</span> <span class='num'>1</span> <span class='varop'>.</span> <span class='varid'>drop</span> <span class='layout'>(</span><span class='varid'>i</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-198"></a>+<a name="line-199"></a><a name="xString"></a><span class='definition'>xString</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>String</span>+<a name="line-200"></a><span class='definition'>xString</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>unwrap</span> <span class='varid'>a</span> <span class='varop'>>>></span> <span class='varid'>xshow</span> <span class='layout'>(</span><span class='varid'>deep</span> <span class='varid'>isText</span><span class='layout'>)</span>+<a name="line-201"></a>+<a name="line-202"></a><a name="xNumber'"></a><span class='definition'>xNumber'</span> <span class='keyglyph'>::</span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XPNumber</span>+<a name="line-203"></a><span class='definition'>xNumber'</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>xString</span> <span class='varid'>a</span> <span class='varop'>>>></span> <span class='varid'>arr</span> <span class='varid'>toNumber</span>+<a name="line-204"></a>+<a name="line-205"></a><span class='comment'>-- ------------------------------</span>+<a name="line-206"></a>+<a name="line-207"></a><a name="deadEndStreet"></a><span class='definition'>deadEndStreet</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='varid'>m</span> <span class='varid'>a</span>+<a name="line-208"></a><span class='definition'>deadEndStreet</span> <span class='keyglyph'>=</span> <span class='varid'>fail</span> <span class='str'>"XPath expression too complicated for XmlArrows"</span>+<a name="line-209"></a>+<a name="line-210"></a><a name="compXPath"></a><span class='definition'>compXPath</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-211"></a><span class='definition'>compXPath</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-212"></a> <span class='varid'>r</span> <span class='keyglyph'><-</span> <span class='varid'>compXP</span> <span class='varid'>e</span>+<a name="line-213"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>unwrap</span> <span class='varid'>r</span>+<a name="line-214"></a>+<a name="line-215"></a><a name="compXP"></a><span class='definition'>compXP</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-216"></a><span class='definition'>compXP</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Abs</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-217"></a> <span class='keyglyph'>=</span> <span class='varid'>compLP</span> <span class='varid'>lp</span> <span class='varid'>this'</span>+<a name="line-218"></a><span class='definition'>compXP</span> <span class='layout'>(</span><span class='conid'>FilterExpr</span> <span class='layout'>(</span><span class='varid'>e1</span><span class='conop'>:</span><span class='varid'>el</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-219"></a> <span class='varid'>r</span> <span class='keyglyph'><-</span> <span class='varid'>compXP</span> <span class='varid'>e1</span>+<a name="line-220"></a> <span class='varid'>compFP</span> <span class='varid'>el</span> <span class='varid'>r</span>+<a name="line-221"></a><span class='definition'>compXP</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-222"></a>+<a name="line-223"></a><a name="compFP"></a><span class='definition'>compFP</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-224"></a><span class='definition'>compFP</span> <span class='conid'>[]</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>r</span>+<a name="line-225"></a><span class='definition'>compFP</span> <span class='layout'>(</span><span class='varid'>e1</span><span class='conop'>:</span><span class='varid'>es</span><span class='layout'>)</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-226"></a> <span class='varid'>r1</span> <span class='keyglyph'><-</span> <span class='varid'>compPred</span> <span class='keyglyph'>[</span><span class='varid'>e1</span><span class='keyglyph'>]</span> <span class='varid'>r</span>+<a name="line-227"></a> <span class='varid'>compFP</span> <span class='varid'>es</span> <span class='varid'>r1</span>+<a name="line-228"></a>+<a name="line-229"></a><a name="compLP"></a><span class='definition'>compLP</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='keyglyph'>[</span><span class='conid'>XStep</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-230"></a><span class='definition'>compLP</span> <span class='conid'>[]</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>r</span>+<a name="line-231"></a><span class='definition'>compLP</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='varid'>r</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-232"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compXS</span> <span class='varid'>x</span> <span class='varid'>r</span>+<a name="line-233"></a> <span class='keyword'>as</span> <span class='keyglyph'><-</span> <span class='varid'>compLP</span> <span class='varid'>xs</span> <span class='varid'>a1</span>+<a name="line-234"></a> <span class='varid'>return</span> <span class='keyword'>as</span>+<a name="line-235"></a>+<a name="line-236"></a><a name="compXS"></a><span class='definition'>compXS</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>XStep</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-237"></a><span class='definition'>compXS</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Child</span> <span class='varid'>nt</span> <span class='varid'>ps</span><span class='layout'>)</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-238"></a> <span class='varid'>an</span> <span class='keyglyph'><-</span> <span class='varid'>compNTE</span> <span class='varid'>nt</span>+<a name="line-239"></a> <span class='varid'>compPred</span> <span class='varid'>ps</span> <span class='layout'>(</span><span class='varid'>s</span> <span class='varop'>>>>></span> <span class='varid'>mk</span> <span class='varid'>getChildren</span> <span class='varop'>>>>></span> <span class='varid'>an</span><span class='layout'>)</span>+<a name="line-240"></a>+<a name="line-241"></a><span class='definition'>compXS</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>DescendantOrSelf</span> <span class='varid'>nt</span> <span class='varid'>ps</span><span class='layout'>)</span> <span class='varid'>s</span>+<a name="line-242"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-243"></a> <span class='varid'>an</span> <span class='keyglyph'><-</span> <span class='varid'>compNTE</span> <span class='varid'>nt</span>+<a name="line-244"></a> <span class='varid'>compPred</span> <span class='varid'>ps</span> <span class='layout'>(</span><span class='varid'>s</span> <span class='varop'>>>>></span> <span class='varid'>multi'</span> <span class='varid'>an</span><span class='layout'>)</span>+<a name="line-245"></a>+<a name="line-246"></a><span class='definition'>compXS</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Descendant</span> <span class='varid'>nt</span> <span class='varid'>ps</span><span class='layout'>)</span> <span class='varid'>s</span>+<a name="line-247"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-248"></a> <span class='varid'>an</span> <span class='keyglyph'><-</span> <span class='varid'>compNTE</span> <span class='varid'>nt</span>+<a name="line-249"></a> <span class='varid'>compPred</span> <span class='varid'>ps</span> <span class='layout'>(</span><span class='varid'>s</span> <span class='varop'>>>>></span> <span class='varid'>mk</span> <span class='varid'>getChildren</span> <span class='varop'>>>>></span> <span class='varid'>multi'</span> <span class='varid'>an</span><span class='layout'>)</span>+<a name="line-250"></a>+<a name="line-251"></a><span class='definition'>compXS</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Self</span> <span class='varid'>nt</span> <span class='varid'>ps</span><span class='layout'>)</span> <span class='varid'>s</span>+<a name="line-252"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-253"></a> <span class='varid'>an</span> <span class='keyglyph'><-</span> <span class='varid'>compNTE</span> <span class='varid'>nt</span>+<a name="line-254"></a> <span class='varid'>compPred</span> <span class='varid'>ps</span> <span class='layout'>(</span><span class='varid'>s</span> <span class='varop'>>>>></span> <span class='varid'>an</span><span class='layout'>)</span>+<a name="line-255"></a><span class='definition'>compXS</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Attribute</span> <span class='varid'>nt</span> <span class='varid'>ps</span><span class='layout'>)</span> <span class='varid'>s</span> <a name="line-256"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-257"></a> <span class='varid'>an</span> <span class='keyglyph'><-</span> <span class='varid'>compNTE</span> <span class='varid'>nt</span>-<a name="line-258"></a> <span class='varid'>compPred</span> <span class='varid'>ps</span> <span class='layout'>(</span><span class='varid'>s</span> <span class='varop'>>>>></span> <span class='varid'>an</span><span class='layout'>)</span>-<a name="line-259"></a><span class='definition'>compXS</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Attribute</span> <span class='varid'>nt</span> <span class='varid'>ps</span><span class='layout'>)</span> <span class='varid'>s</span>-<a name="line-260"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-261"></a> <span class='varid'>an</span> <span class='keyglyph'><-</span> <span class='varid'>compNTA</span> <span class='varid'>nt</span>-<a name="line-262"></a> <span class='varid'>compPred</span> <span class='varid'>ps</span> <span class='layout'>(</span><span class='varid'>s</span> <span class='varop'>>>>></span> <span class='varid'>getAttrl'</span> <span class='varid'>an</span><span class='layout'>)</span>-<a name="line-263"></a>-<a name="line-264"></a><span class='definition'>compXS</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-257"></a> <span class='varid'>an</span> <span class='keyglyph'><-</span> <span class='varid'>compNTA</span> <span class='varid'>nt</span>+<a name="line-258"></a> <span class='varid'>compPred</span> <span class='varid'>ps</span> <span class='layout'>(</span><span class='varid'>s</span> <span class='varop'>>>>></span> <span class='varid'>getAttrl'</span> <span class='varid'>an</span><span class='layout'>)</span>+<a name="line-259"></a>+<a name="line-260"></a><span class='definition'>compXS</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-261"></a>+<a name="line-262"></a><a name="compNTE"></a><span class='definition'>compNTE</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Monad</span> <span class='varid'>m</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>NodeTest</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-263"></a><span class='definition'>compNTE</span> <span class='layout'>(</span><span class='conid'>NameTest</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>compNameT</span> <span class='varid'>isElem</span> <span class='varid'>qn</span>+<a name="line-264"></a><span class='definition'>compNTE</span> <span class='varid'>nt</span> <span class='keyglyph'>=</span> <span class='varid'>compNT</span> <span class='varid'>nt</span> <a name="line-265"></a>-<a name="line-266"></a><a name="compNTE"></a><span class='definition'>compNTE</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Monad</span> <span class='varid'>m</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>NodeTest</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-267"></a><span class='definition'>compNTE</span> <span class='layout'>(</span><span class='conid'>NameTest</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>compNameT</span> <span class='varid'>isElem</span> <span class='varid'>qn</span>-<a name="line-268"></a><span class='definition'>compNTE</span> <span class='varid'>nt</span> <span class='keyglyph'>=</span> <span class='varid'>compNT</span> <span class='varid'>nt</span>+<a name="line-266"></a><a name="compNTA"></a><span class='definition'>compNTA</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Monad</span> <span class='varid'>m</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>NodeTest</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-267"></a><span class='definition'>compNTA</span> <span class='layout'>(</span><span class='conid'>NameTest</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>compNameT</span> <span class='varid'>isAttr</span> <span class='varid'>qn</span>+<a name="line-268"></a><span class='definition'>compNTA</span> <span class='varid'>nt</span> <span class='keyglyph'>=</span> <span class='varid'>compNT</span> <span class='varid'>nt</span> <a name="line-269"></a>-<a name="line-270"></a><a name="compNTA"></a><span class='definition'>compNTA</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Monad</span> <span class='varid'>m</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>NodeTest</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-271"></a><span class='definition'>compNTA</span> <span class='layout'>(</span><span class='conid'>NameTest</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>compNameT</span> <span class='varid'>isAttr</span> <span class='varid'>qn</span>-<a name="line-272"></a><span class='definition'>compNTA</span> <span class='varid'>nt</span> <span class='keyglyph'>=</span> <span class='varid'>compNT</span> <span class='varid'>nt</span>-<a name="line-273"></a>-<a name="line-274"></a><a name="compNameT"></a><span class='definition'>compNameT</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-275"></a><span class='definition'>compNameT</span> <span class='varid'>ist</span> <span class='varid'>qn</span>-<a name="line-276"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>namespaceUri</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span>-<a name="line-277"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>qualifiedName</span> <span class='varid'>qn</span> <span class='varop'>==</span> <span class='str'>"*"</span>-<a name="line-278"></a> <span class='keyword'>then</span> <span class='varid'>ist</span>-<a name="line-279"></a> <span class='keyword'>else</span> <span class='varid'>ist</span> <span class='varop'>>>></span> <span class='varid'>hasName</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>qn</span><span class='layout'>)</span>-<a name="line-280"></a> <span class='layout'>)</span>-<a name="line-281"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span>-<a name="line-282"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>localPart</span> <span class='varid'>qn</span> <span class='varop'>==</span> <span class='str'>"*"</span>-<a name="line-283"></a> <span class='keyword'>then</span> <span class='varid'>ist</span> <span class='varop'>>>></span> <span class='varid'>hasNamespaceUri</span> <span class='layout'>(</span><span class='varid'>namespaceUri</span> <span class='varid'>qn</span><span class='layout'>)</span>-<a name="line-284"></a> <span class='keyword'>else</span> <span class='varid'>ist</span> <span class='varop'>>>></span> <span class='varid'>hasQName</span> <span class='varid'>qn</span>-<a name="line-285"></a>-<a name="line-286"></a> <span class='layout'>)</span>-<a name="line-287"></a>-<a name="line-288"></a><a name="compNT"></a><span class='definition'>compNT</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>NodeTest</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-289"></a><span class='definition'>compNT</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPNode</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>this'</span>-<a name="line-290"></a><span class='definition'>compNT</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPCommentNode</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varid'>isCmt</span>-<a name="line-291"></a><span class='definition'>compNT</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPPINode</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varid'>isPi</span>-<a name="line-292"></a><span class='definition'>compNT</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPTextNode</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varid'>isText</span>-<a name="line-293"></a>-<a name="line-294"></a><span class='definition'>compNT</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>-<a name="line-295"></a>-<a name="line-296"></a><a name="compPred"></a><span class='definition'>compPred</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-297"></a><span class='definition'>compPred</span> <span class='conid'>[]</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>r</span>-<a name="line-298"></a><span class='definition'>compPred</span> <span class='layout'>(</span><span class='varid'>e</span><span class='conop'>:</span><span class='varid'>es</span><span class='layout'>)</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-299"></a> <span class='varid'>r1</span> <span class='keyglyph'><-</span> <span class='varid'>compPred1</span> <span class='varid'>e</span> <span class='varid'>r</span>-<a name="line-300"></a> <span class='varid'>compPred</span> <span class='varid'>es</span> <span class='varid'>r1</span>-<a name="line-301"></a>-<a name="line-302"></a><a name="compPred1"></a><span class='definition'>compPred1</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-303"></a><span class='definition'>compPred1</span> <span class='varid'>e</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-304"></a> <span class='varid'>ix</span> <span class='keyglyph'><-</span> <span class='varid'>compIntExpr</span> <span class='varid'>e</span>-<a name="line-305"></a> <span class='varid'>return</span> <span class='varop'>.</span> <span class='varid'>mk</span> <span class='varop'>$</span> <span class='varid'>listA</span> <span class='layout'>(</span><span class='varid'>unwrap</span> <span class='varid'>r</span><span class='layout'>)</span> <span class='varop'>>>></span> <span class='varid'>xIndex</span> <span class='varid'>ix</span>-<a name="line-306"></a> <span class='layout'>)</span>-<a name="line-307"></a> <span class='varop'>`mplus`</span>-<a name="line-308"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-309"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e</span>-<a name="line-310"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>r</span> <span class='varop'>>>>></span> <span class='layout'>(</span><span class='varid'>a1</span> <span class='varop'>`guards'`</span> <span class='varid'>this'</span><span class='layout'>)</span>-<a name="line-311"></a> <span class='layout'>)</span>-<a name="line-312"></a> <span class='varop'>`mplus`</span>-<a name="line-313"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-314"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compGenExpr</span> <span class='varid'>e</span>-<a name="line-315"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>r</span> <span class='varop'>>>>></span> <span class='layout'>(</span><span class='varid'>a1</span> <span class='varop'>`guards'`</span> <span class='varid'>this'</span><span class='layout'>)</span>-<a name="line-316"></a> <span class='layout'>)</span>-<a name="line-317"></a> <span class='varop'>`mplus`</span>-<a name="line-318"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-319"></a> <span class='varid'>b1</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>e</span>-<a name="line-320"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='keyword'>if</span> <span class='varid'>b1</span> <span class='keyword'>then</span> <span class='varid'>r</span> <span class='keyword'>else</span> <span class='varid'>mk</span> <span class='varid'>none</span>-<a name="line-321"></a> <span class='layout'>)</span>-<a name="line-322"></a>-<a name="line-323"></a><a name="compRelPathExpr"></a><span class='definition'>compRelPathExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-324"></a><span class='definition'>compRelPathExpr</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Rel</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-325"></a> <span class='keyglyph'>=</span> <span class='varid'>compLP</span> <span class='varid'>lp</span> <span class='varid'>this'</span>-<a name="line-326"></a><span class='definition'>compRelPathExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-270"></a><a name="compNameT"></a><span class='definition'>compNameT</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>LA</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-271"></a><span class='definition'>compNameT</span> <span class='varid'>ist</span> <span class='varid'>qn</span>+<a name="line-272"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>namespaceUri</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span>+<a name="line-273"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>qualifiedName</span> <span class='varid'>qn</span> <span class='varop'>==</span> <span class='str'>"*"</span>+<a name="line-274"></a> <span class='keyword'>then</span> <span class='varid'>ist</span>+<a name="line-275"></a> <span class='keyword'>else</span> <span class='varid'>ist</span> <span class='varop'>>>></span> <span class='varid'>hasName</span> <span class='layout'>(</span><span class='varid'>qualifiedName</span> <span class='varid'>qn</span><span class='layout'>)</span>+<a name="line-276"></a> <span class='layout'>)</span>+<a name="line-277"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span>+<a name="line-278"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>localPart</span> <span class='varid'>qn</span> <span class='varop'>==</span> <span class='str'>"*"</span>+<a name="line-279"></a> <span class='keyword'>then</span> <span class='varid'>ist</span> <span class='varop'>>>></span> <span class='varid'>hasNamespaceUri</span> <span class='layout'>(</span><span class='varid'>namespaceUri</span> <span class='varid'>qn</span><span class='layout'>)</span>+<a name="line-280"></a> <span class='keyword'>else</span> <span class='varid'>ist</span> <span class='varop'>>>></span> <span class='varid'>hasQName</span> <span class='varid'>qn</span>+<a name="line-281"></a>+<a name="line-282"></a> <span class='layout'>)</span>+<a name="line-283"></a>+<a name="line-284"></a><a name="compNT"></a><span class='definition'>compNT</span> <span class='keyglyph'>::</span> <span class='conid'>Monad</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>NodeTest</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-285"></a><span class='definition'>compNT</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPNode</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>this'</span>+<a name="line-286"></a><span class='definition'>compNT</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPCommentNode</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varid'>isCmt</span>+<a name="line-287"></a><span class='definition'>compNT</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPPINode</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varid'>isPi</span>+<a name="line-288"></a><span class='definition'>compNT</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPTextNode</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varid'>isText</span>+<a name="line-289"></a>+<a name="line-290"></a><span class='definition'>compNT</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-291"></a>+<a name="line-292"></a><a name="compPred"></a><span class='definition'>compPred</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-293"></a><span class='definition'>compPred</span> <span class='conid'>[]</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>r</span>+<a name="line-294"></a><span class='definition'>compPred</span> <span class='layout'>(</span><span class='varid'>e</span><span class='conop'>:</span><span class='varid'>es</span><span class='layout'>)</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-295"></a> <span class='varid'>r1</span> <span class='keyglyph'><-</span> <span class='varid'>compPred1</span> <span class='varid'>e</span> <span class='varid'>r</span>+<a name="line-296"></a> <span class='varid'>compPred</span> <span class='varid'>es</span> <span class='varid'>r1</span>+<a name="line-297"></a>+<a name="line-298"></a><a name="compPred1"></a><span class='definition'>compPred1</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-299"></a><span class='definition'>compPred1</span> <span class='varid'>e</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-300"></a> <span class='varid'>ix</span> <span class='keyglyph'><-</span> <span class='varid'>compIntExpr</span> <span class='varid'>e</span>+<a name="line-301"></a> <span class='varid'>return</span> <span class='varop'>.</span> <span class='varid'>mk</span> <span class='varop'>$</span> <span class='varid'>listA</span> <span class='layout'>(</span><span class='varid'>unwrap</span> <span class='varid'>r</span><span class='layout'>)</span> <span class='varop'>>>></span> <span class='varid'>xIndex</span> <span class='varid'>ix</span>+<a name="line-302"></a> <span class='layout'>)</span>+<a name="line-303"></a> <span class='varop'>`mplus`</span>+<a name="line-304"></a> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-305"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e</span>+<a name="line-306"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>r</span> <span class='varop'>>>>></span> <span class='layout'>(</span><span class='varid'>a1</span> <span class='varop'>`guards'`</span> <span class='varid'>this'</span><span class='layout'>)</span>+<a name="line-307"></a> <span class='layout'>)</span>+<a name="line-308"></a> <span class='varop'>`mplus`</span>+<a name="line-309"></a> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-310"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compGenExpr</span> <span class='varid'>e</span>+<a name="line-311"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>r</span> <span class='varop'>>>>></span> <span class='layout'>(</span><span class='varid'>a1</span> <span class='varop'>`guards'`</span> <span class='varid'>this'</span><span class='layout'>)</span>+<a name="line-312"></a> <span class='layout'>)</span>+<a name="line-313"></a> <span class='varop'>`mplus`</span>+<a name="line-314"></a> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-315"></a> <span class='varid'>b1</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>e</span>+<a name="line-316"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='keyword'>if</span> <span class='varid'>b1</span> <span class='keyword'>then</span> <span class='varid'>r</span> <span class='keyword'>else</span> <span class='varid'>mk</span> <span class='varid'>none</span>+<a name="line-317"></a> <span class='layout'>)</span>+<a name="line-318"></a>+<a name="line-319"></a><a name="compRelPathExpr"></a><span class='definition'>compRelPathExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-320"></a><span class='definition'>compRelPathExpr</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Rel</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-321"></a> <span class='keyglyph'>=</span> <span class='varid'>compLP</span> <span class='varid'>lp</span> <span class='varid'>this'</span>+<a name="line-322"></a><span class='definition'>compRelPathExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-323"></a>+<a name="line-324"></a><a name="compStringExpr"></a><span class='definition'>compStringExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='conid'>String</span>+<a name="line-325"></a><span class='definition'>compStringExpr</span> <span class='layout'>(</span><span class='conid'>LiteralExpr</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>s</span>+<a name="line-326"></a><span class='definition'>compStringExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span> <a name="line-327"></a>-<a name="line-328"></a><a name="compStringExpr"></a><span class='definition'>compStringExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='conid'>String</span>-<a name="line-329"></a><span class='definition'>compStringExpr</span> <span class='layout'>(</span><span class='conid'>LiteralExpr</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>s</span>-<a name="line-330"></a><span class='definition'>compStringExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>-<a name="line-331"></a>-<a name="line-332"></a><a name="compNumberExpr"></a><span class='definition'>compNumberExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='conid'>XPNumber</span>-<a name="line-333"></a><span class='definition'>compNumberExpr</span> <span class='layout'>(</span><span class='conid'>NumberExpr</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>n</span>-<a name="line-334"></a><span class='definition'>compNumberExpr</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='str'>"number"</span> <span class='keyglyph'>[</span><span class='varid'>f1</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-335"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-336"></a> <span class='varid'>b</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>f1</span>-<a name="line-337"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='keyword'>if</span> <span class='varid'>b</span> <span class='keyword'>then</span> <span class='layout'>(</span><span class='conid'>Float</span> <span class='num'>1</span><span class='layout'>)</span> <span class='keyword'>else</span> <span class='conid'>Pos0</span>-<a name="line-338"></a> <span class='layout'>)</span>-<a name="line-339"></a> <span class='varop'>`mplus`</span>-<a name="line-340"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-341"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>compStringExpr</span> <span class='varid'>f1</span>-<a name="line-342"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>toNumber</span> <span class='varid'>s</span>-<a name="line-343"></a> <span class='layout'>)</span>-<a name="line-344"></a><span class='definition'>compNumberExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>-<a name="line-345"></a>-<a name="line-346"></a><a name="compIntExpr"></a><span class='definition'>compIntExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='conid'>Int</span>-<a name="line-347"></a><span class='definition'>compIntExpr</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-348"></a> <span class='layout'>(</span><span class='conid'>Float</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>compNumberExpr</span> <span class='varid'>e</span>-<a name="line-349"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>round</span> <span class='varid'>f</span><span class='layout'>)</span>-<a name="line-350"></a> <span class='layout'>)</span>-<a name="line-351"></a> <span class='varop'>`mplus`</span>-<a name="line-352"></a> <span class='varid'>deadEndStreet</span>-<a name="line-353"></a>-<a name="line-354"></a>-<a name="line-355"></a><a name="compBoolExpr"></a><span class='definition'>compBoolExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='conid'>Bool</span>-<a name="line-356"></a><span class='definition'>compBoolExpr</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='varid'>f</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-357"></a> <span class='keyglyph'>|</span> <span class='varid'>f</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"true"</span><span class='layout'>,</span> <span class='str'>"false"</span><span class='keyglyph'>]</span>-<a name="line-358"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>f</span> <span class='varop'>==</span> <span class='str'>"true"</span>-<a name="line-359"></a><span class='definition'>compBoolExpr</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='str'>"not"</span> <span class='keyglyph'>[</span><span class='varid'>f1</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-360"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-361"></a> <span class='varid'>v1</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>f1</span>-<a name="line-362"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>not</span> <span class='varid'>v1</span>-<a name="line-363"></a><span class='definition'>compBoolExpr</span> <span class='layout'>(</span><span class='conid'>LiteralExpr</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-364"></a><span class='definition'>compBoolExpr</span> <span class='layout'>(</span><span class='conid'>NumberExpr</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>nz</span> <span class='varid'>n</span>-<a name="line-365"></a> <span class='keyword'>where</span>-<a name="line-366"></a> <span class='varid'>nz</span> <span class='layout'>(</span><span class='conid'>Float</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>/=</span> <span class='num'>0</span>-<a name="line-367"></a> <span class='varid'>nz</span> <span class='conid'>NegInf</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-368"></a> <span class='varid'>nz</span> <span class='conid'>PosInf</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-369"></a> <span class='varid'>nz</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-370"></a><span class='definition'>compBoolExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>-<a name="line-371"></a>-<a name="line-372"></a><a name="compGenExpr"></a><span class='definition'>compGenExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-373"></a><span class='definition'>compGenExpr</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='keyglyph'>[</span><span class='varid'>e1</span><span class='layout'>,</span><span class='varid'>e2</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-374"></a> <span class='keyglyph'>=</span> <span class='varid'>compString</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='comment'>-- on arg is a string expr</span>+<a name="line-328"></a><a name="compNumberExpr"></a><span class='definition'>compNumberExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='conid'>XPNumber</span>+<a name="line-329"></a><span class='definition'>compNumberExpr</span> <span class='layout'>(</span><span class='conid'>NumberExpr</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>n</span>+<a name="line-330"></a><span class='definition'>compNumberExpr</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='str'>"number"</span> <span class='keyglyph'>[</span><span class='varid'>f1</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-331"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-332"></a> <span class='varid'>b</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>f1</span>+<a name="line-333"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='keyword'>if</span> <span class='varid'>b</span> <span class='keyword'>then</span> <span class='layout'>(</span><span class='conid'>Float</span> <span class='num'>1</span><span class='layout'>)</span> <span class='keyword'>else</span> <span class='conid'>Pos0</span>+<a name="line-334"></a> <span class='layout'>)</span>+<a name="line-335"></a> <span class='varop'>`mplus`</span>+<a name="line-336"></a> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-337"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>compStringExpr</span> <span class='varid'>f1</span>+<a name="line-338"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>toNumber</span> <span class='varid'>s</span>+<a name="line-339"></a> <span class='layout'>)</span>+<a name="line-340"></a><span class='definition'>compNumberExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-341"></a>+<a name="line-342"></a><a name="compIntExpr"></a><span class='definition'>compIntExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='conid'>Int</span>+<a name="line-343"></a><span class='definition'>compIntExpr</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-344"></a> <span class='layout'>(</span><span class='conid'>Float</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>compNumberExpr</span> <span class='varid'>e</span>+<a name="line-345"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>round</span> <span class='varid'>f</span><span class='layout'>)</span>+<a name="line-346"></a> <span class='layout'>)</span>+<a name="line-347"></a> <span class='varop'>`mplus`</span>+<a name="line-348"></a> <span class='varid'>deadEndStreet</span>+<a name="line-349"></a>+<a name="line-350"></a>+<a name="line-351"></a><a name="compBoolExpr"></a><span class='definition'>compBoolExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='conid'>Bool</span>+<a name="line-352"></a><span class='definition'>compBoolExpr</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='varid'>f</span> <span class='conid'>[]</span><span class='layout'>)</span>+<a name="line-353"></a> <span class='keyglyph'>|</span> <span class='varid'>f</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"true"</span><span class='layout'>,</span> <span class='str'>"false"</span><span class='keyglyph'>]</span>+<a name="line-354"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>f</span> <span class='varop'>==</span> <span class='str'>"true"</span>+<a name="line-355"></a><span class='definition'>compBoolExpr</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='str'>"not"</span> <span class='keyglyph'>[</span><span class='varid'>f1</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-356"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-357"></a> <span class='varid'>v1</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>f1</span>+<a name="line-358"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>not</span> <span class='varid'>v1</span>+<a name="line-359"></a><span class='definition'>compBoolExpr</span> <span class='layout'>(</span><span class='conid'>LiteralExpr</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-360"></a><span class='definition'>compBoolExpr</span> <span class='layout'>(</span><span class='conid'>NumberExpr</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>nz</span> <span class='varid'>n</span>+<a name="line-361"></a> <span class='keyword'>where</span>+<a name="line-362"></a> <span class='varid'>nz</span> <span class='layout'>(</span><span class='conid'>Float</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>/=</span> <span class='num'>0</span>+<a name="line-363"></a> <span class='varid'>nz</span> <span class='conid'>NegInf</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-364"></a> <span class='varid'>nz</span> <span class='conid'>PosInf</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-365"></a> <span class='varid'>nz</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-366"></a><span class='definition'>compBoolExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-367"></a>+<a name="line-368"></a><a name="compGenExpr"></a><span class='definition'>compGenExpr</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-369"></a><span class='definition'>compGenExpr</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='keyglyph'>[</span><span class='varid'>e1</span><span class='layout'>,</span><span class='varid'>e2</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-370"></a> <span class='keyglyph'>=</span> <span class='varid'>compString</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='comment'>-- on arg is a string expr</span>+<a name="line-371"></a> <span class='varop'>`mplus`</span>+<a name="line-372"></a> <span class='varid'>compNumber</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='comment'>-- one arg is a number expr</span>+<a name="line-373"></a> <span class='varop'>`mplus`</span>+<a name="line-374"></a> <span class='varid'>compBool</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='comment'>-- and/or</span> <a name="line-375"></a> <span class='varop'>`mplus`</span>-<a name="line-376"></a> <span class='varid'>compNumber</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='comment'>-- one arg is a number expr</span>-<a name="line-377"></a> <span class='varop'>`mplus`</span>-<a name="line-378"></a> <span class='varid'>compBool</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='comment'>-- and/or</span>-<a name="line-379"></a> <span class='varop'>`mplus`</span>-<a name="line-380"></a> <span class='varid'>compPath</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='comment'>-- nodeset equality</span>-<a name="line-381"></a>-<a name="line-382"></a><span class='definition'>compGenExpr</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='layout'>(</span><span class='varid'>e1</span><span class='conop'>:</span><span class='varid'>el</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-383"></a> <span class='keyglyph'>|</span> <span class='varid'>op</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>And</span><span class='layout'>,</span> <span class='conid'>Or</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='varid'>compGenExpr</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='keyglyph'>[</span><span class='varid'>e1</span><span class='layout'>,</span> <span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='varid'>el</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-384"></a>-<a name="line-385"></a><span class='definition'>compGenExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>-<a name="line-386"></a>-<a name="line-387"></a><a name="compString"></a><span class='definition'>compString</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Op</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-388"></a><span class='definition'>compString</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span>-<a name="line-389"></a> <span class='keyglyph'>|</span> <span class='varid'>op</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>NEq</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-390"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>compStringExpr</span> <span class='varid'>e2</span>-<a name="line-391"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e1</span>-<a name="line-392"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mkEq'</span> <span class='varid'>a</span> <span class='varid'>s</span>-<a name="line-393"></a> <span class='layout'>)</span>-<a name="line-394"></a> <span class='varop'>`mplus`</span>-<a name="line-395"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-396"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>compStringExpr</span> <span class='varid'>e1</span>-<a name="line-397"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e2</span>-<a name="line-398"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mkEq'</span> <span class='varid'>a</span> <span class='varid'>s</span>-<a name="line-399"></a> <span class='layout'>)</span>-<a name="line-400"></a> <span class='keyword'>where</span>-<a name="line-401"></a> <span class='varid'>mkEq'</span> <span class='varid'>a'</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>xString</span> <span class='varid'>a'</span>-<a name="line-402"></a> <span class='varop'>>>></span>-<a name="line-403"></a> <span class='varid'>isA</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>op</span> <span class='varop'>==</span> <span class='conid'>Eq</span>-<a name="line-404"></a> <span class='keyword'>then</span> <span class='layout'>(</span><span class='varop'>==</span> <span class='varid'>s'</span><span class='layout'>)</span>-<a name="line-405"></a> <span class='keyword'>else</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='varid'>s'</span><span class='layout'>)</span>-<a name="line-406"></a> <span class='layout'>)</span>-<a name="line-407"></a> <span class='layout'>)</span>-<a name="line-408"></a> <span class='varop'>`guards`</span> <span class='varid'>this</span> <span class='comment'>-- just for type match</span>-<a name="line-409"></a> <span class='layout'>)</span>-<a name="line-410"></a><span class='definition'>compString</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>-<a name="line-411"></a>-<a name="line-412"></a><a name="compNumber"></a><span class='definition'>compNumber</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Op</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-413"></a><span class='definition'>compNumber</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span>-<a name="line-414"></a> <span class='keyglyph'>|</span> <span class='varid'>op</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>NEq</span><span class='layout'>,</span> <span class='conid'>Less</span><span class='layout'>,</span> <span class='conid'>Greater</span><span class='layout'>,</span> <span class='conid'>LessEq</span><span class='layout'>,</span> <span class='conid'>GreaterEq</span><span class='keyglyph'>]</span>-<a name="line-415"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-416"></a> <span class='varid'>n</span> <span class='keyglyph'><-</span> <span class='varid'>compNumberExpr</span> <span class='varid'>e2</span>-<a name="line-417"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e1</span>-<a name="line-418"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mkEq'</span> <span class='varid'>a</span> <span class='varid'>n</span>-<a name="line-419"></a> <span class='layout'>)</span>-<a name="line-420"></a> <span class='varop'>`mplus`</span>-<a name="line-421"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-422"></a> <span class='varid'>n</span> <span class='keyglyph'><-</span> <span class='varid'>compNumberExpr</span> <span class='varid'>e1</span>-<a name="line-423"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e2</span>-<a name="line-424"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mkEq'</span> <span class='varid'>a</span> <span class='varid'>n</span>-<a name="line-425"></a> <span class='layout'>)</span>-<a name="line-426"></a> <span class='keyword'>where</span>-<a name="line-427"></a> <span class='varid'>mkEq'</span> <span class='varid'>a'</span> <span class='varid'>n'</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>xNumber'</span> <span class='varid'>a'</span>-<a name="line-428"></a> <span class='varop'>>>></span>-<a name="line-429"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>flip</span> <span class='layout'>(</span> <span class='keyword'>case</span> <span class='varid'>op</span> <span class='keyword'>of</span>-<a name="line-430"></a> <span class='conid'>Eq</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'>==</span><span class='layout'>)</span>-<a name="line-431"></a> <span class='conid'>NEq</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'>/=</span><span class='layout'>)</span>-<a name="line-432"></a> <span class='conid'>Less</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'><</span><span class='layout'>)</span>-<a name="line-433"></a> <span class='conid'>Greater</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'>></span><span class='layout'>)</span>-<a name="line-434"></a> <span class='conid'>LessEq</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'><=</span><span class='layout'>)</span>-<a name="line-435"></a> <span class='conid'>GreaterEq</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'>>=</span><span class='layout'>)</span>-<a name="line-436"></a> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>error</span> <span class='str'>"compNumber: wrong arg"</span>-<a name="line-437"></a> <span class='layout'>)</span> <span class='varid'>n'</span>-<a name="line-438"></a> <span class='layout'>)</span>-<a name="line-439"></a> <span class='layout'>)</span>-<a name="line-440"></a> <span class='varop'>`guards`</span> <span class='varid'>this</span>-<a name="line-441"></a> <span class='layout'>)</span>-<a name="line-442"></a><span class='definition'>compNumber</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>-<a name="line-443"></a>-<a name="line-444"></a><a name="compBool"></a><span class='definition'>compBool</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Op</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-445"></a><span class='definition'>compBool</span> <span class='conid'>And</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-446"></a> <span class='varid'>b</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>e1</span>-<a name="line-447"></a> <span class='keyword'>if</span> <span class='varid'>b</span>-<a name="line-448"></a> <span class='keyword'>then</span> <span class='varid'>compGenExpr</span> <span class='varid'>e2</span>-<a name="line-449"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varid'>none</span>-<a name="line-450"></a> <span class='layout'>)</span>-<a name="line-451"></a> <span class='varop'>`mplus`</span>-<a name="line-452"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-453"></a> <span class='varid'>b</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>e2</span>-<a name="line-454"></a> <span class='keyword'>if</span> <span class='varid'>b</span>-<a name="line-455"></a> <span class='keyword'>then</span> <span class='varid'>compGenExpr</span> <span class='varid'>e1</span>-<a name="line-456"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varid'>none</span>-<a name="line-457"></a> <span class='layout'>)</span>-<a name="line-458"></a> <span class='varop'>`mplus`</span>-<a name="line-459"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-460"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compGenExpr</span> <span class='varid'>e1</span>-<a name="line-461"></a> <span class='varid'>a2</span> <span class='keyglyph'><-</span> <span class='varid'>compGenExpr</span> <span class='varid'>e2</span>-<a name="line-462"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>a1</span> <span class='varop'>`guards'`</span> <span class='varid'>a2</span>-<a name="line-463"></a> <span class='layout'>)</span>-<a name="line-464"></a><span class='definition'>compBool</span> <span class='conid'>Or</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-465"></a> <span class='varid'>b</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>e1</span>-<a name="line-466"></a> <span class='keyword'>if</span> <span class='varid'>b</span>-<a name="line-467"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='varid'>this'</span>-<a name="line-468"></a> <span class='keyword'>else</span> <span class='varid'>compGenExpr</span> <span class='varid'>e2</span>-<a name="line-469"></a> <span class='layout'>)</span>-<a name="line-470"></a> <span class='varop'>`mplus`</span>-<a name="line-471"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-472"></a> <span class='varid'>b</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>e2</span>-<a name="line-473"></a> <span class='keyword'>if</span> <span class='varid'>b</span>-<a name="line-474"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='varid'>this'</span>-<a name="line-475"></a> <span class='keyword'>else</span> <span class='varid'>compGenExpr</span> <span class='varid'>e1</span>-<a name="line-476"></a> <span class='layout'>)</span>-<a name="line-477"></a> <span class='varop'>`mplus`</span>-<a name="line-478"></a> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-479"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compGenExpr</span> <span class='varid'>e1</span>-<a name="line-480"></a> <span class='varid'>a2</span> <span class='keyglyph'><-</span> <span class='varid'>compGenExpr</span> <span class='varid'>e2</span>-<a name="line-481"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>a1</span> <span class='varop'><+>></span> <span class='varid'>a2</span>-<a name="line-482"></a> <span class='layout'>)</span>-<a name="line-483"></a><span class='definition'>compBool</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>-<a name="line-484"></a>-<a name="line-485"></a><a name="compPath"></a><span class='definition'>compPath</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Op</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>-<a name="line-486"></a><span class='definition'>compPath</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span>-<a name="line-487"></a> <span class='keyglyph'>|</span> <span class='varid'>op</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>NEq</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-488"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e2</span>-<a name="line-489"></a> <span class='varid'>a2</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e1</span>-<a name="line-490"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varop'>.</span> <span class='varid'>cmp</span> <span class='varid'>op</span> <span class='varop'>$</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>listA</span> <span class='layout'>(</span><span class='varid'>xString</span> <span class='varid'>a1</span><span class='layout'>)</span> <span class='varop'>&&&</span> <span class='varid'>listA</span> <span class='layout'>(</span><span class='varid'>xString</span> <span class='varid'>a2</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-491"></a> <span class='varop'>>>></span>-<a name="line-492"></a> <span class='varid'>eqs</span>-<a name="line-493"></a> <span class='layout'>)</span>-<a name="line-494"></a> <span class='layout'>)</span>-<a name="line-495"></a> <span class='keyword'>where</span>-<a name="line-496"></a> <span class='varid'>eqs</span> <span class='keyglyph'>=</span> <span class='varid'>arr2L</span> <span class='varid'>equalNodeSet</span>-<a name="line-497"></a> <span class='varid'>cmp</span> <span class='conid'>Eq</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>a</span> <span class='varop'>`guards`</span> <span class='varid'>this</span>-<a name="line-498"></a> <span class='varid'>cmp</span> <span class='conid'>NEq</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>ifA</span> <span class='varid'>a</span> <span class='varid'>none</span> <span class='varid'>this</span>-<a name="line-499"></a> <span class='varid'>cmp</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='str'>"compPath: wrong agruments"</span>+<a name="line-376"></a> <span class='varid'>compPath</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='comment'>-- nodeset equality</span>+<a name="line-377"></a>+<a name="line-378"></a><span class='definition'>compGenExpr</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='layout'>(</span><span class='varid'>e1</span><span class='conop'>:</span><span class='varid'>el</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-379"></a> <span class='keyglyph'>|</span> <span class='varid'>op</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>And</span><span class='layout'>,</span> <span class='conid'>Or</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='varid'>compGenExpr</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='keyglyph'>[</span><span class='varid'>e1</span><span class='layout'>,</span> <span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='varid'>el</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-380"></a>+<a name="line-381"></a><span class='definition'>compGenExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-382"></a>+<a name="line-383"></a><a name="compString"></a><span class='definition'>compString</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Op</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-384"></a><span class='definition'>compString</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span>+<a name="line-385"></a> <span class='keyglyph'>|</span> <span class='varid'>op</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>NEq</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-386"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>compStringExpr</span> <span class='varid'>e2</span>+<a name="line-387"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e1</span>+<a name="line-388"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mkEq'</span> <span class='varid'>a</span> <span class='varid'>s</span>+<a name="line-389"></a> <span class='layout'>)</span>+<a name="line-390"></a> <span class='varop'>`mplus`</span>+<a name="line-391"></a> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-392"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>compStringExpr</span> <span class='varid'>e1</span>+<a name="line-393"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e2</span>+<a name="line-394"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mkEq'</span> <span class='varid'>a</span> <span class='varid'>s</span>+<a name="line-395"></a> <span class='layout'>)</span>+<a name="line-396"></a> <span class='keyword'>where</span>+<a name="line-397"></a> <span class='varid'>mkEq'</span> <span class='varid'>a'</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>xString</span> <span class='varid'>a'</span>+<a name="line-398"></a> <span class='varop'>>>></span>+<a name="line-399"></a> <span class='varid'>isA</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>op</span> <span class='varop'>==</span> <span class='conid'>Eq</span>+<a name="line-400"></a> <span class='keyword'>then</span> <span class='layout'>(</span><span class='varop'>==</span> <span class='varid'>s'</span><span class='layout'>)</span>+<a name="line-401"></a> <span class='keyword'>else</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='varid'>s'</span><span class='layout'>)</span>+<a name="line-402"></a> <span class='layout'>)</span>+<a name="line-403"></a> <span class='layout'>)</span>+<a name="line-404"></a> <span class='varop'>`guards`</span> <span class='varid'>this</span> <span class='comment'>-- just for type match</span>+<a name="line-405"></a> <span class='layout'>)</span>+<a name="line-406"></a><span class='definition'>compString</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-407"></a>+<a name="line-408"></a><a name="compNumber"></a><span class='definition'>compNumber</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Op</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-409"></a><span class='definition'>compNumber</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span>+<a name="line-410"></a> <span class='keyglyph'>|</span> <span class='varid'>op</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>NEq</span><span class='layout'>,</span> <span class='conid'>Less</span><span class='layout'>,</span> <span class='conid'>Greater</span><span class='layout'>,</span> <span class='conid'>LessEq</span><span class='layout'>,</span> <span class='conid'>GreaterEq</span><span class='keyglyph'>]</span>+<a name="line-411"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-412"></a> <span class='varid'>n</span> <span class='keyglyph'><-</span> <span class='varid'>compNumberExpr</span> <span class='varid'>e2</span>+<a name="line-413"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e1</span>+<a name="line-414"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mkEq'</span> <span class='varid'>a</span> <span class='varid'>n</span>+<a name="line-415"></a> <span class='layout'>)</span>+<a name="line-416"></a> <span class='varop'>`mplus`</span>+<a name="line-417"></a> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-418"></a> <span class='varid'>n</span> <span class='keyglyph'><-</span> <span class='varid'>compNumberExpr</span> <span class='varid'>e1</span>+<a name="line-419"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e2</span>+<a name="line-420"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mkEq'</span> <span class='varid'>a</span> <span class='varid'>n</span>+<a name="line-421"></a> <span class='layout'>)</span>+<a name="line-422"></a> <span class='keyword'>where</span>+<a name="line-423"></a> <span class='varid'>mkEq'</span> <span class='varid'>a'</span> <span class='varid'>n'</span> <span class='keyglyph'>=</span> <span class='varid'>mk</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>xNumber'</span> <span class='varid'>a'</span>+<a name="line-424"></a> <span class='varop'>>>></span>+<a name="line-425"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varid'>flip</span> <span class='layout'>(</span> <span class='keyword'>case</span> <span class='varid'>op</span> <span class='keyword'>of</span>+<a name="line-426"></a> <span class='conid'>Eq</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'>==</span><span class='layout'>)</span>+<a name="line-427"></a> <span class='conid'>NEq</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'>/=</span><span class='layout'>)</span>+<a name="line-428"></a> <span class='conid'>Less</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'><</span><span class='layout'>)</span>+<a name="line-429"></a> <span class='conid'>Greater</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'>></span><span class='layout'>)</span>+<a name="line-430"></a> <span class='conid'>LessEq</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'><=</span><span class='layout'>)</span>+<a name="line-431"></a> <span class='conid'>GreaterEq</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varop'>>=</span><span class='layout'>)</span>+<a name="line-432"></a> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='varid'>error</span> <span class='str'>"compNumber: wrong arg"</span>+<a name="line-433"></a> <span class='layout'>)</span> <span class='varid'>n'</span>+<a name="line-434"></a> <span class='layout'>)</span>+<a name="line-435"></a> <span class='layout'>)</span>+<a name="line-436"></a> <span class='varop'>`guards`</span> <span class='varid'>this</span>+<a name="line-437"></a> <span class='layout'>)</span>+<a name="line-438"></a><span class='definition'>compNumber</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-439"></a>+<a name="line-440"></a><a name="compBool"></a><span class='definition'>compBool</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Op</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-441"></a><span class='definition'>compBool</span> <span class='conid'>And</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-442"></a> <span class='varid'>b</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>e1</span>+<a name="line-443"></a> <span class='keyword'>if</span> <span class='varid'>b</span>+<a name="line-444"></a> <span class='keyword'>then</span> <span class='varid'>compGenExpr</span> <span class='varid'>e2</span>+<a name="line-445"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varid'>none</span>+<a name="line-446"></a> <span class='layout'>)</span>+<a name="line-447"></a> <span class='varop'>`mplus`</span>+<a name="line-448"></a> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-449"></a> <span class='varid'>b</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>e2</span>+<a name="line-450"></a> <span class='keyword'>if</span> <span class='varid'>b</span>+<a name="line-451"></a> <span class='keyword'>then</span> <span class='varid'>compGenExpr</span> <span class='varid'>e1</span>+<a name="line-452"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varid'>none</span>+<a name="line-453"></a> <span class='layout'>)</span>+<a name="line-454"></a> <span class='varop'>`mplus`</span>+<a name="line-455"></a> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-456"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compGenExpr</span> <span class='varid'>e1</span>+<a name="line-457"></a> <span class='varid'>a2</span> <span class='keyglyph'><-</span> <span class='varid'>compGenExpr</span> <span class='varid'>e2</span>+<a name="line-458"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>a1</span> <span class='varop'>`guards'`</span> <span class='varid'>a2</span>+<a name="line-459"></a> <span class='layout'>)</span>+<a name="line-460"></a><span class='definition'>compBool</span> <span class='conid'>Or</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-461"></a> <span class='varid'>b</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>e1</span>+<a name="line-462"></a> <span class='keyword'>if</span> <span class='varid'>b</span>+<a name="line-463"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='varid'>this'</span>+<a name="line-464"></a> <span class='keyword'>else</span> <span class='varid'>compGenExpr</span> <span class='varid'>e2</span>+<a name="line-465"></a> <span class='layout'>)</span>+<a name="line-466"></a> <span class='varop'>`mplus`</span>+<a name="line-467"></a> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-468"></a> <span class='varid'>b</span> <span class='keyglyph'><-</span> <span class='varid'>compBoolExpr</span> <span class='varid'>e2</span>+<a name="line-469"></a> <span class='keyword'>if</span> <span class='varid'>b</span>+<a name="line-470"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='varid'>this'</span>+<a name="line-471"></a> <span class='keyword'>else</span> <span class='varid'>compGenExpr</span> <span class='varid'>e1</span>+<a name="line-472"></a> <span class='layout'>)</span>+<a name="line-473"></a> <span class='varop'>`mplus`</span>+<a name="line-474"></a> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-475"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compGenExpr</span> <span class='varid'>e1</span>+<a name="line-476"></a> <span class='varid'>a2</span> <span class='keyglyph'><-</span> <span class='varid'>compGenExpr</span> <span class='varid'>e2</span>+<a name="line-477"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>a1</span> <span class='varop'><+>></span> <span class='varid'>a2</span>+<a name="line-478"></a> <span class='layout'>)</span>+<a name="line-479"></a><span class='definition'>compBool</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-480"></a>+<a name="line-481"></a><a name="compPath"></a><span class='definition'>compPath</span> <span class='keyglyph'>::</span> <span class='conid'>MonadPlus</span> <span class='varid'>m</span> <span class='keyglyph'>=></span> <span class='conid'>Op</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='varid'>m</span> <span class='layout'>(</span><span class='conid'>XPArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span><span class='layout'>)</span>+<a name="line-482"></a><span class='definition'>compPath</span> <span class='varid'>op</span> <span class='varid'>e1</span> <span class='varid'>e2</span>+<a name="line-483"></a> <span class='keyglyph'>|</span> <span class='varid'>op</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>NEq</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-484"></a> <span class='varid'>a1</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e2</span>+<a name="line-485"></a> <span class='varid'>a2</span> <span class='keyglyph'><-</span> <span class='varid'>compRelPathExpr</span> <span class='varid'>e1</span>+<a name="line-486"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>mk</span> <span class='varop'>.</span> <span class='varid'>cmp</span> <span class='varid'>op</span> <span class='varop'>$</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>listA</span> <span class='layout'>(</span><span class='varid'>xString</span> <span class='varid'>a1</span><span class='layout'>)</span> <span class='varop'>&&&</span> <span class='varid'>listA</span> <span class='layout'>(</span><span class='varid'>xString</span> <span class='varid'>a2</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-487"></a> <span class='varop'>>>></span>+<a name="line-488"></a> <span class='varid'>eqs</span>+<a name="line-489"></a> <span class='layout'>)</span>+<a name="line-490"></a> <span class='layout'>)</span>+<a name="line-491"></a> <span class='keyword'>where</span>+<a name="line-492"></a> <span class='varid'>eqs</span> <span class='keyglyph'>=</span> <span class='varid'>arr2L</span> <span class='varid'>equalNodeSet</span>+<a name="line-493"></a> <span class='varid'>cmp</span> <span class='conid'>Eq</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>a</span> <span class='varop'>`guards`</span> <span class='varid'>this</span>+<a name="line-494"></a> <span class='varid'>cmp</span> <span class='conid'>NEq</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>ifA</span> <span class='varid'>a</span> <span class='varid'>none</span> <span class='varid'>this</span>+<a name="line-495"></a> <span class='varid'>cmp</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='str'>"compPath: wrong agruments"</span>+<a name="line-496"></a>+<a name="line-497"></a><span class='definition'>compPath</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>+<a name="line-498"></a>+<a name="line-499"></a><span class='comment'>-- ----------------------------------------</span> <a name="line-500"></a>-<a name="line-501"></a><span class='definition'>compPath</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>deadEndStreet</span>-<a name="line-502"></a>-<a name="line-503"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-504"></a>-<a name="line-505"></a><a name="toNumber"></a><span class='definition'>toNumber</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XPNumber</span>-<a name="line-506"></a><span class='definition'>toNumber</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>let</span> <span class='layout'>(</span> <span class='conid'>XPVNumber</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>parseNumber</span> <span class='varid'>s</span> <span class='keyword'>in</span> <span class='varid'>v</span>-<a name="line-507"></a>-<a name="line-508"></a><a name="equalNodeSet"></a><span class='definition'>equalNodeSet</span> <span class='keyglyph'>::</span> <span class='conid'>Eq</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='varid'>a</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>-<a name="line-509"></a><span class='definition'>equalNodeSet</span> <span class='varid'>s1</span> <span class='varid'>s2</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>x</span> <span class='keyglyph'>|</span> <span class='varid'>x</span> <span class='keyglyph'><-</span> <span class='varid'>s1</span><span class='layout'>,</span> <span class='varid'>y</span> <span class='keyglyph'><-</span> <span class='varid'>s2</span><span class='layout'>,</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>y</span><span class='keyglyph'>]</span>-<a name="line-510"></a>-<a name="line-511"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-501"></a><a name="toNumber"></a><span class='definition'>toNumber</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XPNumber</span>+<a name="line-502"></a><span class='definition'>toNumber</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>let</span> <span class='layout'>(</span> <span class='conid'>XPVNumber</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>parseNumber</span> <span class='varid'>s</span> <span class='keyword'>in</span> <span class='varid'>v</span>+<a name="line-503"></a>+<a name="line-504"></a><a name="equalNodeSet"></a><span class='definition'>equalNodeSet</span> <span class='keyglyph'>::</span> <span class='conid'>Eq</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='varid'>a</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span><span class='keyglyph'>]</span>+<a name="line-505"></a><span class='definition'>equalNodeSet</span> <span class='varid'>s1</span> <span class='varid'>s2</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>x</span> <span class='keyglyph'>|</span> <span class='varid'>x</span> <span class='keyglyph'><-</span> <span class='varid'>s1</span><span class='layout'>,</span> <span class='varid'>y</span> <span class='keyglyph'><-</span> <span class='varid'>s2</span><span class='layout'>,</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>y</span><span class='keyglyph'>]</span>+<a name="line-506"></a>+<a name="line-507"></a><span class='comment'>-- ----------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-Arrow-XmlArrow.html view
@@ -10,44 +10,44 @@ <a name="line-2"></a> <a name="line-3"></a><span class='comment'>{- | <a name="line-4"></a> Module : Text.XML.HXT.Arrow.XmlArrow-<a name="line-5"></a> Copyright : Copyright (C) 2005 Uwe Schmidt+<a name="line-5"></a> Copyright : Copyright (C) 2005-9 Uwe Schmidt <a name="line-6"></a> License : MIT <a name="line-7"></a> <a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de) <a name="line-9"></a> Stability : experimental <a name="line-10"></a> Portability: portable-<a name="line-11"></a> Version : $Id: XmlArrow.hs,v 1.34 2006/11/02 16:43:39 hxml Exp $-<a name="line-12"></a>-<a name="line-13"></a> Basic arrows for processing XML documents-<a name="line-14"></a>-<a name="line-15"></a> All arrows use IO and a global state for options, errorhandling, ...-<a name="line-16"></a>-<a name="line-17"></a>-}</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-20"></a>-<a name="line-21"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>-<a name="line-22"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span> <span class='layout'>)</span>-<a name="line-23"></a><span class='keyword'>where</span>-<a name="line-24"></a>-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-26"></a>-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span> <span class='comment'>-- classes</span>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>-<a name="line-31"></a>-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrow</span> <span class='comment'>-- arrow types</span>-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>StateListArrow</span>-<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>IOListArrow</span>-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>IOStateListArrow</span>-<a name="line-36"></a>-<a name="line-37"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>-<a name="line-38"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span>-<a name="line-39"></a> <span class='layout'>(</span> <span class='varid'>isXmlSpaceChar</span>-<a name="line-40"></a> <span class='layout'>)</span>-<a name="line-41"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span> <span class='keyword'>as</span> <span class='conid'>XN</span>-<a name="line-42"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>ShowXml</span> <span class='keyword'>as</span> <span class='conid'>XS</span>+<a name="line-11"></a>+<a name="line-12"></a> Basic arrows for processing XML documents+<a name="line-13"></a>+<a name="line-14"></a> All arrows use IO and a global state for options, errorhandling, ...+<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'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>+<a name="line-21"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span> <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'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span> <span class='comment'>-- classes</span>+<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>+<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>+<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>+<a name="line-28"></a>+<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrow</span> <span class='comment'>-- arrow types</span>+<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>StateListArrow</span>+<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>IOListArrow</span>+<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>IOStateListArrow</span>+<a name="line-33"></a>+<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</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'>Interface</span>+<a name="line-37"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span> <span class='layout'>(</span> <span class='varid'>isXmlSpaceChar</span>+<a name="line-38"></a> <span class='layout'>)</span>+<a name="line-39"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span> <span class='keyword'>as</span> <span class='conid'>XN</span>+<a name="line-40"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>ShowXml</span> <span class='keyword'>as</span> <span class='conid'>XS</span>+<a name="line-41"></a>+<a name="line-42"></a><span class='comment'>-- ------------------------------------------------------------</span> <a name="line-43"></a> <a name="line-44"></a><span class='comment'>{- | Arrows for processing 'Text.XML.HXT.DOM.TypeDefs.XmlTree's <a name="line-45"></a>@@ -245,21 +245,21 @@ <a name="line-237"></a> <span class='varid'>mkqelem</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span> <a name="line-238"></a> <span class='varid'>mkqelem</span> <span class='varid'>n</span> <span class='varid'>afs</span> <span class='varid'>cfs</span> <span class='keyglyph'>=</span> <span class='varid'>mkElement</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>catA</span> <span class='varid'>afs</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>catA</span> <span class='varid'>cfs</span><span class='layout'>)</span> <a name="line-239"></a>-<a name="line-240"></a> <span class='comment'>-- | convenient arrow for element construction with strings instead of qualified names as tagnames, see also 'mkElement' and 'mkelem'</span>+<a name="line-240"></a> <span class='comment'>-- | convenient arrow for element construction with strings instead of qualified names as element names, see also 'mkElement' and 'mkelem'</span> <a name="line-241"></a> <span class='varid'>mkelem</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span>-<a name="line-242"></a> <span class='varid'>mkelem</span> <span class='varid'>n</span> <span class='varid'>afs</span> <span class='varid'>cfs</span> <span class='keyglyph'>=</span> <span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkSNsName</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>catA</span> <span class='varid'>afs</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>catA</span> <span class='varid'>cfs</span><span class='layout'>)</span>+<a name="line-242"></a> <span class='varid'>mkelem</span> <span class='varid'>n</span> <span class='varid'>afs</span> <span class='varid'>cfs</span> <span class='keyglyph'>=</span> <span class='varid'>mkElement</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'>catA</span> <span class='varid'>afs</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>catA</span> <span class='varid'>cfs</span><span class='layout'>)</span> <a name="line-243"></a> <a name="line-244"></a> <span class='comment'>-- | convenient arrow for element constrution with attributes but without content, simple variant of 'mkelem' and 'mkElement'</span> <a name="line-245"></a> <span class='varid'>aelem</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span>-<a name="line-246"></a> <span class='varid'>aelem</span> <span class='varid'>n</span> <span class='varid'>afs</span> <span class='keyglyph'>=</span> <span class='varid'>catA</span> <span class='varid'>afs</span> <span class='varop'>>.</span> <span class='keyglyph'>\</span> <span class='varid'>al</span> <span class='keyglyph'>-></span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkSNsName</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varid'>al</span> <span class='conid'>[]</span>+<a name="line-246"></a> <span class='varid'>aelem</span> <span class='varid'>n</span> <span class='varid'>afs</span> <span class='keyglyph'>=</span> <span class='varid'>catA</span> <span class='varid'>afs</span> <span class='varop'>>.</span> <span class='keyglyph'>\</span> <span class='varid'>al</span> <span class='keyglyph'>-></span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varid'>al</span> <span class='conid'>[]</span> <a name="line-247"></a> <a name="line-248"></a> <span class='comment'>-- | convenient arrow for simple element constrution without attributes, simple variant of 'mkelem' and 'mkElement'</span> <a name="line-249"></a> <span class='varid'>selem</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span>-<a name="line-250"></a> <span class='varid'>selem</span> <span class='varid'>n</span> <span class='varid'>cfs</span> <span class='keyglyph'>=</span> <span class='varid'>catA</span> <span class='varid'>cfs</span> <span class='varop'>>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkSNsName</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='conid'>[]</span>+<a name="line-250"></a> <span class='varid'>selem</span> <span class='varid'>n</span> <span class='varid'>cfs</span> <span class='keyglyph'>=</span> <span class='varid'>catA</span> <span class='varid'>cfs</span> <span class='varop'>>.</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='conid'>[]</span> <a name="line-251"></a> <a name="line-252"></a> <span class='comment'>-- | convenient arrow for constrution of empty elements without attributes, simple variant of 'mkelem' and 'mkElement'</span> <a name="line-253"></a> <span class='varid'>eelem</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span>-<a name="line-254"></a> <span class='varid'>eelem</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>constA</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkSNsName</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='conid'>[]</span> <span class='conid'>[]</span><span class='layout'>)</span>+<a name="line-254"></a> <span class='varid'>eelem</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>constA</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkElement</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='conid'>[]</span> <span class='conid'>[]</span><span class='layout'>)</span> <a name="line-255"></a> <a name="line-256"></a> <span class='comment'>-- | construction of an element node with name \"\/\" for document roots</span> <a name="line-257"></a> <span class='varid'>root</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span>@@ -271,7 +271,7 @@ <a name="line-263"></a> <a name="line-264"></a> <span class='comment'>-- | convenient arrow for attribute constrution, simple variant of 'mkAttr'</span> <a name="line-265"></a> <span class='varid'>attr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span>-<a name="line-266"></a> <span class='varid'>attr</span> <span class='keyglyph'>=</span> <span class='varid'>mkAttr</span> <span class='varop'>.</span> <span class='varid'>mkSNsName</span>+<a name="line-266"></a> <span class='varid'>attr</span> <span class='keyglyph'>=</span> <span class='varid'>mkAttr</span> <span class='varop'>.</span> <span class='varid'>mkName</span> <a name="line-267"></a> <a name="line-268"></a> <span class='comment'>-- constant arrows (ignoring the input) for tree construction ------------------------------</span> <a name="line-269"></a>@@ -305,7 +305,7 @@ <a name="line-297"></a> <a name="line-298"></a> <span class='comment'>-- | constant arrow for simple processing instructions, see 'mkPi'</span> <a name="line-299"></a> <span class='varid'>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='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span>-<a name="line-300"></a> <span class='varid'>spi</span> <span class='varid'>piName</span> <span class='varid'>piCont</span> <span class='keyglyph'>=</span> <span class='varid'>constA</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkPi</span> <span class='layout'>(</span><span class='varid'>mkSNsName</span> <span class='varid'>piName</span><span class='layout'>)</span> <span class='keyglyph'>[</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='varid'>piCont</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-300"></a> <span class='varid'>spi</span> <span class='varid'>piName</span> <span class='varid'>piCont</span> <span class='keyglyph'>=</span> <span class='varid'>constA</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkPi</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>piName</span><span class='layout'>)</span> <span class='keyglyph'>[</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='varid'>piCont</span><span class='keyglyph'>]</span><span class='layout'>)</span> <a name="line-301"></a> <a name="line-302"></a> <span class='comment'>-- | constant arrow for attribute nodes, attribute name is a qualified name and value is a text,</span> <a name="line-303"></a> <span class='comment'>-- | see also 'mkAttr', 'qattr', 'attr'</span>@@ -315,7 +315,7 @@ <a name="line-307"></a> <span class='comment'>-- | constant arrow for attribute nodes, attribute name and value are</span> <a name="line-308"></a> <span class='comment'>-- | given by parameters, see 'mkAttr'</span> <a name="line-309"></a> <span class='varid'>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='varid'>a</span> <span class='varid'>n</span> <span class='conid'>XmlTree</span>-<a name="line-310"></a> <span class='varid'>sattr</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='keyglyph'>=</span> <span class='varid'>constA</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkAttr</span> <span class='layout'>(</span><span class='varid'>mkSNsName</span> <span class='varid'>an</span><span class='layout'>)</span> <span class='keyglyph'>[</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='varid'>av</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-310"></a> <span class='varid'>sattr</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='keyglyph'>=</span> <span class='varid'>constA</span> <span class='layout'>(</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkAttr</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>an</span><span class='layout'>)</span> <span class='keyglyph'>[</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='varid'>av</span><span class='keyglyph'>]</span><span class='layout'>)</span> <a name="line-311"></a> <a name="line-312"></a> <span class='comment'>-- selector arrows --------------------------------------------------</span> <a name="line-313"></a>
doc/hdoc/src/Text-XML-HXT-Arrow-XmlIOStateArrow.html view
@@ -109,846 +109,855 @@ <a name="line-101"></a> <span class='varid'>withTraceLevel</span><span class='layout'>,</span> <a name="line-102"></a> <span class='varid'>trace</span><span class='layout'>,</span> <a name="line-103"></a> <span class='varid'>traceMsg</span><span class='layout'>,</span>-<a name="line-104"></a> <span class='varid'>traceString</span><span class='layout'>,</span>-<a name="line-105"></a> <span class='varid'>traceSource</span><span class='layout'>,</span>-<a name="line-106"></a> <span class='varid'>traceTree</span><span class='layout'>,</span>-<a name="line-107"></a> <span class='varid'>traceDoc</span><span class='layout'>,</span>-<a name="line-108"></a> <span class='varid'>traceState</span><span class='layout'>,</span>-<a name="line-109"></a>-<a name="line-110"></a> <span class='comment'>-- * URI Manipulation</span>-<a name="line-111"></a> <span class='varid'>expandURIString</span><span class='layout'>,</span>-<a name="line-112"></a> <span class='varid'>expandURI</span><span class='layout'>,</span>-<a name="line-113"></a> <span class='varid'>mkAbsURI</span><span class='layout'>,</span>-<a name="line-114"></a>-<a name="line-115"></a> <span class='varid'>getFragmentFromURI</span><span class='layout'>,</span>-<a name="line-116"></a> <span class='varid'>getPathFromURI</span><span class='layout'>,</span>-<a name="line-117"></a> <span class='varid'>getPortFromURI</span><span class='layout'>,</span>-<a name="line-118"></a> <span class='varid'>getQueryFromURI</span><span class='layout'>,</span>-<a name="line-119"></a> <span class='varid'>getRegNameFromURI</span><span class='layout'>,</span>-<a name="line-120"></a> <span class='varid'>getSchemeFromURI</span><span class='layout'>,</span>-<a name="line-121"></a> <span class='varid'>getUserInfoFromURI</span><span class='layout'>,</span>-<a name="line-122"></a>-<a name="line-123"></a> <span class='comment'>-- * Mime Type Handling</span>-<a name="line-124"></a> <span class='varid'>setMimeTypeTable</span><span class='layout'>,</span>-<a name="line-125"></a> <span class='varid'>setMimeTypeTableFromFile</span>-<a name="line-126"></a> <span class='layout'>)</span>-<a name="line-127"></a><span class='keyword'>where</span>-<a name="line-128"></a>-<a name="line-129"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span> <span class='comment'>-- arrow classes</span>-<a name="line-130"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>-<a name="line-131"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>-<a name="line-132"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>-<a name="line-133"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIO</span>-<a name="line-134"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>IOStateListArrow</span>-<a name="line-135"></a>-<a name="line-136"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Parallel</span><span class='varop'>.</span><span class='conid'>Strategies</span>-<a name="line-137"></a>-<a name="line-138"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>-<a name="line-139"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>-<a name="line-140"></a>-<a name="line-141"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>-<a name="line-142"></a> <span class='layout'>(</span> <span class='varid'>addHeadlineToXmlDoc</span>-<a name="line-143"></a> <span class='layout'>,</span> <span class='varid'>treeRepOfXmlDoc</span>-<a name="line-144"></a> <span class='layout'>,</span> <span class='varid'>indentDoc</span>-<a name="line-145"></a> <span class='layout'>)</span>-<a name="line-146"></a>-<a name="line-147"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-148"></a>-<a name="line-149"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>-<a name="line-150"></a> <span class='layout'>(</span> <span class='conid'>URI</span>-<a name="line-151"></a> <span class='layout'>,</span> <span class='varid'>escapeURIChar</span>-<a name="line-152"></a> <span class='layout'>,</span> <span class='varid'>isUnescapedInURI</span>-<a name="line-153"></a> <span class='layout'>,</span> <span class='varid'>nonStrictRelativeTo</span>-<a name="line-154"></a> <span class='layout'>,</span> <span class='varid'>parseURIReference</span>-<a name="line-155"></a> <span class='layout'>,</span> <span class='varid'>uriAuthority</span>-<a name="line-156"></a> <span class='layout'>,</span> <span class='varid'>uriFragment</span>-<a name="line-157"></a> <span class='layout'>,</span> <span class='varid'>uriPath</span>-<a name="line-158"></a> <span class='layout'>,</span> <span class='varid'>uriPort</span>-<a name="line-159"></a> <span class='layout'>,</span> <span class='varid'>uriQuery</span>-<a name="line-160"></a> <span class='layout'>,</span> <span class='varid'>uriRegName</span>-<a name="line-161"></a> <span class='layout'>,</span> <span class='varid'>uriScheme</span>-<a name="line-162"></a> <span class='layout'>,</span> <span class='varid'>uriUserInfo</span>-<a name="line-163"></a> <span class='layout'>)</span>-<a name="line-164"></a>-<a name="line-165"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>-<a name="line-166"></a> <span class='layout'>(</span> <span class='varid'>hPutStrLn</span>-<a name="line-167"></a> <span class='layout'>,</span> <span class='varid'>hFlush</span>-<a name="line-168"></a> <span class='layout'>,</span> <span class='varid'>stderr</span>-<a name="line-169"></a> <span class='layout'>)</span>-<a name="line-170"></a>-<a name="line-171"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Directory</span>-<a name="line-172"></a> <span class='layout'>(</span> <span class='varid'>getCurrentDirectory</span>-<a name="line-173"></a> <span class='layout'>)</span>-<a name="line-174"></a>-<a name="line-175"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-176"></a><span class='comment'>{- $datatypes -}</span>-<a name="line-177"></a>-<a name="line-178"></a>-<a name="line-179"></a><span class='comment'>-- |</span>-<a name="line-180"></a><span class='comment'>-- predefined system state data type with all components for the</span>-<a name="line-181"></a><span class='comment'>-- system functions, like trace, error handling, ...</span>-<a name="line-182"></a>-<a name="line-183"></a><a name="XIOSysState"></a><span class='keyword'>data</span> <span class='conid'>XIOSysState</span> <span class='keyglyph'>=</span> <span class='conid'>XIOSys</span> <span class='layout'>{</span> <span class='varid'>xio_trace</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Int</span>-<a name="line-184"></a> <span class='layout'>,</span> <span class='varid'>xio_errorStatus</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Int</span>-<a name="line-185"></a> <span class='layout'>,</span> <span class='varid'>xio_errorModule</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>-<a name="line-186"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgHandler</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='conid'>()</span>-<a name="line-187"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Bool</span>-<a name="line-188"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>XmlTrees</span>-<a name="line-189"></a> <span class='layout'>,</span> <span class='varid'>xio_baseURI</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>-<a name="line-190"></a> <span class='layout'>,</span> <span class='varid'>xio_defaultBaseURI</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>-<a name="line-191"></a> <span class='layout'>,</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span><span class='layout'>)</span>-<a name="line-192"></a> <span class='layout'>,</span> <span class='varid'>xio_mimeTypes</span> <span class='keyglyph'>::</span> <span class='conid'>MimeTypeTable</span>-<a name="line-193"></a> <span class='layout'>}</span>-<a name="line-194"></a>-<a name="line-195"></a><span class='keyword'>instance</span> <span class='conid'>NFData</span> <span class='conid'>XIOSysState</span> <span class='keyword'>where</span>-<a name="line-196"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XIOSys</span> <span class='varid'>tr</span> <span class='varid'>es</span> <span class='varid'>em</span> <span class='sel'>_emh</span> <span class='varid'>emc</span> <span class='varid'>eml</span> <span class='varid'>bu</span> <span class='varid'>du</span> <span class='varid'>al</span> <span class='sel'>_mt</span><span class='layout'>)</span>-<a name="line-197"></a> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>tr</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>es</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>em</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>emc</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>eml</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>bu</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>du</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>al</span>-<a name="line-198"></a>-<a name="line-199"></a><span class='comment'>-- |</span>-<a name="line-200"></a><span class='comment'>-- state datatype consists of a system state and a user state</span>-<a name="line-201"></a><span class='comment'>-- the user state is not fixed</span>-<a name="line-202"></a>-<a name="line-203"></a><a name="XIOState"></a><span class='keyword'>data</span> <span class='conid'>XIOState</span> <span class='varid'>us</span> <span class='keyglyph'>=</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>XIOSysState</span>-<a name="line-204"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='varid'>us</span>-<a name="line-205"></a> <span class='layout'>}</span>-<a name="line-206"></a>-<a name="line-207"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>NFData</span> <span class='varid'>us</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>NFData</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>us</span><span class='layout'>)</span> <span class='keyword'>where</span>-<a name="line-208"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>sys</span> <span class='varid'>usr</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>sys</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>usr</span>-<a name="line-209"></a>-<a name="line-210"></a><span class='comment'>-- |</span>-<a name="line-211"></a><span class='comment'>-- The arrow type for stateful arrows</span>-<a name="line-212"></a>-<a name="line-213"></a><a name="IOStateArrow"></a><span class='keyword'>type</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>b</span> <span class='varid'>c</span>-<a name="line-214"></a>-<a name="line-215"></a><span class='comment'>-- |</span>-<a name="line-216"></a><span class='comment'>-- The arrow for stateful arrows with no user defined state</span>-<a name="line-217"></a>-<a name="line-218"></a><a name="IOSArrow"></a><span class='keyword'>type</span> <span class='conid'>IOSArrow</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='conid'>IOStateArrow</span> <span class='conid'>()</span> <span class='varid'>b</span> <span class='varid'>c</span>-<a name="line-219"></a>-<a name="line-220"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-221"></a>-<a name="line-222"></a>-<a name="line-223"></a><span class='comment'>-- | the default global state, used as initial state when running an 'IOSArrow' with 'runIOSLA' or</span>-<a name="line-224"></a><span class='comment'>-- 'runX'</span>-<a name="line-225"></a>-<a name="line-226"></a><a name="initialState"></a><span class='definition'>initialState</span> <span class='keyglyph'>::</span> <span class='varid'>us</span> <span class='keyglyph'>-></span> <span class='conid'>XIOState</span> <span class='varid'>us</span>-<a name="line-227"></a><span class='definition'>initialState</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>initialSysState</span>-<a name="line-228"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>s</span>-<a name="line-229"></a> <span class='layout'>}</span>-<a name="line-230"></a>-<a name="line-231"></a><a name="initialSysState"></a><span class='definition'>initialSysState</span> <span class='keyglyph'>::</span> <span class='conid'>XIOSysState</span>-<a name="line-232"></a><span class='definition'>initialSysState</span> <span class='keyglyph'>=</span> <span class='conid'>XIOSys</span> <span class='layout'>{</span> <span class='varid'>xio_trace</span> <span class='keyglyph'>=</span> <span class='num'>0</span>-<a name="line-233"></a> <span class='layout'>,</span> <span class='varid'>xio_errorStatus</span> <span class='keyglyph'>=</span> <span class='varid'>c_ok</span>-<a name="line-234"></a> <span class='layout'>,</span> <span class='varid'>xio_errorModule</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-235"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgHandler</span> <span class='keyglyph'>=</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span>-<a name="line-236"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-237"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-238"></a> <span class='layout'>,</span> <span class='varid'>xio_baseURI</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-239"></a> <span class='layout'>,</span> <span class='varid'>xio_defaultBaseURI</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-240"></a> <span class='layout'>,</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-241"></a> <span class='layout'>,</span> <span class='varid'>xio_mimeTypes</span> <span class='keyglyph'>=</span> <span class='varid'>defaultMimeTypeTable</span>-<a name="line-242"></a> <span class='layout'>}</span>-<a name="line-243"></a>-<a name="line-244"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-245"></a>-<a name="line-246"></a><span class='comment'>-- |</span>-<a name="line-247"></a><span class='comment'>-- apply an 'IOSArrow' to an empty root node with 'initialState' () as initial state</span>-<a name="line-248"></a><span class='comment'>--</span>-<a name="line-249"></a><span class='comment'>-- the main entry point for running a state arrow with IO</span>-<a name="line-250"></a><span class='comment'>--</span>-<a name="line-251"></a><span class='comment'>-- when running @ runX f@ an empty XML root node is applied to @f@.</span>-<a name="line-252"></a><span class='comment'>-- usually @f@ will start with a constant arrow (ignoring the input), e.g. a 'Text.XML.HXT.Arrow.ReadDocument.readDocument' arrow.</span>-<a name="line-253"></a><span class='comment'>--</span>-<a name="line-254"></a><span class='comment'>-- for usage see examples with 'Text.XML.HXT.Arrow.WriteDocument.writeDocument'</span>-<a name="line-255"></a><span class='comment'>--</span>-<a name="line-256"></a><span class='comment'>-- if input has to be feed into the arrow use 'Control.Arrow.IOStateListArrow.runIOSLA' like in @ runIOSLA f emptyX inputDoc @</span>-<a name="line-257"></a>-<a name="line-258"></a><a name="runX"></a><span class='definition'>runX</span> <span class='keyglyph'>::</span> <span class='conid'>IOSArrow</span> <span class='conid'>XmlTree</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span>-<a name="line-259"></a><span class='definition'>runX</span> <span class='keyglyph'>=</span> <span class='varid'>runXIOState</span> <span class='layout'>(</span><span class='varid'>initialState</span> <span class='conid'>()</span><span class='layout'>)</span>-<a name="line-260"></a>-<a name="line-261"></a><a name="runXIOState"></a><span class='definition'>runXIOState</span> <span class='keyglyph'>::</span> <span class='conid'>XIOState</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span>-<a name="line-262"></a><span class='definition'>runXIOState</span> <span class='varid'>s0</span> <span class='varid'>f</span>-<a name="line-263"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-264"></a> <span class='layout'>(</span><span class='sel'>_finalState</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>runIOSLA</span> <span class='layout'>(</span><span class='varid'>emptyRoot</span> <span class='varop'>>>></span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varid'>s0</span> <span class='varid'>undefined</span>-<a name="line-265"></a> <span class='varid'>return</span> <span class='varid'>res</span>-<a name="line-266"></a> <span class='keyword'>where</span>-<a name="line-267"></a> <span class='varid'>emptyRoot</span> <span class='keyglyph'>=</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='conid'>[]</span>-<a name="line-268"></a>-<a name="line-269"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-270"></a>-<a name="line-271"></a><span class='comment'>{- user state -}</span>-<a name="line-272"></a>-<a name="line-273"></a><span class='comment'>-- | read the user defined part of the state</span>-<a name="line-274"></a>-<a name="line-275"></a><a name="getUserState"></a><span class='definition'>getUserState</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>s</span>-<a name="line-276"></a><span class='definition'>getUserState</span>-<a name="line-277"></a> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span>-<a name="line-278"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>xio_userState</span> <span class='varid'>s</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-279"></a>-<a name="line-280"></a><span class='comment'>-- | change the user defined part of the state</span>-<a name="line-281"></a>-<a name="line-282"></a><a name="changeUserState"></a><span class='definition'>changeUserState</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-283"></a><span class='definition'>changeUserState</span> <span class='varid'>cf</span>-<a name="line-284"></a> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>v</span> <span class='keyglyph'>-></span>-<a name="line-285"></a> <span class='keyword'>let</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>cf</span> <span class='varid'>v</span> <span class='layout'>(</span><span class='varid'>xio_userState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-286"></a> <span class='keyword'>in</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>v</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-287"></a>-<a name="line-288"></a><span class='comment'>-- | set the user defined part of the state</span>-<a name="line-289"></a>-<a name="line-290"></a><a name="setUserState"></a><span class='definition'>setUserState</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>s</span> <span class='varid'>s</span>-<a name="line-291"></a><span class='definition'>setUserState</span>-<a name="line-292"></a> <span class='keyglyph'>=</span> <span class='varid'>changeUserState</span> <span class='varid'>const</span>-<a name="line-293"></a>-<a name="line-294"></a><span class='comment'>-- | extend user state</span>-<a name="line-295"></a><span class='comment'>--</span>-<a name="line-296"></a><span class='comment'>-- Run an arrow with an extended user state component, The old component</span>-<a name="line-297"></a><span class='comment'>-- is stored together with a new one in a pair, the arrow is executed with this</span>-<a name="line-298"></a><span class='comment'>-- extended state, and the augmented state component is removed form the state</span>-<a name="line-299"></a><span class='comment'>-- when the arrow has finished its execution</span>-<a name="line-300"></a>-<a name="line-301"></a><a name="withExtendedUserState"></a><span class='definition'>withExtendedUserState</span> <span class='keyglyph'>::</span> <span class='varid'>s1</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='layout'>(</span><span class='varid'>s1</span><span class='layout'>,</span> <span class='varid'>s0</span><span class='layout'>)</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s0</span> <span class='varid'>b</span> <span class='varid'>c</span>-<a name="line-302"></a><span class='definition'>withExtendedUserState</span> <span class='varid'>initS1</span> <span class='varid'>f</span>-<a name="line-303"></a> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s0</span> <span class='varid'>x</span> <span class='keyglyph'>-></span>-<a name="line-304"></a> <span class='keyword'>do</span>-<a name="line-305"></a> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>finalS</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>runIOSLA</span> <span class='varid'>f</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span> <span class='varid'>s0</span>-<a name="line-306"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>initS1</span><span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='varid'>s0</span><span class='layout'>)</span>-<a name="line-307"></a> <span class='layout'>}</span>-<a name="line-308"></a> <span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-309"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span> <span class='varid'>finalS</span>-<a name="line-310"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>snd</span> <span class='layout'>(</span><span class='varid'>xio_userState</span> <span class='varid'>finalS</span><span class='layout'>)</span>-<a name="line-311"></a> <span class='layout'>}</span>-<a name="line-312"></a> <span class='layout'>,</span> <span class='varid'>res</span>-<a name="line-313"></a> <span class='layout'>)</span>-<a name="line-314"></a>-<a name="line-315"></a><span class='comment'>-- | change the type of user state</span>-<a name="line-316"></a><span class='comment'>--</span>-<a name="line-317"></a><span class='comment'>-- This conversion is useful, when running a state arrow with another</span>-<a name="line-318"></a><span class='comment'>-- structure of the user state, e.g. with () when executing some IO arrows</span>-<a name="line-319"></a>-<a name="line-320"></a><a name="withOtherUserState"></a><span class='definition'>withOtherUserState</span> <span class='keyglyph'>::</span> <span class='varid'>s1</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s1</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s0</span> <span class='varid'>b</span> <span class='varid'>c</span>-<a name="line-321"></a><span class='definition'>withOtherUserState</span> <span class='varid'>s1</span> <span class='varid'>f</span>-<a name="line-322"></a> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>x</span> <span class='keyglyph'>-></span>-<a name="line-323"></a> <span class='keyword'>do</span>-<a name="line-324"></a> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>runIOSLA</span> <span class='varid'>f</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span> <span class='varid'>s</span>-<a name="line-325"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>s1</span>-<a name="line-326"></a> <span class='layout'>}</span>-<a name="line-327"></a> <span class='layout'>)</span> <span class='varid'>x</span>-<a name="line-328"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span> <span class='varid'>s'</span>-<a name="line-329"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_userState</span> <span class='varid'>s</span>-<a name="line-330"></a> <span class='layout'>}</span>-<a name="line-331"></a> <span class='layout'>,</span> <span class='varid'>res</span>-<a name="line-332"></a> <span class='layout'>)</span>-<a name="line-333"></a>-<a name="line-334"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-335"></a>-<a name="line-336"></a><span class='comment'>{- $system state params -}</span>-<a name="line-337"></a>-<a name="line-338"></a><a name="getSysParam"></a><span class='definition'>getSysParam</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>XIOSysState</span> <span class='keyglyph'>-></span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>-<a name="line-339"></a><span class='definition'>getSysParam</span> <span class='varid'>f</span>-<a name="line-340"></a> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='sel'>_x</span> <span class='keyglyph'>-></span>-<a name="line-341"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>f</span> <span class='varop'>.</span> <span class='varid'>xio_sysState</span> <span class='varop'>$</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-342"></a>-<a name="line-343"></a><a name="changeSysParam"></a><span class='definition'>changeSysParam</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XIOSysState</span> <span class='keyglyph'>-></span> <span class='conid'>XIOSysState</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-344"></a><span class='definition'>changeSysParam</span> <span class='varid'>cf</span>-<a name="line-345"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>v</span> <span class='keyglyph'>-></span>-<a name="line-346"></a> <span class='keyword'>let</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>changeSysState</span> <span class='layout'>(</span><span class='varid'>cf</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='varid'>s</span>-<a name="line-347"></a> <span class='keyword'>in</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>v</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-348"></a> <span class='layout'>)</span>-<a name="line-349"></a> <span class='keyword'>where</span>-<a name="line-350"></a> <span class='varid'>changeSysState</span> <span class='varid'>css</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>css</span> <span class='layout'>(</span><span class='varid'>xio_sysState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-351"></a>-<a name="line-352"></a><span class='comment'>-- | store a single XML tree in global state under a given attribute name</span>-<a name="line-353"></a>-<a name="line-354"></a><a name="setParam"></a><span class='definition'>setParam</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-355"></a><span class='definition'>setParam</span> <span class='varid'>n</span>-<a name="line-356"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span> <span class='varop'>^>></span> <span class='varid'>setParamList</span> <span class='varid'>n</span>-<a name="line-357"></a>-<a name="line-358"></a><span class='comment'>-- | store a list of XML trees in global system state under a given attribute name</span>-<a name="line-359"></a>-<a name="line-360"></a><a name="setParamList"></a><span class='definition'>setParamList</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTrees</span> <span class='conid'>XmlTree</span>-<a name="line-361"></a><span class='definition'>setParamList</span> <span class='varid'>n</span>-<a name="line-362"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>addE</span>-<a name="line-363"></a> <span class='varop'>>>></span>-<a name="line-364"></a> <span class='varid'>arrL</span> <span class='varid'>id</span>-<a name="line-365"></a> <span class='keyword'>where</span>-<a name="line-366"></a> <span class='varid'>addE</span> <span class='varid'>x</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>=</span> <span class='varid'>addEntry</span> <span class='varid'>n</span> <span class='varid'>x</span> <span class='layout'>(</span><span class='varid'>xio_attrList</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-367"></a>-<a name="line-368"></a><span class='comment'>-- | remove an entry in global state, arrow input remains unchanged</span>-<a name="line-369"></a>-<a name="line-370"></a><a name="unsetParam"></a><span class='definition'>unsetParam</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-371"></a><span class='definition'>unsetParam</span> <span class='varid'>n</span>-<a name="line-372"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>delE</span>-<a name="line-373"></a> <span class='keyword'>where</span>-<a name="line-374"></a> <span class='varid'>delE</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>=</span> <span class='varid'>delEntry</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>xio_attrList</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>-<a name="line-375"></a>-<a name="line-376"></a><span class='comment'>-- | read an attribute value from global state</span>-<a name="line-377"></a>-<a name="line-378"></a><a name="getParam"></a><span class='definition'>getParam</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>-<a name="line-379"></a><span class='definition'>getParam</span> <span class='varid'>n</span>-<a name="line-380"></a> <span class='keyglyph'>=</span> <span class='varid'>getAllParams</span>-<a name="line-381"></a> <span class='varop'>>>></span>-<a name="line-382"></a> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-383"></a>-<a name="line-384"></a><span class='comment'>-- | read all attributes from global state</span>-<a name="line-385"></a>-<a name="line-386"></a><a name="getAllParams"></a><span class='definition'>getAllParams</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span><span class='layout'>)</span>-<a name="line-387"></a><span class='definition'>getAllParams</span>-<a name="line-388"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_attrList</span>-<a name="line-389"></a>-<a name="line-390"></a><span class='comment'>-- | read all attributes from global state</span>-<a name="line-391"></a><span class='comment'>-- and convert the values to strings</span>-<a name="line-392"></a>-<a name="line-393"></a><a name="getAllParamsString"></a><span class='definition'>getAllParamsString</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-394"></a><span class='definition'>getAllParamsString</span>-<a name="line-395"></a> <span class='keyglyph'>=</span> <span class='varid'>getAllParams</span>-<a name="line-396"></a> <span class='varop'>>>></span>-<a name="line-397"></a> <span class='varid'>listA</span> <span class='layout'>(</span> <span class='varid'>unlistA</span>-<a name="line-398"></a> <span class='varop'>>>></span>-<a name="line-399"></a> <span class='varid'>second</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>unlistA</span><span class='layout'>)</span>-<a name="line-400"></a> <span class='layout'>)</span>-<a name="line-401"></a>-<a name="line-402"></a><a name="setParamString"></a><span class='definition'>setParamString</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-403"></a><span class='definition'>setParamString</span> <span class='varid'>n</span> <span class='varid'>v</span>-<a name="line-404"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>txt</span> <span class='varid'>v</span>-<a name="line-405"></a> <span class='varop'>>>></span>-<a name="line-406"></a> <span class='varid'>setParam</span> <span class='varid'>n</span>-<a name="line-407"></a> <span class='layout'>)</span>-<a name="line-408"></a>-<a name="line-409"></a><span class='comment'>-- | read a string value from global state,</span>-<a name="line-410"></a><span class='comment'>-- if parameter not set \"\" is returned</span>-<a name="line-411"></a>-<a name="line-412"></a><a name="getParamString"></a><span class='definition'>getParamString</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>-<a name="line-413"></a><span class='definition'>getParamString</span> <span class='varid'>n</span>-<a name="line-414"></a> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='layout'>(</span><span class='varid'>getParam</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-415"></a>-<a name="line-416"></a><span class='comment'>-- | store an int value in global state</span>-<a name="line-417"></a>-<a name="line-418"></a><a name="setParamInt"></a><span class='definition'>setParamInt</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-419"></a><span class='definition'>setParamInt</span> <span class='varid'>n</span> <span class='varid'>v</span>-<a name="line-420"></a> <span class='keyglyph'>=</span> <span class='varid'>setParamString</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>v</span><span class='layout'>)</span>-<a name="line-421"></a>-<a name="line-422"></a><span class='comment'>-- | read an int value from global state</span>-<a name="line-423"></a><span class='comment'>-- </span>-<a name="line-424"></a><span class='comment'>-- > getParamInt 0 myIntAttr</span>-<a name="line-425"></a>-<a name="line-426"></a><a name="getParamInt"></a><span class='definition'>getParamInt</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>Int</span>-<a name="line-427"></a><span class='definition'>getParamInt</span> <span class='varid'>def</span> <span class='varid'>n</span>-<a name="line-428"></a> <span class='keyglyph'>=</span> <span class='varid'>getParamString</span> <span class='varid'>n</span>-<a name="line-429"></a> <span class='varop'>>>^</span>-<a name="line-430"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>x</span> <span class='keyword'>then</span> <span class='varid'>def</span> <span class='keyword'>else</span> <span class='varid'>read</span> <span class='varid'>x</span><span class='layout'>)</span>-<a name="line-431"></a>-<a name="line-432"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-433"></a>-<a name="line-434"></a><span class='comment'>-- | reset global error variable</span>-<a name="line-435"></a>-<a name="line-436"></a><a name="changeErrorStatus"></a><span class='definition'>changeErrorStatus</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>-<a name="line-437"></a><span class='definition'>changeErrorStatus</span> <span class='varid'>f</span>-<a name="line-438"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>l</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorStatus</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>l</span> <span class='layout'>(</span><span class='varid'>xio_errorStatus</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span><span class='layout'>)</span>-<a name="line-439"></a>-<a name="line-440"></a><a name="clearErrStatus"></a><span class='definition'>clearErrStatus</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-441"></a><span class='definition'>clearErrStatus</span>-<a name="line-442"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>constA</span> <span class='num'>0</span> <span class='varop'>>>></span> <span class='varid'>changeErrorStatus</span> <span class='varid'>min</span><span class='layout'>)</span>-<a name="line-443"></a>-<a name="line-444"></a><span class='comment'>-- | set global error variable</span>-<a name="line-445"></a>-<a name="line-446"></a><a name="setErrStatus"></a><span class='definition'>setErrStatus</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>-<a name="line-447"></a><span class='definition'>setErrStatus</span>-<a name="line-448"></a> <span class='keyglyph'>=</span> <span class='varid'>changeErrorStatus</span> <span class='varid'>max</span>-<a name="line-449"></a>-<a name="line-450"></a><span class='comment'>-- | read current global error status</span>-<a name="line-451"></a>-<a name="line-452"></a><a name="getErrStatus"></a><span class='definition'>getErrStatus</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>Int</span>-<a name="line-453"></a><span class='definition'>getErrStatus</span>-<a name="line-454"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_errorStatus</span>-<a name="line-455"></a>-<a name="line-456"></a><span class='comment'>-- | raise the global error status level to that of the input tree</span>-<a name="line-457"></a>-<a name="line-458"></a><a name="setErrMsgStatus"></a><span class='definition'>setErrMsgStatus</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-459"></a><span class='definition'>setErrMsgStatus</span>-<a name="line-460"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getErrorLevel</span>-<a name="line-461"></a> <span class='varop'>>>></span>-<a name="line-462"></a> <span class='varid'>setErrStatus</span>-<a name="line-463"></a> <span class='layout'>)</span>-<a name="line-464"></a>-<a name="line-465"></a><span class='comment'>-- | set the error message handler and the flag for collecting the errors</span>-<a name="line-466"></a>-<a name="line-467"></a><a name="setErrorMsgHandler"></a><span class='definition'>setErrorMsgHandler</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='conid'>()</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-468"></a><span class='definition'>setErrorMsgHandler</span> <span class='varid'>c</span> <span class='varid'>f</span>-<a name="line-469"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>cf</span>-<a name="line-470"></a> <span class='keyword'>where</span>-<a name="line-471"></a> <span class='varid'>cf</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgHandler</span> <span class='keyglyph'>=</span> <span class='varid'>f</span>-<a name="line-472"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='layout'>}</span>-<a name="line-473"></a>-<a name="line-474"></a><span class='comment'>-- | error message handler for output to stderr</span>-<a name="line-475"></a> -<a name="line-476"></a><a name="sysErrorMsg"></a><span class='definition'>sysErrorMsg</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-477"></a><span class='definition'>sysErrorMsg</span>-<a name="line-478"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getErrorLevel</span> <span class='varop'>&&&</span> <span class='varid'>getErrorMsg</span>-<a name="line-479"></a> <span class='varop'>>>></span>-<a name="line-480"></a> <span class='varid'>arr</span> <span class='varid'>formatErrorMsg</span>-<a name="line-481"></a> <span class='varop'>>>></span>-<a name="line-482"></a> <span class='layout'>(</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>e</span> <span class='keyglyph'>-></span>-<a name="line-483"></a> <span class='keyword'>do</span>-<a name="line-484"></a> <span class='layout'>(</span><span class='varid'>xio_errorMsgHandler</span> <span class='varop'>.</span> <span class='varid'>xio_sysState</span> <span class='varop'>$</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>e</span>-<a name="line-485"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>undefined</span><span class='layout'>)</span>-<a name="line-486"></a> <span class='layout'>)</span>-<a name="line-487"></a> <span class='layout'>)</span>-<a name="line-488"></a> <span class='keyword'>where</span>-<a name="line-489"></a> <span class='varid'>formatErrorMsg</span> <span class='layout'>(</span><span class='varid'>level</span><span class='layout'>,</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"\n"</span> <span class='varop'>++</span> <span class='varid'>errClass</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>": "</span> <span class='varop'>++</span> <span class='varid'>msg</span>-<a name="line-490"></a> <span class='varid'>errClass</span> <span class='varid'>l</span>-<a name="line-491"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>"fatal error"</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>l</span> <span class='varop'>$</span> <span class='varid'>msgList</span>-<a name="line-492"></a> <span class='keyword'>where</span>-<a name="line-493"></a> <span class='varid'>msgList</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>c_ok</span><span class='layout'>,</span> <span class='str'>"no error"</span><span class='layout'>)</span>-<a name="line-494"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_warn</span><span class='layout'>,</span> <span class='str'>"warning"</span><span class='layout'>)</span>-<a name="line-495"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_err</span><span class='layout'>,</span> <span class='str'>"error"</span><span class='layout'>)</span>-<a name="line-496"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>c_fatal</span><span class='layout'>,</span> <span class='str'>"fatal error"</span><span class='layout'>)</span>-<a name="line-497"></a> <span class='keyglyph'>]</span>-<a name="line-498"></a>-<a name="line-499"></a>-<a name="line-500"></a><span class='comment'>-- | the default error message handler: error output to stderr</span>-<a name="line-501"></a>-<a name="line-502"></a><a name="errorMsgStderr"></a><span class='definition'>errorMsgStderr</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-503"></a><span class='definition'>errorMsgStderr</span> <span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span><span class='layout'>)</span>-<a name="line-504"></a>-<a name="line-505"></a><span class='comment'>-- | error message handler for collecting errors</span>-<a name="line-506"></a>-<a name="line-507"></a><a name="errorMsgCollect"></a><span class='definition'>errorMsgCollect</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-508"></a><span class='definition'>errorMsgCollect</span> <span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>True</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>$</span> <span class='varid'>return</span> <span class='conid'>()</span><span class='layout'>)</span>-<a name="line-509"></a>-<a name="line-510"></a><span class='comment'>-- | error message handler for output to stderr and collecting</span>-<a name="line-511"></a>-<a name="line-512"></a><a name="errorMsgStderrAndCollect"></a><span class='definition'>errorMsgStderrAndCollect</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-513"></a><span class='definition'>errorMsgStderrAndCollect</span> <span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>True</span> <span class='layout'>(</span><span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span><span class='layout'>)</span>-<a name="line-514"></a>-<a name="line-515"></a><span class='comment'>-- | error message handler for ignoring errors</span>-<a name="line-516"></a>-<a name="line-517"></a><a name="errorMsgIgnore"></a><span class='definition'>errorMsgIgnore</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-518"></a><span class='definition'>errorMsgIgnore</span> <span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>$</span> <span class='varid'>return</span> <span class='conid'>()</span><span class='layout'>)</span>-<a name="line-519"></a>-<a name="line-520"></a><span class='comment'>-- |</span>-<a name="line-521"></a><span class='comment'>-- if error messages are collected by the error handler for</span>-<a name="line-522"></a><span class='comment'>-- processing these messages by the calling application,</span>-<a name="line-523"></a><span class='comment'>-- this arrow reads the stored messages and clears the error message store</span>-<a name="line-524"></a>-<a name="line-525"></a><a name="getErrorMessages"></a><span class='definition'>getErrorMessages</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>-<a name="line-526"></a><span class='definition'>getErrorMessages</span>-<a name="line-527"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='layout'>(</span><span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>xio_errorMsgList</span><span class='layout'>)</span> <span class='comment'>-- reverse the list of errors</span>-<a name="line-528"></a> <span class='varop'>>>></span>-<a name="line-529"></a> <span class='varid'>clearErrorMsgList</span> <span class='comment'>-- clear the error list in the system state</span>-<a name="line-530"></a> <span class='varop'>>>></span>-<a name="line-531"></a> <span class='varid'>arrL</span> <span class='varid'>id</span>-<a name="line-532"></a>-<a name="line-533"></a><a name="clearErrorMsgList"></a><span class='definition'>clearErrorMsgList</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-534"></a><span class='definition'>clearErrorMsgList</span>-<a name="line-535"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span> <span class='layout'>}</span> <span class='layout'>)</span>-<a name="line-536"></a>-<a name="line-537"></a><a name="addToErrorMsgList"></a><span class='definition'>addToErrorMsgList</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-538"></a><span class='definition'>addToErrorMsgList</span>-<a name="line-539"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>cf</span>-<a name="line-540"></a> <span class='keyword'>where</span>-<a name="line-541"></a> <span class='varid'>cf</span> <span class='varid'>t</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>xio_errorMsgCollect</span> <span class='varid'>s</span>-<a name="line-542"></a> <span class='keyword'>then</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>=</span> <span class='varid'>t</span> <span class='conop'>:</span> <span class='varid'>xio_errorMsgList</span> <span class='varid'>s</span> <span class='layout'>}</span>-<a name="line-543"></a> <span class='keyword'>else</span> <span class='varid'>s</span>-<a name="line-544"></a>-<a name="line-545"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-546"></a>-<a name="line-547"></a><span class='comment'>-- |</span>-<a name="line-548"></a><span class='comment'>-- filter error messages from input trees and issue errors</span>-<a name="line-549"></a>-<a name="line-550"></a><a name="filterErrorMsg"></a><span class='definition'>filterErrorMsg</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-551"></a><span class='definition'>filterErrorMsg</span>-<a name="line-552"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>setErrMsgStatus</span>-<a name="line-553"></a> <span class='varop'>>>></span>-<a name="line-554"></a> <span class='varid'>sysErrorMsg</span>-<a name="line-555"></a> <span class='varop'>>>></span>-<a name="line-556"></a> <span class='varid'>addToErrorMsgList</span>-<a name="line-557"></a> <span class='varop'>>>></span>-<a name="line-558"></a> <span class='varid'>none</span>-<a name="line-559"></a> <span class='layout'>)</span>-<a name="line-560"></a> <span class='varop'>`when`</span>-<a name="line-561"></a> <span class='varid'>isError</span>-<a name="line-562"></a>-<a name="line-563"></a><span class='comment'>-- | generate a warnig message</span>-<a name="line-564"></a>-<a name="line-565"></a><a name="issueWarn"></a><span class='definition'>issueWarn</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-566"></a><span class='definition'>issueWarn</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='varid'>msg</span> <span class='varop'>>>></span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>-<a name="line-567"></a>-<a name="line-568"></a><a name="issueErr"></a><span class='comment'>-- | generate an error message</span>-<a name="line-569"></a><span class='definition'>issueErr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-570"></a><span class='definition'>issueErr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>err</span> <span class='varid'>msg</span> <span class='varop'>>>></span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>-<a name="line-571"></a>-<a name="line-572"></a><span class='comment'>-- | generate a fatal error message, e.g. document not found</span>-<a name="line-573"></a>-<a name="line-574"></a><a name="issueFatal"></a><span class='definition'>issueFatal</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-575"></a><span class='definition'>issueFatal</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>fatal</span> <span class='varid'>msg</span> <span class='varop'>>>></span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>-<a name="line-576"></a>-<a name="line-577"></a><span class='comment'>-- |</span>-<a name="line-578"></a><span class='comment'>-- add the error level and the module where the error occured</span>-<a name="line-579"></a><span class='comment'>-- to the attributes of a document root node and remove the children when level is greater or equal to 'c_err'.</span>-<a name="line-580"></a><span class='comment'>-- called by 'setDocumentStatusFromSystemState' when the system state indicates an error</span>-<a name="line-581"></a>-<a name="line-582"></a><a name="setDocumentStatus"></a><span class='definition'>setDocumentStatus</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-583"></a><span class='definition'>setDocumentStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span>-<a name="line-584"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>addAttrl</span> <span class='layout'>(</span> <span class='varid'>sattr</span> <span class='varid'>a_status</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>level</span><span class='layout'>)</span>-<a name="line-585"></a> <span class='varop'><+></span>-<a name="line-586"></a> <span class='varid'>sattr</span> <span class='varid'>a_module</span> <span class='varid'>msg</span>-<a name="line-587"></a> <span class='layout'>)</span>-<a name="line-588"></a> <span class='varop'>>>></span>-<a name="line-589"></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-590"></a> <span class='keyword'>then</span> <span class='varid'>setChildren</span> <span class='conid'>[]</span>-<a name="line-591"></a> <span class='keyword'>else</span> <span class='varid'>this</span>-<a name="line-592"></a> <span class='layout'>)</span>-<a name="line-593"></a> <span class='layout'>)</span>-<a name="line-594"></a> <span class='varop'>`when`</span>-<a name="line-595"></a> <span class='varid'>isRoot</span>-<a name="line-596"></a>-<a name="line-597"></a><span class='comment'>-- |</span>-<a name="line-598"></a><span class='comment'>-- check whether the error level attribute in the system state</span>-<a name="line-599"></a><span class='comment'>-- is set to error, in this case the children of the document root are</span>-<a name="line-600"></a><span class='comment'>-- removed and the module name where the error occured and the error level are added as attributes with 'setDocumentStatus'</span>-<a name="line-601"></a><span class='comment'>-- else nothing is changed</span>-<a name="line-602"></a>-<a name="line-603"></a><a name="setDocumentStatusFromSystemState"></a><span class='definition'>setDocumentStatusFromSystemState</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-604"></a><span class='definition'>setDocumentStatusFromSystemState</span> <span class='varid'>msg</span>-<a name="line-605"></a> <span class='keyglyph'>=</span> <span class='varid'>setStatus</span> <span class='varop'>$<</span> <span class='varid'>getErrStatus</span>-<a name="line-606"></a> <span class='keyword'>where</span>-<a name="line-607"></a> <span class='varid'>setStatus</span> <span class='varid'>level</span>-<a name="line-608"></a> <span class='keyglyph'>|</span> <span class='varid'>level</span> <span class='varop'><=</span> <span class='varid'>c_warn</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>-<a name="line-609"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>setDocumentStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span>-<a name="line-610"></a>-<a name="line-611"></a>-<a name="line-612"></a><span class='comment'>-- |</span>-<a name="line-613"></a><span class='comment'>-- check whether tree is a document root and the status attribute has a value less than 'c_err'</span>-<a name="line-614"></a>-<a name="line-615"></a><a name="documentStatusOk"></a><span class='definition'>documentStatusOk</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-616"></a><span class='definition'>documentStatusOk</span>-<a name="line-617"></a> <span class='keyglyph'>=</span> <span class='varid'>isRoot</span>-<a name="line-618"></a> <span class='varop'>>>></span>-<a name="line-619"></a> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>getAttrValue</span> <span class='varid'>a_status</span>-<a name="line-620"></a> <span class='varop'>>>></span>-<a name="line-621"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='varid'>null</span> <span class='varid'>v</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>read</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>::</span><span class='conid'>Int</span><span class='layout'>)</span> <span class='varop'><=</span> <span class='varid'>c_warn</span><span class='layout'>)</span>-<a name="line-622"></a> <span class='layout'>)</span>-<a name="line-623"></a> <span class='varop'>`guards`</span>-<a name="line-624"></a> <span class='varid'>this</span>-<a name="line-625"></a> <span class='layout'>)</span>-<a name="line-626"></a>-<a name="line-627"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-628"></a>-<a name="line-629"></a><span class='comment'>-- | set the base URI of a document, used e.g. for reading includes, e.g. external entities,</span>-<a name="line-630"></a><span class='comment'>-- the input must be an absolute URI</span>-<a name="line-631"></a>-<a name="line-632"></a><a name="setBaseURI"></a><span class='definition'>setBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-633"></a><span class='definition'>setBaseURI</span>-<a name="line-634"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_baseURI</span> <span class='keyglyph'>=</span> <span class='varid'>b</span> <span class='layout'>}</span> <span class='layout'>)</span>-<a name="line-635"></a> <span class='varop'>>>></span>-<a name="line-636"></a> <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"setBaseURI: new base URI is "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>-<a name="line-637"></a>-<a name="line-638"></a><span class='comment'>-- | read the base URI from the globale state</span>-<a name="line-639"></a>-<a name="line-640"></a><a name="getBaseURI"></a><span class='definition'>getBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>-<a name="line-641"></a><span class='definition'>getBaseURI</span>-<a name="line-642"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_baseURI</span>-<a name="line-643"></a> <span class='varop'>>>></span>-<a name="line-644"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getDefaultBaseURI</span>-<a name="line-645"></a> <span class='varop'>>>></span>-<a name="line-646"></a> <span class='varid'>setBaseURI</span> -<a name="line-647"></a> <span class='varop'>>>></span>-<a name="line-648"></a> <span class='varid'>getBaseURI</span>-<a name="line-649"></a> <span class='layout'>)</span>-<a name="line-650"></a> <span class='varop'>`when`</span>-<a name="line-651"></a> <span class='varid'>isA</span> <span class='varid'>null</span> <span class='comment'>-- set and get it, if not yet done</span>-<a name="line-652"></a> <span class='layout'>)</span>-<a name="line-653"></a>-<a name="line-654"></a><span class='comment'>-- | change the base URI with a possibly relative URI, can be used for</span>-<a name="line-655"></a><span class='comment'>-- evaluating the xml:base attribute. Returns the new absolute base URI.</span>-<a name="line-656"></a><span class='comment'>-- Fails, if input is not parsable with parseURIReference</span>-<a name="line-657"></a><span class='comment'>--</span>-<a name="line-658"></a><span class='comment'>-- see also: 'setBaseURI', 'mkAbsURI'</span>-<a name="line-659"></a>-<a name="line-660"></a><a name="changeBaseURI"></a><span class='definition'>changeBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-661"></a><span class='definition'>changeBaseURI</span>-<a name="line-662"></a> <span class='keyglyph'>=</span> <span class='varid'>mkAbsURI</span>-<a name="line-663"></a> <span class='varop'>>>></span>-<a name="line-664"></a> <span class='varid'>setBaseURI</span>-<a name="line-665"></a>-<a name="line-666"></a><span class='comment'>-- | set the default base URI, if parameter is null, the system base (@ file:\/\/\/\<cwd\>\/ @) is used,</span>-<a name="line-667"></a><span class='comment'>-- else the parameter, must be called before any document is read</span>-<a name="line-668"></a>-<a name="line-669"></a><a name="setDefaultBaseURI"></a><span class='definition'>setDefaultBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>-<a name="line-670"></a><span class='definition'>setDefaultBaseURI</span> <span class='varid'>base</span>-<a name="line-671"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>base</span>-<a name="line-672"></a> <span class='keyword'>then</span> <span class='varid'>arrIO</span> <span class='varid'>getDir</span>-<a name="line-673"></a> <span class='keyword'>else</span> <span class='varid'>constA</span> <span class='varid'>base</span>-<a name="line-674"></a> <span class='layout'>)</span>-<a name="line-675"></a> <span class='varop'>>>></span>-<a name="line-676"></a> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_defaultBaseURI</span> <span class='keyglyph'>=</span> <span class='varid'>b</span> <span class='layout'>}</span> <span class='layout'>)</span>-<a name="line-677"></a> <span class='varop'>>>></span>-<a name="line-678"></a> <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"setDefaultBaseURI: new default base URI is "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>-<a name="line-679"></a> <span class='keyword'>where</span>-<a name="line-680"></a> <span class='varid'>getDir</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-681"></a> <span class='varid'>cwd</span> <span class='keyglyph'><-</span> <span class='varid'>getCurrentDirectory</span>-<a name="line-682"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='str'>"file://"</span> <span class='varop'>++</span> <span class='varid'>normalize</span> <span class='varid'>cwd</span> <span class='varop'>++</span> <span class='str'>"/"</span><span class='layout'>)</span>-<a name="line-683"></a>-<a name="line-684"></a> <span class='comment'>-- under Windows getCurrentDirectory returns something like: "c:\path\to\file"</span>-<a name="line-685"></a> <span class='comment'>-- backslaches are not allowed in URIs and paths must start with a /</span>-<a name="line-686"></a> <span class='comment'>-- so this is transformed into "/c:/path/to/file"</span>-<a name="line-687"></a>-<a name="line-688"></a> <span class='varid'>normalize</span> <span class='varid'>wd'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>d</span> <span class='conop'>:</span> <span class='chr'>':'</span> <span class='conop'>:</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-689"></a> <span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'A'</span><span class='keyglyph'>..</span><span class='chr'>'Z'</span><span class='keyglyph'>]</span> <span class='varop'>||</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'a'</span><span class='keyglyph'>..</span><span class='chr'>'z'</span><span class='keyglyph'>]</span>-<a name="line-690"></a> <span class='keyglyph'>=</span> <span class='chr'>'/'</span> <span class='conop'>:</span> <span class='varid'>concatMap</span> <span class='varid'>win32ToUriChar</span> <span class='varid'>wd'</span>-<a name="line-691"></a> <span class='varid'>normalize</span> <span class='varid'>wd'</span>-<a name="line-692"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>escapeNonUriChar</span> <span class='varid'>wd'</span>-<a name="line-693"></a> -<a name="line-694"></a> <span class='varid'>win32ToUriChar</span> <span class='chr'>'\\'</span> <span class='keyglyph'>=</span> <span class='str'>"/"</span>-<a name="line-695"></a> <span class='varid'>win32ToUriChar</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>escapeNonUriChar</span> <span class='varid'>c</span>-<a name="line-696"></a>-<a name="line-697"></a> <span class='varid'>escapeNonUriChar</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>escapeURIChar</span> <span class='varid'>isUnescapedInURI</span> <span class='varid'>c</span> <span class='comment'>-- from Network.URI</span>-<a name="line-698"></a>-<a name="line-699"></a>-<a name="line-700"></a><span class='comment'>-- | get the default base URI</span>-<a name="line-701"></a>-<a name="line-702"></a><a name="getDefaultBaseURI"></a><span class='definition'>getDefaultBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>-<a name="line-703"></a><span class='definition'>getDefaultBaseURI</span>-<a name="line-704"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_defaultBaseURI</span> <span class='comment'>-- read default uri in system state</span>-<a name="line-705"></a> <span class='varop'>>>></span>-<a name="line-706"></a> <span class='layout'>(</span> <span class='varid'>setDefaultBaseURI</span> <span class='str'>""</span> <span class='comment'>-- set the default uri in system state</span>-<a name="line-707"></a> <span class='varop'>>>></span>-<a name="line-708"></a> <span class='varid'>getDefaultBaseURI</span> <span class='layout'>)</span> <span class='varop'>`when`</span> <span class='varid'>isA</span> <span class='varid'>null</span> <span class='comment'>-- when uri not yet set</span>-<a name="line-709"></a>-<a name="line-710"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-711"></a>-<a name="line-712"></a><span class='comment'>-- | remember base uri, run an arrow and restore the base URI, used with external entity substitution</span>-<a name="line-713"></a>-<a name="line-714"></a><a name="runInLocalURIContext"></a><span class='definition'>runInLocalURIContext</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>-<a name="line-715"></a><span class='definition'>runInLocalURIContext</span> <span class='varid'>f</span>-<a name="line-716"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getBaseURI</span> <span class='varop'>&&&</span> <span class='varid'>this</span> <span class='layout'>)</span>-<a name="line-717"></a> <span class='varop'>>>></span>-<a name="line-718"></a> <span class='layout'>(</span> <span class='varid'>this</span> <span class='varop'>***</span> <span class='varid'>listA</span> <span class='varid'>f</span> <span class='layout'>)</span>-<a name="line-719"></a> <span class='varop'>>>></span>-<a name="line-720"></a> <span class='layout'>(</span> <span class='varid'>setBaseURI</span> <span class='varop'>***</span> <span class='varid'>this</span> <span class='layout'>)</span>-<a name="line-721"></a> <span class='varop'>>>></span>-<a name="line-722"></a> <span class='varid'>arrL</span> <span class='varid'>snd</span>-<a name="line-723"></a>-<a name="line-724"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-725"></a>-<a name="line-726"></a><span class='comment'>-- | set the global trace level</span>-<a name="line-727"></a>-<a name="line-728"></a><a name="setTraceLevel"></a><span class='definition'>setTraceLevel</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-729"></a><span class='definition'>setTraceLevel</span> <span class='varid'>l</span>-<a name="line-730"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_trace</span> <span class='keyglyph'>=</span> <span class='varid'>l</span> <span class='layout'>}</span> <span class='layout'>)</span>-<a name="line-731"></a>-<a name="line-732"></a><span class='comment'>-- | read the global trace level</span>-<a name="line-733"></a>-<a name="line-734"></a><a name="getTraceLevel"></a><span class='definition'>getTraceLevel</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>Int</span>-<a name="line-735"></a><span class='definition'>getTraceLevel</span>-<a name="line-736"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_trace</span>-<a name="line-737"></a>-<a name="line-738"></a><span class='comment'>-- | run an arrow with a given trace level, the old trace level is restored after the arrow execution</span>-<a name="line-739"></a>-<a name="line-740"></a><a name="withTraceLevel"></a><span class='definition'>withTraceLevel</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>-<a name="line-741"></a><span class='definition'>withTraceLevel</span> <span class='varid'>level</span> <span class='varid'>f</span>-<a name="line-742"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getTraceLevel</span> <span class='varop'>&&&</span> <span class='varid'>this</span> <span class='layout'>)</span>-<a name="line-743"></a> <span class='varop'>>>></span>-<a name="line-744"></a> <span class='layout'>(</span> <span class='varid'>setTraceLevel</span> <span class='varid'>level</span> <span class='varop'>***</span> <span class='varid'>listA</span> <span class='varid'>f</span> <span class='layout'>)</span>-<a name="line-745"></a> <span class='varop'>>>></span>-<a name="line-746"></a> <span class='layout'>(</span> <span class='varid'>restoreTraceLevel</span> <span class='varop'>***</span> <span class='varid'>this</span> <span class='layout'>)</span>-<a name="line-747"></a> <span class='varop'>>>></span>-<a name="line-748"></a> <span class='varid'>arrL</span> <span class='varid'>snd</span>-<a name="line-749"></a> <span class='keyword'>where</span>-<a name="line-750"></a> <span class='varid'>restoreTraceLevel</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>-<a name="line-751"></a> <span class='varid'>restoreTraceLevel</span>-<a name="line-752"></a> <span class='keyglyph'>=</span> <span class='varid'>setTraceLevel</span> <span class='varop'>$<</span> <span class='varid'>this</span>-<a name="line-753"></a>-<a name="line-754"></a><span class='comment'>-- | apply a trace arrow and issue message to stderr</span>-<a name="line-755"></a>-<a name="line-756"></a><a name="trace"></a><span class='definition'>trace</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-757"></a><span class='definition'>trace</span> <span class='varid'>level</span> <span class='varid'>trc</span>-<a name="line-758"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>trc</span>-<a name="line-759"></a> <span class='varop'>>>></span>-<a name="line-760"></a> <span class='varid'>arrIO</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-761"></a> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='varid'>s</span>-<a name="line-762"></a> <span class='varid'>hFlush</span> <span class='varid'>stderr</span>-<a name="line-763"></a> <span class='layout'>)</span>-<a name="line-764"></a> <span class='layout'>)</span>-<a name="line-765"></a> <span class='layout'>)</span>-<a name="line-766"></a> <span class='varop'>`when`</span> <span class='layout'>(</span> <span class='varid'>getTraceLevel</span>-<a name="line-767"></a> <span class='varop'>>>></span>-<a name="line-768"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varop'>>=</span> <span class='varid'>level</span><span class='layout'>)</span>-<a name="line-769"></a> <span class='layout'>)</span>-<a name="line-770"></a>-<a name="line-771"></a><a name="traceMsg"></a><span class='comment'>-- | issue a string message as trace </span>-<a name="line-772"></a><span class='definition'>traceMsg</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-773"></a><span class='definition'>traceMsg</span> <span class='varid'>level</span> <span class='varid'>msg</span>-<a name="line-774"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>trace</span> <span class='varid'>level</span> <span class='varop'>$</span>-<a name="line-775"></a> <span class='varid'>constA</span> <span class='layout'>(</span><span class='chr'>'-'</span> <span class='conop'>:</span> <span class='str'>"- ("</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>") "</span> <span class='varop'>++</span> <span class='varid'>msg</span><span class='layout'>)</span>-<a name="line-776"></a> <span class='layout'>)</span>-<a name="line-777"></a>-<a name="line-778"></a><a name="traceString"></a><span class='comment'>-- | issue the string input of an arrow</span>-<a name="line-779"></a><span class='definition'>traceString</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></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'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-780"></a><span class='definition'>traceString</span> <span class='varid'>level</span> <span class='varid'>f</span>-<a name="line-781"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>f</span> <span class='varop'>>>></span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='varid'>traceMsg</span> <span class='varid'>level</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-782"></a>-<a name="line-783"></a><span class='comment'>-- | issue the source representation of a document if trace level >= 3</span>-<a name="line-784"></a><span class='comment'>--</span>-<a name="line-785"></a><span class='comment'>-- for better readability the source is formated with indentDoc</span>-<a name="line-786"></a>-<a name="line-787"></a><a name="traceSource"></a><span class='definition'>traceSource</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-788"></a><span class='definition'>traceSource</span> -<a name="line-789"></a> <span class='keyglyph'>=</span> <span class='varid'>trace</span> <span class='num'>3</span> <span class='varop'>$</span>-<a name="line-790"></a> <span class='varid'>xshow</span>-<a name="line-791"></a> <span class='layout'>(</span> <span class='varid'>choiceA</span> <span class='keyglyph'>[</span> <span class='varid'>isRoot</span> <span class='conop'>:-></span> <span class='layout'>(</span> <span class='varid'>indentDoc</span>-<a name="line-792"></a> <span class='varop'>>>></span>-<a name="line-793"></a> <span class='varid'>getChildren</span>-<a name="line-794"></a> <span class='layout'>)</span>-<a name="line-795"></a> <span class='layout'>,</span> <span class='varid'>isElem</span> <span class='conop'>:-></span> <span class='layout'>(</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='keyglyph'>[</span><span class='varid'>this</span><span class='keyglyph'>]</span>-<a name="line-796"></a> <span class='varop'>>>></span> <span class='varid'>indentDoc</span>-<a name="line-797"></a> <span class='varop'>>>></span> <span class='varid'>getChildren</span>-<a name="line-798"></a> <span class='varop'>>>></span> <span class='varid'>isElem</span>-<a name="line-799"></a> <span class='layout'>)</span>-<a name="line-800"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>-<a name="line-801"></a> <span class='keyglyph'>]</span>-<a name="line-802"></a> <span class='layout'>)</span>-<a name="line-803"></a>-<a name="line-804"></a><a name="traceTree"></a><span class='comment'>-- | issue the tree representation of a document if trace level >= 4</span>-<a name="line-805"></a><span class='definition'>traceTree</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-806"></a><span class='definition'>traceTree</span>-<a name="line-807"></a> <span class='keyglyph'>=</span> <span class='varid'>trace</span> <span class='num'>4</span> <span class='varop'>$</span>-<a name="line-808"></a> <span class='varid'>xshow</span> <span class='layout'>(</span> <span class='varid'>treeRepOfXmlDoc</span>-<a name="line-809"></a> <span class='varop'>>>></span>-<a name="line-810"></a> <span class='varid'>addHeadlineToXmlDoc</span>-<a name="line-811"></a> <span class='varop'>>>></span>-<a name="line-812"></a> <span class='varid'>getChildren</span>-<a name="line-813"></a> <span class='layout'>)</span>-<a name="line-814"></a>-<a name="line-815"></a><span class='comment'>-- | trace a main computation step</span>-<a name="line-816"></a><span class='comment'>-- issue a message when trace level >= 1, issue document source if level >= 3, issue tree when level is >= 4</span>-<a name="line-817"></a>-<a name="line-818"></a><a name="traceDoc"></a><span class='definition'>traceDoc</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>-<a name="line-819"></a><span class='definition'>traceDoc</span> <span class='varid'>msg</span>-<a name="line-820"></a> <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='varid'>msg</span>-<a name="line-821"></a> <span class='varop'>>>></span>-<a name="line-822"></a> <span class='varid'>traceSource</span>-<a name="line-823"></a> <span class='varop'>>>></span>-<a name="line-824"></a> <span class='varid'>traceTree</span>-<a name="line-825"></a>-<a name="line-826"></a><span class='comment'>-- | trace the global state</span>-<a name="line-827"></a>-<a name="line-828"></a><a name="traceState"></a><span class='definition'>traceState</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-829"></a><span class='definition'>traceState</span>-<a name="line-830"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>xshow</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>getAllParams</span> <span class='varop'>>>.</span> <span class='varid'>concat</span><span class='layout'>)</span>-<a name="line-831"></a> <span class='varop'>>>></span>-<a name="line-832"></a> <span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>formatParam</span><span class='layout'>)</span>-<a name="line-833"></a> <span class='layout'>)</span>-<a name="line-834"></a> <span class='varop'>>>></span>-<a name="line-835"></a> <span class='varid'>traceString</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"global state:\n"</span> <span class='varop'>++</span><span class='layout'>)</span>-<a name="line-836"></a> <span class='layout'>)</span>-<a name="line-837"></a> <span class='keyword'>where</span>-<a name="line-838"></a> <span class='comment'>-- formatParam :: (String, XmlTrees) -> IOStateArrow s b1 XmlTree</span>-<a name="line-839"></a> <span class='varid'>formatParam</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>-<a name="line-840"></a> <span class='keyglyph'>=</span> <span class='varid'>mkelem</span> <span class='str'>"param"</span> <span class='keyglyph'>[</span><span class='varid'>sattr</span> <span class='str'>"name"</span> <span class='varid'>n</span><span class='keyglyph'>]</span> <span class='keyglyph'>[</span><span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='varop'><+></span> <span class='varid'>txt</span> <span class='str'>"\n"</span>-<a name="line-841"></a>-<a name="line-842"></a><span class='comment'>-- ----------------------------------------------------------</span>-<a name="line-843"></a>-<a name="line-844"></a><span class='comment'>-- | compute the absolut URI for a given URI and a base URI</span>-<a name="line-845"></a>-<a name="line-846"></a><a name="expandURIString"></a><span class='definition'>expandURIString</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>String</span>-<a name="line-847"></a><span class='definition'>expandURIString</span> <span class='varid'>uri</span> <span class='varid'>base</span>-<a name="line-848"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-849"></a> <span class='varid'>base'</span> <span class='keyglyph'><-</span> <span class='varid'>parseURIReference</span> <span class='varid'>base</span>-<a name="line-850"></a> <span class='varid'>uri'</span> <span class='keyglyph'><-</span> <span class='varid'>parseURIReference</span> <span class='varid'>uri</span>-<a name="line-851"></a> <span class='varid'>abs'</span> <span class='keyglyph'><-</span> <span class='varid'>nonStrictRelativeTo</span> <span class='varid'>uri'</span> <span class='varid'>base'</span>-<a name="line-852"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>show</span> <span class='varid'>abs'</span>-<a name="line-853"></a>-<a name="line-854"></a><span class='comment'>-- | arrow variant of 'expandURIString', fails if 'expandURIString' returns Nothing</span>-<a name="line-855"></a>-<a name="line-856"></a><a name="expandURI"></a><span class='definition'>expandURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='conid'>String</span>-<a name="line-857"></a><span class='definition'>expandURI</span>-<a name="line-858"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>maybeToList</span> <span class='varop'>.</span> <span class='varid'>uncurry</span> <span class='varid'>expandURIString</span><span class='layout'>)</span>-<a name="line-859"></a>-<a name="line-860"></a><span class='comment'>-- | arrow for expanding an input URI into an absolute URI using global base URI, fails if input is not a legal URI</span>-<a name="line-861"></a>-<a name="line-862"></a><a name="mkAbsURI"></a><span class='definition'>mkAbsURI</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-863"></a><span class='definition'>mkAbsURI</span>-<a name="line-864"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>this</span> <span class='varop'>&&&</span> <span class='varid'>getBaseURI</span> <span class='layout'>)</span> <span class='varop'>>>></span> <span class='varid'>expandURI</span>-<a name="line-865"></a>-<a name="line-866"></a><span class='comment'>-- | arrow for selecting the scheme (protocol) of the URI, fails if input is not a legal URI.</span>-<a name="line-867"></a><span class='comment'>--</span>-<a name="line-868"></a><span class='comment'>-- See Network.URI for URI components</span>-<a name="line-869"></a>-<a name="line-870"></a><a name="getSchemeFromURI"></a><span class='definition'>getSchemeFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-871"></a><span class='definition'>getSchemeFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>scheme</span>-<a name="line-872"></a> <span class='keyword'>where</span>-<a name="line-873"></a> <span class='varid'>scheme</span> <span class='keyglyph'>=</span> <span class='varid'>init</span> <span class='varop'>.</span> <span class='varid'>uriScheme</span>-<a name="line-874"></a>-<a name="line-875"></a><span class='comment'>-- | arrow for selecting the registered name (host) of the URI, fails if input is not a legal URI</span>-<a name="line-876"></a>-<a name="line-877"></a><a name="getRegNameFromURI"></a><span class='definition'>getRegNameFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-878"></a><span class='definition'>getRegNameFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>host</span>-<a name="line-879"></a> <span class='keyword'>where</span>-<a name="line-880"></a> <span class='varid'>host</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriRegName</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>-<a name="line-881"></a>-<a name="line-882"></a><span class='comment'>-- | arrow for selecting the port number of the URI without leading \':\', fails if input is not a legal URI</span>-<a name="line-883"></a>-<a name="line-884"></a><a name="getPortFromURI"></a><span class='definition'>getPortFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-885"></a><span class='definition'>getPortFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>port</span>-<a name="line-886"></a> <span class='keyword'>where</span>-<a name="line-887"></a> <span class='varid'>port</span> <span class='keyglyph'>=</span> <span class='varid'>dropWhile</span> <span class='layout'>(</span><span class='varop'>==</span><span class='chr'>':'</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriPort</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>-<a name="line-888"></a>-<a name="line-889"></a><span class='comment'>-- | arrow for selecting the user info of the URI without trailing \'\@\', fails if input is not a legal URI</span>-<a name="line-890"></a>-<a name="line-891"></a><a name="getUserInfoFromURI"></a><span class='definition'>getUserInfoFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-892"></a><span class='definition'>getUserInfoFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>ui</span>-<a name="line-893"></a> <span class='keyword'>where</span>-<a name="line-894"></a> <span class='varid'>ui</span> <span class='keyglyph'>=</span> <span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>dropWhile</span> <span class='layout'>(</span><span class='varop'>==</span><span class='chr'>'@'</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriUserInfo</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>-<a name="line-895"></a>-<a name="line-896"></a><span class='comment'>-- | arrow for computing the path component of an URI, fails if input is not a legal URI</span>-<a name="line-897"></a>-<a name="line-898"></a><a name="getPathFromURI"></a><span class='definition'>getPathFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-899"></a><span class='definition'>getPathFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriPath</span>-<a name="line-900"></a>-<a name="line-901"></a><span class='comment'>-- | arrow for computing the query component of an URI, fails if input is not a legal URI</span>-<a name="line-902"></a>-<a name="line-903"></a><a name="getQueryFromURI"></a><span class='definition'>getQueryFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-904"></a><span class='definition'>getQueryFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriQuery</span>-<a name="line-905"></a>-<a name="line-906"></a><span class='comment'>-- | arrow for computing the fragment component of an URI, fails if input is not a legal URI</span>-<a name="line-907"></a>-<a name="line-908"></a><a name="getFragmentFromURI"></a><span class='definition'>getFragmentFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-909"></a><span class='definition'>getFragmentFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriFragment</span>-<a name="line-910"></a>-<a name="line-911"></a><span class='comment'>-- | arrow for computing the path component of an URI, fails if input is not a legal URI</span>-<a name="line-912"></a>-<a name="line-913"></a><a name="getPartFromURI"></a><span class='definition'>getPartFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='conid'>URI</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-914"></a><span class='definition'>getPartFromURI</span> <span class='varid'>sel</span>-<a name="line-915"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>maybeToList</span> <span class='varop'>.</span> <span class='varid'>getPart</span><span class='layout'>)</span>-<a name="line-916"></a> <span class='keyword'>where</span>-<a name="line-917"></a> <span class='varid'>getPart</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-918"></a> <span class='varid'>uri</span> <span class='keyglyph'><-</span> <span class='varid'>parseURIReference</span> <span class='varid'>s</span>-<a name="line-919"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>sel</span> <span class='varid'>uri</span><span class='layout'>)</span>-<a name="line-920"></a>-<a name="line-921"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-922"></a>-<a name="line-923"></a><span class='comment'>-- | set the table mapping of file extensions to mime types in the system state</span>-<a name="line-924"></a><span class='comment'>--</span>-<a name="line-925"></a><span class='comment'>-- Default table is defined in 'Text.XML.HXT.DOM.MimeTypeDefaults'.</span>-<a name="line-926"></a><span class='comment'>-- This table is used when reading loacl files, (file: protocol) to determine the mime type</span>-<a name="line-927"></a>-<a name="line-928"></a><a name="setMimeTypeTable"></a><span class='definition'>setMimeTypeTable</span> <span class='keyglyph'>::</span> <span class='conid'>MimeTypeTable</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-929"></a><span class='definition'>setMimeTypeTable</span> <span class='varid'>mtt</span>-<a name="line-930"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span><span class='varid'>xio_mimeTypes</span> <span class='keyglyph'>=</span> <span class='varid'>mtt</span><span class='layout'>}</span><span class='layout'>)</span>-<a name="line-931"></a>-<a name="line-932"></a><span class='comment'>-- | set the table mapping of file extensions to mime types by an external config file</span>-<a name="line-933"></a><span class='comment'>--</span>-<a name="line-934"></a><span class='comment'>-- The config file must follow the conventions of /etc/mime.types on a debian linux system,</span>-<a name="line-935"></a><span class='comment'>-- that means all empty lines and all lines starting with a # are ignored. The other lines</span>-<a name="line-936"></a><span class='comment'>-- must consist of a mime type followed by a possible empty list of extensions.</span>-<a name="line-937"></a><span class='comment'>-- The list of extenstions and mime types overwrites the default list in the system state</span>-<a name="line-938"></a><span class='comment'>-- of the IOStateArrow</span>-<a name="line-939"></a>-<a name="line-940"></a><a name="setMimeTypeTableFromFile"></a><span class='definition'>setMimeTypeTableFromFile</span> <span class='keyglyph'>::</span> <span class='conid'>FilePath</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>-<a name="line-941"></a><span class='definition'>setMimeTypeTableFromFile</span> <span class='varid'>file</span>-<a name="line-942"></a> <span class='keyglyph'>=</span> <span class='varid'>setMimeTypeTable</span> <span class='varop'>$<</span> <span class='varid'>arrIO0</span> <span class='layout'>(</span> <span class='varid'>readMimeTypeTable</span> <span class='varid'>file</span><span class='layout'>)</span>-<a name="line-943"></a>-<a name="line-944"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-104"></a> <span class='varid'>traceValue</span><span class='layout'>,</span>+<a name="line-105"></a> <span class='varid'>traceString</span><span class='layout'>,</span>+<a name="line-106"></a> <span class='varid'>traceSource</span><span class='layout'>,</span>+<a name="line-107"></a> <span class='varid'>traceTree</span><span class='layout'>,</span>+<a name="line-108"></a> <span class='varid'>traceDoc</span><span class='layout'>,</span>+<a name="line-109"></a> <span class='varid'>traceState</span><span class='layout'>,</span>+<a name="line-110"></a>+<a name="line-111"></a> <span class='comment'>-- * URI Manipulation</span>+<a name="line-112"></a> <span class='varid'>expandURIString</span><span class='layout'>,</span>+<a name="line-113"></a> <span class='varid'>expandURI</span><span class='layout'>,</span>+<a name="line-114"></a> <span class='varid'>mkAbsURI</span><span class='layout'>,</span>+<a name="line-115"></a>+<a name="line-116"></a> <span class='varid'>getFragmentFromURI</span><span class='layout'>,</span>+<a name="line-117"></a> <span class='varid'>getPathFromURI</span><span class='layout'>,</span>+<a name="line-118"></a> <span class='varid'>getPortFromURI</span><span class='layout'>,</span>+<a name="line-119"></a> <span class='varid'>getQueryFromURI</span><span class='layout'>,</span>+<a name="line-120"></a> <span class='varid'>getRegNameFromURI</span><span class='layout'>,</span>+<a name="line-121"></a> <span class='varid'>getSchemeFromURI</span><span class='layout'>,</span>+<a name="line-122"></a> <span class='varid'>getUserInfoFromURI</span><span class='layout'>,</span>+<a name="line-123"></a>+<a name="line-124"></a> <span class='comment'>-- * Mime Type Handling</span>+<a name="line-125"></a> <span class='varid'>setMimeTypeTable</span><span class='layout'>,</span>+<a name="line-126"></a> <span class='varid'>setMimeTypeTableFromFile</span>+<a name="line-127"></a> <span class='layout'>)</span>+<a name="line-128"></a><span class='keyword'>where</span>+<a name="line-129"></a>+<a name="line-130"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span> <span class='comment'>-- arrow classes</span>+<a name="line-131"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>+<a name="line-132"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIf</span>+<a name="line-133"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowTree</span>+<a name="line-134"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowIO</span>+<a name="line-135"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>IOStateListArrow</span>+<a name="line-136"></a>+<a name="line-137"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Parallel</span><span class='varop'>.</span><span class='conid'>Strategies</span>+<a name="line-138"></a>+<a name="line-139"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>+<a name="line-140"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>+<a name="line-141"></a>+<a name="line-142"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>Edit</span>+<a name="line-143"></a> <span class='layout'>(</span> <span class='varid'>addHeadlineToXmlDoc</span>+<a name="line-144"></a> <span class='layout'>,</span> <span class='varid'>treeRepOfXmlDoc</span>+<a name="line-145"></a> <span class='layout'>,</span> <span class='varid'>indentDoc</span>+<a name="line-146"></a> <span class='layout'>)</span>+<a name="line-147"></a>+<a name="line-148"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-149"></a>+<a name="line-150"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>+<a name="line-151"></a> <span class='layout'>(</span> <span class='conid'>URI</span>+<a name="line-152"></a> <span class='layout'>,</span> <span class='varid'>escapeURIChar</span>+<a name="line-153"></a> <span class='layout'>,</span> <span class='varid'>isUnescapedInURI</span>+<a name="line-154"></a> <span class='layout'>,</span> <span class='varid'>nonStrictRelativeTo</span>+<a name="line-155"></a> <span class='layout'>,</span> <span class='varid'>parseURIReference</span>+<a name="line-156"></a> <span class='layout'>,</span> <span class='varid'>uriAuthority</span>+<a name="line-157"></a> <span class='layout'>,</span> <span class='varid'>uriFragment</span>+<a name="line-158"></a> <span class='layout'>,</span> <span class='varid'>uriPath</span>+<a name="line-159"></a> <span class='layout'>,</span> <span class='varid'>uriPort</span>+<a name="line-160"></a> <span class='layout'>,</span> <span class='varid'>uriQuery</span>+<a name="line-161"></a> <span class='layout'>,</span> <span class='varid'>uriRegName</span>+<a name="line-162"></a> <span class='layout'>,</span> <span class='varid'>uriScheme</span>+<a name="line-163"></a> <span class='layout'>,</span> <span class='varid'>uriUserInfo</span>+<a name="line-164"></a> <span class='layout'>)</span>+<a name="line-165"></a>+<a name="line-166"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>+<a name="line-167"></a> <span class='layout'>(</span> <span class='varid'>hPutStrLn</span>+<a name="line-168"></a> <span class='layout'>,</span> <span class='varid'>hFlush</span>+<a name="line-169"></a> <span class='layout'>,</span> <span class='varid'>stderr</span>+<a name="line-170"></a> <span class='layout'>)</span>+<a name="line-171"></a>+<a name="line-172"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Directory</span>+<a name="line-173"></a> <span class='layout'>(</span> <span class='varid'>getCurrentDirectory</span>+<a name="line-174"></a> <span class='layout'>)</span>+<a name="line-175"></a>+<a name="line-176"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-177"></a><span class='comment'>{- $datatypes -}</span>+<a name="line-178"></a>+<a name="line-179"></a>+<a name="line-180"></a><span class='comment'>-- |</span>+<a name="line-181"></a><span class='comment'>-- predefined system state data type with all components for the</span>+<a name="line-182"></a><span class='comment'>-- system functions, like trace, error handling, ...</span>+<a name="line-183"></a>+<a name="line-184"></a><a name="XIOSysState"></a><span class='keyword'>data</span> <span class='conid'>XIOSysState</span> <span class='keyglyph'>=</span> <span class='conid'>XIOSys</span> <span class='layout'>{</span> <span class='varid'>xio_trace</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Int</span>+<a name="line-185"></a> <span class='layout'>,</span> <span class='varid'>xio_errorStatus</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Int</span>+<a name="line-186"></a> <span class='layout'>,</span> <span class='varid'>xio_errorModule</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>+<a name="line-187"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgHandler</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='conid'>()</span>+<a name="line-188"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>Bool</span>+<a name="line-189"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>XmlTrees</span>+<a name="line-190"></a> <span class='layout'>,</span> <span class='varid'>xio_baseURI</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>+<a name="line-191"></a> <span class='layout'>,</span> <span class='varid'>xio_defaultBaseURI</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>String</span>+<a name="line-192"></a> <span class='layout'>,</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span><span class='layout'>)</span>+<a name="line-193"></a> <span class='layout'>,</span> <span class='varid'>xio_mimeTypes</span> <span class='keyglyph'>::</span> <span class='conid'>MimeTypeTable</span>+<a name="line-194"></a> <span class='layout'>}</span>+<a name="line-195"></a>+<a name="line-196"></a><span class='keyword'>instance</span> <span class='conid'>NFData</span> <span class='conid'>XIOSysState</span> <span class='keyword'>where</span>+<a name="line-197"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XIOSys</span> <span class='varid'>tr</span> <span class='varid'>es</span> <span class='varid'>em</span> <span class='sel'>_emh</span> <span class='varid'>emc</span> <span class='varid'>eml</span> <span class='varid'>bu</span> <span class='varid'>du</span> <span class='varid'>al</span> <span class='sel'>_mt</span><span class='layout'>)</span>+<a name="line-198"></a> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>tr</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>es</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>em</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>emc</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>eml</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>bu</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>du</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>al</span>+<a name="line-199"></a>+<a name="line-200"></a><span class='comment'>-- |</span>+<a name="line-201"></a><span class='comment'>-- state datatype consists of a system state and a user state</span>+<a name="line-202"></a><span class='comment'>-- the user state is not fixed</span>+<a name="line-203"></a>+<a name="line-204"></a><a name="XIOState"></a><span class='keyword'>data</span> <span class='conid'>XIOState</span> <span class='varid'>us</span> <span class='keyglyph'>=</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='conid'>XIOSysState</span>+<a name="line-205"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>::</span> <span class='varop'>!</span> <span class='varid'>us</span>+<a name="line-206"></a> <span class='layout'>}</span>+<a name="line-207"></a>+<a name="line-208"></a><span class='keyword'>instance</span> <span class='layout'>(</span><span class='conid'>NFData</span> <span class='varid'>us</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>NFData</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>us</span><span class='layout'>)</span> <span class='keyword'>where</span>+<a name="line-209"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>sys</span> <span class='varid'>usr</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>sys</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>usr</span>+<a name="line-210"></a>+<a name="line-211"></a><span class='comment'>-- |</span>+<a name="line-212"></a><span class='comment'>-- The arrow type for stateful arrows</span>+<a name="line-213"></a>+<a name="line-214"></a><a name="IOStateArrow"></a><span class='keyword'>type</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='layout'>(</span><span class='conid'>XIOState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>b</span> <span class='varid'>c</span>+<a name="line-215"></a>+<a name="line-216"></a><span class='comment'>-- |</span>+<a name="line-217"></a><span class='comment'>-- The arrow for stateful arrows with no user defined state</span>+<a name="line-218"></a>+<a name="line-219"></a><a name="IOSArrow"></a><span class='keyword'>type</span> <span class='conid'>IOSArrow</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='conid'>IOStateArrow</span> <span class='conid'>()</span> <span class='varid'>b</span> <span class='varid'>c</span>+<a name="line-220"></a>+<a name="line-221"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-222"></a>+<a name="line-223"></a>+<a name="line-224"></a><span class='comment'>-- | the default global state, used as initial state when running an 'IOSArrow' with 'runIOSLA' or</span>+<a name="line-225"></a><span class='comment'>-- 'runX'</span>+<a name="line-226"></a>+<a name="line-227"></a><a name="initialState"></a><span class='definition'>initialState</span> <span class='keyglyph'>::</span> <span class='varid'>us</span> <span class='keyglyph'>-></span> <span class='conid'>XIOState</span> <span class='varid'>us</span>+<a name="line-228"></a><span class='definition'>initialState</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>initialSysState</span>+<a name="line-229"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>s</span>+<a name="line-230"></a> <span class='layout'>}</span>+<a name="line-231"></a>+<a name="line-232"></a><a name="initialSysState"></a><span class='definition'>initialSysState</span> <span class='keyglyph'>::</span> <span class='conid'>XIOSysState</span>+<a name="line-233"></a><span class='definition'>initialSysState</span> <span class='keyglyph'>=</span> <span class='conid'>XIOSys</span> <span class='layout'>{</span> <span class='varid'>xio_trace</span> <span class='keyglyph'>=</span> <span class='num'>0</span>+<a name="line-234"></a> <span class='layout'>,</span> <span class='varid'>xio_errorStatus</span> <span class='keyglyph'>=</span> <span class='varid'>c_ok</span>+<a name="line-235"></a> <span class='layout'>,</span> <span class='varid'>xio_errorModule</span> <span class='keyglyph'>=</span> <span class='str'>""</span>+<a name="line-236"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgHandler</span> <span class='keyglyph'>=</span> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span>+<a name="line-237"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-238"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-239"></a> <span class='layout'>,</span> <span class='varid'>xio_baseURI</span> <span class='keyglyph'>=</span> <span class='str'>""</span>+<a name="line-240"></a> <span class='layout'>,</span> <span class='varid'>xio_defaultBaseURI</span> <span class='keyglyph'>=</span> <span class='str'>""</span>+<a name="line-241"></a> <span class='layout'>,</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-242"></a> <span class='layout'>,</span> <span class='varid'>xio_mimeTypes</span> <span class='keyglyph'>=</span> <span class='varid'>defaultMimeTypeTable</span>+<a name="line-243"></a> <span class='layout'>}</span>+<a name="line-244"></a>+<a name="line-245"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-246"></a>+<a name="line-247"></a><span class='comment'>-- |</span>+<a name="line-248"></a><span class='comment'>-- apply an 'IOSArrow' to an empty root node with 'initialState' () as initial state</span>+<a name="line-249"></a><span class='comment'>--</span>+<a name="line-250"></a><span class='comment'>-- the main entry point for running a state arrow with IO</span>+<a name="line-251"></a><span class='comment'>--</span>+<a name="line-252"></a><span class='comment'>-- when running @ runX f@ an empty XML root node is applied to @f@.</span>+<a name="line-253"></a><span class='comment'>-- usually @f@ will start with a constant arrow (ignoring the input), e.g. a 'Text.XML.HXT.Arrow.ReadDocument.readDocument' arrow.</span>+<a name="line-254"></a><span class='comment'>--</span>+<a name="line-255"></a><span class='comment'>-- for usage see examples with 'Text.XML.HXT.Arrow.WriteDocument.writeDocument'</span>+<a name="line-256"></a><span class='comment'>--</span>+<a name="line-257"></a><span class='comment'>-- if input has to be feed into the arrow use 'Control.Arrow.IOStateListArrow.runIOSLA' like in @ runIOSLA f emptyX inputDoc @</span>+<a name="line-258"></a>+<a name="line-259"></a><a name="runX"></a><span class='definition'>runX</span> <span class='keyglyph'>::</span> <span class='conid'>IOSArrow</span> <span class='conid'>XmlTree</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span>+<a name="line-260"></a><span class='definition'>runX</span> <span class='keyglyph'>=</span> <span class='varid'>runXIOState</span> <span class='layout'>(</span><span class='varid'>initialState</span> <span class='conid'>()</span><span class='layout'>)</span>+<a name="line-261"></a>+<a name="line-262"></a><a name="runXIOState"></a><span class='definition'>runXIOState</span> <span class='keyglyph'>::</span> <span class='conid'>XIOState</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span>+<a name="line-263"></a><span class='definition'>runXIOState</span> <span class='varid'>s0</span> <span class='varid'>f</span>+<a name="line-264"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-265"></a> <span class='layout'>(</span><span class='sel'>_finalState</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>runIOSLA</span> <span class='layout'>(</span><span class='varid'>emptyRoot</span> <span class='varop'>>>></span> <span class='varid'>f</span><span class='layout'>)</span> <span class='varid'>s0</span> <span class='varid'>undefined</span>+<a name="line-266"></a> <span class='varid'>return</span> <span class='varid'>res</span>+<a name="line-267"></a> <span class='keyword'>where</span>+<a name="line-268"></a> <span class='varid'>emptyRoot</span> <span class='keyglyph'>=</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='conid'>[]</span>+<a name="line-269"></a>+<a name="line-270"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-271"></a>+<a name="line-272"></a><span class='comment'>{- user state -}</span>+<a name="line-273"></a>+<a name="line-274"></a><span class='comment'>-- | read the user defined part of the state</span>+<a name="line-275"></a>+<a name="line-276"></a><a name="getUserState"></a><span class='definition'>getUserState</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>s</span>+<a name="line-277"></a><span class='definition'>getUserState</span>+<a name="line-278"></a> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span>+<a name="line-279"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>xio_userState</span> <span class='varid'>s</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-280"></a>+<a name="line-281"></a><span class='comment'>-- | change the user defined part of the state</span>+<a name="line-282"></a>+<a name="line-283"></a><a name="changeUserState"></a><span class='definition'>changeUserState</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-284"></a><span class='definition'>changeUserState</span> <span class='varid'>cf</span>+<a name="line-285"></a> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>v</span> <span class='keyglyph'>-></span>+<a name="line-286"></a> <span class='keyword'>let</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>cf</span> <span class='varid'>v</span> <span class='layout'>(</span><span class='varid'>xio_userState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>+<a name="line-287"></a> <span class='keyword'>in</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>v</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-288"></a>+<a name="line-289"></a><span class='comment'>-- | set the user defined part of the state</span>+<a name="line-290"></a>+<a name="line-291"></a><a name="setUserState"></a><span class='definition'>setUserState</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>s</span> <span class='varid'>s</span>+<a name="line-292"></a><span class='definition'>setUserState</span>+<a name="line-293"></a> <span class='keyglyph'>=</span> <span class='varid'>changeUserState</span> <span class='varid'>const</span>+<a name="line-294"></a>+<a name="line-295"></a><span class='comment'>-- | extend user state</span>+<a name="line-296"></a><span class='comment'>--</span>+<a name="line-297"></a><span class='comment'>-- Run an arrow with an extended user state component, The old component</span>+<a name="line-298"></a><span class='comment'>-- is stored together with a new one in a pair, the arrow is executed with this</span>+<a name="line-299"></a><span class='comment'>-- extended state, and the augmented state component is removed form the state</span>+<a name="line-300"></a><span class='comment'>-- when the arrow has finished its execution</span>+<a name="line-301"></a>+<a name="line-302"></a><a name="withExtendedUserState"></a><span class='definition'>withExtendedUserState</span> <span class='keyglyph'>::</span> <span class='varid'>s1</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='layout'>(</span><span class='varid'>s1</span><span class='layout'>,</span> <span class='varid'>s0</span><span class='layout'>)</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s0</span> <span class='varid'>b</span> <span class='varid'>c</span>+<a name="line-303"></a><span class='definition'>withExtendedUserState</span> <span class='varid'>initS1</span> <span class='varid'>f</span>+<a name="line-304"></a> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s0</span> <span class='varid'>x</span> <span class='keyglyph'>-></span>+<a name="line-305"></a> <span class='keyword'>do</span>+<a name="line-306"></a> <span class='keyglyph'>~</span><span class='layout'>(</span><span class='varid'>finalS</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>runIOSLA</span> <span class='varid'>f</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span> <span class='varid'>s0</span>+<a name="line-307"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>initS1</span><span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='varid'>s0</span><span class='layout'>)</span>+<a name="line-308"></a> <span class='layout'>}</span>+<a name="line-309"></a> <span class='layout'>)</span> <span class='varid'>x</span>+<a name="line-310"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span> <span class='varid'>finalS</span>+<a name="line-311"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>snd</span> <span class='layout'>(</span><span class='varid'>xio_userState</span> <span class='varid'>finalS</span><span class='layout'>)</span>+<a name="line-312"></a> <span class='layout'>}</span>+<a name="line-313"></a> <span class='layout'>,</span> <span class='varid'>res</span>+<a name="line-314"></a> <span class='layout'>)</span>+<a name="line-315"></a>+<a name="line-316"></a><span class='comment'>-- | change the type of user state</span>+<a name="line-317"></a><span class='comment'>--</span>+<a name="line-318"></a><span class='comment'>-- This conversion is useful, when running a state arrow with another</span>+<a name="line-319"></a><span class='comment'>-- structure of the user state, e.g. with () when executing some IO arrows</span>+<a name="line-320"></a>+<a name="line-321"></a><a name="withOtherUserState"></a><span class='definition'>withOtherUserState</span> <span class='keyglyph'>::</span> <span class='varid'>s1</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s1</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s0</span> <span class='varid'>b</span> <span class='varid'>c</span>+<a name="line-322"></a><span class='definition'>withOtherUserState</span> <span class='varid'>s1</span> <span class='varid'>f</span>+<a name="line-323"></a> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>x</span> <span class='keyglyph'>-></span>+<a name="line-324"></a> <span class='keyword'>do</span>+<a name="line-325"></a> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>runIOSLA</span> <span class='varid'>f</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span> <span class='varid'>s</span>+<a name="line-326"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>s1</span>+<a name="line-327"></a> <span class='layout'>}</span>+<a name="line-328"></a> <span class='layout'>)</span> <span class='varid'>x</span>+<a name="line-329"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='conid'>XIOState</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_sysState</span> <span class='varid'>s'</span>+<a name="line-330"></a> <span class='layout'>,</span> <span class='varid'>xio_userState</span> <span class='keyglyph'>=</span> <span class='varid'>xio_userState</span> <span class='varid'>s</span>+<a name="line-331"></a> <span class='layout'>}</span>+<a name="line-332"></a> <span class='layout'>,</span> <span class='varid'>res</span>+<a name="line-333"></a> <span class='layout'>)</span>+<a name="line-334"></a>+<a name="line-335"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-336"></a>+<a name="line-337"></a><span class='comment'>{- $system state params -}</span>+<a name="line-338"></a>+<a name="line-339"></a><a name="getSysParam"></a><span class='definition'>getSysParam</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>XIOSysState</span> <span class='keyglyph'>-></span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>+<a name="line-340"></a><span class='definition'>getSysParam</span> <span class='varid'>f</span>+<a name="line-341"></a> <span class='keyglyph'>=</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='sel'>_x</span> <span class='keyglyph'>-></span>+<a name="line-342"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>f</span> <span class='varop'>.</span> <span class='varid'>xio_sysState</span> <span class='varop'>$</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-343"></a>+<a name="line-344"></a><a name="changeSysParam"></a><span class='definition'>changeSysParam</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>XIOSysState</span> <span class='keyglyph'>-></span> <span class='conid'>XIOSysState</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-345"></a><span class='definition'>changeSysParam</span> <span class='varid'>cf</span>+<a name="line-346"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>v</span> <span class='keyglyph'>-></span>+<a name="line-347"></a> <span class='keyword'>let</span> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>changeSysState</span> <span class='layout'>(</span><span class='varid'>cf</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='varid'>s</span>+<a name="line-348"></a> <span class='keyword'>in</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s'</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='varid'>v</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-349"></a> <span class='layout'>)</span>+<a name="line-350"></a> <span class='keyword'>where</span>+<a name="line-351"></a> <span class='varid'>changeSysState</span> <span class='varid'>css</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_sysState</span> <span class='keyglyph'>=</span> <span class='varid'>css</span> <span class='layout'>(</span><span class='varid'>xio_sysState</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>+<a name="line-352"></a>+<a name="line-353"></a><span class='comment'>-- | store a single XML tree in global state under a given attribute name</span>+<a name="line-354"></a>+<a name="line-355"></a><a name="setParam"></a><span class='definition'>setParam</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-356"></a><span class='definition'>setParam</span> <span class='varid'>n</span>+<a name="line-357"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span> <span class='varop'>^>></span> <span class='varid'>setParamList</span> <span class='varid'>n</span>+<a name="line-358"></a>+<a name="line-359"></a><span class='comment'>-- | store a list of XML trees in global system state under a given attribute name</span>+<a name="line-360"></a>+<a name="line-361"></a><a name="setParamList"></a><span class='definition'>setParamList</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTrees</span> <span class='conid'>XmlTree</span>+<a name="line-362"></a><span class='definition'>setParamList</span> <span class='varid'>n</span>+<a name="line-363"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>addE</span>+<a name="line-364"></a> <span class='varop'>>>></span>+<a name="line-365"></a> <span class='varid'>arrL</span> <span class='varid'>id</span>+<a name="line-366"></a> <span class='keyword'>where</span>+<a name="line-367"></a> <span class='varid'>addE</span> <span class='varid'>x</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>=</span> <span class='varid'>addEntry</span> <span class='varid'>n</span> <span class='varid'>x</span> <span class='layout'>(</span><span class='varid'>xio_attrList</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>+<a name="line-368"></a>+<a name="line-369"></a><span class='comment'>-- | remove an entry in global state, arrow input remains unchanged</span>+<a name="line-370"></a>+<a name="line-371"></a><a name="unsetParam"></a><span class='definition'>unsetParam</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-372"></a><span class='definition'>unsetParam</span> <span class='varid'>n</span>+<a name="line-373"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>delE</span>+<a name="line-374"></a> <span class='keyword'>where</span>+<a name="line-375"></a> <span class='varid'>delE</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_attrList</span> <span class='keyglyph'>=</span> <span class='varid'>delEntry</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>xio_attrList</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span>+<a name="line-376"></a>+<a name="line-377"></a><span class='comment'>-- | read an attribute value from global state</span>+<a name="line-378"></a>+<a name="line-379"></a><a name="getParam"></a><span class='definition'>getParam</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>+<a name="line-380"></a><span class='definition'>getParam</span> <span class='varid'>n</span>+<a name="line-381"></a> <span class='keyglyph'>=</span> <span class='varid'>getAllParams</span>+<a name="line-382"></a> <span class='varop'>>>></span>+<a name="line-383"></a> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-384"></a>+<a name="line-385"></a><span class='comment'>-- | read all attributes from global state</span>+<a name="line-386"></a>+<a name="line-387"></a><a name="getAllParams"></a><span class='definition'>getAllParams</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>XmlTrees</span><span class='layout'>)</span>+<a name="line-388"></a><span class='definition'>getAllParams</span>+<a name="line-389"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_attrList</span>+<a name="line-390"></a>+<a name="line-391"></a><span class='comment'>-- | read all attributes from global state</span>+<a name="line-392"></a><span class='comment'>-- and convert the values to strings</span>+<a name="line-393"></a>+<a name="line-394"></a><a name="getAllParamsString"></a><span class='definition'>getAllParamsString</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='layout'>(</span><span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-395"></a><span class='definition'>getAllParamsString</span>+<a name="line-396"></a> <span class='keyglyph'>=</span> <span class='varid'>getAllParams</span>+<a name="line-397"></a> <span class='varop'>>>></span>+<a name="line-398"></a> <span class='varid'>listA</span> <span class='layout'>(</span> <span class='varid'>unlistA</span>+<a name="line-399"></a> <span class='varop'>>>></span>+<a name="line-400"></a> <span class='varid'>second</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>unlistA</span><span class='layout'>)</span>+<a name="line-401"></a> <span class='layout'>)</span>+<a name="line-402"></a>+<a name="line-403"></a><a name="setParamString"></a><span class='definition'>setParamString</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'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-404"></a><span class='definition'>setParamString</span> <span class='varid'>n</span> <span class='varid'>v</span>+<a name="line-405"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>txt</span> <span class='varid'>v</span>+<a name="line-406"></a> <span class='varop'>>>></span>+<a name="line-407"></a> <span class='varid'>setParam</span> <span class='varid'>n</span>+<a name="line-408"></a> <span class='layout'>)</span>+<a name="line-409"></a>+<a name="line-410"></a><span class='comment'>-- | read a string value from global state,</span>+<a name="line-411"></a><span class='comment'>-- if parameter not set \"\" is returned</span>+<a name="line-412"></a>+<a name="line-413"></a><a name="getParamString"></a><span class='definition'>getParamString</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>+<a name="line-414"></a><span class='definition'>getParamString</span> <span class='varid'>n</span>+<a name="line-415"></a> <span class='keyglyph'>=</span> <span class='varid'>xshow</span> <span class='layout'>(</span><span class='varid'>getParam</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-416"></a>+<a name="line-417"></a><span class='comment'>-- | store an int value in global state</span>+<a name="line-418"></a>+<a name="line-419"></a><a name="setParamInt"></a><span class='definition'>setParamInt</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'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-420"></a><span class='definition'>setParamInt</span> <span class='varid'>n</span> <span class='varid'>v</span>+<a name="line-421"></a> <span class='keyglyph'>=</span> <span class='varid'>setParamString</span> <span class='varid'>n</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>v</span><span class='layout'>)</span>+<a name="line-422"></a>+<a name="line-423"></a><span class='comment'>-- | read an int value from global state</span>+<a name="line-424"></a><span class='comment'>-- </span>+<a name="line-425"></a><span class='comment'>-- > getParamInt 0 myIntAttr</span>+<a name="line-426"></a>+<a name="line-427"></a><a name="getParamInt"></a><span class='definition'>getParamInt</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'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>Int</span>+<a name="line-428"></a><span class='definition'>getParamInt</span> <span class='varid'>def</span> <span class='varid'>n</span>+<a name="line-429"></a> <span class='keyglyph'>=</span> <span class='varid'>getParamString</span> <span class='varid'>n</span>+<a name="line-430"></a> <span class='varop'>>>^</span>+<a name="line-431"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>x</span> <span class='keyword'>then</span> <span class='varid'>def</span> <span class='keyword'>else</span> <span class='varid'>read</span> <span class='varid'>x</span><span class='layout'>)</span>+<a name="line-432"></a>+<a name="line-433"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-434"></a>+<a name="line-435"></a><span class='comment'>-- | reset global error variable</span>+<a name="line-436"></a>+<a name="line-437"></a><a name="changeErrorStatus"></a><span class='definition'>changeErrorStatus</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>+<a name="line-438"></a><span class='definition'>changeErrorStatus</span> <span class='varid'>f</span>+<a name="line-439"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>l</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorStatus</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>l</span> <span class='layout'>(</span><span class='varid'>xio_errorStatus</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>}</span><span class='layout'>)</span>+<a name="line-440"></a>+<a name="line-441"></a><a name="clearErrStatus"></a><span class='definition'>clearErrStatus</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-442"></a><span class='definition'>clearErrStatus</span>+<a name="line-443"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>constA</span> <span class='num'>0</span> <span class='varop'>>>></span> <span class='varid'>changeErrorStatus</span> <span class='varid'>min</span><span class='layout'>)</span>+<a name="line-444"></a>+<a name="line-445"></a><span class='comment'>-- | set global error variable</span>+<a name="line-446"></a>+<a name="line-447"></a><a name="setErrStatus"></a><span class='definition'>setErrStatus</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>+<a name="line-448"></a><span class='definition'>setErrStatus</span>+<a name="line-449"></a> <span class='keyglyph'>=</span> <span class='varid'>changeErrorStatus</span> <span class='varid'>max</span>+<a name="line-450"></a>+<a name="line-451"></a><span class='comment'>-- | read current global error status</span>+<a name="line-452"></a>+<a name="line-453"></a><a name="getErrStatus"></a><span class='definition'>getErrStatus</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>Int</span>+<a name="line-454"></a><span class='definition'>getErrStatus</span>+<a name="line-455"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_errorStatus</span>+<a name="line-456"></a>+<a name="line-457"></a><span class='comment'>-- | raise the global error status level to that of the input tree</span>+<a name="line-458"></a>+<a name="line-459"></a><a name="setErrMsgStatus"></a><span class='definition'>setErrMsgStatus</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-460"></a><span class='definition'>setErrMsgStatus</span>+<a name="line-461"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getErrorLevel</span>+<a name="line-462"></a> <span class='varop'>>>></span>+<a name="line-463"></a> <span class='varid'>setErrStatus</span>+<a name="line-464"></a> <span class='layout'>)</span>+<a name="line-465"></a>+<a name="line-466"></a><span class='comment'>-- | set the error message handler and the flag for collecting the errors</span>+<a name="line-467"></a>+<a name="line-468"></a><a name="setErrorMsgHandler"></a><span class='definition'>setErrorMsgHandler</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='conid'>()</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-469"></a><span class='definition'>setErrorMsgHandler</span> <span class='varid'>c</span> <span class='varid'>f</span>+<a name="line-470"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>cf</span>+<a name="line-471"></a> <span class='keyword'>where</span>+<a name="line-472"></a> <span class='varid'>cf</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgHandler</span> <span class='keyglyph'>=</span> <span class='varid'>f</span>+<a name="line-473"></a> <span class='layout'>,</span> <span class='varid'>xio_errorMsgCollect</span> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='layout'>}</span>+<a name="line-474"></a>+<a name="line-475"></a><span class='comment'>-- | error message handler for output to stderr</span>+<a name="line-476"></a> +<a name="line-477"></a><a name="sysErrorMsg"></a><span class='definition'>sysErrorMsg</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-478"></a><span class='definition'>sysErrorMsg</span>+<a name="line-479"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>getErrorLevel</span> <span class='varop'>&&&</span> <span class='varid'>getErrorMsg</span>+<a name="line-480"></a> <span class='varop'>>>></span>+<a name="line-481"></a> <span class='varid'>arr</span> <span class='varid'>formatErrorMsg</span>+<a name="line-482"></a> <span class='varop'>>>></span>+<a name="line-483"></a> <span class='layout'>(</span> <span class='conid'>IOSLA</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='varid'>e</span> <span class='keyglyph'>-></span>+<a name="line-484"></a> <span class='keyword'>do</span>+<a name="line-485"></a> <span class='layout'>(</span><span class='varid'>xio_errorMsgHandler</span> <span class='varop'>.</span> <span class='varid'>xio_sysState</span> <span class='varop'>$</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varid'>e</span>+<a name="line-486"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>undefined</span><span class='layout'>)</span>+<a name="line-487"></a> <span class='layout'>)</span>+<a name="line-488"></a> <span class='layout'>)</span>+<a name="line-489"></a> <span class='keyword'>where</span>+<a name="line-490"></a> <span class='varid'>formatErrorMsg</span> <span class='layout'>(</span><span class='varid'>level</span><span class='layout'>,</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"\n"</span> <span class='varop'>++</span> <span class='varid'>errClass</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>": "</span> <span class='varop'>++</span> <span class='varid'>msg</span>+<a name="line-491"></a> <span class='varid'>errClass</span> <span class='varid'>l</span>+<a name="line-492"></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-493"></a> <span class='keyword'>where</span>+<a name="line-494"></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-495"></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-496"></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-497"></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-498"></a> <span class='keyglyph'>]</span>+<a name="line-499"></a>+<a name="line-500"></a>+<a name="line-501"></a><span class='comment'>-- | the default error message handler: error output to stderr</span>+<a name="line-502"></a>+<a name="line-503"></a><a name="errorMsgStderr"></a><span class='definition'>errorMsgStderr</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-504"></a><span class='definition'>errorMsgStderr</span> <span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span><span class='layout'>)</span>+<a name="line-505"></a>+<a name="line-506"></a><span class='comment'>-- | error message handler for collecting errors</span>+<a name="line-507"></a>+<a name="line-508"></a><a name="errorMsgCollect"></a><span class='definition'>errorMsgCollect</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-509"></a><span class='definition'>errorMsgCollect</span> <span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>True</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>$</span> <span class='varid'>return</span> <span class='conid'>()</span><span class='layout'>)</span>+<a name="line-510"></a>+<a name="line-511"></a><span class='comment'>-- | error message handler for output to stderr and collecting</span>+<a name="line-512"></a>+<a name="line-513"></a><a name="errorMsgStderrAndCollect"></a><span class='definition'>errorMsgStderrAndCollect</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-514"></a><span class='definition'>errorMsgStderrAndCollect</span> <span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>True</span> <span class='layout'>(</span><span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span><span class='layout'>)</span>+<a name="line-515"></a>+<a name="line-516"></a><span class='comment'>-- | error message handler for ignoring errors</span>+<a name="line-517"></a>+<a name="line-518"></a><a name="errorMsgIgnore"></a><span class='definition'>errorMsgIgnore</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-519"></a><span class='definition'>errorMsgIgnore</span> <span class='keyglyph'>=</span> <span class='varid'>setErrorMsgHandler</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>$</span> <span class='varid'>return</span> <span class='conid'>()</span><span class='layout'>)</span>+<a name="line-520"></a>+<a name="line-521"></a><span class='comment'>-- |</span>+<a name="line-522"></a><span class='comment'>-- if error messages are collected by the error handler for</span>+<a name="line-523"></a><span class='comment'>-- processing these messages by the calling application,</span>+<a name="line-524"></a><span class='comment'>-- this arrow reads the stored messages and clears the error message store</span>+<a name="line-525"></a>+<a name="line-526"></a><a name="getErrorMessages"></a><span class='definition'>getErrorMessages</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>XmlTree</span>+<a name="line-527"></a><span class='definition'>getErrorMessages</span>+<a name="line-528"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='layout'>(</span><span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>xio_errorMsgList</span><span class='layout'>)</span> <span class='comment'>-- reverse the list of errors</span>+<a name="line-529"></a> <span class='varop'>>>></span>+<a name="line-530"></a> <span class='varid'>clearErrorMsgList</span> <span class='comment'>-- clear the error list in the system state</span>+<a name="line-531"></a> <span class='varop'>>>></span>+<a name="line-532"></a> <span class='varid'>arrL</span> <span class='varid'>id</span>+<a name="line-533"></a>+<a name="line-534"></a><a name="clearErrorMsgList"></a><span class='definition'>clearErrorMsgList</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-535"></a><span class='definition'>clearErrorMsgList</span>+<a name="line-536"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span> <span class='layout'>}</span> <span class='layout'>)</span>+<a name="line-537"></a>+<a name="line-538"></a><a name="addToErrorMsgList"></a><span class='definition'>addToErrorMsgList</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-539"></a><span class='definition'>addToErrorMsgList</span>+<a name="line-540"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='varid'>cf</span>+<a name="line-541"></a> <span class='keyword'>where</span>+<a name="line-542"></a> <span class='varid'>cf</span> <span class='varid'>t</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>xio_errorMsgCollect</span> <span class='varid'>s</span>+<a name="line-543"></a> <span class='keyword'>then</span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_errorMsgList</span> <span class='keyglyph'>=</span> <span class='varid'>t</span> <span class='conop'>:</span> <span class='varid'>xio_errorMsgList</span> <span class='varid'>s</span> <span class='layout'>}</span>+<a name="line-544"></a> <span class='keyword'>else</span> <span class='varid'>s</span>+<a name="line-545"></a>+<a name="line-546"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-547"></a>+<a name="line-548"></a><span class='comment'>-- |</span>+<a name="line-549"></a><span class='comment'>-- filter error messages from input trees and issue errors</span>+<a name="line-550"></a>+<a name="line-551"></a><a name="filterErrorMsg"></a><span class='definition'>filterErrorMsg</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-552"></a><span class='definition'>filterErrorMsg</span>+<a name="line-553"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>setErrMsgStatus</span>+<a name="line-554"></a> <span class='varop'>>>></span>+<a name="line-555"></a> <span class='varid'>sysErrorMsg</span>+<a name="line-556"></a> <span class='varop'>>>></span>+<a name="line-557"></a> <span class='varid'>addToErrorMsgList</span>+<a name="line-558"></a> <span class='varop'>>>></span>+<a name="line-559"></a> <span class='varid'>none</span>+<a name="line-560"></a> <span class='layout'>)</span>+<a name="line-561"></a> <span class='varop'>`when`</span>+<a name="line-562"></a> <span class='varid'>isError</span>+<a name="line-563"></a>+<a name="line-564"></a><span class='comment'>-- | generate a warnig message</span>+<a name="line-565"></a>+<a name="line-566"></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'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-567"></a><span class='definition'>issueWarn</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='varid'>msg</span> <span class='varop'>>>></span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>+<a name="line-568"></a>+<a name="line-569"></a><a name="issueErr"></a><span class='comment'>-- | generate an error message</span>+<a name="line-570"></a><span class='definition'>issueErr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-571"></a><span class='definition'>issueErr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>err</span> <span class='varid'>msg</span> <span class='varop'>>>></span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>+<a name="line-572"></a>+<a name="line-573"></a><span class='comment'>-- | generate a fatal error message, e.g. document not found</span>+<a name="line-574"></a>+<a name="line-575"></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'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-576"></a><span class='definition'>issueFatal</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span><span class='varid'>fatal</span> <span class='varid'>msg</span> <span class='varop'>>>></span> <span class='varid'>filterErrorMsg</span><span class='layout'>)</span>+<a name="line-577"></a>+<a name="line-578"></a><span class='comment'>-- |</span>+<a name="line-579"></a><span class='comment'>-- add the error level and the module where the error occured</span>+<a name="line-580"></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-581"></a><span class='comment'>-- called by 'setDocumentStatusFromSystemState' when the system state indicates an error</span>+<a name="line-582"></a>+<a name="line-583"></a><a name="setDocumentStatus"></a><span class='definition'>setDocumentStatus</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'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-584"></a><span class='definition'>setDocumentStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span>+<a name="line-585"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>addAttrl</span> <span class='layout'>(</span> <span class='varid'>sattr</span> <span class='varid'>a_status</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>level</span><span class='layout'>)</span>+<a name="line-586"></a> <span class='varop'><+></span>+<a name="line-587"></a> <span class='varid'>sattr</span> <span class='varid'>a_module</span> <span class='varid'>msg</span>+<a name="line-588"></a> <span class='layout'>)</span>+<a name="line-589"></a> <span class='varop'>>>></span>+<a name="line-590"></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-591"></a> <span class='keyword'>then</span> <span class='varid'>setChildren</span> <span class='conid'>[]</span>+<a name="line-592"></a> <span class='keyword'>else</span> <span class='varid'>this</span>+<a name="line-593"></a> <span class='layout'>)</span>+<a name="line-594"></a> <span class='layout'>)</span>+<a name="line-595"></a> <span class='varop'>`when`</span>+<a name="line-596"></a> <span class='varid'>isRoot</span>+<a name="line-597"></a>+<a name="line-598"></a><span class='comment'>-- |</span>+<a name="line-599"></a><span class='comment'>-- check whether the error level attribute in the system state</span>+<a name="line-600"></a><span class='comment'>-- is set to error, in this case the children of the document root are</span>+<a name="line-601"></a><span class='comment'>-- removed and the module name where the error occured and the error level are added as attributes with 'setDocumentStatus'</span>+<a name="line-602"></a><span class='comment'>-- else nothing is changed</span>+<a name="line-603"></a>+<a name="line-604"></a><a name="setDocumentStatusFromSystemState"></a><span class='definition'>setDocumentStatusFromSystemState</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-605"></a><span class='definition'>setDocumentStatusFromSystemState</span> <span class='varid'>msg</span>+<a name="line-606"></a> <span class='keyglyph'>=</span> <span class='varid'>setStatus</span> <span class='varop'>$<</span> <span class='varid'>getErrStatus</span>+<a name="line-607"></a> <span class='keyword'>where</span>+<a name="line-608"></a> <span class='varid'>setStatus</span> <span class='varid'>level</span>+<a name="line-609"></a> <span class='keyglyph'>|</span> <span class='varid'>level</span> <span class='varop'><=</span> <span class='varid'>c_warn</span> <span class='keyglyph'>=</span> <span class='varid'>this</span>+<a name="line-610"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>setDocumentStatus</span> <span class='varid'>level</span> <span class='varid'>msg</span>+<a name="line-611"></a>+<a name="line-612"></a>+<a name="line-613"></a><span class='comment'>-- |</span>+<a name="line-614"></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-615"></a>+<a name="line-616"></a><a name="documentStatusOk"></a><span class='definition'>documentStatusOk</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-617"></a><span class='definition'>documentStatusOk</span>+<a name="line-618"></a> <span class='keyglyph'>=</span> <span class='varid'>isRoot</span>+<a name="line-619"></a> <span class='varop'>>>></span>+<a name="line-620"></a> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>getAttrValue</span> <span class='varid'>a_status</span>+<a name="line-621"></a> <span class='varop'>>>></span>+<a name="line-622"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='varid'>null</span> <span class='varid'>v</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>read</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>::</span><span class='conid'>Int</span><span class='layout'>)</span> <span class='varop'><=</span> <span class='varid'>c_warn</span><span class='layout'>)</span>+<a name="line-623"></a> <span class='layout'>)</span>+<a name="line-624"></a> <span class='varop'>`guards`</span>+<a name="line-625"></a> <span class='varid'>this</span>+<a name="line-626"></a> <span class='layout'>)</span>+<a name="line-627"></a>+<a name="line-628"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-629"></a>+<a name="line-630"></a><span class='comment'>-- | set the base URI of a document, used e.g. for reading includes, e.g. external entities,</span>+<a name="line-631"></a><span class='comment'>-- the input must be an absolute URI</span>+<a name="line-632"></a>+<a name="line-633"></a><a name="setBaseURI"></a><span class='definition'>setBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-634"></a><span class='definition'>setBaseURI</span>+<a name="line-635"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_baseURI</span> <span class='keyglyph'>=</span> <span class='varid'>b</span> <span class='layout'>}</span> <span class='layout'>)</span>+<a name="line-636"></a> <span class='varop'>>>></span>+<a name="line-637"></a> <span class='varid'>traceValue</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"setBaseURI: new base URI is "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>+<a name="line-638"></a>+<a name="line-639"></a><span class='comment'>-- | read the base URI from the globale state</span>+<a name="line-640"></a>+<a name="line-641"></a><a name="getBaseURI"></a><span class='definition'>getBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>+<a name="line-642"></a><span class='definition'>getBaseURI</span>+<a name="line-643"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_baseURI</span>+<a name="line-644"></a> <span class='varop'>>>></span>+<a name="line-645"></a> <span class='layout'>(</span> <span class='layout'>(</span> <span class='varid'>getDefaultBaseURI</span>+<a name="line-646"></a> <span class='varop'>>>></span>+<a name="line-647"></a> <span class='varid'>setBaseURI</span> +<a name="line-648"></a> <span class='varop'>>>></span>+<a name="line-649"></a> <span class='varid'>getBaseURI</span>+<a name="line-650"></a> <span class='layout'>)</span>+<a name="line-651"></a> <span class='varop'>`when`</span>+<a name="line-652"></a> <span class='varid'>isA</span> <span class='varid'>null</span> <span class='comment'>-- set and get it, if not yet done</span>+<a name="line-653"></a> <span class='layout'>)</span>+<a name="line-654"></a>+<a name="line-655"></a><span class='comment'>-- | change the base URI with a possibly relative URI, can be used for</span>+<a name="line-656"></a><span class='comment'>-- evaluating the xml:base attribute. Returns the new absolute base URI.</span>+<a name="line-657"></a><span class='comment'>-- Fails, if input is not parsable with parseURIReference</span>+<a name="line-658"></a><span class='comment'>--</span>+<a name="line-659"></a><span class='comment'>-- see also: 'setBaseURI', 'mkAbsURI'</span>+<a name="line-660"></a>+<a name="line-661"></a><a name="changeBaseURI"></a><span class='definition'>changeBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-662"></a><span class='definition'>changeBaseURI</span>+<a name="line-663"></a> <span class='keyglyph'>=</span> <span class='varid'>mkAbsURI</span>+<a name="line-664"></a> <span class='varop'>>>></span>+<a name="line-665"></a> <span class='varid'>setBaseURI</span>+<a name="line-666"></a>+<a name="line-667"></a><span class='comment'>-- | set the default base URI, if parameter is null, the system base (@ file:\/\/\/\<cwd\>\/ @) is used,</span>+<a name="line-668"></a><span class='comment'>-- else the parameter, must be called before any document is read</span>+<a name="line-669"></a>+<a name="line-670"></a><a name="setDefaultBaseURI"></a><span class='definition'>setDefaultBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>+<a name="line-671"></a><span class='definition'>setDefaultBaseURI</span> <span class='varid'>base</span>+<a name="line-672"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>base</span>+<a name="line-673"></a> <span class='keyword'>then</span> <span class='varid'>arrIO</span> <span class='varid'>getDir</span>+<a name="line-674"></a> <span class='keyword'>else</span> <span class='varid'>constA</span> <span class='varid'>base</span>+<a name="line-675"></a> <span class='layout'>)</span>+<a name="line-676"></a> <span class='varop'>>>></span>+<a name="line-677"></a> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>b</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_defaultBaseURI</span> <span class='keyglyph'>=</span> <span class='varid'>b</span> <span class='layout'>}</span> <span class='layout'>)</span>+<a name="line-678"></a> <span class='varop'>>>></span>+<a name="line-679"></a> <span class='varid'>traceValue</span> <span class='num'>2</span> <span class='layout'>(</span><span class='layout'>(</span><span class='str'>"setDefaultBaseURI: new default base URI is "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>+<a name="line-680"></a> <span class='keyword'>where</span>+<a name="line-681"></a> <span class='varid'>getDir</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-682"></a> <span class='varid'>cwd</span> <span class='keyglyph'><-</span> <span class='varid'>getCurrentDirectory</span>+<a name="line-683"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='str'>"file://"</span> <span class='varop'>++</span> <span class='varid'>normalize</span> <span class='varid'>cwd</span> <span class='varop'>++</span> <span class='str'>"/"</span><span class='layout'>)</span>+<a name="line-684"></a>+<a name="line-685"></a> <span class='comment'>-- under Windows getCurrentDirectory returns something like: "c:\path\to\file"</span>+<a name="line-686"></a> <span class='comment'>-- backslaches are not allowed in URIs and paths must start with a /</span>+<a name="line-687"></a> <span class='comment'>-- so this is transformed into "/c:/path/to/file"</span>+<a name="line-688"></a>+<a name="line-689"></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-690"></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-691"></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-692"></a> <span class='varid'>normalize</span> <span class='varid'>wd'</span>+<a name="line-693"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>escapeNonUriChar</span> <span class='varid'>wd'</span>+<a name="line-694"></a> +<a name="line-695"></a> <span class='varid'>win32ToUriChar</span> <span class='chr'>'\\'</span> <span class='keyglyph'>=</span> <span class='str'>"/"</span>+<a name="line-696"></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-697"></a>+<a name="line-698"></a> <span class='varid'>escapeNonUriChar</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>escapeURIChar</span> <span class='varid'>isUnescapedInURI</span> <span class='varid'>c</span> <span class='comment'>-- from Network.URI</span>+<a name="line-699"></a>+<a name="line-700"></a>+<a name="line-701"></a><span class='comment'>-- | get the default base URI</span>+<a name="line-702"></a>+<a name="line-703"></a><a name="getDefaultBaseURI"></a><span class='definition'>getDefaultBaseURI</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span>+<a name="line-704"></a><span class='definition'>getDefaultBaseURI</span>+<a name="line-705"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_defaultBaseURI</span> <span class='comment'>-- read default uri in system state</span>+<a name="line-706"></a> <span class='varop'>>>></span>+<a name="line-707"></a> <span class='layout'>(</span> <span class='varid'>setDefaultBaseURI</span> <span class='str'>""</span> <span class='comment'>-- set the default uri in system state</span>+<a name="line-708"></a> <span class='varop'>>>></span>+<a name="line-709"></a> <span class='varid'>getDefaultBaseURI</span> <span class='layout'>)</span> <span class='varop'>`when`</span> <span class='varid'>isA</span> <span class='varid'>null</span> <span class='comment'>-- when uri not yet set</span>+<a name="line-710"></a>+<a name="line-711"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-712"></a>+<a name="line-713"></a><span class='comment'>-- | remember base uri, run an arrow and restore the base URI, used with external entity substitution</span>+<a name="line-714"></a>+<a name="line-715"></a><a name="runInLocalURIContext"></a><span class='definition'>runInLocalURIContext</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>+<a name="line-716"></a><span class='definition'>runInLocalURIContext</span> <span class='varid'>f</span>+<a name="line-717"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getBaseURI</span> <span class='varop'>&&&</span> <span class='varid'>this</span> <span class='layout'>)</span>+<a name="line-718"></a> <span class='varop'>>>></span>+<a name="line-719"></a> <span class='layout'>(</span> <span class='varid'>this</span> <span class='varop'>***</span> <span class='varid'>listA</span> <span class='varid'>f</span> <span class='layout'>)</span>+<a name="line-720"></a> <span class='varop'>>>></span>+<a name="line-721"></a> <span class='layout'>(</span> <span class='varid'>setBaseURI</span> <span class='varop'>***</span> <span class='varid'>this</span> <span class='layout'>)</span>+<a name="line-722"></a> <span class='varop'>>>></span>+<a name="line-723"></a> <span class='varid'>arrL</span> <span class='varid'>snd</span>+<a name="line-724"></a>+<a name="line-725"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-726"></a>+<a name="line-727"></a><span class='comment'>-- | set the global trace level</span>+<a name="line-728"></a>+<a name="line-729"></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'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-730"></a><span class='definition'>setTraceLevel</span> <span class='varid'>l</span>+<a name="line-731"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span> <span class='varid'>xio_trace</span> <span class='keyglyph'>=</span> <span class='varid'>l</span> <span class='layout'>}</span> <span class='layout'>)</span>+<a name="line-732"></a>+<a name="line-733"></a><span class='comment'>-- | read the global trace level</span>+<a name="line-734"></a>+<a name="line-735"></a><a name="getTraceLevel"></a><span class='definition'>getTraceLevel</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>Int</span>+<a name="line-736"></a><span class='definition'>getTraceLevel</span>+<a name="line-737"></a> <span class='keyglyph'>=</span> <span class='varid'>getSysParam</span> <span class='varid'>xio_trace</span>+<a name="line-738"></a>+<a name="line-739"></a><span class='comment'>-- | run an arrow with a given trace level, the old trace level is restored after the arrow execution</span>+<a name="line-740"></a>+<a name="line-741"></a><a name="withTraceLevel"></a><span class='definition'>withTraceLevel</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>c</span>+<a name="line-742"></a><span class='definition'>withTraceLevel</span> <span class='varid'>level</span> <span class='varid'>f</span>+<a name="line-743"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>getTraceLevel</span> <span class='varop'>&&&</span> <span class='varid'>this</span> <span class='layout'>)</span>+<a name="line-744"></a> <span class='varop'>>>></span>+<a name="line-745"></a> <span class='layout'>(</span> <span class='varid'>setTraceLevel</span> <span class='varid'>level</span> <span class='varop'>***</span> <span class='varid'>listA</span> <span class='varid'>f</span> <span class='layout'>)</span>+<a name="line-746"></a> <span class='varop'>>>></span>+<a name="line-747"></a> <span class='layout'>(</span> <span class='varid'>restoreTraceLevel</span> <span class='varop'>***</span> <span class='varid'>this</span> <span class='layout'>)</span>+<a name="line-748"></a> <span class='varop'>>>></span>+<a name="line-749"></a> <span class='varid'>arrL</span> <span class='varid'>snd</span>+<a name="line-750"></a> <span class='keyword'>where</span>+<a name="line-751"></a> <span class='varid'>restoreTraceLevel</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>Int</span> <span class='conid'>Int</span>+<a name="line-752"></a> <span class='varid'>restoreTraceLevel</span>+<a name="line-753"></a> <span class='keyglyph'>=</span> <span class='varid'>setTraceLevel</span> <span class='varop'>$<</span> <span class='varid'>this</span>+<a name="line-754"></a>+<a name="line-755"></a><span class='comment'>-- | apply a trace arrow and issue message to stderr</span>+<a name="line-756"></a>+<a name="line-757"></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'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-758"></a><span class='definition'>trace</span> <span class='varid'>level</span> <span class='varid'>trc</span>+<a name="line-759"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>trc</span>+<a name="line-760"></a> <span class='varop'>>>></span>+<a name="line-761"></a> <span class='varid'>arrIO</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-762"></a> <span class='varid'>hPutStrLn</span> <span class='varid'>stderr</span> <span class='varid'>s</span>+<a name="line-763"></a> <span class='varid'>hFlush</span> <span class='varid'>stderr</span>+<a name="line-764"></a> <span class='layout'>)</span>+<a name="line-765"></a> <span class='layout'>)</span>+<a name="line-766"></a> <span class='layout'>)</span>+<a name="line-767"></a> <span class='varop'>`when`</span> <span class='layout'>(</span> <span class='varid'>getTraceLevel</span>+<a name="line-768"></a> <span class='varop'>>>></span>+<a name="line-769"></a> <span class='varid'>isA</span> <span class='layout'>(</span><span class='varop'>>=</span> <span class='varid'>level</span><span class='layout'>)</span>+<a name="line-770"></a> <span class='layout'>)</span>+<a name="line-771"></a>+<a name="line-772"></a><span class='comment'>-- | trace the current value transfered in a sequence of arrows.</span>+<a name="line-773"></a><span class='comment'>--</span>+<a name="line-774"></a><span class='comment'>-- The value is formated by a string conversion function. This is a substitute for</span>+<a name="line-775"></a><span class='comment'>-- the old and less general traceString function</span>+<a name="line-776"></a>+<a name="line-777"></a><a name="traceValue"></a><span class='definition'>traceValue</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-778"></a><span class='definition'>traceValue</span> <span class='varid'>level</span> <span class='varid'>trc</span>+<a name="line-779"></a> <span class='keyglyph'>=</span> <span class='varid'>trace</span> <span class='varid'>level</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varop'>$</span> <span class='layout'>(</span><span class='layout'>(</span><span class='chr'>'-'</span> <span class='conop'>:</span> <span class='str'>"- ("</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>level</span> <span class='varop'>++</span> <span class='str'>") "</span><span class='layout'>)</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>trc</span><span class='layout'>)</span>+<a name="line-780"></a>+<a name="line-781"></a><span class='comment'>-- | an old alias for 'traceValue'</span>+<a name="line-782"></a>+<a name="line-783"></a><a name="traceString"></a><span class='definition'>traceString</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-784"></a><span class='definition'>traceString</span> <span class='keyglyph'>=</span> <span class='varid'>traceValue</span>+<a name="line-785"></a>+<a name="line-786"></a><span class='comment'>-- | issue a string message as trace</span>+<a name="line-787"></a>+<a name="line-788"></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'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-789"></a><span class='definition'>traceMsg</span> <span class='varid'>level</span> <span class='varid'>msg</span>+<a name="line-790"></a> <span class='keyglyph'>=</span> <span class='varid'>traceValue</span> <span class='varid'>level</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>msg</span><span class='layout'>)</span>+<a name="line-791"></a>+<a name="line-792"></a><span class='comment'>-- | issue the source representation of a document if trace level >= 3</span>+<a name="line-793"></a><span class='comment'>--</span>+<a name="line-794"></a><span class='comment'>-- for better readability the source is formated with indentDoc</span>+<a name="line-795"></a>+<a name="line-796"></a><a name="traceSource"></a><span class='definition'>traceSource</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-797"></a><span class='definition'>traceSource</span> +<a name="line-798"></a> <span class='keyglyph'>=</span> <span class='varid'>trace</span> <span class='num'>3</span> <span class='varop'>$</span>+<a name="line-799"></a> <span class='varid'>xshow</span>+<a name="line-800"></a> <span class='layout'>(</span> <span class='varid'>choiceA</span> <span class='keyglyph'>[</span> <span class='varid'>isRoot</span> <span class='conop'>:-></span> <span class='layout'>(</span> <span class='varid'>indentDoc</span>+<a name="line-801"></a> <span class='varop'>>>></span>+<a name="line-802"></a> <span class='varid'>getChildren</span>+<a name="line-803"></a> <span class='layout'>)</span>+<a name="line-804"></a> <span class='layout'>,</span> <span class='varid'>isElem</span> <span class='conop'>:-></span> <span class='layout'>(</span> <span class='varid'>root</span> <span class='conid'>[]</span> <span class='keyglyph'>[</span><span class='varid'>this</span><span class='keyglyph'>]</span>+<a name="line-805"></a> <span class='varop'>>>></span> <span class='varid'>indentDoc</span>+<a name="line-806"></a> <span class='varop'>>>></span> <span class='varid'>getChildren</span>+<a name="line-807"></a> <span class='varop'>>>></span> <span class='varid'>isElem</span>+<a name="line-808"></a> <span class='layout'>)</span>+<a name="line-809"></a> <span class='layout'>,</span> <span class='varid'>this</span> <span class='conop'>:-></span> <span class='varid'>this</span>+<a name="line-810"></a> <span class='keyglyph'>]</span>+<a name="line-811"></a> <span class='layout'>)</span>+<a name="line-812"></a>+<a name="line-813"></a><a name="traceTree"></a><span class='comment'>-- | issue the tree representation of a document if trace level >= 4</span>+<a name="line-814"></a><span class='definition'>traceTree</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-815"></a><span class='definition'>traceTree</span>+<a name="line-816"></a> <span class='keyglyph'>=</span> <span class='varid'>trace</span> <span class='num'>4</span> <span class='varop'>$</span>+<a name="line-817"></a> <span class='varid'>xshow</span> <span class='layout'>(</span> <span class='varid'>treeRepOfXmlDoc</span>+<a name="line-818"></a> <span class='varop'>>>></span>+<a name="line-819"></a> <span class='varid'>addHeadlineToXmlDoc</span>+<a name="line-820"></a> <span class='varop'>>>></span>+<a name="line-821"></a> <span class='varid'>getChildren</span>+<a name="line-822"></a> <span class='layout'>)</span>+<a name="line-823"></a>+<a name="line-824"></a><span class='comment'>-- | trace a main computation step</span>+<a name="line-825"></a><span class='comment'>-- issue a message when trace level >= 1, issue document source if level >= 3, issue tree when level is >= 4</span>+<a name="line-826"></a>+<a name="line-827"></a><a name="traceDoc"></a><span class='definition'>traceDoc</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-828"></a><span class='definition'>traceDoc</span> <span class='varid'>msg</span>+<a name="line-829"></a> <span class='keyglyph'>=</span> <span class='varid'>traceMsg</span> <span class='num'>1</span> <span class='varid'>msg</span>+<a name="line-830"></a> <span class='varop'>>>></span>+<a name="line-831"></a> <span class='varid'>traceSource</span>+<a name="line-832"></a> <span class='varop'>>>></span>+<a name="line-833"></a> <span class='varid'>traceTree</span>+<a name="line-834"></a>+<a name="line-835"></a><span class='comment'>-- | trace the global state</span>+<a name="line-836"></a>+<a name="line-837"></a><a name="traceState"></a><span class='definition'>traceState</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-838"></a><span class='definition'>traceState</span>+<a name="line-839"></a> <span class='keyglyph'>=</span> <span class='varid'>perform</span> <span class='layout'>(</span> <span class='varid'>xshow</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>getAllParams</span> <span class='varop'>>>.</span> <span class='varid'>concat</span><span class='layout'>)</span>+<a name="line-840"></a> <span class='varop'>>>></span>+<a name="line-841"></a> <span class='varid'>applyA</span> <span class='layout'>(</span><span class='varid'>arr</span> <span class='varid'>formatParam</span><span class='layout'>)</span>+<a name="line-842"></a> <span class='layout'>)</span>+<a name="line-843"></a> <span class='varop'>>>></span>+<a name="line-844"></a> <span class='varid'>traceValue</span> <span class='num'>2</span> <span class='layout'>(</span><span class='str'>"global state:\n"</span> <span class='varop'>++</span><span class='layout'>)</span>+<a name="line-845"></a> <span class='layout'>)</span>+<a name="line-846"></a> <span class='keyword'>where</span>+<a name="line-847"></a> <span class='comment'>-- formatParam :: (String, XmlTrees) -> IOStateArrow s b1 XmlTree</span>+<a name="line-848"></a> <span class='varid'>formatParam</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>+<a name="line-849"></a> <span class='keyglyph'>=</span> <span class='varid'>mkelem</span> <span class='str'>"param"</span> <span class='keyglyph'>[</span><span class='varid'>sattr</span> <span class='str'>"name"</span> <span class='varid'>n</span><span class='keyglyph'>]</span> <span class='keyglyph'>[</span><span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='varop'><+></span> <span class='varid'>txt</span> <span class='str'>"\n"</span>+<a name="line-850"></a>+<a name="line-851"></a><span class='comment'>-- ----------------------------------------------------------</span>+<a name="line-852"></a>+<a name="line-853"></a><span class='comment'>-- | compute the absolut URI for a given URI and a base URI</span>+<a name="line-854"></a>+<a name="line-855"></a><a name="expandURIString"></a><span class='definition'>expandURIString</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'>Maybe</span> <span class='conid'>String</span>+<a name="line-856"></a><span class='definition'>expandURIString</span> <span class='varid'>uri</span> <span class='varid'>base</span>+<a name="line-857"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-858"></a> <span class='varid'>base'</span> <span class='keyglyph'><-</span> <span class='varid'>parseURIReference</span> <span class='varid'>base</span>+<a name="line-859"></a> <span class='varid'>uri'</span> <span class='keyglyph'><-</span> <span class='varid'>parseURIReference</span> <span class='varid'>uri</span>+<a name="line-860"></a> <span class='varid'>abs'</span> <span class='keyglyph'><-</span> <span class='varid'>nonStrictRelativeTo</span> <span class='varid'>uri'</span> <span class='varid'>base'</span>+<a name="line-861"></a> <span class='varid'>return</span> <span class='varop'>$</span> <span class='varid'>show</span> <span class='varid'>abs'</span>+<a name="line-862"></a>+<a name="line-863"></a><span class='comment'>-- | arrow variant of 'expandURIString', fails if 'expandURIString' returns Nothing</span>+<a name="line-864"></a>+<a name="line-865"></a><a name="expandURI"></a><span class='definition'>expandURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowXml</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='conid'>String</span>+<a name="line-866"></a><span class='definition'>expandURI</span>+<a name="line-867"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>maybeToList</span> <span class='varop'>.</span> <span class='varid'>uncurry</span> <span class='varid'>expandURIString</span><span class='layout'>)</span>+<a name="line-868"></a>+<a name="line-869"></a><span class='comment'>-- | arrow for expanding an input URI into an absolute URI using global base URI, fails if input is not a legal URI</span>+<a name="line-870"></a>+<a name="line-871"></a><a name="mkAbsURI"></a><span class='definition'>mkAbsURI</span> <span class='keyglyph'>::</span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-872"></a><span class='definition'>mkAbsURI</span>+<a name="line-873"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>this</span> <span class='varop'>&&&</span> <span class='varid'>getBaseURI</span> <span class='layout'>)</span> <span class='varop'>>>></span> <span class='varid'>expandURI</span>+<a name="line-874"></a>+<a name="line-875"></a><span class='comment'>-- | arrow for selecting the scheme (protocol) of the URI, fails if input is not a legal URI.</span>+<a name="line-876"></a><span class='comment'>--</span>+<a name="line-877"></a><span class='comment'>-- See Network.URI for URI components</span>+<a name="line-878"></a>+<a name="line-879"></a><a name="getSchemeFromURI"></a><span class='definition'>getSchemeFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-880"></a><span class='definition'>getSchemeFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>scheme</span>+<a name="line-881"></a> <span class='keyword'>where</span>+<a name="line-882"></a> <span class='varid'>scheme</span> <span class='keyglyph'>=</span> <span class='varid'>init</span> <span class='varop'>.</span> <span class='varid'>uriScheme</span>+<a name="line-883"></a>+<a name="line-884"></a><span class='comment'>-- | arrow for selecting the registered name (host) of the URI, fails if input is not a legal URI</span>+<a name="line-885"></a>+<a name="line-886"></a><a name="getRegNameFromURI"></a><span class='definition'>getRegNameFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-887"></a><span class='definition'>getRegNameFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>host</span>+<a name="line-888"></a> <span class='keyword'>where</span>+<a name="line-889"></a> <span class='varid'>host</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriRegName</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>+<a name="line-890"></a>+<a name="line-891"></a><span class='comment'>-- | arrow for selecting the port number of the URI without leading \':\', fails if input is not a legal URI</span>+<a name="line-892"></a>+<a name="line-893"></a><a name="getPortFromURI"></a><span class='definition'>getPortFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-894"></a><span class='definition'>getPortFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>port</span>+<a name="line-895"></a> <span class='keyword'>where</span>+<a name="line-896"></a> <span class='varid'>port</span> <span class='keyglyph'>=</span> <span class='varid'>dropWhile</span> <span class='layout'>(</span><span class='varop'>==</span><span class='chr'>':'</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriPort</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>+<a name="line-897"></a>+<a name="line-898"></a><span class='comment'>-- | arrow for selecting the user info of the URI without trailing \'\@\', fails if input is not a legal URI</span>+<a name="line-899"></a>+<a name="line-900"></a><a name="getUserInfoFromURI"></a><span class='definition'>getUserInfoFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-901"></a><span class='definition'>getUserInfoFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>ui</span>+<a name="line-902"></a> <span class='keyword'>where</span>+<a name="line-903"></a> <span class='varid'>ui</span> <span class='keyglyph'>=</span> <span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>dropWhile</span> <span class='layout'>(</span><span class='varop'>==</span><span class='chr'>'@'</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>reverse</span> <span class='varop'>.</span> <span class='varid'>maybe</span> <span class='str'>""</span> <span class='varid'>uriUserInfo</span> <span class='varop'>.</span> <span class='varid'>uriAuthority</span>+<a name="line-904"></a>+<a name="line-905"></a><span class='comment'>-- | arrow for computing the path component of an URI, fails if input is not a legal URI</span>+<a name="line-906"></a>+<a name="line-907"></a><a name="getPathFromURI"></a><span class='definition'>getPathFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-908"></a><span class='definition'>getPathFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriPath</span>+<a name="line-909"></a>+<a name="line-910"></a><span class='comment'>-- | arrow for computing the query component of an URI, fails if input is not a legal URI</span>+<a name="line-911"></a>+<a name="line-912"></a><a name="getQueryFromURI"></a><span class='definition'>getQueryFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-913"></a><span class='definition'>getQueryFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriQuery</span>+<a name="line-914"></a>+<a name="line-915"></a><span class='comment'>-- | arrow for computing the fragment component of an URI, fails if input is not a legal URI</span>+<a name="line-916"></a>+<a name="line-917"></a><a name="getFragmentFromURI"></a><span class='definition'>getFragmentFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-918"></a><span class='definition'>getFragmentFromURI</span> <span class='keyglyph'>=</span> <span class='varid'>getPartFromURI</span> <span class='varid'>uriFragment</span>+<a name="line-919"></a>+<a name="line-920"></a><span class='comment'>-- | arrow for computing the path component of an URI, fails if input is not a legal URI</span>+<a name="line-921"></a>+<a name="line-922"></a><a name="getPartFromURI"></a><span class='definition'>getPartFromURI</span> <span class='keyglyph'>::</span> <span class='conid'>ArrowList</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='conid'>URI</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-923"></a><span class='definition'>getPartFromURI</span> <span class='varid'>sel</span>+<a name="line-924"></a> <span class='keyglyph'>=</span> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>maybeToList</span> <span class='varop'>.</span> <span class='varid'>getPart</span><span class='layout'>)</span>+<a name="line-925"></a> <span class='keyword'>where</span>+<a name="line-926"></a> <span class='varid'>getPart</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-927"></a> <span class='varid'>uri</span> <span class='keyglyph'><-</span> <span class='varid'>parseURIReference</span> <span class='varid'>s</span>+<a name="line-928"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>sel</span> <span class='varid'>uri</span><span class='layout'>)</span>+<a name="line-929"></a>+<a name="line-930"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-931"></a>+<a name="line-932"></a><span class='comment'>-- | set the table mapping of file extensions to mime types in the system state</span>+<a name="line-933"></a><span class='comment'>--</span>+<a name="line-934"></a><span class='comment'>-- Default table is defined in 'Text.XML.HXT.DOM.MimeTypeDefaults'.</span>+<a name="line-935"></a><span class='comment'>-- This table is used when reading loacl files, (file: protocol) to determine the mime type</span>+<a name="line-936"></a>+<a name="line-937"></a><a name="setMimeTypeTable"></a><span class='definition'>setMimeTypeTable</span> <span class='keyglyph'>::</span> <span class='conid'>MimeTypeTable</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-938"></a><span class='definition'>setMimeTypeTable</span> <span class='varid'>mtt</span>+<a name="line-939"></a> <span class='keyglyph'>=</span> <span class='varid'>changeSysParam</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='keyword'>_</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='varid'>s</span> <span class='layout'>{</span><span class='varid'>xio_mimeTypes</span> <span class='keyglyph'>=</span> <span class='varid'>mtt</span><span class='layout'>}</span><span class='layout'>)</span>+<a name="line-940"></a>+<a name="line-941"></a><span class='comment'>-- | set the table mapping of file extensions to mime types by an external config file</span>+<a name="line-942"></a><span class='comment'>--</span>+<a name="line-943"></a><span class='comment'>-- The config file must follow the conventions of /etc/mime.types on a debian linux system,</span>+<a name="line-944"></a><span class='comment'>-- that means all empty lines and all lines starting with a # are ignored. The other lines</span>+<a name="line-945"></a><span class='comment'>-- must consist of a mime type followed by a possible empty list of extensions.</span>+<a name="line-946"></a><span class='comment'>-- The list of extenstions and mime types overwrites the default list in the system state</span>+<a name="line-947"></a><span class='comment'>-- of the IOStateArrow</span>+<a name="line-948"></a>+<a name="line-949"></a><a name="setMimeTypeTableFromFile"></a><span class='definition'>setMimeTypeTableFromFile</span> <span class='keyglyph'>::</span> <span class='conid'>FilePath</span> <span class='keyglyph'>-></span> <span class='conid'>IOStateArrow</span> <span class='varid'>s</span> <span class='varid'>b</span> <span class='varid'>b</span>+<a name="line-950"></a><span class='definition'>setMimeTypeTableFromFile</span> <span class='varid'>file</span>+<a name="line-951"></a> <span class='keyglyph'>=</span> <span class='varid'>setMimeTypeTable</span> <span class='varop'>$<</span> <span class='varid'>arrIO0</span> <span class='layout'>(</span> <span class='varid'>readMimeTypeTable</span> <span class='varid'>file</span><span class='layout'>)</span>+<a name="line-952"></a>+<a name="line-953"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-DOM-Interface.html view
@@ -28,21 +28,19 @@ <a name="line-20"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span> <a name="line-21"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span> <a name="line-22"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>-<a name="line-23"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</span>-<a name="line-24"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>-<a name="line-25"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span>-<a name="line-26"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypes</span>-<a name="line-27"></a> <span class='layout'>)</span>-<a name="line-28"></a><span class='keyword'>where</span>-<a name="line-29"></a>-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span> <span class='comment'>-- constants</span>-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span> <span class='comment'>-- XML Tree types</span>-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</span>-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>-<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span> <span class='comment'>-- predefined options</span>-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypes</span> <span class='comment'>-- mime types related stuff</span>-<a name="line-36"></a>-<a name="line-37"></a>-<a name="line-38"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-23"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>+<a name="line-24"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span>+<a name="line-25"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypes</span>+<a name="line-26"></a> <span class='layout'>)</span>+<a name="line-27"></a><span class='keyword'>where</span>+<a name="line-28"></a>+<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span> <span class='comment'>-- constants</span>+<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span> <span class='comment'>-- XML Tree types</span>+<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Util</span>+<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlOptions</span> <span class='comment'>-- predefined options</span>+<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypes</span> <span class='comment'>-- mime types related stuff</span>+<a name="line-34"></a>+<a name="line-35"></a>+<a name="line-36"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-DOM-MimeTypes.html view
@@ -26,98 +26,100 @@ <a name="line-18"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypes</span> <a name="line-19"></a><span class='keyword'>where</span> <a name="line-20"></a>-<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span> <span class='layout'>(</span><span class='varid'>mplus</span><span class='layout'>)</span>+<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span> <span class='layout'>(</span> <span class='varid'>mplus</span> <span class='layout'>)</span> <a name="line-22"></a>-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span>-<a name="line-24"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>-<a name="line-25"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='keyword'>as</span> <span class='conid'>M</span>-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-27"></a>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>-<a name="line-29"></a>-<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypeDefaults</span>-<a name="line-31"></a>-<a name="line-32"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-33"></a>-<a name="line-34"></a><a name="MimeTypeTable"></a><span class='keyword'>type</span> <span class='conid'>MimeTypeTable</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-35"></a>-<a name="line-36"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-37"></a>-<a name="line-38"></a><span class='comment'>-- mime types</span>-<a name="line-39"></a><span class='comment'>--</span>-<a name="line-40"></a><span class='comment'>-- see RFC \"http:\/\/www.rfc-editor.org\/rfc\/rfc3023.txt\"</span>-<a name="line-41"></a>-<a name="line-42"></a><a name="application_xhtml"></a><span class='definition'>application_xhtml</span><span class='layout'>,</span>-<a name="line-43"></a> <span class='varid'>application_xml</span><span class='layout'>,</span>-<a name="line-44"></a> <span class='varid'>application_xml_external_parsed_entity</span><span class='layout'>,</span>-<a name="line-45"></a> <span class='varid'>application_xml_dtd</span><span class='layout'>,</span>-<a name="line-46"></a> <span class='varid'>text_html</span><span class='layout'>,</span>-<a name="line-47"></a> <span class='varid'>text_xml</span><span class='layout'>,</span>-<a name="line-48"></a> <span class='varid'>text_xml_external_parsed_entity</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-49"></a>-<a name="line-50"></a><span class='definition'>application_xhtml</span> <span class='keyglyph'>=</span> <span class='str'>"application/xhtml+xml"</span>-<a name="line-51"></a><a name="application_xml"></a><span class='definition'>application_xml</span> <span class='keyglyph'>=</span> <span class='str'>"application/xml"</span>-<a name="line-52"></a><a name="application_xml_external_parsed_entity"></a><span class='definition'>application_xml_external_parsed_entity</span> <span class='keyglyph'>=</span> <span class='str'>"application/xml-external-parsed-entity"</span>-<a name="line-53"></a><a name="application_xml_dtd"></a><span class='definition'>application_xml_dtd</span> <span class='keyglyph'>=</span> <span class='str'>"application/xml-dtd"</span>-<a name="line-54"></a>-<a name="line-55"></a><a name="text_html"></a><span class='definition'>text_html</span> <span class='keyglyph'>=</span> <span class='str'>"text/html"</span>-<a name="line-56"></a><a name="text_xml"></a><span class='definition'>text_xml</span> <span class='keyglyph'>=</span> <span class='str'>"text/xml"</span>-<a name="line-57"></a><a name="text_xml_external_parsed_entity"></a><span class='definition'>text_xml_external_parsed_entity</span> <span class='keyglyph'>=</span> <span class='str'>"text/xml-external-parsed-entity"</span>-<a name="line-58"></a>-<a name="line-59"></a><a name="isHtmlMimeType"></a><span class='definition'>isHtmlMimeType</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-60"></a><span class='definition'>isHtmlMimeType</span> <span class='varid'>t</span>-<a name="line-61"></a> <span class='keyglyph'>=</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>text_html</span>-<a name="line-62"></a>-<a name="line-63"></a><a name="isXmlMimeType"></a><span class='definition'>isXmlMimeType</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-64"></a><span class='definition'>isXmlMimeType</span> <span class='varid'>t</span>-<a name="line-65"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>t</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span> <span class='varid'>application_xhtml</span>-<a name="line-66"></a> <span class='layout'>,</span> <span class='varid'>application_xml</span>-<a name="line-67"></a> <span class='layout'>,</span> <span class='varid'>application_xml_external_parsed_entity</span>-<a name="line-68"></a> <span class='layout'>,</span> <span class='varid'>application_xml_dtd</span>-<a name="line-69"></a> <span class='layout'>,</span> <span class='varid'>text_xml</span>-<a name="line-70"></a> <span class='layout'>,</span> <span class='varid'>text_xml_external_parsed_entity</span>-<a name="line-71"></a> <span class='keyglyph'>]</span>-<a name="line-72"></a> <span class='varop'>||</span>-<a name="line-73"></a> <span class='str'>"+xml"</span> <span class='varop'>`isSuffixOf`</span> <span class='varid'>t</span> <span class='comment'>-- application/mathml+xml</span>-<a name="line-74"></a> <span class='layout'>)</span> <span class='comment'>-- or image/svg+xml</span>-<a name="line-75"></a>-<a name="line-76"></a><a name="defaultMimeTypeTable"></a><span class='definition'>defaultMimeTypeTable</span> <span class='keyglyph'>::</span> <span class='conid'>MimeTypeTable</span>-<a name="line-77"></a><span class='definition'>defaultMimeTypeTable</span>-<a name="line-78"></a> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>fromList</span> <span class='varid'>mimeTypeDefaults</span>-<a name="line-79"></a>-<a name="line-80"></a><a name="extensionToMimeType"></a><span class='definition'>extensionToMimeType</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>MimeTypeTable</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-81"></a><span class='definition'>extensionToMimeType</span> <span class='varid'>e</span>-<a name="line-82"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>""</span> <span class='varop'>.</span> <span class='varid'>lookupMime</span> -<a name="line-83"></a> <span class='keyword'>where</span>-<a name="line-84"></a> <span class='varid'>lookupMime</span> <span class='varid'>t</span>-<a name="line-85"></a> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>e</span> <span class='varid'>t</span> <span class='comment'>-- try exact match</span>-<a name="line-86"></a> <span class='varop'>`mplus`</span>-<a name="line-87"></a> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toLower</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varid'>t</span> <span class='comment'>-- else try lowercase match</span>-<a name="line-88"></a> <span class='varop'>`mplus`</span>-<a name="line-89"></a> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toUpper</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varid'>t</span> <span class='comment'>-- else try uppercase match</span>-<a name="line-90"></a>-<a name="line-91"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-92"></a>-<a name="line-93"></a><a name="readMimeTypeTable"></a><span class='definition'>readMimeTypeTable</span> <span class='keyglyph'>::</span> <span class='conid'>FilePath</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='conid'>MimeTypeTable</span>-<a name="line-94"></a><span class='definition'>readMimeTypeTable</span> <span class='varid'>inp</span>-<a name="line-95"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-96"></a> <span class='varid'>h</span> <span class='keyglyph'><-</span> <span class='varid'>openFile</span> <span class='varid'>inp</span> <span class='conid'>ReadMode</span>-<a name="line-97"></a> <span class='varid'>c</span> <span class='keyglyph'><-</span> <span class='varid'>hGetContents</span> <span class='varid'>h</span>-<a name="line-98"></a> <span class='varid'>return</span> <span class='varop'>.</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>fromList</span> <span class='varop'>.</span> <span class='varid'>parseMimeTypeTable</span> <span class='varop'>$</span> <span class='varid'>c</span>-<a name="line-99"></a>-<a name="line-100"></a><a name="parseMimeTypeTable"></a><span class='definition'>parseMimeTypeTable</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-101"></a><span class='definition'>parseMimeTypeTable</span>-<a name="line-102"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span>-<a name="line-103"></a> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>buildPairs</span>-<a name="line-104"></a> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>words</span>-<a name="line-105"></a> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>"#"</span> <span class='varop'>`isPrefixOf`</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-106"></a> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>all</span> <span class='layout'>(</span><span class='varid'>isSpace</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-107"></a> <span class='varop'>.</span> <span class='varid'>lines</span>-<a name="line-108"></a> <span class='keyword'>where</span>-<a name="line-109"></a> <span class='varid'>buildPairs</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-110"></a> <span class='varid'>buildPairs</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-111"></a> <span class='varid'>buildPairs</span> <span class='layout'>(</span><span class='varid'>mt</span><span class='conop'>:</span><span class='varid'>exts</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>mt</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>exts</span>-<a name="line-112"></a>-<a name="line-113"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-23"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>ByteString</span> <span class='keyword'>as</span> <span class='conid'>B</span>+<a name="line-24"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>ByteString</span><span class='varop'>.</span><span class='conid'>Char8</span> <span class='keyword'>as</span> <span class='conid'>C</span>+<a name="line-25"></a>+<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span>+<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>+<a name="line-28"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='keyword'>as</span> <span class='conid'>M</span>+<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-30"></a>+<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span>+<a name="line-32"></a>+<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>MimeTypeDefaults</span>+<a name="line-34"></a>+<a name="line-35"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-36"></a>+<a name="line-37"></a><a name="MimeTypeTable"></a><span class='keyword'>type</span> <span class='conid'>MimeTypeTable</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-38"></a>+<a name="line-39"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-40"></a>+<a name="line-41"></a><span class='comment'>-- mime types</span>+<a name="line-42"></a><span class='comment'>--</span>+<a name="line-43"></a><span class='comment'>-- see RFC \"http:\/\/www.rfc-editor.org\/rfc\/rfc3023.txt\"</span>+<a name="line-44"></a>+<a name="line-45"></a><a name="application_xhtml"></a><span class='definition'>application_xhtml</span><span class='layout'>,</span>+<a name="line-46"></a> <span class='varid'>application_xml</span><span class='layout'>,</span>+<a name="line-47"></a> <span class='varid'>application_xml_external_parsed_entity</span><span class='layout'>,</span>+<a name="line-48"></a> <span class='varid'>application_xml_dtd</span><span class='layout'>,</span>+<a name="line-49"></a> <span class='varid'>text_html</span><span class='layout'>,</span>+<a name="line-50"></a> <span class='varid'>text_xml</span><span class='layout'>,</span>+<a name="line-51"></a> <span class='varid'>text_xml_external_parsed_entity</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-52"></a>+<a name="line-53"></a><span class='definition'>application_xhtml</span> <span class='keyglyph'>=</span> <span class='str'>"application/xhtml+xml"</span>+<a name="line-54"></a><a name="application_xml"></a><span class='definition'>application_xml</span> <span class='keyglyph'>=</span> <span class='str'>"application/xml"</span>+<a name="line-55"></a><a name="application_xml_external_parsed_entity"></a><span class='definition'>application_xml_external_parsed_entity</span> <span class='keyglyph'>=</span> <span class='str'>"application/xml-external-parsed-entity"</span>+<a name="line-56"></a><a name="application_xml_dtd"></a><span class='definition'>application_xml_dtd</span> <span class='keyglyph'>=</span> <span class='str'>"application/xml-dtd"</span>+<a name="line-57"></a>+<a name="line-58"></a><a name="text_html"></a><span class='definition'>text_html</span> <span class='keyglyph'>=</span> <span class='str'>"text/html"</span>+<a name="line-59"></a><a name="text_xml"></a><span class='definition'>text_xml</span> <span class='keyglyph'>=</span> <span class='str'>"text/xml"</span>+<a name="line-60"></a><a name="text_xml_external_parsed_entity"></a><span class='definition'>text_xml_external_parsed_entity</span> <span class='keyglyph'>=</span> <span class='str'>"text/xml-external-parsed-entity"</span>+<a name="line-61"></a>+<a name="line-62"></a><a name="isHtmlMimeType"></a><span class='definition'>isHtmlMimeType</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-63"></a><span class='definition'>isHtmlMimeType</span> <span class='varid'>t</span>+<a name="line-64"></a> <span class='keyglyph'>=</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>text_html</span>+<a name="line-65"></a>+<a name="line-66"></a><a name="isXmlMimeType"></a><span class='definition'>isXmlMimeType</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-67"></a><span class='definition'>isXmlMimeType</span> <span class='varid'>t</span>+<a name="line-68"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>t</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span> <span class='varid'>application_xhtml</span>+<a name="line-69"></a> <span class='layout'>,</span> <span class='varid'>application_xml</span>+<a name="line-70"></a> <span class='layout'>,</span> <span class='varid'>application_xml_external_parsed_entity</span>+<a name="line-71"></a> <span class='layout'>,</span> <span class='varid'>application_xml_dtd</span>+<a name="line-72"></a> <span class='layout'>,</span> <span class='varid'>text_xml</span>+<a name="line-73"></a> <span class='layout'>,</span> <span class='varid'>text_xml_external_parsed_entity</span>+<a name="line-74"></a> <span class='keyglyph'>]</span>+<a name="line-75"></a> <span class='varop'>||</span>+<a name="line-76"></a> <span class='str'>"+xml"</span> <span class='varop'>`isSuffixOf`</span> <span class='varid'>t</span> <span class='comment'>-- application/mathml+xml</span>+<a name="line-77"></a> <span class='layout'>)</span> <span class='comment'>-- or image/svg+xml</span>+<a name="line-78"></a>+<a name="line-79"></a><a name="defaultMimeTypeTable"></a><span class='definition'>defaultMimeTypeTable</span> <span class='keyglyph'>::</span> <span class='conid'>MimeTypeTable</span>+<a name="line-80"></a><span class='definition'>defaultMimeTypeTable</span>+<a name="line-81"></a> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>fromList</span> <span class='varid'>mimeTypeDefaults</span>+<a name="line-82"></a>+<a name="line-83"></a><a name="extensionToMimeType"></a><span class='definition'>extensionToMimeType</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>MimeTypeTable</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-84"></a><span class='definition'>extensionToMimeType</span> <span class='varid'>e</span>+<a name="line-85"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>""</span> <span class='varop'>.</span> <span class='varid'>lookupMime</span> +<a name="line-86"></a> <span class='keyword'>where</span>+<a name="line-87"></a> <span class='varid'>lookupMime</span> <span class='varid'>t</span>+<a name="line-88"></a> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>e</span> <span class='varid'>t</span> <span class='comment'>-- try exact match</span>+<a name="line-89"></a> <span class='varop'>`mplus`</span>+<a name="line-90"></a> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toLower</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varid'>t</span> <span class='comment'>-- else try lowercase match</span>+<a name="line-91"></a> <span class='varop'>`mplus`</span>+<a name="line-92"></a> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toUpper</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varid'>t</span> <span class='comment'>-- else try uppercase match</span>+<a name="line-93"></a>+<a name="line-94"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-95"></a>+<a name="line-96"></a><a name="readMimeTypeTable"></a><span class='definition'>readMimeTypeTable</span> <span class='keyglyph'>::</span> <span class='conid'>FilePath</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='conid'>MimeTypeTable</span>+<a name="line-97"></a><span class='definition'>readMimeTypeTable</span> <span class='varid'>inp</span>+<a name="line-98"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-99"></a> <span class='varid'>cb</span> <span class='keyglyph'><-</span> <span class='conid'>B</span><span class='varop'>.</span><span class='varid'>readFile</span> <span class='varid'>inp</span>+<a name="line-100"></a> <span class='varid'>return</span> <span class='varop'>.</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>fromList</span> <span class='varop'>.</span> <span class='varid'>parseMimeTypeTable</span> <span class='varop'>.</span> <span class='conid'>C</span><span class='varop'>.</span><span class='varid'>unpack</span> <span class='varop'>$</span> <span class='varid'>cb</span>+<a name="line-101"></a>+<a name="line-102"></a><a name="parseMimeTypeTable"></a><span class='definition'>parseMimeTypeTable</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-103"></a><span class='definition'>parseMimeTypeTable</span>+<a name="line-104"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span>+<a name="line-105"></a> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>buildPairs</span>+<a name="line-106"></a> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>words</span>+<a name="line-107"></a> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>"#"</span> <span class='varop'>`isPrefixOf`</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-108"></a> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>all</span> <span class='layout'>(</span><span class='varid'>isSpace</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-109"></a> <span class='varop'>.</span> <span class='varid'>lines</span>+<a name="line-110"></a> <span class='keyword'>where</span>+<a name="line-111"></a> <span class='varid'>buildPairs</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-112"></a> <span class='varid'>buildPairs</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-113"></a> <span class='varid'>buildPairs</span> <span class='layout'>(</span><span class='varid'>mt</span><span class='conop'>:</span><span class='varid'>exts</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>mt</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>exts</span>+<a name="line-114"></a>+<a name="line-115"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
− doc/hdoc/src/Text-XML-HXT-DOM-NamespacePredicates.html
@@ -1,138 +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 Namespace and QName predicates and functions</span>-<a name="line-3"></a><span class='comment'>--</span>-<a name="line-4"></a><span class='comment'>-- $Id: NamespacePredicates.hs,v 1.3 2006/11/12 14:53:00 hxml Exp $</span>-<a name="line-5"></a><span class='comment'>--</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'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</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'>NamespacePredicates</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'>XmlTreeTypes</span> <span class='comment'>-- NTree and XNode types</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'>XmlKeywords</span> <span class='comment'>-- keywords for DTD</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'>Unicode</span>-<a name="line-16"></a> <span class='layout'>(</span> <span class='varid'>isXmlNCNameStartChar</span>-<a name="line-17"></a> <span class='layout'>,</span> <span class='varid'>isXmlNCNameChar</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><span class='comment'>--</span>-<a name="line-22"></a>-<a name="line-23"></a><span class='comment'>-- |</span>-<a name="line-24"></a><span class='comment'>-- Compute the name prefix and the namespace uri for a qualified name.</span>-<a name="line-25"></a><span class='comment'>--</span>-<a name="line-26"></a><span class='comment'>-- This function does not test whether the name is a wellformed qualified name.</span>-<a name="line-27"></a><span class='comment'>-- see Namespaces in XML Rule [6] to [8]. Error checking is done with separate functions,</span>-<a name="line-28"></a><span class='comment'>-- see 'isWellformedQName' and 'isWellformedQualifiedName' for error checking.</span>-<a name="line-29"></a>-<a name="line-30"></a><a name="setNamespace"></a><span class='definition'>setNamespace</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>-<a name="line-31"></a><span class='definition'>setNamespace</span> <span class='varid'>nst</span> <span class='varid'>n</span>-<a name="line-32"></a> <span class='keyglyph'>=</span> <span class='varid'>uncurry</span> <span class='varid'>ns</span> <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='varop'>$</span> <span class='varid'>qn</span>-<a name="line-33"></a> <span class='keyword'>where</span>-<a name="line-34"></a> <span class='varid'>qn</span> <span class='keyglyph'>=</span> <span class='varid'>qualifiedName</span> <span class='varid'>n</span> <span class='comment'>-- using qualifiedName instead of localPart enables recomputing of setNamespace</span>-<a name="line-35"></a>-<a name="line-36"></a> <span class='varid'>ns</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'>QName</span>-<a name="line-37"></a> <span class='varid'>ns</span> <span class='varid'>lp</span> <span class='str'>""</span> <span class='comment'>-- no ":" found in name, use default namespace uri</span>-<a name="line-38"></a> <span class='keyglyph'>=</span> <span class='varid'>mkQName</span> <span class='str'>""</span> <span class='varid'>lp</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='str'>""</span> <span class='varid'>nst</span><span class='layout'>)</span>-<a name="line-39"></a>-<a name="line-40"></a> <span class='varid'>ns</span> <span class='varid'>px</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='keyword'>_</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='layout'>(</span><span class='chr'>':'</span> <span class='conop'>:</span> <span class='varid'>lp</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='keyword'>_</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span><span class='layout'>)</span> <span class='comment'>-- non empty prefix and non empty local part found</span>-<a name="line-41"></a> <span class='keyglyph'>=</span> <span class='varid'>mkQName</span> <span class='varid'>px</span> <span class='varid'>lp</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>px</span> <span class='varid'>nst</span><span class='layout'>)</span>-<a name="line-42"></a>-<a name="line-43"></a> <span class='varid'>ns</span> <span class='keyword'>_</span> <span class='keyword'>_</span> <span class='comment'>-- not a legal qualified name, don't change name</span>-<a name="line-44"></a> <span class='keyglyph'>=</span> <span class='varid'>n</span>-<a name="line-45"></a>-<a name="line-46"></a><a name="xmlnsQN"></a><span class='definition'>xmlnsQN</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span>-<a name="line-47"></a><span class='definition'>xmlnsQN</span> <span class='keyglyph'>=</span> <span class='varid'>mkQName</span> <span class='str'>""</span> <span class='varid'>a_xmlns</span> <span class='varid'>xmlnsNamespace</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>-<a name="line-52"></a><span class='comment'>-- |</span>-<a name="line-53"></a><span class='comment'>-- test for wellformed NCName, rule [4] XML Namespaces</span>-<a name="line-54"></a>-<a name="line-55"></a><a name="isNCName"></a><span class='definition'>isNCName</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-56"></a><span class='definition'>isNCName</span> <span class='conid'>[]</span>-<a name="line-57"></a> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-58"></a><span class='definition'>isNCName</span> <span class='varid'>n</span>-<a name="line-59"></a> <span class='keyglyph'>=</span> <span class='varid'>and</span> <span class='layout'>(</span> <span class='varid'>zipWith</span> <span class='layout'>(</span><span class='varop'>$</span><span class='layout'>)</span>-<a name="line-60"></a> <span class='layout'>(</span><span class='varid'>isXmlNCNameStartChar</span> <span class='conop'>:</span> <span class='varid'>repeat</span> <span class='varid'>isXmlNCNameChar</span><span class='layout'>)</span>-<a name="line-61"></a> <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='comment'>-- |</span>-<a name="line-65"></a><span class='comment'>-- test for wellformed QName, rule [6] XML Namespaces</span>-<a name="line-66"></a><span class='comment'>-- predicate is used in filter 'valdateNamespaces'.</span>-<a name="line-67"></a>-<a name="line-68"></a><a name="isWellformedQualifiedName"></a><span class='definition'>isWellformedQualifiedName</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-69"></a><span class='definition'>isWellformedQualifiedName</span> <span class='varid'>s</span>-<a name="line-70"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>lp</span>-<a name="line-71"></a> <span class='keyglyph'>=</span> <span class='varid'>isNCName</span> <span class='varid'>px</span>-<a name="line-72"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-73"></a> <span class='keyglyph'>=</span> <span class='varid'>isNCName</span> <span class='varid'>px</span> <span class='varop'>&&</span> <span class='varid'>isNCName</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>lp</span><span class='layout'>)</span>-<a name="line-74"></a> <span class='keyword'>where</span>-<a name="line-75"></a> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>s</span>-<a name="line-76"></a>-<a name="line-77"></a><span class='comment'>-- |</span>-<a name="line-78"></a><span class='comment'>-- test for wellformed QName values.</span>-<a name="line-79"></a><span class='comment'>-- A QName is wellformed, if the local part is a NCName, the namePrefix, if not empty, is also a NCName.</span>-<a name="line-80"></a><span class='comment'>-- predicate is used in filter 'valdateNamespaces'.</span>-<a name="line-81"></a>-<a name="line-82"></a><a name="isWellformedQName"></a><span class='definition'>isWellformedQName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-83"></a><span class='definition'>isWellformedQName</span> <span class='varid'>n</span>-<a name="line-84"></a> <span class='keyglyph'>=</span> <span class='varid'>isNCName</span> <span class='varid'>lp</span> <span class='comment'>-- rule [8] XML Namespaces</span>-<a name="line-85"></a> <span class='varop'>&&</span>-<a name="line-86"></a> <span class='layout'>(</span> <span class='varid'>null</span> <span class='varid'>px</span> <span class='comment'>-- rule [6] XML Namespaces</span>-<a name="line-87"></a> <span class='varop'>||</span>-<a name="line-88"></a> <span class='varid'>isNCName</span> <span class='varid'>px</span> <span class='comment'>-- rule [7] XML Namespaces</span>-<a name="line-89"></a> <span class='layout'>)</span>-<a name="line-90"></a> <span class='keyword'>where</span>-<a name="line-91"></a> <span class='varid'>px</span> <span class='keyglyph'>=</span> <span class='varid'>namePrefix</span> <span class='varid'>n</span>-<a name="line-92"></a> <span class='varid'>lp</span> <span class='keyglyph'>=</span> <span class='varid'>localPart</span> <span class='varid'>n</span>-<a name="line-93"></a>-<a name="line-94"></a><span class='comment'>-- |</span>-<a name="line-95"></a><span class='comment'>-- test for a wellformed namespace declaration</span>-<a name="line-96"></a><span class='comment'>-- all namespace prefixes starting with \"xml\" are reserved for XML related definitions.</span>-<a name="line-97"></a><span class='comment'>-- predicate is used in filter 'valdateNamespaces'.</span>-<a name="line-98"></a>-<a name="line-99"></a><a name="isWellformedNSDecl"></a><span class='definition'>isWellformedNSDecl</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-100"></a><span class='definition'>isWellformedNSDecl</span> <span class='varid'>n</span>-<a name="line-101"></a> <span class='keyglyph'>=</span> <span class='varid'>null</span> <span class='varid'>px</span>-<a name="line-102"></a> <span class='varop'>||</span>-<a name="line-103"></a> <span class='varid'>px</span> <span class='varop'>/=</span> <span class='varid'>a_xmlns</span>-<a name="line-104"></a> <span class='varop'>||</span>-<a name="line-105"></a> <span class='layout'>(</span><span class='varid'>take</span> <span class='num'>3</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='varop'>/=</span> <span class='varid'>a_xml</span>-<a name="line-106"></a> <span class='keyword'>where</span>-<a name="line-107"></a> <span class='varid'>lp</span> <span class='keyglyph'>=</span> <span class='varid'>localPart</span> <span class='varid'>n</span>-<a name="line-108"></a> <span class='varid'>px</span> <span class='keyglyph'>=</span> <span class='varid'>namePrefix</span> <span class='varid'>n</span>-<a name="line-109"></a>-<a name="line-110"></a><span class='comment'>-- |</span>-<a name="line-111"></a><span class='comment'>-- </span>-<a name="line-112"></a><span class='comment'>-- predicate is used in filter 'valdateNamespaces'.</span>-<a name="line-113"></a>-<a name="line-114"></a><a name="isDeclaredNamespace"></a><span class='definition'>isDeclaredNamespace</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-115"></a><span class='definition'>isDeclaredNamespace</span> <span class='varid'>n</span>-<a name="line-116"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>px</span> <span class='comment'>-- no namespace used</span>-<a name="line-117"></a> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-118"></a> <span class='keyglyph'>|</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span> <span class='comment'>-- "xmlns" has a predefined namespace uri</span>-<a name="line-119"></a> <span class='keyglyph'>=</span> <span class='varid'>ns</span> <span class='varop'>==</span> <span class='varid'>xmlnsNamespace</span>-<a name="line-120"></a> <span class='keyglyph'>|</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xml</span> <span class='comment'>-- "xml" has a predefiend namespace"</span>-<a name="line-121"></a> <span class='keyglyph'>=</span> <span class='varid'>ns</span> <span class='varop'>==</span> <span class='varid'>xmlNamespace</span>-<a name="line-122"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='comment'>-- namespace values are not empty</span>-<a name="line-123"></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'>ns</span>-<a name="line-124"></a> <span class='keyword'>where</span>-<a name="line-125"></a> <span class='varid'>px</span> <span class='keyglyph'>=</span> <span class='varid'>namePrefix</span> <span class='varid'>n</span>-<a name="line-126"></a> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri</span> <span class='varid'>n</span>-<a name="line-127"></a>-<a name="line-128"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-</pre></body>-</html>
doc/hdoc/src/Text-XML-HXT-DOM-QualifiedName.html view
@@ -24,201 +24,524 @@ <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'>QualifiedName</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'>QualifiedName</span>-<a name="line-20"></a> <span class='layout'>)</span>-<a name="line-21"></a>-<a name="line-22"></a><span class='keyword'>where</span>-<a name="line-23"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Parallel</span><span class='varop'>.</span><span class='conid'>Strategies</span>-<a name="line-24"></a>-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span> <span class='layout'>(</span><span class='varid'>toLower</span><span class='layout'>)</span>-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Typeable</span>-<a name="line-27"></a>-<a name="line-28"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-29"></a><span class='comment'>--</span>-<a name="line-30"></a><span class='comment'>-- |</span>-<a name="line-31"></a><span class='comment'>-- Namespace support for element and attribute names.</span>-<a name="line-32"></a><span class='comment'>--</span>-<a name="line-33"></a><span class='comment'>-- A qualified name consists of a name prefix, a local name</span>-<a name="line-34"></a><span class='comment'>-- and a namespace uri.</span>-<a name="line-35"></a><span class='comment'>-- All modules, which are not namespace aware, use only the 'localPart' component.</span>-<a name="line-36"></a><span class='comment'>-- When dealing with namespaces, the document tree must be processed by "propagateNamespaces"</span>-<a name="line-37"></a><span class='comment'>-- to split names of structure \"prefix:localPart\" and label the name with the apropriate namespace uri</span>-<a name="line-38"></a>-<a name="line-39"></a><a name="QName"></a><span class='keyword'>data</span> <span class='conid'>QName</span> <span class='keyglyph'>=</span> <span class='conid'>QN</span> <span class='layout'>{</span> <span class='varid'>namePrefix</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='comment'>-- ^ the name prefix part of a qualified name \"namePrefix:localPart\"</span>-<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>localPart</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='comment'>-- ^ the local part of a qualified name \"namePrefix:localPart\"</span>-<a name="line-41"></a> <span class='layout'>,</span> <span class='varid'>namespaceUri</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='comment'>-- ^ the associated namespace uri</span>-<a name="line-42"></a> <span class='layout'>}</span>-<a name="line-43"></a> <span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Ord</span><span class='layout'>,</span> <span class='conid'>Show</span><span class='layout'>,</span> <span class='conid'>Read</span><span class='layout'>,</span> <span class='conid'>Typeable</span><span class='layout'>)</span>-<a name="line-44"></a>-<a name="line-45"></a><span class='comment'>-- | Two QNames are equal if (1. case) namespaces are both empty and the qualified names</span>-<a name="line-46"></a><span class='comment'>-- (prefix:localpart) are the same or (2. case) namespaces are set and namespaces and</span>-<a name="line-47"></a><span class='comment'>-- local parts both are equal</span>-<a name="line-48"></a> -<a name="line-49"></a><span class='keyword'>instance</span> <span class='conid'>Eq</span> <span class='conid'>QName</span> <span class='keyword'>where</span>-<a name="line-50"></a> <span class='varid'>q1</span> <span class='varop'>==</span> <span class='varid'>q2</span>-<a name="line-51"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>ns1</span> <span class='varop'>&&</span> <span class='varid'>null</span> <span class='varid'>ns2</span>-<a name="line-52"></a> <span class='keyglyph'>=</span> <span class='varid'>qualifiedName</span> <span class='varid'>q1</span> <span class='varop'>==</span> <span class='varid'>qualifiedName</span> <span class='varid'>q2</span>-<a name="line-53"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-54"></a> <span class='keyglyph'>=</span> <span class='varid'>localPart</span> <span class='varid'>q1</span> <span class='varop'>==</span> <span class='varid'>localPart</span> <span class='varid'>q2</span>-<a name="line-55"></a> <span class='varop'>&&</span>-<a name="line-56"></a> <span class='varid'>ns1</span> <span class='varop'>==</span> <span class='varid'>ns2</span>-<a name="line-57"></a> <span class='keyword'>where</span>-<a name="line-58"></a> <span class='varid'>ns1</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri</span> <span class='varid'>q1</span>-<a name="line-59"></a> <span class='varid'>ns2</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri</span> <span class='varid'>q2</span>-<a name="line-60"></a>-<a name="line-61"></a><span class='keyword'>instance</span> <span class='conid'>NFData</span> <span class='conid'>QName</span> <span class='keyword'>where</span>-<a name="line-62"></a> <span class='varid'>rnf</span> <span class='layout'>(</span><span class='conid'>QN</span> <span class='varid'>np</span> <span class='varid'>lp</span> <span class='varid'>ns</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rnf</span> <span class='varid'>np</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>lp</span> <span class='varop'>`seq`</span> <span class='varid'>rnf</span> <span class='varid'>ns</span>-<a name="line-63"></a>-<a name="line-64"></a>-<a name="line-65"></a><span class='comment'>-- just for adding the module to the lib</span>-<a name="line-66"></a><span class='comment'>-- |</span>-<a name="line-67"></a><span class='comment'>-- builds the full name \"prefix:localPart\", if prefix is not null, else the local part is the result</span>-<a name="line-68"></a>-<a name="line-69"></a><a name="qualifiedName"></a><span class='definition'>qualifiedName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-70"></a><span class='definition'>qualifiedName</span> <span class='varid'>n</span>-<a name="line-71"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>px</span>-<a name="line-72"></a> <span class='keyglyph'>=</span> <span class='varid'>lp</span>-<a name="line-73"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-74"></a> <span class='keyglyph'>=</span> <span class='varid'>px</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='chr'>':'</span> <span class='conop'>:</span> <span class='varid'>lp</span><span class='layout'>)</span>-<a name="line-75"></a> <span class='keyword'>where</span>-<a name="line-76"></a> <span class='varid'>px</span> <span class='keyglyph'>=</span> <span class='varid'>namePrefix</span> <span class='varid'>n</span>-<a name="line-77"></a> <span class='varid'>lp</span> <span class='keyglyph'>=</span> <span class='varid'>localPart</span> <span class='varid'>n</span>-<a name="line-78"></a>-<a name="line-79"></a><span class='comment'>-- |</span>-<a name="line-80"></a><span class='comment'>-- builds the \"universal\" name, that is the namespace uri surrounded with \"{\" and \"}\" followed by the local part</span>-<a name="line-81"></a><span class='comment'>-- (specialisation of 'buildUniversalName')</span>+<a name="line-19"></a> <span class='layout'>(</span> <span class='conid'>QName</span>+<a name="line-20"></a> <span class='layout'>,</span> <span class='conid'>XName</span>+<a name="line-21"></a> <span class='layout'>,</span> <span class='conid'>NsEnv</span>+<a name="line-22"></a>+<a name="line-23"></a> <span class='layout'>,</span> <span class='varid'>mkQName</span>+<a name="line-24"></a> <span class='layout'>,</span> <span class='varid'>mkName</span>+<a name="line-25"></a> <span class='layout'>,</span> <span class='varid'>mkNsName</span>+<a name="line-26"></a> <span class='layout'>,</span> <span class='varid'>mkSNsName</span>+<a name="line-27"></a> <span class='layout'>,</span> <span class='varid'>mkPrefixLocalPart</span>+<a name="line-28"></a>+<a name="line-29"></a> <span class='layout'>,</span> <span class='varid'>equivQName</span>+<a name="line-30"></a> <span class='layout'>,</span> <span class='varid'>equivUri</span>+<a name="line-31"></a> <span class='layout'>,</span> <span class='varid'>equalQNameBy</span>+<a name="line-32"></a>+<a name="line-33"></a> <span class='layout'>,</span> <span class='varid'>namePrefix</span>+<a name="line-34"></a> <span class='layout'>,</span> <span class='varid'>localPart</span>+<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>namespaceUri</span>+<a name="line-36"></a>+<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>newXName</span>+<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>nullXName</span>+<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>isNullXName</span>+<a name="line-40"></a>+<a name="line-41"></a> <span class='layout'>,</span> <span class='varid'>mkQName'</span>+<a name="line-42"></a> <span class='layout'>,</span> <span class='varid'>namePrefix'</span>+<a name="line-43"></a> <span class='layout'>,</span> <span class='varid'>localPart'</span>+<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>namespaceUri'</span>+<a name="line-45"></a>+<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>setNamePrefix'</span>+<a name="line-47"></a> <span class='layout'>,</span> <span class='varid'>setLocalPart'</span>+<a name="line-48"></a> <span class='layout'>,</span> <span class='varid'>setNamespaceUri'</span>+<a name="line-49"></a>+<a name="line-50"></a> <span class='layout'>,</span> <span class='varid'>qualifiedName</span>+<a name="line-51"></a> <span class='layout'>,</span> <span class='varid'>universalName</span>+<a name="line-52"></a> <span class='layout'>,</span> <span class='varid'>universalUri</span>+<a name="line-53"></a> <span class='layout'>,</span> <span class='varid'>buildUniversalName</span>+<a name="line-54"></a>+<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>normalizeNsUri</span>+<a name="line-56"></a>+<a name="line-57"></a> <span class='layout'>,</span> <span class='varid'>setNamespace</span> <span class='comment'>-- namespace related functions</span>+<a name="line-58"></a> <span class='layout'>,</span> <span class='varid'>isNCName</span>+<a name="line-59"></a> <span class='layout'>,</span> <span class='varid'>isWellformedQualifiedName</span>+<a name="line-60"></a> <span class='layout'>,</span> <span class='varid'>isWellformedQName</span>+<a name="line-61"></a> <span class='layout'>,</span> <span class='varid'>isWellformedNSDecl</span>+<a name="line-62"></a> <span class='layout'>,</span> <span class='varid'>isWellformedNameSpaceName</span>+<a name="line-63"></a> <span class='layout'>,</span> <span class='varid'>isNameSpaceName</span>+<a name="line-64"></a> <span class='layout'>,</span> <span class='varid'>isDeclaredNamespace</span>+<a name="line-65"></a>+<a name="line-66"></a> <span class='layout'>,</span> <span class='varid'>xmlNamespaceXName</span>+<a name="line-67"></a> <span class='layout'>,</span> <span class='varid'>xmlXName</span>+<a name="line-68"></a> <span class='layout'>,</span> <span class='varid'>xmlnsNamespaceXName</span>+<a name="line-69"></a> <span class='layout'>,</span> <span class='varid'>xmlnsXName</span>+<a name="line-70"></a> <span class='layout'>,</span> <span class='varid'>xmlnsQN</span>+<a name="line-71"></a>+<a name="line-72"></a> <span class='layout'>,</span> <span class='varid'>toNsEnv</span>+<a name="line-73"></a> <span class='layout'>)</span>+<a name="line-74"></a>+<a name="line-75"></a><span class='keyword'>where</span>+<a name="line-76"></a>+<a name="line-77"></a><span class='comment'>{-+<a name="line-78"></a>import Debug.Trace+<a name="line-79"></a> -}</span>+<a name="line-80"></a>+<a name="line-81"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varop'>***</span><span class='layout'>)</span> <span class='layout'>)</span> <a name="line-82"></a>-<a name="line-83"></a><a name="universalName"></a><span class='definition'>universalName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-84"></a><span class='definition'>universalName</span> <span class='keyglyph'>=</span> <span class='varid'>buildUniversalName</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>ns</span> <span class='varid'>lp</span> <span class='keyglyph'>-></span> <span class='chr'>'{'</span> <span class='conop'>:</span> <span class='varid'>ns</span> <span class='varop'>++</span> <span class='chr'>'}'</span> <span class='conop'>:</span> <span class='varid'>lp</span><span class='layout'>)</span>+<a name="line-83"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Concurrent</span><span class='varop'>.</span><span class='conid'>MVar</span>+<a name="line-84"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Parallel</span><span class='varop'>.</span><span class='conid'>Strategies</span> <a name="line-85"></a>-<a name="line-86"></a><span class='comment'>-- |</span>-<a name="line-87"></a><span class='comment'>-- builds an \"universal\" uri, that is the namespace uri followed by the local part. This is usefull for RDF applications,</span>-<a name="line-88"></a><span class='comment'>-- where the subject, predicate and object often are concatenated from namespace uri and local part</span>-<a name="line-89"></a><span class='comment'>-- (specialisation of 'buildUniversalName')</span>-<a name="line-90"></a>-<a name="line-91"></a><a name="universalUri"></a><span class='definition'>universalUri</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-92"></a><span class='definition'>universalUri</span> <span class='keyglyph'>=</span> <span class='varid'>buildUniversalName</span> <span class='layout'>(</span><span class='varop'>++</span><span class='layout'>)</span>-<a name="line-93"></a>-<a name="line-94"></a><span class='comment'>-- |</span>-<a name="line-95"></a><span class='comment'>-- builds a string from the namespace uri and the local part. If the namespace uri is empty, the local part is returned, else</span>-<a name="line-96"></a><span class='comment'>-- namespace uri and local part are combined with the combining function given by the first parameter</span>-<a name="line-97"></a>-<a name="line-98"></a><a name="buildUniversalName"></a><span class='definition'>buildUniversalName</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='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-99"></a><span class='definition'>buildUniversalName</span> <span class='varid'>bf</span> <span class='varid'>n</span>-<a name="line-100"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>ns</span>-<a name="line-101"></a> <span class='keyglyph'>=</span> <span class='varid'>lp</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'>bf</span> <span class='varid'>ns</span> <span class='varid'>lp</span>-<a name="line-104"></a> <span class='keyword'>where</span>-<a name="line-105"></a> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri</span> <span class='varid'>n</span>-<a name="line-106"></a> <span class='varid'>lp</span> <span class='keyglyph'>=</span> <span class='varid'>localPart</span> <span class='varid'>n</span>-<a name="line-107"></a>-<a name="line-108"></a><span class='comment'>-- |</span>-<a name="line-109"></a><span class='comment'>-- constructs a complete qualified name with 'namePrefix', 'localPart' and 'namespaceUri'.</span>+<a name="line-86"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>AssocList</span>+<a name="line-87"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span> <span class='layout'>(</span> <span class='varid'>toLower</span> <span class='layout'>)</span>+<a name="line-88"></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'>isPrefixOf</span> <span class='layout'>)</span>+<a name="line-89"></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-90"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-91"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Typeable</span>+<a name="line-92"></a>+<a name="line-93"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>Unsafe</span> <span class='layout'>(</span> <span class='varid'>unsafePerformIO</span> <span class='layout'>)</span>+<a name="line-94"></a>+<a name="line-95"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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='layout'>(</span> <span class='varid'>a_xml</span>+<a name="line-96"></a> <span class='layout'>,</span> <span class='varid'>a_xmlns</span>+<a name="line-97"></a> <span class='layout'>,</span> <span class='varid'>xmlNamespace</span>+<a name="line-98"></a> <span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span>+<a name="line-99"></a> <span class='layout'>)</span>+<a name="line-100"></a>+<a name="line-101"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span> <span class='layout'>(</span> <span class='varid'>isXmlNCNameStartChar</span>+<a name="line-102"></a> <span class='layout'>,</span> <span class='varid'>isXmlNCNameChar</span>+<a name="line-103"></a> <span class='layout'>)</span>+<a name="line-104"></a>+<a name="line-105"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-106"></a>+<a name="line-107"></a><span class='comment'>-- | XML names are represented by Strings, but these strings do not mix up with normal strings.</span>+<a name="line-108"></a><span class='comment'>-- Names are always reduced to normal form, and they are stored internally in a name cache</span>+<a name="line-109"></a><span class='comment'>-- for sharing equal names by the same data structure</span> <a name="line-110"></a>-<a name="line-111"></a><a name="mkQName"></a><span class='definition'>mkQName</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> <span class='keyglyph'>-></span> <span class='conid'>QName</span>-<a name="line-112"></a><span class='definition'>mkQName</span> <span class='varid'>p</span> <span class='varid'>l</span> <span class='varid'>n</span>-<a name="line-113"></a> <span class='keyglyph'>=</span> <span class='conid'>QN</span> <span class='layout'>{</span> <span class='varid'>namePrefix</span> <span class='keyglyph'>=</span> <span class='varid'>p</span>-<a name="line-114"></a> <span class='layout'>,</span> <span class='varid'>localPart</span> <span class='keyglyph'>=</span> <span class='varid'>l</span>-<a name="line-115"></a> <span class='layout'>,</span> <span class='varid'>namespaceUri</span> <span class='keyglyph'>=</span> <span class='varid'>n</span>-<a name="line-116"></a> <span class='layout'>}</span>-<a name="line-117"></a>-<a name="line-118"></a><span class='comment'>-- |</span>-<a name="line-119"></a><span class='comment'>-- constructs a simple, namespace unaware name, 'namePrefix' and 'namespaceUri' are set to the empty string.</span>-<a name="line-120"></a>-<a name="line-121"></a><a name="mkName"></a><span class='definition'>mkName</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>-<a name="line-122"></a><span class='definition'>mkName</span> <span class='varid'>s</span>-<a name="line-123"></a> <span class='keyglyph'>=</span> <span class='conid'>QN</span> <span class='layout'>{</span> <span class='varid'>namePrefix</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-124"></a> <span class='layout'>,</span> <span class='varid'>localPart</span> <span class='keyglyph'>=</span> <span class='varid'>s</span>-<a name="line-125"></a> <span class='layout'>,</span> <span class='varid'>namespaceUri</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-126"></a> <span class='layout'>}</span>-<a name="line-127"></a>-<a name="line-128"></a><span class='comment'>-- |</span>-<a name="line-129"></a><span class='comment'>-- constructs a simple name, with prefix and localPart but without a namespace uri.</span>-<a name="line-130"></a><span class='comment'>--</span>-<a name="line-131"></a><span class='comment'>-- see also 'mkName', 'mkNsName', 'mkSNsName'</span>+<a name="line-111"></a><a name="XName"></a><span class='keyword'>type</span> <span class='conid'>XName</span> <span class='keyglyph'>=</span> <span class='conid'>Atom</span>+<a name="line-112"></a>+<a name="line-113"></a><span class='comment'>-- |</span>+<a name="line-114"></a><span class='comment'>-- Namespace support for element and attribute names.</span>+<a name="line-115"></a><span class='comment'>--</span>+<a name="line-116"></a><span class='comment'>-- A qualified name consists of a name prefix, a local name</span>+<a name="line-117"></a><span class='comment'>-- and a namespace uri.</span>+<a name="line-118"></a><span class='comment'>-- All modules, which are not namespace aware, use only the 'localPart' component.</span>+<a name="line-119"></a><span class='comment'>-- When dealing with namespaces, the document tree must be processed by "propagateNamespaces"</span>+<a name="line-120"></a><span class='comment'>-- to split names of structure \"prefix:localPart\" and label the name with the apropriate namespace uri</span>+<a name="line-121"></a>+<a name="line-122"></a><a name="QName"></a><span class='keyword'>data</span> <span class='conid'>QName</span> <span class='keyglyph'>=</span> <span class='conid'>LP</span> <span class='varop'>!</span> <span class='conid'>XName</span>+<a name="line-123"></a> <span class='keyglyph'>|</span> <span class='conid'>PX</span> <span class='varop'>!</span> <span class='conid'>XName</span> <span class='varop'>!</span> <span class='conid'>QName</span>+<a name="line-124"></a> <span class='keyglyph'>|</span> <span class='conid'>NS</span> <span class='varop'>!</span> <span class='conid'>XName</span> <span class='varop'>!</span> <span class='conid'>QName</span>+<a name="line-125"></a> <span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Ord</span><span class='layout'>,</span> <span class='conid'>Show</span><span class='layout'>,</span> <span class='conid'>Read</span><span class='layout'>,</span> <span class='conid'>Typeable</span><span class='layout'>)</span>+<a name="line-126"></a>+<a name="line-127"></a><span class='comment'>-- |</span>+<a name="line-128"></a><span class='comment'>-- Type for the namespace association list, used when propagating namespaces by</span>+<a name="line-129"></a><span class='comment'>-- modifying the 'QName' values in a tree</span>+<a name="line-130"></a>+<a name="line-131"></a><a name="NsEnv"></a><span class='keyword'>type</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>=</span> <span class='conid'>AssocList</span> <span class='conid'>XName</span> <span class='conid'>XName</span> <a name="line-132"></a>-<a name="line-133"></a><a name="mkPrefixLocalPart"></a><span class='definition'>mkPrefixLocalPart</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'>QName</span>-<a name="line-134"></a><span class='definition'>mkPrefixLocalPart</span> <span class='varid'>p</span> <span class='varid'>l</span>-<a name="line-135"></a> <span class='keyglyph'>=</span> <span class='conid'>QN</span> <span class='layout'>{</span> <span class='varid'>namePrefix</span> <span class='keyglyph'>=</span> <span class='varid'>p</span>-<a name="line-136"></a> <span class='layout'>,</span> <span class='varid'>localPart</span> <span class='keyglyph'>=</span> <span class='varid'>l</span>-<a name="line-137"></a> <span class='layout'>,</span> <span class='varid'>namespaceUri</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-138"></a> <span class='layout'>}</span>-<a name="line-139"></a>-<a name="line-140"></a><span class='comment'>-- |</span>-<a name="line-141"></a><span class='comment'>-- constructs a simple, namespace aware name, with prefix:localPart as first parameter, namspace uri as second.</span>-<a name="line-142"></a><span class='comment'>--</span>-<a name="line-143"></a><span class='comment'>-- see also 'mkName', 'mkPrefixLocalPart'</span>-<a name="line-144"></a>-<a name="line-145"></a><a name="mkNsName"></a><span class='definition'>mkNsName</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'>QName</span>-<a name="line-146"></a><span class='definition'>mkNsName</span> <span class='varid'>n</span> <span class='varid'>ns</span>-<a name="line-147"></a> <span class='keyglyph'>=</span> <span class='conid'>QN</span> <span class='layout'>{</span> <span class='varid'>namePrefix</span> <span class='keyglyph'>=</span> <span class='varid'>p</span>-<a name="line-148"></a> <span class='layout'>,</span> <span class='varid'>localPart</span> <span class='keyglyph'>=</span> <span class='varid'>l</span>-<a name="line-149"></a> <span class='layout'>,</span> <span class='varid'>namespaceUri</span> <span class='keyglyph'>=</span> <span class='varid'>ns</span>-<a name="line-150"></a> <span class='layout'>}</span>-<a name="line-151"></a> <span class='keyword'>where</span>-<a name="line-152"></a> <span class='layout'>(</span><span class='varid'>x1</span><span class='layout'>,</span> <span class='varid'>x2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-153"></a> <span class='layout'>(</span><span class='varid'>p</span><span class='layout'>,</span> <span class='varid'>l</span><span class='layout'>)</span>-<a name="line-154"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>x2</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='varid'>x1</span><span class='layout'>)</span>-<a name="line-155"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>x1</span><span class='layout'>,</span> <span class='varid'>tail</span> <span class='varid'>x2</span><span class='layout'>)</span>-<a name="line-156"></a>+<a name="line-133"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-134"></a>+<a name="line-135"></a><span class='comment'>-- | Two QNames are equal if (1. case) namespaces are both empty and the qualified names</span>+<a name="line-136"></a><span class='comment'>-- (prefix:localpart) are the same or (2. case) namespaces are set and namespaces and</span>+<a name="line-137"></a><span class='comment'>-- local parts both are equal</span>+<a name="line-138"></a> +<a name="line-139"></a><span class='keyword'>instance</span> <span class='conid'>Eq</span> <span class='conid'>QName</span> <span class='keyword'>where</span>+<a name="line-140"></a> <span class='layout'>(</span><span class='conid'>LP</span> <span class='varid'>lp1</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='layout'>(</span><span class='conid'>LP</span> <span class='varid'>lp2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>lp1</span> <span class='varop'>==</span> <span class='varid'>lp2</span>+<a name="line-141"></a> <span class='layout'>(</span><span class='conid'>PX</span> <span class='varid'>px1</span> <span class='varid'>qn1</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='layout'>(</span><span class='conid'>PX</span> <span class='varid'>px2</span> <span class='varid'>qn2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>px1</span> <span class='varop'>==</span> <span class='varid'>px2</span> <span class='varop'>&&</span> <span class='varid'>qn1</span><span class='varop'>==</span> <span class='varid'>qn2</span>+<a name="line-142"></a> <span class='layout'>(</span><span class='conid'>NS</span> <span class='varid'>ns1</span> <span class='varid'>qn1</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='varid'>ns2</span> <span class='varid'>qn2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>ns1</span> <span class='varop'>==</span> <span class='varid'>ns2</span> <span class='varop'>&&</span> <span class='varid'>localPart'</span> <span class='varid'>qn1</span> <span class='varop'>==</span> <span class='varid'>localPart'</span> <span class='varid'>qn2</span>+<a name="line-143"></a> <span class='varid'>n1</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>PX</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>n2</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>LP</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>qualifiedName</span> <span class='varid'>n1</span> <span class='varop'>==</span> <span class='varid'>qualifiedName</span> <span class='varid'>n2</span>+<a name="line-144"></a> <span class='varid'>n1</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>LP</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>n2</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>PX</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>qualifiedName</span> <span class='varid'>n1</span> <span class='varop'>==</span> <span class='varid'>qualifiedName</span> <span class='varid'>n2</span>+<a name="line-145"></a> <span class='keyword'>_</span> <span class='varop'>==</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-146"></a>+<a name="line-147"></a><span class='comment'>-- the 4. and 5. rule are only neccessary when someone</span>+<a name="line-148"></a><span class='comment'>-- uses XML names not in a systematical way</span>+<a name="line-149"></a><span class='comment'>-- and does things like "mkName("x:y") == mkPrefixLocalPart("x","y")</span>+<a name="line-150"></a>+<a name="line-151"></a><span class='keyword'>instance</span> <span class='conid'>NFData</span> <span class='conid'>QName</span> <span class='keyword'>where</span>+<a name="line-152"></a>+<a name="line-153"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-154"></a>+<a name="line-155"></a><a name="newXName"></a><span class='definition'>newXName</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XName</span>+<a name="line-156"></a><span class='definition'>newXName</span> <span class='keyglyph'>=</span> <span class='varid'>newAtom</span> <a name="line-157"></a>-<a name="line-158"></a><span class='comment'>-- |</span>-<a name="line-159"></a><span class='comment'>-- constructs a simple name, with prefix:localPart as 1 parameter, with empty namspace uri, same as 'mkPrefixLocalPart, but with a single parameter</span>-<a name="line-160"></a><span class='comment'>--</span>-<a name="line-161"></a><span class='comment'>-- see also 'mkNsName', 'mkPrefixLocalPart'</span>-<a name="line-162"></a>-<a name="line-163"></a><a name="mkSNsName"></a><span class='definition'>mkSNsName</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>-<a name="line-164"></a><span class='definition'>mkSNsName</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>mkNsName</span> <span class='varid'>n</span> <span class='str'>""</span>+<a name="line-158"></a><a name="isNullXName"></a><span class='definition'>isNullXName</span> <span class='keyglyph'>::</span> <span class='conid'>XName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-159"></a><span class='definition'>isNullXName</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varop'>==</span> <span class='varid'>nullXName</span><span class='layout'>)</span>+<a name="line-160"></a>+<a name="line-161"></a><a name="nullXName"></a><span class='definition'>nullXName</span> <span class='keyglyph'>::</span> <span class='conid'>XName</span>+<a name="line-162"></a><span class='definition'>nullXName</span> <span class='keyglyph'>=</span> <span class='varid'>newXName</span> <span class='str'>""</span>+<a name="line-163"></a>+<a name="line-164"></a><span class='comment'>-- | access name prefix</span> <a name="line-165"></a>-<a name="line-166"></a><span class='comment'>-- | Empty QName</span>-<a name="line-167"></a>-<a name="line-168"></a><a name="nullQName"></a><span class='definition'>nullQName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span>-<a name="line-169"></a><span class='definition'>nullQName</span> <span class='keyglyph'>=</span> <span class='conid'>QN</span> <span class='str'>""</span> <span class='str'>""</span> <span class='str'>""</span>+<a name="line-166"></a><a name="namePrefix'"></a><span class='definition'>namePrefix'</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>XName</span>+<a name="line-167"></a><span class='definition'>namePrefix'</span> <span class='layout'>(</span><span class='conid'>LP</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>nullXName</span>+<a name="line-168"></a><span class='definition'>namePrefix'</span> <span class='layout'>(</span><span class='conid'>PX</span> <span class='varid'>px</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>px</span>+<a name="line-169"></a><span class='definition'>namePrefix'</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='keyword'>_</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-170"></a>-<a name="line-171"></a><span class='comment'>-- | Equality of QNames: Two QNames are equal, if the local parts are equal</span>-<a name="line-172"></a><span class='comment'>-- and the namespace URIs are equal.</span>-<a name="line-173"></a><span class='comment'>-- The comparison works with and without namespace propagation.</span>-<a name="line-174"></a><span class='comment'>-- If namespaces have been propagated, the name is split into prefix and local part</span>-<a name="line-175"></a><span class='comment'>-- and the namespace uri is set. In this case the prefix is not significant for equality test.</span>-<a name="line-176"></a><span class='comment'>-- If namespaces have not been propagated, the local part contains the full name, prefix</span>-<a name="line-177"></a><span class='comment'>-- and namespace URI are empty. The full name (prefix and local part) is used for comparison.</span>-<a name="line-178"></a>-<a name="line-179"></a><a name="equalQName"></a><span class='definition'>equalQName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-180"></a><span class='definition'>equalQName</span> <span class='keyglyph'>=</span> <span class='varid'>equalQNameBy</span> <span class='layout'>(</span><span class='varop'>==</span><span class='layout'>)</span>-<a name="line-181"></a>-<a name="line-182"></a><span class='comment'>-- | Equivalent QNames are defined as follows: The URIs are normalized before comparison.</span>-<a name="line-183"></a><span class='comment'>-- Comparison is done with 'equalQNameBy' and 'equivUri'</span>-<a name="line-184"></a>-<a name="line-185"></a><a name="equivQName"></a><span class='definition'>equivQName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-186"></a><span class='definition'>equivQName</span> <span class='keyglyph'>=</span> <span class='varid'>equalQNameBy</span> <span class='varid'>equivUri</span>-<a name="line-187"></a>-<a name="line-188"></a><span class='comment'>-- | Comparison of normalized namespace URIs using 'normalizeNsUri'</span>+<a name="line-171"></a><span class='comment'>-- | access local part</span>+<a name="line-172"></a>+<a name="line-173"></a><a name="localPart'"></a><span class='definition'>localPart'</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>XName</span>+<a name="line-174"></a><span class='definition'>localPart'</span> <span class='layout'>(</span><span class='conid'>LP</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>lp</span>+<a name="line-175"></a><span class='definition'>localPart'</span> <span class='layout'>(</span><span class='conid'>PX</span> <span class='keyword'>_</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-176"></a><span class='definition'>localPart'</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='keyword'>_</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-177"></a>+<a name="line-178"></a><span class='comment'>-- | access namespace uri</span>+<a name="line-179"></a>+<a name="line-180"></a><a name="namespaceUri'"></a><span class='definition'>namespaceUri'</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>XName</span>+<a name="line-181"></a><span class='definition'>namespaceUri'</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='varid'>ns</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>ns</span>+<a name="line-182"></a><span class='definition'>namespaceUri'</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>nullXName</span>+<a name="line-183"></a>+<a name="line-184"></a><a name="namePrefix"></a><span class='definition'>namePrefix</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-185"></a><span class='definition'>namePrefix</span> <span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>namePrefix'</span>+<a name="line-186"></a>+<a name="line-187"></a><a name="localPart"></a><span class='definition'>localPart</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-188"></a><span class='definition'>localPart</span> <span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>localPart'</span> <a name="line-189"></a>-<a name="line-190"></a><a name="equivUri"></a><span class='definition'>equivUri</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'>Bool</span>-<a name="line-191"></a><span class='definition'>equivUri</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeNsUri</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>normalizeNsUri</span> <span class='varid'>y</span>+<a name="line-190"></a><a name="namespaceUri"></a><span class='definition'>namespaceUri</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-191"></a><span class='definition'>namespaceUri</span> <span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>namespaceUri'</span> <a name="line-192"></a>-<a name="line-193"></a><span class='comment'>-- | Sometimes a weaker equality relation than 'equalQName' is appropriate, e.g no case significance in names, ...</span>-<a name="line-194"></a><span class='comment'>-- a name normalization function can be applied to the strings before comparing. Called by 'equalQName' and</span>-<a name="line-195"></a><span class='comment'>-- 'equivQName'</span>+<a name="line-193"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-194"></a>+<a name="line-195"></a><span class='comment'>-- | set name prefix</span> <a name="line-196"></a>-<a name="line-197"></a><a name="equalQNameBy"></a><span class='definition'>equalQNameBy</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='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-198"></a><span class='definition'>equalQNameBy</span> <span class='varid'>equiv</span> <span class='varid'>q1</span> <span class='varid'>q2</span>-<a name="line-199"></a> <span class='keyglyph'>=</span> <span class='varid'>localPart</span> <span class='varid'>q1</span> <span class='varop'>==</span> <span class='varid'>localPart</span> <span class='varid'>q2</span>-<a name="line-200"></a> <span class='varop'>&&</span>-<a name="line-201"></a> <span class='layout'>(</span><span class='varid'>namespaceUri</span> <span class='varid'>q1</span> <span class='varop'>`equiv`</span> <span class='varid'>namespaceUri</span> <span class='varid'>q2</span><span class='layout'>)</span>-<a name="line-202"></a>-<a name="line-203"></a><span class='comment'>-- | Normalization of URIs: Normalization is done by conversion into lowercase letters. A trailing \"\/\" is ignored</span>+<a name="line-197"></a><a name="setNamespaceUri'"></a><span class='definition'>setNamespaceUri'</span> <span class='keyglyph'>::</span> <span class='conid'>XName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-198"></a><span class='definition'>setNamespaceUri'</span> <span class='varid'>ns</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='keyword'>_</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>isNullXName</span> <span class='varid'>ns</span>+<a name="line-199"></a> <span class='keyword'>then</span> <span class='varid'>n</span>+<a name="line-200"></a> <span class='keyword'>else</span> <span class='conid'>NS</span> <span class='varid'>ns</span> <span class='varid'>n</span>+<a name="line-201"></a><span class='definition'>setNamespaceUri'</span> <span class='varid'>ns</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>isNullXName</span> <span class='varid'>ns</span>+<a name="line-202"></a> <span class='keyword'>then</span> <span class='varid'>n</span>+<a name="line-203"></a> <span class='keyword'>else</span> <span class='conid'>NS</span> <span class='varid'>ns</span> <span class='varid'>n</span> <a name="line-204"></a>-<a name="line-205"></a><a name="normalizeNsUri"></a><span class='definition'>normalizeNsUri</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-206"></a><span class='definition'>normalizeNsUri</span>-<a name="line-207"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>toLower</span> <span class='varop'>.</span> <span class='varid'>stripSlash</span>-<a name="line-208"></a> <span class='keyword'>where</span>-<a name="line-209"></a> <span class='varid'>stripSlash</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-210"></a> <span class='varid'>stripSlash</span> <span class='varid'>s</span>-<a name="line-211"></a> <span class='keyglyph'>|</span> <span class='varid'>last</span> <span class='varid'>s</span> <span class='varop'>==</span> <span class='chr'>'/'</span> <span class='keyglyph'>=</span> <span class='varid'>init</span> <span class='varid'>s</span>-<a name="line-212"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>s</span>+<a name="line-205"></a><span class='comment'>-- | set local part</span>+<a name="line-206"></a>+<a name="line-207"></a><a name="setLocalPart'"></a><span class='definition'>setLocalPart'</span> <span class='keyglyph'>::</span> <span class='conid'>XName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-208"></a><span class='definition'>setLocalPart'</span> <span class='varid'>lp</span> <span class='layout'>(</span><span class='conid'>LP</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>LP</span> <span class='varid'>lp</span>+<a name="line-209"></a><span class='definition'>setLocalPart'</span> <span class='varid'>lp</span> <span class='layout'>(</span><span class='conid'>PX</span> <span class='varid'>px</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>PX</span> <span class='varid'>px</span> <span class='layout'>(</span><span class='varid'>setLocalPart'</span> <span class='varid'>lp</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-210"></a><span class='definition'>setLocalPart'</span> <span class='varid'>lp</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='varid'>ns</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>NS</span> <span class='varid'>ns</span> <span class='layout'>(</span><span class='varid'>setLocalPart'</span> <span class='varid'>lp</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-211"></a>+<a name="line-212"></a><span class='comment'>-- | set name prefix</span> <a name="line-213"></a>-<a name="line-214"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-214"></a><a name="setNamePrefix'"></a><span class='definition'>setNamePrefix'</span> <span class='keyglyph'>::</span> <span class='conid'>XName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-215"></a><span class='definition'>setNamePrefix'</span> <span class='varid'>px</span> <span class='layout'>(</span><span class='conid'>PX</span> <span class='keyword'>_</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>nullXName</span>+<a name="line-216"></a> <span class='keyword'>then</span> <span class='varid'>n</span>+<a name="line-217"></a> <span class='keyword'>else</span> <span class='conid'>PX</span> <span class='varid'>px</span> <span class='varid'>n</span>+<a name="line-218"></a><span class='definition'>setNamePrefix'</span> <span class='varid'>px</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>LP</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>nullXName</span>+<a name="line-219"></a> <span class='keyword'>then</span> <span class='varid'>n</span>+<a name="line-220"></a> <span class='keyword'>else</span> <span class='conid'>PX</span> <span class='varid'>px</span> <span class='varid'>n</span>+<a name="line-221"></a><span class='definition'>setNamePrefix'</span> <span class='varid'>px</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='varid'>ns</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>NS</span> <span class='varid'>ns</span> <span class='layout'>(</span><span class='varid'>setNamePrefix'</span> <span class='varid'>px</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-222"></a>+<a name="line-223"></a>+<a name="line-224"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-225"></a>+<a name="line-226"></a><span class='comment'>-- |</span>+<a name="line-227"></a><span class='comment'>-- builds the full name \"prefix:localPart\", if prefix is not null, else the local part is the result</span>+<a name="line-228"></a>+<a name="line-229"></a><a name="qualifiedName"></a><span class='definition'>qualifiedName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-230"></a><span class='definition'>qualifiedName</span> <span class='layout'>(</span><span class='conid'>LP</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varid'>lp</span>+<a name="line-231"></a><span class='definition'>qualifiedName</span> <span class='layout'>(</span><span class='conid'>PX</span> <span class='varid'>px</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varid'>px</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='chr'>':'</span> <span class='conop'>:</span> <span class='varid'>qualifiedName</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-232"></a><span class='definition'>qualifiedName</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='keyword'>_</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-233"></a>+<a name="line-234"></a><span class='comment'>-- |</span>+<a name="line-235"></a><span class='comment'>-- builds the \"universal\" name, that is the namespace uri surrounded with \"{\" and \"}\" followed by the local part</span>+<a name="line-236"></a><span class='comment'>-- (specialisation of 'buildUniversalName')</span>+<a name="line-237"></a>+<a name="line-238"></a><a name="universalName"></a><span class='definition'>universalName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-239"></a><span class='definition'>universalName</span> <span class='keyglyph'>=</span> <span class='varid'>buildUniversalName</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>ns</span> <span class='varid'>lp</span> <span class='keyglyph'>-></span> <span class='chr'>'{'</span> <span class='conop'>:</span> <span class='varid'>ns</span> <span class='varop'>++</span> <span class='chr'>'}'</span> <span class='conop'>:</span> <span class='varid'>lp</span><span class='layout'>)</span>+<a name="line-240"></a>+<a name="line-241"></a><span class='comment'>-- |</span>+<a name="line-242"></a><span class='comment'>-- builds an \"universal\" uri, that is the namespace uri followed by the local part. This is usefull for RDF applications,</span>+<a name="line-243"></a><span class='comment'>-- where the subject, predicate and object often are concatenated from namespace uri and local part</span>+<a name="line-244"></a><span class='comment'>-- (specialisation of 'buildUniversalName')</span>+<a name="line-245"></a>+<a name="line-246"></a><a name="universalUri"></a><span class='definition'>universalUri</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-247"></a><span class='definition'>universalUri</span> <span class='keyglyph'>=</span> <span class='varid'>buildUniversalName</span> <span class='layout'>(</span><span class='varop'>++</span><span class='layout'>)</span>+<a name="line-248"></a>+<a name="line-249"></a><span class='comment'>-- |</span>+<a name="line-250"></a><span class='comment'>-- builds a string from the namespace uri and the local part. If the namespace uri is empty, the local part is returned, else</span>+<a name="line-251"></a><span class='comment'>-- namespace uri and local part are combined with the combining function given by the first parameter</span>+<a name="line-252"></a>+<a name="line-253"></a><a name="buildUniversalName"></a><span class='definition'>buildUniversalName</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='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-254"></a><span class='definition'>buildUniversalName</span> <span class='varid'>bf</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='varid'>ns</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varid'>ns</span> <span class='varop'>`bf`</span> <span class='varid'>localPart</span> <span class='varid'>n</span>+<a name="line-255"></a><span class='definition'>buildUniversalName</span> <span class='keyword'>_</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>localPart</span> <span class='varid'>n</span>+<a name="line-256"></a>+<a name="line-257"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-258"></a><span class='comment'>--</span>+<a name="line-259"></a><span class='comment'>-- internal XName functions</span>+<a name="line-260"></a>+<a name="line-261"></a><a name="mkQName'"></a><span class='definition'>mkQName'</span> <span class='keyglyph'>::</span> <span class='conid'>XName</span> <span class='keyglyph'>-></span> <span class='conid'>XName</span> <span class='keyglyph'>-></span> <span class='conid'>XName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-262"></a><span class='definition'>mkQName'</span> <span class='varid'>px</span> <span class='varid'>lp</span> <span class='varid'>ns</span>+<a name="line-263"></a> <span class='keyglyph'>|</span> <span class='varid'>isNullXName</span> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='varid'>px_lp</span>+<a name="line-264"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>NS</span> <span class='varid'>ns</span> <span class='varid'>px_lp</span>+<a name="line-265"></a> <span class='keyword'>where</span>+<a name="line-266"></a> <span class='varid'>px_lp</span>+<a name="line-267"></a> <span class='keyglyph'>|</span> <span class='varid'>isNullXName</span> <span class='varid'>px</span> <span class='keyglyph'>=</span> <span class='conid'>LP</span> <span class='varid'>lp</span>+<a name="line-268"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>PX</span> <span class='varid'>px</span> <span class='layout'>(</span><span class='conid'>LP</span> <span class='varid'>lp</span><span class='layout'>)</span>+<a name="line-269"></a>+<a name="line-270"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-271"></a>+<a name="line-272"></a><span class='comment'>-- |</span>+<a name="line-273"></a><span class='comment'>-- constructs a simple name, with prefix and localPart but without a namespace uri.</span>+<a name="line-274"></a><span class='comment'>--</span>+<a name="line-275"></a><span class='comment'>-- see also 'mkQName', 'mkName'</span>+<a name="line-276"></a>+<a name="line-277"></a><a name="mkPrefixLocalPart"></a><span class='definition'>mkPrefixLocalPart</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'>QName</span>+<a name="line-278"></a><span class='definition'>mkPrefixLocalPart</span> <span class='varid'>px</span> <span class='varid'>lp</span>+<a name="line-279"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>px</span> <span class='keyglyph'>=</span> <span class='varid'>n1</span>+<a name="line-280"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>PX</span> <span class='layout'>(</span><span class='varid'>newXName</span> <span class='varid'>px</span><span class='layout'>)</span> <span class='varid'>n1</span>+<a name="line-281"></a> <span class='keyword'>where</span>+<a name="line-282"></a> <span class='varid'>n1</span> <span class='keyglyph'>=</span> <span class='conid'>LP</span> <span class='layout'>(</span><span class='varid'>newXName</span> <span class='varid'>lp</span><span class='layout'>)</span>+<a name="line-283"></a>+<a name="line-284"></a><span class='comment'>-- |</span>+<a name="line-285"></a><span class='comment'>-- constructs a simple, namespace unaware name.</span>+<a name="line-286"></a><span class='comment'>-- If the name is in @prefix:localpart@ form and the prefix is not empty</span>+<a name="line-287"></a><span class='comment'>-- the name is split internally into</span>+<a name="line-288"></a><span class='comment'>-- a prefix and a local part.</span>+<a name="line-289"></a>+<a name="line-290"></a><a name="mkName"></a><span class='definition'>mkName</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-291"></a><span class='definition'>mkName</span> <span class='varid'>n</span> +<a name="line-292"></a> <span class='keyglyph'>|</span> <span class='layout'>(</span><span class='chr'>':'</span> <span class='varop'>`elem`</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-293"></a> <span class='varop'>&&</span>+<a name="line-294"></a> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>px</span><span class='layout'>)</span> <span class='comment'>-- more restrictive: isWellformedQualifiedName n</span>+<a name="line-295"></a> <span class='keyglyph'>=</span> <span class='varid'>mkPrefixLocalPart</span> <span class='varid'>px</span> <span class='varid'>lp</span>+<a name="line-296"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>mkPrefixLocalPart</span> <span class='str'>""</span> <span class='varid'>n</span>+<a name="line-297"></a> <span class='keyword'>where</span>+<a name="line-298"></a> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='layout'>(</span><span class='keyword'>_</span><span class='conop'>:</span><span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>n</span>+<a name="line-299"></a>+<a name="line-300"></a><span class='comment'>-- |</span>+<a name="line-301"></a><span class='comment'>-- constructs a complete qualified name with 'namePrefix', 'localPart' and 'namespaceUri'.</span>+<a name="line-302"></a><span class='comment'>-- This function can be used to build not wellformed prefix:localpart names.</span>+<a name="line-303"></a><span class='comment'>-- The XPath module uses wildcard names like @xxx:*@. These must be build with 'mkQName'</span>+<a name="line-304"></a><span class='comment'>-- and not with mkName.</span>+<a name="line-305"></a>+<a name="line-306"></a><a name="mkQName"></a><span class='definition'>mkQName</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> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-307"></a><span class='definition'>mkQName</span> <span class='varid'>px</span> <span class='varid'>lp</span> <span class='varid'>ns</span>+<a name="line-308"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='varid'>n1</span>+<a name="line-309"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>NS</span> <span class='layout'>(</span><span class='varid'>newXName</span> <span class='varid'>ns</span><span class='layout'>)</span> <span class='varid'>n1</span>+<a name="line-310"></a> <span class='keyword'>where</span>+<a name="line-311"></a> <span class='varid'>n1</span> <span class='keyglyph'>=</span> <span class='varid'>mkPrefixLocalPart</span> <span class='varid'>px</span> <span class='varid'>lp</span>+<a name="line-312"></a>+<a name="line-313"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-314"></a>+<a name="line-315"></a><span class='comment'>-- |</span>+<a name="line-316"></a><span class='comment'>-- old name for 'mkName'</span>+<a name="line-317"></a>+<a name="line-318"></a><a name="mkSNsName"></a><span class='definition'>mkSNsName</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-319"></a><span class='definition'>mkSNsName</span> <span class='keyglyph'>=</span> <span class='varid'>mkName</span>+<a name="line-320"></a>+<a name="line-321"></a><span class='comment'>-- |</span>+<a name="line-322"></a><span class='comment'>-- constructs a simple, namespace aware name, with prefix:localPart as first parameter,</span>+<a name="line-323"></a><span class='comment'>-- namspace uri as second.</span>+<a name="line-324"></a><span class='comment'>--</span>+<a name="line-325"></a><span class='comment'>-- see also 'mkName', 'mkPrefixLocalPart'</span>+<a name="line-326"></a>+<a name="line-327"></a><a name="mkNsName"></a><span class='definition'>mkNsName</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'>QName</span>+<a name="line-328"></a><span class='definition'>mkNsName</span> <span class='varid'>n</span> <span class='varid'>ns</span>+<a name="line-329"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>n</span>+<a name="line-330"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>NS</span> <span class='layout'>(</span><span class='varid'>newXName</span> <span class='varid'>ns</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-331"></a>+<a name="line-332"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-333"></a>+<a name="line-334"></a><span class='comment'>-- | Equivalent QNames are defined as follows: The URIs are normalized before comparison.</span>+<a name="line-335"></a><span class='comment'>-- Comparison is done with 'equalQNameBy' and 'equivUri'</span>+<a name="line-336"></a>+<a name="line-337"></a><a name="equivQName"></a><span class='definition'>equivQName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-338"></a><span class='definition'>equivQName</span> <span class='keyglyph'>=</span> <span class='varid'>equalQNameBy</span> <span class='varid'>equivUri</span>+<a name="line-339"></a>+<a name="line-340"></a><span class='comment'>-- | Comparison of normalized namespace URIs using 'normalizeNsUri'</span>+<a name="line-341"></a>+<a name="line-342"></a><a name="equivUri"></a><span class='definition'>equivUri</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'>Bool</span>+<a name="line-343"></a><span class='definition'>equivUri</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>=</span> <span class='varid'>normalizeNsUri</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>normalizeNsUri</span> <span class='varid'>y</span>+<a name="line-344"></a>+<a name="line-345"></a><span class='comment'>-- | Sometimes a weaker equality relation than 'equalQName' is appropriate, e.g no case significance in names, ...</span>+<a name="line-346"></a><span class='comment'>-- a name normalization function can be applied to the strings before comparing. Called by 'equalQName' and</span>+<a name="line-347"></a><span class='comment'>-- 'equivQName'</span>+<a name="line-348"></a>+<a name="line-349"></a><a name="equalQNameBy"></a><span class='definition'>equalQNameBy</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='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-350"></a><span class='definition'>equalQNameBy</span> <span class='varid'>equiv</span> <span class='varid'>q1</span> <span class='varid'>q2</span> <span class='keyglyph'>=</span> <span class='varid'>localPart</span> <span class='varid'>q1</span> <span class='varop'>==</span> <span class='varid'>localPart</span> <span class='varid'>q2</span>+<a name="line-351"></a> <span class='varop'>&&</span>+<a name="line-352"></a> <span class='layout'>(</span><span class='varid'>namespaceUri</span> <span class='varid'>q1</span> <span class='varop'>`equiv`</span> <span class='varid'>namespaceUri</span> <span class='varid'>q2</span><span class='layout'>)</span>+<a name="line-353"></a>+<a name="line-354"></a><span class='comment'>-- | Normalization of URIs: Normalization is done by conversion into lowercase letters. A trailing \"\/\" is ignored</span>+<a name="line-355"></a>+<a name="line-356"></a><a name="normalizeNsUri"></a><span class='definition'>normalizeNsUri</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-357"></a><span class='definition'>normalizeNsUri</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>toLower</span> <span class='varop'>.</span> <span class='varid'>stripSlash</span>+<a name="line-358"></a> <span class='keyword'>where</span>+<a name="line-359"></a> <span class='varid'>stripSlash</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='str'>""</span>+<a name="line-360"></a> <span class='varid'>stripSlash</span> <span class='varid'>s</span>+<a name="line-361"></a> <span class='keyglyph'>|</span> <span class='varid'>last</span> <span class='varid'>s</span> <span class='varop'>==</span> <span class='chr'>'/'</span> <span class='keyglyph'>=</span> <span class='varid'>init</span> <span class='varid'>s</span>+<a name="line-362"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>s</span>+<a name="line-363"></a>+<a name="line-364"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-365"></a>+<a name="line-366"></a><span class='comment'>-- Namespace predicates</span>+<a name="line-367"></a>+<a name="line-368"></a><span class='comment'>-- |</span>+<a name="line-369"></a><span class='comment'>-- Compute the name prefix and the namespace uri for a qualified name.</span>+<a name="line-370"></a><span class='comment'>--</span>+<a name="line-371"></a><span class='comment'>-- This function does not test whether the name is a wellformed qualified name.</span>+<a name="line-372"></a><span class='comment'>-- see Namespaces in XML Rule [6] to [8]. Error checking is done with separate functions,</span>+<a name="line-373"></a><span class='comment'>-- see 'isWellformedQName' and 'isWellformedQualifiedName' for error checking.</span>+<a name="line-374"></a>+<a name="line-375"></a><a name="setNamespace"></a><span class='definition'>setNamespace</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-376"></a><span class='definition'>setNamespace</span> <span class='varid'>env</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>PX</span> <span class='varid'>px</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>attachNS</span> <span class='varid'>env</span> <span class='varid'>px</span> <span class='varid'>n</span> <span class='comment'>-- none empty prefix found</span>+<a name="line-377"></a><span class='definition'>setNamespace</span> <span class='varid'>env</span> <span class='varid'>n</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>LP</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>attachNS</span> <span class='varid'>env</span> <span class='varid'>nullXName</span> <span class='varid'>n</span> <span class='comment'>-- use default namespace uri</span>+<a name="line-378"></a><span class='definition'>setNamespace</span> <span class='varid'>env</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='keyword'>_</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>setNamespace</span> <span class='varid'>env</span> <span class='varid'>n</span>+<a name="line-379"></a>+<a name="line-380"></a><a name="attachNS"></a><span class='definition'>attachNS</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>XName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-381"></a><span class='definition'>attachNS</span> <span class='varid'>env</span> <span class='varid'>px</span> <span class='varid'>n1</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>n1</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>ns</span> <span class='keyglyph'>-></span> <span class='conid'>NS</span> <span class='varid'>ns</span> <span class='varid'>n1</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>px</span> <span class='varop'>$</span> <span class='varid'>env</span>+<a name="line-382"></a>+<a name="line-383"></a><a name="xmlnsNamespaceXName"></a><span class='definition'>xmlnsNamespaceXName</span> <span class='keyglyph'>::</span> <span class='conid'>XName</span>+<a name="line-384"></a><span class='definition'>xmlnsNamespaceXName</span> <span class='keyglyph'>=</span> <span class='varid'>newXName</span> <span class='varid'>xmlnsNamespace</span>+<a name="line-385"></a>+<a name="line-386"></a><a name="xmlnsXName"></a><span class='definition'>xmlnsXName</span> <span class='keyglyph'>::</span> <span class='conid'>XName</span>+<a name="line-387"></a><span class='definition'>xmlnsXName</span> <span class='keyglyph'>=</span> <span class='varid'>newXName</span> <span class='varid'>a_xmlns</span>+<a name="line-388"></a>+<a name="line-389"></a><a name="xmlnsQN"></a><span class='definition'>xmlnsQN</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span>+<a name="line-390"></a><span class='definition'>xmlnsQN</span> <span class='keyglyph'>=</span> <span class='conid'>NS</span> <span class='varid'>xmlnsNamespaceXName</span> <span class='layout'>(</span><span class='conid'>LP</span> <span class='varid'>xmlnsXName</span><span class='layout'>)</span>+<a name="line-391"></a>+<a name="line-392"></a><a name="xmlNamespaceXName"></a><span class='definition'>xmlNamespaceXName</span> <span class='keyglyph'>::</span> <span class='conid'>XName</span>+<a name="line-393"></a><span class='definition'>xmlNamespaceXName</span> <span class='keyglyph'>=</span> <span class='varid'>newXName</span> <span class='varid'>xmlNamespace</span>+<a name="line-394"></a>+<a name="line-395"></a><a name="xmlXName"></a><span class='definition'>xmlXName</span> <span class='keyglyph'>::</span> <span class='conid'>XName</span>+<a name="line-396"></a><span class='definition'>xmlXName</span> <span class='keyglyph'>=</span> <span class='varid'>newXName</span> <span class='varid'>a_xml</span>+<a name="line-397"></a>+<a name="line-398"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-399"></a><span class='comment'>--</span>+<a name="line-400"></a>+<a name="line-401"></a><span class='comment'>-- |</span>+<a name="line-402"></a><span class='comment'>-- test for wellformed NCName, rule [4] XML Namespaces</span>+<a name="line-403"></a>+<a name="line-404"></a><a name="isNCName"></a><span class='definition'>isNCName</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-405"></a><span class='definition'>isNCName</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-406"></a><span class='definition'>isNCName</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>and</span> <span class='layout'>(</span> <span class='varid'>zipWith</span> <span class='layout'>(</span><span class='varop'>$</span><span class='layout'>)</span>+<a name="line-407"></a> <span class='layout'>(</span><span class='varid'>isXmlNCNameStartChar</span> <span class='conop'>:</span> <span class='varid'>repeat</span> <span class='varid'>isXmlNCNameChar</span><span class='layout'>)</span>+<a name="line-408"></a> <span class='varid'>n</span>+<a name="line-409"></a> <span class='layout'>)</span>+<a name="line-410"></a>+<a name="line-411"></a><span class='comment'>-- |</span>+<a name="line-412"></a><span class='comment'>-- test for wellformed QName, rule [6] XML Namespaces</span>+<a name="line-413"></a><span class='comment'>-- predicate is used in filter 'valdateNamespaces'.</span>+<a name="line-414"></a>+<a name="line-415"></a><a name="isWellformedQualifiedName"></a><span class='definition'>isWellformedQualifiedName</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-416"></a><span class='definition'>isWellformedQualifiedName</span> <span class='varid'>s</span>+<a name="line-417"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>lp</span> <span class='keyglyph'>=</span> <span class='varid'>isNCName</span> <span class='varid'>px</span>+<a name="line-418"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>isNCName</span> <span class='varid'>px</span> <span class='varop'>&&</span> <span class='varid'>isNCName</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>lp</span><span class='layout'>)</span>+<a name="line-419"></a> <span class='keyword'>where</span>+<a name="line-420"></a> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>s</span>+<a name="line-421"></a>+<a name="line-422"></a><span class='comment'>-- |</span>+<a name="line-423"></a><span class='comment'>-- test for wellformed QName values.</span>+<a name="line-424"></a><span class='comment'>-- A QName is wellformed, if the local part is a NCName, the namePrefix, if not empty, is also a NCName.</span>+<a name="line-425"></a><span class='comment'>-- predicate is used in filter 'valdateNamespaces'.</span>+<a name="line-426"></a>+<a name="line-427"></a><a name="isWellformedQName"></a><span class='definition'>isWellformedQName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-428"></a><span class='definition'>isWellformedQName</span> <span class='layout'>(</span><span class='conid'>LP</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>isNCName</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>$</span> <span class='varid'>lp</span> <span class='comment'>-- rule [8] XML Namespaces</span>+<a name="line-429"></a><span class='definition'>isWellformedQName</span> <span class='layout'>(</span><span class='conid'>PX</span> <span class='varid'>px</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>isNCName</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span> <span class='varid'>px</span> <span class='comment'>-- rule [7] XML Namespaces</span>+<a name="line-430"></a> <span class='varop'>&&</span>+<a name="line-431"></a> <span class='varid'>isWellformedQName</span> <span class='varid'>n</span>+<a name="line-432"></a><span class='definition'>isWellformedQName</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='keyword'>_</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>isWellformedQName</span> <span class='varid'>n</span>+<a name="line-433"></a>+<a name="line-434"></a><span class='comment'>-- |</span>+<a name="line-435"></a><span class='comment'>-- test whether an attribute name is a namesapce declaration name.</span>+<a name="line-436"></a><span class='comment'>-- If this is not the case True is the result, else</span>+<a name="line-437"></a><span class='comment'>-- the name must be a well formed namespace name:</span>+<a name="line-438"></a><span class='comment'>-- All namespace prefixes starting with \"xml\" are reserved for XML related definitions.</span>+<a name="line-439"></a><span class='comment'>-- predicate is used in filter 'valdateNamespaces'.</span>+<a name="line-440"></a>+<a name="line-441"></a><a name="isWellformedNSDecl"></a><span class='definition'>isWellformedNSDecl</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-442"></a><span class='definition'>isWellformedNSDecl</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isNameSpaceName</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-443"></a> <span class='varop'>||</span>+<a name="line-444"></a> <span class='varid'>isWellformedNameSpaceName</span> <span class='varid'>n</span>+<a name="line-445"></a>+<a name="line-446"></a><span class='comment'>-- |</span>+<a name="line-447"></a><span class='comment'>-- test for a namespace name to be well formed</span>+<a name="line-448"></a>+<a name="line-449"></a><a name="isWellformedNameSpaceName"></a><span class='definition'>isWellformedNameSpaceName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-450"></a><span class='definition'>isWellformedNameSpaceName</span> <span class='layout'>(</span><span class='conid'>LP</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>lp</span> <span class='varop'>==</span> <span class='varid'>xmlnsXName</span>+<a name="line-451"></a><span class='definition'>isWellformedNameSpaceName</span> <span class='layout'>(</span><span class='conid'>PX</span> <span class='varid'>px</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>xmlnsXName</span>+<a name="line-452"></a> <span class='varop'>&&</span>+<a name="line-453"></a> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>lp'</span><span class='layout'>)</span>+<a name="line-454"></a> <span class='varop'>&&</span>+<a name="line-455"></a> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>a_xml</span> <span class='varop'>`isPrefixOf`</span> <span class='varid'>lp'</span><span class='layout'>)</span>+<a name="line-456"></a> <span class='keyword'>where</span>+<a name="line-457"></a> <span class='varid'>lp'</span> <span class='keyglyph'>=</span> <span class='varid'>localPart</span> <span class='varid'>n</span>+<a name="line-458"></a><span class='definition'>isWellformedNameSpaceName</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='keyword'>_</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>isWellformedNSDecl</span> <span class='varid'>n</span>+<a name="line-459"></a>+<a name="line-460"></a><span class='comment'>-- |</span>+<a name="line-461"></a><span class='comment'>-- test whether a name is a namespace declaration attribute name</span>+<a name="line-462"></a>+<a name="line-463"></a><a name="isNameSpaceName"></a><span class='definition'>isNameSpaceName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-464"></a><span class='definition'>isNameSpaceName</span> <span class='layout'>(</span><span class='conid'>LP</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>lp</span> <span class='varop'>==</span> <span class='varid'>xmlnsXName</span>+<a name="line-465"></a><span class='definition'>isNameSpaceName</span> <span class='layout'>(</span><span class='conid'>PX</span> <span class='varid'>px</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>xmlnsXName</span>+<a name="line-466"></a><span class='definition'>isNameSpaceName</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='keyword'>_</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>isNameSpaceName</span> <span class='varid'>n</span>+<a name="line-467"></a>+<a name="line-468"></a><span class='comment'>-- |</span>+<a name="line-469"></a><span class='comment'>-- </span>+<a name="line-470"></a><span class='comment'>-- predicate is used in filter 'valdateNamespaces'.</span>+<a name="line-471"></a>+<a name="line-472"></a><a name="isDeclaredNamespace"></a><span class='definition'>isDeclaredNamespace</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-473"></a><span class='definition'>isDeclaredNamespace</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='varid'>ns</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>isNS</span> <span class='varid'>ns</span> <span class='varid'>n</span>+<a name="line-474"></a><span class='definition'>isDeclaredNamespace</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>isNS</span> <span class='varid'>nullXName</span> <span class='varid'>n</span>+<a name="line-475"></a>+<a name="line-476"></a><a name="isNS"></a><span class='definition'>isNS</span> <span class='keyglyph'>::</span> <span class='conid'>XName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-477"></a><span class='definition'>isNS</span> <span class='keyword'>_</span> <span class='layout'>(</span><span class='conid'>LP</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span> <span class='comment'>-- no namespace used</span>+<a name="line-478"></a><span class='definition'>isNS</span> <span class='varid'>ns</span> <span class='layout'>(</span><span class='conid'>PX</span> <span class='varid'>px</span> <span class='keyword'>_</span><span class='layout'>)</span>+<a name="line-479"></a> <span class='keyglyph'>|</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>xmlnsXName</span> <span class='keyglyph'>=</span> <span class='varid'>ns</span> <span class='varop'>==</span> <span class='varid'>xmlnsNamespaceXName</span> <span class='comment'>-- "xmlns" has a predefined namespace uri</span>+<a name="line-480"></a> <span class='keyglyph'>|</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>xmlXName</span> <span class='keyglyph'>=</span> <span class='varid'>ns</span> <span class='varop'>==</span> <span class='varid'>xmlNamespaceXName</span> <span class='comment'>-- "xml" has a predefiend namespace"</span>+<a name="line-481"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>ns</span> <span class='varop'>/=</span> <span class='varid'>nullXName</span> <span class='comment'>-- namespace values are not empty</span>+<a name="line-482"></a><span class='definition'>isNS</span> <span class='varid'>ns</span> <span class='layout'>(</span><span class='conid'>NS</span> <span class='keyword'>_</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>isNS</span> <span class='varid'>ns</span> <span class='varid'>n</span> <span class='comment'>-- this does not occur, but warning is prevented</span>+<a name="line-483"></a>+<a name="line-484"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-485"></a>+<a name="line-486"></a><a name="toNsEnv"></a><span class='definition'>toNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span>+<a name="line-487"></a><span class='definition'>toNsEnv</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>newXName</span> <span class='varop'>***</span> <span class='varid'>newXName</span><span class='layout'>)</span>+<a name="line-488"></a>+<a name="line-489"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-490"></a>+<a name="line-491"></a><span class='comment'>-- the name cache, same implementation strategy as in Data.Atom,</span>+<a name="line-492"></a><span class='comment'>-- but conversion to and from ByteString prevented</span>+<a name="line-493"></a>+<a name="line-494"></a><a name="Atoms"></a><span class='keyword'>type</span> <span class='conid'>Atoms</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-495"></a>+<a name="line-496"></a><a name="Atom"></a><span class='keyword'>newtype</span> <span class='conid'>Atom</span> <span class='keyglyph'>=</span> <span class='conid'>A</span> <span class='conid'>String</span>+<a name="line-497"></a> <span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>Ord</span><span class='layout'>,</span> <span class='conid'>Typeable</span><span class='layout'>)</span>+<a name="line-498"></a>+<a name="line-499"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-500"></a>+<a name="line-501"></a><span class='comment'>-- | the internal cache for the strings</span>+<a name="line-502"></a>+<a name="line-503"></a><a name="theAtoms"></a><span class='definition'>theAtoms</span> <span class='keyglyph'>::</span> <span class='conid'>MVar</span> <span class='conid'>Atoms</span>+<a name="line-504"></a><span class='definition'>theAtoms</span> <span class='keyglyph'>=</span> <span class='varid'>unsafePerformIO</span> <span class='layout'>(</span><span class='varid'>newMVar</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>empty</span><span class='layout'>)</span>+<a name="line-505"></a><span class='comment'>{-# NOINLINE theAtoms #-}</span>+<a name="line-506"></a>+<a name="line-507"></a><span class='comment'>-- | insert a bytestring into the atom cache</span>+<a name="line-508"></a>+<a name="line-509"></a><a name="insertAtom"></a><span class='definition'>insertAtom</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Atoms</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Atoms</span><span class='layout'>,</span> <span class='conid'>Atom</span><span class='layout'>)</span>+<a name="line-510"></a><span class='definition'>insertAtom</span> <span class='varid'>s</span> <span class='varid'>m</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='layout'>(</span><span class='conid'>M</span><span class='varop'>.</span><span class='varid'>insert</span> <span class='comment'>{- (trace (show s) s) -}</span> <span class='varid'>s</span> <span class='varid'>s</span> <span class='varid'>m</span><span class='layout'>,</span> <span class='conid'>A</span> <span class='varid'>s</span> <span class='varop'>`demanding`</span> <span class='varid'>rnf</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-511"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s'</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>m</span><span class='layout'>,</span> <span class='conid'>A</span> <span class='varid'>s'</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-512"></a> <span class='varop'>.</span>+<a name="line-513"></a> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>s</span> <span class='varop'>$</span> <span class='varid'>m</span>+<a name="line-514"></a>+<a name="line-515"></a><span class='comment'>-- | creation of an @Atom@ from a @String@</span>+<a name="line-516"></a>+<a name="line-517"></a><a name="newAtom"></a><span class='definition'>newAtom</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Atom</span>+<a name="line-518"></a><span class='definition'>newAtom</span> <span class='keyglyph'>=</span> <span class='varid'>unsafePerformIO</span> <span class='varop'>.</span> <span class='varid'>newAtom'</span>+<a name="line-519"></a><span class='comment'>{-# NOINLINE newAtom #-}</span>+<a name="line-520"></a>+<a name="line-521"></a><a name="newAtom'"></a><span class='comment'>-- | The internal operation running in the IO monad</span>+<a name="line-522"></a><span class='definition'>newAtom'</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='conid'>Atom</span>+<a name="line-523"></a><span class='definition'>newAtom'</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-524"></a> <span class='varid'>m</span> <span class='keyglyph'><-</span> <span class='varid'>takeMVar</span> <span class='varid'>theAtoms</span>+<a name="line-525"></a> <span class='keyword'>let</span> <span class='layout'>(</span><span class='varid'>m'</span><span class='layout'>,</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>insertAtom</span> <span class='varid'>s</span> <span class='varid'>m</span>+<a name="line-526"></a> <span class='varid'>putMVar</span> <span class='varid'>theAtoms</span> <span class='varid'>m'</span>+<a name="line-527"></a> <span class='varid'>return</span> <span class='varid'>a</span>+<a name="line-528"></a>+<a name="line-529"></a><span class='keyword'>instance</span> <span class='conid'>Read</span> <span class='conid'>Atom</span> <span class='keyword'>where</span>+<a name="line-530"></a> <span class='varid'>readsPrec</span> <span class='varid'>p</span> <span class='varid'>str</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>newAtom</span> <span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>y</span><span class='layout'>)</span> <span class='keyglyph'>|</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>y</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>readsPrec</span> <span class='varid'>p</span> <span class='varid'>str</span> <span class='keyglyph'>]</span>+<a name="line-531"></a>+<a name="line-532"></a><span class='keyword'>instance</span> <span class='conid'>Show</span> <span class='conid'>Atom</span> <span class='keyword'>where</span>+<a name="line-533"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>A</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>s</span>+<a name="line-534"></a>+<a name="line-535"></a><span class='keyword'>instance</span> <span class='conid'>NFData</span> <span class='conid'>Atom</span> <span class='keyword'>where</span>+<a name="line-536"></a>+<a name="line-537"></a><span class='comment'>-----------------------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-DOM-ShowXml.html view
@@ -10,7 +10,7 @@ <a name="line-2"></a> <a name="line-3"></a><span class='comment'>{- | <a name="line-4"></a> Module : Text.XML.HXT.DOM.ShowXml-<a name="line-5"></a> Copyright : Copyright (C) 2008 Uwe Schmidt+<a name="line-5"></a> Copyright : Copyright (C) 2008-9 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)@@ -29,388 +29,387 @@ <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'>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-25"></a>-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span> <span class='comment'>-- XML Tree types</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'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span>-<a name="line-29"></a> <span class='layout'>(</span> <span class='varid'>mkDTDElem</span>-<a name="line-30"></a> <span class='layout'>,</span> <span class='varid'>getDTDAttrl</span>-<a name="line-31"></a> <span class='layout'>)</span>-<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'>--</span>-<a name="line-36"></a><span class='comment'>-- the toString conversion functions</span>-<a name="line-37"></a>-<a name="line-38"></a><span class='comment'>-- |</span>-<a name="line-39"></a><span class='comment'>-- convert the result of a filter into a string</span>-<a name="line-40"></a><span class='comment'>--</span>-<a name="line-41"></a><span class='comment'>-- see also : 'xmlTreesToText' for filter version, 'Text.XML.HXT.Parser.XmlParsec.xread' for the inverse operation </span>-<a name="line-42"></a>-<a name="line-43"></a><a name="xshow"></a><span class='definition'>xshow</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-44"></a><span class='definition'>xshow</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='varid'>s</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='comment'>-- special case optimisation</span>-<a name="line-45"></a><span class='definition'>xshow</span> <span class='varid'>ts</span> <span class='keyglyph'>=</span> <span class='varid'>showXmlTrees</span> <span class='varid'>ts</span> <span class='str'>""</span>-<a name="line-46"></a>-<a name="line-47"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-48"></a>-<a name="line-49"></a><a name="showXmlTree"></a><span class='definition'>showXmlTree</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'>String</span>-<a name="line-50"></a>-<a name="line-51"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='varid'>s</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'>showString</span> <span class='varid'>s</span>-<a name="line-53"></a>-<a name="line-54"></a><span class='definition'>showXmlTree</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-55"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"&#"</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>i</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>showChar</span> <span class='chr'>';'</span>-<a name="line-56"></a>-<a name="line-57"></a><span class='definition'>showXmlTree</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>-<a name="line-58"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"&"</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>r</span> <span class='varop'>.</span> <span class='varid'>showChar</span> <span class='chr'>';'</span>-<a name="line-59"></a>-<a name="line-60"></a><span class='definition'>showXmlTree</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-61"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!--"</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>c</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>"-->"</span>-<a name="line-62"></a>-<a name="line-63"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XCdata</span> <span class='varid'>d</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-64"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<![CDATA["</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>d</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>"]]>"</span>-<a name="line-65"></a>-<a name="line-66"></a><span class='definition'>showXmlTree</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='keyword'>_</span><span class='layout'>)</span>-<a name="line-67"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<?"</span>-<a name="line-68"></a> <span class='varop'>.</span>-<a name="line-69"></a> <span class='varid'>showQName</span> <span class='varid'>n</span>-<a name="line-70"></a> <span class='varop'>.</span>-<a name="line-71"></a> <span class='layout'>(</span><span class='varid'>foldr</span> <span class='layout'>(</span><span class='varop'>.</span><span class='layout'>)</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>showPiAttr</span><span class='layout'>)</span> <span class='varid'>al</span>-<a name="line-72"></a> <span class='varop'>.</span>-<a name="line-73"></a> <span class='varid'>showString</span> <span class='str'>"?>"</span>-<a name="line-74"></a> <span class='keyword'>where</span>-<a name="line-75"></a> <span class='varid'>showPiAttr</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'>String</span>-<a name="line-76"></a> <span class='varid'>showPiAttr</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='varid'>cs</span><span class='layout'>)</span>-<a name="line-77"></a> <span class='keyglyph'>|</span> <span class='varid'>qualifiedName</span> <span class='varid'>an</span> <span class='varop'>==</span> <span class='varid'>a_value</span>-<a name="line-78"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showXmlTrees</span> <span class='varid'>cs</span>-<a name="line-79"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-80"></a> <span class='keyglyph'>=</span> <span class='varid'>showXmlTree</span> <span class='varid'>a</span>-<a name="line-81"></a> <span class='varid'>showPiAttr</span> <span class='keyword'>_</span>-<a name="line-82"></a> <span class='keyglyph'>=</span> <span class='varid'>id</span>-<a name="line-83"></a>-<a name="line-84"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>t</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-85"></a> <span class='keyglyph'>=</span> <span class='varid'>showLt</span> <span class='varop'>.</span> <span class='varid'>showQName</span> <span class='varid'>t</span> <span class='varop'>.</span> <span class='varid'>showXmlTrees</span> <span class='varid'>al</span> <span class='varop'>.</span> <span class='varid'>showSlash</span> <span class='varop'>.</span> <span class='varid'>showGt</span>-<a name="line-86"></a>-<a name="line-87"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>t</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-88"></a> <span class='keyglyph'>=</span> <span class='varid'>showLt</span> <span class='varop'>.</span> <span class='varid'>showQName</span> <span class='varid'>t</span> <span class='varop'>.</span> <span class='varid'>showXmlTrees</span> <span class='varid'>al</span> <span class='varop'>.</span> <span class='varid'>showGt</span>-<a name="line-89"></a> <span class='varop'>.</span> <span class='varid'>showXmlTrees</span> <span class='varid'>cs</span>-<a name="line-90"></a> <span class='varop'>.</span> <span class='varid'>showLt</span> <span class='varop'>.</span> <span class='varid'>showSlash</span> <span class='varop'>.</span> <span class='varid'>showQName</span> <span class='varid'>t</span> <span class='varop'>.</span> <span class='varid'>showGt</span>-<a name="line-91"></a>-<a name="line-92"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>de</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-93"></a> <span class='keyglyph'>=</span> <span class='varid'>showXmlDTD</span> <span class='varid'>de</span> <span class='varid'>al</span> <span class='varid'>cs</span>-<a name="line-94"></a>-<a name="line-95"></a><span class='definition'>showXmlTree</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='varid'>cs</span><span class='layout'>)</span>-<a name="line-96"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQName</span> <span class='varid'>an</span> <span class='varop'>.</span> <span class='varid'>showEq</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-97"></a>-<a name="line-98"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='varid'>l</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>-<a name="line-99"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!-- ERROR ("</span> <span class='varop'>.</span> <span class='varid'>shows</span> <span class='varid'>l</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>"):\n"</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>e</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>"\n-->"</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><a name="showXmlTrees"></a><span class='definition'>showXmlTrees</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'>String</span>-<a name="line-104"></a><span class='definition'>showXmlTrees</span> <span class='keyglyph'>=</span> <span class='varid'>foldr</span> <span class='layout'>(</span><span class='varop'>.</span><span class='layout'>)</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>showXmlTree</span>-<a name="line-105"></a>-<a name="line-106"></a><a name="showXmlTrees'"></a><span class='definition'>showXmlTrees'</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'>String</span>-<a name="line-107"></a><span class='definition'>showXmlTrees'</span> <span class='keyglyph'>=</span> <span class='varid'>foldr</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='varid'>showNL</span> <span class='varop'>.</span> <span class='varid'>y</span><span class='layout'>)</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>showXmlTree</span>-<a name="line-108"></a>-<a name="line-109"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-110"></a>-<a name="line-111"></a><a name="showQName"></a><span class='definition'>showQName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-112"></a><span class='definition'>showQName</span>-<a name="line-113"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='varop'>.</span> <span class='varid'>qualifiedName</span>-<a name="line-114"></a>-<a name="line-115"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-116"></a>-<a name="line-117"></a><a name="showQuoteString"></a><span class='definition'>showQuoteString</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-118"></a><span class='definition'>showQuoteString</span> <span class='varid'>s</span>-<a name="line-119"></a> <span class='keyglyph'>|</span> <span class='chr'>'\"'</span> <span class='varop'>`elem`</span> <span class='varid'>s</span>-<a name="line-120"></a> <span class='keyglyph'>=</span> <span class='varid'>showApos</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>s</span> <span class='varop'>.</span> <span class='varid'>showApos</span>-<a name="line-121"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-122"></a> <span class='keyglyph'>=</span> <span class='varid'>showQuot</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>s</span> <span class='varop'>.</span> <span class='varid'>showQuot</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><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-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'>TypeDefs</span> <span class='comment'>-- XML Tree types</span>+<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>+<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span> <span class='layout'>(</span> <span class='varid'>mkDTDElem</span>+<a name="line-30"></a> <span class='layout'>,</span> <span class='varid'>getDTDAttrl</span>+<a name="line-31"></a> <span class='layout'>)</span>+<a name="line-32"></a>+<a name="line-33"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-34"></a><span class='comment'>--</span>+<a name="line-35"></a><span class='comment'>-- the toString conversion functions</span>+<a name="line-36"></a>+<a name="line-37"></a><span class='comment'>-- |</span>+<a name="line-38"></a><span class='comment'>-- convert the result of a filter into a string</span>+<a name="line-39"></a><span class='comment'>--</span>+<a name="line-40"></a><span class='comment'>-- see also : 'xmlTreesToText' for filter version, 'Text.XML.HXT.Parser.XmlParsec.xread' for the inverse operation </span>+<a name="line-41"></a>+<a name="line-42"></a><a name="xshow"></a><span class='definition'>xshow</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTrees</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-43"></a><span class='definition'>xshow</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='varid'>s</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='varid'>s</span> <span class='comment'>-- special case optimisation</span>+<a name="line-44"></a><span class='definition'>xshow</span> <span class='varid'>ts</span> <span class='keyglyph'>=</span> <span class='varid'>showXmlTrees</span> <span class='varid'>ts</span> <span class='str'>""</span>+<a name="line-45"></a>+<a name="line-46"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-47"></a>+<a name="line-48"></a><a name="showXmlTree"></a><span class='definition'>showXmlTree</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'>String</span>+<a name="line-49"></a>+<a name="line-50"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>+<a name="line-51"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='varid'>s</span>+<a name="line-52"></a>+<a name="line-53"></a><span class='definition'>showXmlTree</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-54"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"&#"</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>i</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>showChar</span> <span class='chr'>';'</span>+<a name="line-55"></a>+<a name="line-56"></a><span class='definition'>showXmlTree</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>+<a name="line-57"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"&"</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>r</span> <span class='varop'>.</span> <span class='varid'>showChar</span> <span class='chr'>';'</span>+<a name="line-58"></a>+<a name="line-59"></a><span class='definition'>showXmlTree</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-60"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!--"</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>c</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>"-->"</span>+<a name="line-61"></a>+<a name="line-62"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XCdata</span> <span class='varid'>d</span><span class='layout'>)</span> <span class='keyword'>_</span><span class='layout'>)</span>+<a name="line-63"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<![CDATA["</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>d</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>"]]>"</span>+<a name="line-64"></a>+<a name="line-65"></a><span class='definition'>showXmlTree</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='keyword'>_</span><span class='layout'>)</span>+<a name="line-66"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<?"</span>+<a name="line-67"></a> <span class='varop'>.</span>+<a name="line-68"></a> <span class='varid'>showQName</span> <span class='varid'>n</span>+<a name="line-69"></a> <span class='varop'>.</span>+<a name="line-70"></a> <span class='layout'>(</span><span class='varid'>foldr</span> <span class='layout'>(</span><span class='varop'>.</span><span class='layout'>)</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>showPiAttr</span><span class='layout'>)</span> <span class='varid'>al</span>+<a name="line-71"></a> <span class='varop'>.</span>+<a name="line-72"></a> <span class='varid'>showString</span> <span class='str'>"?>"</span>+<a name="line-73"></a> <span class='keyword'>where</span>+<a name="line-74"></a> <span class='varid'>showPiAttr</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'>String</span>+<a name="line-75"></a> <span class='varid'>showPiAttr</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='varid'>cs</span><span class='layout'>)</span>+<a name="line-76"></a> <span class='keyglyph'>|</span> <span class='varid'>qualifiedName</span> <span class='varid'>an</span> <span class='varop'>==</span> <span class='varid'>a_value</span>+<a name="line-77"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showXmlTrees</span> <span class='varid'>cs</span>+<a name="line-78"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-79"></a> <span class='keyglyph'>=</span> <span class='varid'>showXmlTree</span> <span class='varid'>a</span>+<a name="line-80"></a> <span class='varid'>showPiAttr</span> <span class='keyword'>_</span>+<a name="line-81"></a> <span class='keyglyph'>=</span> <span class='varid'>id</span>+<a name="line-82"></a>+<a name="line-83"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>t</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='conid'>[]</span><span class='layout'>)</span>+<a name="line-84"></a> <span class='keyglyph'>=</span> <span class='varid'>showLt</span> <span class='varop'>.</span> <span class='varid'>showQName</span> <span class='varid'>t</span> <span class='varop'>.</span> <span class='varid'>showXmlTrees</span> <span class='varid'>al</span> <span class='varop'>.</span> <span class='varid'>showSlash</span> <span class='varop'>.</span> <span class='varid'>showGt</span>+<a name="line-85"></a>+<a name="line-86"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XTag</span> <span class='varid'>t</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>+<a name="line-87"></a> <span class='keyglyph'>=</span> <span class='varid'>showLt</span> <span class='varop'>.</span> <span class='varid'>showQName</span> <span class='varid'>t</span> <span class='varop'>.</span> <span class='varid'>showXmlTrees</span> <span class='varid'>al</span> <span class='varop'>.</span> <span class='varid'>showGt</span>+<a name="line-88"></a> <span class='varop'>.</span> <span class='varid'>showXmlTrees</span> <span class='varid'>cs</span>+<a name="line-89"></a> <span class='varop'>.</span> <span class='varid'>showLt</span> <span class='varop'>.</span> <span class='varid'>showSlash</span> <span class='varop'>.</span> <span class='varid'>showQName</span> <span class='varid'>t</span> <span class='varop'>.</span> <span class='varid'>showGt</span>+<a name="line-90"></a>+<a name="line-91"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>de</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>+<a name="line-92"></a> <span class='keyglyph'>=</span> <span class='varid'>showXmlDTD</span> <span class='varid'>de</span> <span class='varid'>al</span> <span class='varid'>cs</span>+<a name="line-93"></a>+<a name="line-94"></a><span class='definition'>showXmlTree</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='varid'>cs</span><span class='layout'>)</span>+<a name="line-95"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQName</span> <span class='varid'>an</span> <span class='varop'>.</span> <span class='varid'>showEq</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>cs</span><span class='layout'>)</span>+<a name="line-96"></a>+<a name="line-97"></a><span class='definition'>showXmlTree</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XError</span> <span class='varid'>l</span> <span class='varid'>e</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'>showString</span> <span class='str'>"<!-- ERROR ("</span> <span class='varop'>.</span> <span class='varid'>shows</span> <span class='varid'>l</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>"):\n"</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>e</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>"\n-->"</span>+<a name="line-99"></a>+<a name="line-100"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-101"></a>+<a name="line-102"></a><a name="showXmlTrees"></a><span class='definition'>showXmlTrees</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'>String</span>+<a name="line-103"></a><span class='definition'>showXmlTrees</span> <span class='keyglyph'>=</span> <span class='varid'>foldr</span> <span class='layout'>(</span><span class='varop'>.</span><span class='layout'>)</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>showXmlTree</span>+<a name="line-104"></a>+<a name="line-105"></a><a name="showXmlTrees'"></a><span class='definition'>showXmlTrees'</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'>String</span>+<a name="line-106"></a><span class='definition'>showXmlTrees'</span> <span class='keyglyph'>=</span> <span class='varid'>foldr</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='varid'>showNL</span> <span class='varop'>.</span> <span class='varid'>y</span><span class='layout'>)</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>showXmlTree</span>+<a name="line-107"></a>+<a name="line-108"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-109"></a>+<a name="line-110"></a><a name="showQName"></a><span class='definition'>showQName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-111"></a><span class='definition'>showQName</span>+<a name="line-112"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='varop'>.</span> <span class='varid'>qualifiedName</span>+<a name="line-113"></a>+<a name="line-114"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-115"></a>+<a name="line-116"></a><a name="showQuoteString"></a><span class='definition'>showQuoteString</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-117"></a><span class='definition'>showQuoteString</span> <span class='varid'>s</span>+<a name="line-118"></a> <span class='keyglyph'>|</span> <span class='chr'>'\"'</span> <span class='varop'>`elem`</span> <span class='varid'>s</span>+<a name="line-119"></a> <span class='keyglyph'>=</span> <span class='varid'>showApos</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>s</span> <span class='varop'>.</span> <span class='varid'>showApos</span>+<a name="line-120"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-121"></a> <span class='keyglyph'>=</span> <span class='varid'>showQuot</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>s</span> <span class='varop'>.</span> <span class='varid'>showQuot</span>+<a name="line-122"></a> <a name="line-123"></a>-<a name="line-124"></a>-<a name="line-125"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-126"></a>-<a name="line-127"></a><a name="showAttr"></a><span class='definition'>showAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</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'>String</span>-<a name="line-128"></a><span class='definition'>showAttr</span> <span class='varid'>k</span> <span class='varid'>al</span>-<a name="line-129"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='str'>""</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>k</span> <span class='varop'>$</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-130"></a>-<a name="line-131"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-132"></a>-<a name="line-133"></a><a name="showPEAttr"></a><span class='definition'>showPEAttr</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'>String</span>-<a name="line-134"></a><span class='definition'>showPEAttr</span> <span class='varid'>al</span>-<a name="line-135"></a> <span class='keyglyph'>=</span> <span class='varid'>showPE</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>a_peref</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-136"></a> <span class='keyword'>where</span>-<a name="line-137"></a> <span class='varid'>showPE</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>pe</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'%'</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>pe</span> <span class='varop'>.</span> <span class='varid'>showChar</span> <span class='chr'>';'</span>-<a name="line-138"></a> <span class='varid'>showPE</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>id</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><a name="showExternalId"></a><span class='definition'>showExternalId</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'>String</span>-<a name="line-143"></a><span class='definition'>showExternalId</span> <span class='varid'>al</span>-<a name="line-144"></a> <span class='keyglyph'>=</span> <span class='varid'>id2Str</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>k_system</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>k_public</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-145"></a> <span class='keyword'>where</span>-<a name="line-146"></a> <span class='varid'>id2Str</span> <span class='conid'>Nothing</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>id</span>-<a name="line-147"></a> <span class='varid'>id2Str</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_system</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='varid'>s</span>-<a name="line-148"></a> <span class='varid'>id2Str</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_public</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='varid'>p</span>-<a name="line-149"></a> <span class='varid'>id2Str</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_public</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='varid'>p</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='varid'>s</span>-<a name="line-150"></a>-<a name="line-151"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-152"></a>-<a name="line-153"></a><a name="showNData"></a><span class='definition'>showNData</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'>String</span>-<a name="line-154"></a><span class='definition'>showNData</span> <span class='varid'>al</span>-<a name="line-155"></a> <span class='keyglyph'>=</span> <span class='varid'>nd2Str</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>k_ndata</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-156"></a> <span class='keyword'>where</span>-<a name="line-157"></a> <span class='varid'>nd2Str</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>id</span>-<a name="line-158"></a> <span class='varid'>nd2Str</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_ndata</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>v</span>-<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="showXmlDTD"></a><span class='definition'>showXmlDTD</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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-163"></a>-<a name="line-164"></a><span class='definition'>showXmlDTD</span> <span class='conid'>DOCTYPE</span> <span class='varid'>al</span> <span class='varid'>cs</span>-<a name="line-165"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!DOCTYPE "</span>-<a name="line-166"></a> <span class='varop'>.</span>-<a name="line-167"></a> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-168"></a> <span class='varop'>.</span>-<a name="line-169"></a> <span class='varid'>showExternalId</span> <span class='varid'>al</span>-<a name="line-170"></a> <span class='varop'>.</span>-<a name="line-171"></a> <span class='varid'>showInternalDTD</span> <span class='varid'>cs</span>-<a name="line-172"></a> <span class='varop'>.</span>-<a name="line-173"></a> <span class='varid'>showString</span> <span class='str'>">"</span>-<a name="line-174"></a> <span class='keyword'>where</span>-<a name="line-175"></a> <span class='varid'>showInternalDTD</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='varid'>id</span>-<a name="line-176"></a> <span class='varid'>showInternalDTD</span> <span class='varid'>ds</span> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>" [\n"</span> <span class='varop'>.</span> <span class='varid'>showXmlTrees'</span> <span class='varid'>ds</span> <span class='varop'>.</span> <span class='varid'>showChar</span> <span class='chr'>']'</span>-<a name="line-177"></a>-<a name="line-178"></a><span class='definition'>showXmlDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span> <span class='varid'>cs</span>-<a name="line-179"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!ELEMENT "</span>-<a name="line-180"></a> <span class='varop'>.</span>-<a name="line-181"></a> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-182"></a> <span class='varop'>.</span>-<a name="line-183"></a> <span class='varid'>showBlank</span>-<a name="line-184"></a> <span class='varop'>.</span>-<a name="line-185"></a> <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>-<a name="line-186"></a> <span class='varop'>.</span>-<a name="line-187"></a> <span class='varid'>showString</span> <span class='str'>" >"</span>-<a name="line-188"></a>-<a name="line-189"></a><span class='definition'>showXmlDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span> <span class='varid'>cs</span>-<a name="line-190"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!ATTLIST "</span>-<a name="line-191"></a> <span class='varop'>.</span>-<a name="line-192"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>isNothing</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>a_name</span> <span class='varop'>$</span> <span class='varid'>al</span>-<a name="line-193"></a> <span class='keyword'>then</span>-<a name="line-194"></a> <span class='varid'>showXmlTrees</span> <span class='varid'>cs</span>-<a name="line-195"></a> <span class='keyword'>else</span>-<a name="line-196"></a> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-197"></a> <span class='varop'>.</span>-<a name="line-198"></a> <span class='varid'>showBlank</span>-<a name="line-199"></a> <span class='varop'>.</span>-<a name="line-200"></a> <span class='layout'>(</span> <span class='keyword'>case</span> <span class='varid'>lookup</span> <span class='varid'>a_value</span> <span class='varid'>al</span> <span class='keyword'>of</span>-<a name="line-201"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='varid'>showPEAttr</span>-<a name="line-202"></a> <span class='varop'>.</span> <span class='varid'>fromMaybe</span> <span class='conid'>[]</span> <span class='varop'>.</span> <span class='varid'>getDTDAttrl</span>-<a name="line-203"></a> <span class='varop'>.</span> <span class='varid'>head</span>-<a name="line-204"></a> <span class='layout'>)</span> <span class='varid'>cs</span>-<a name="line-205"></a> <span class='conid'>Just</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='varid'>showString</span> <span class='varid'>a</span>-<a name="line-206"></a> <span class='varop'>.</span>-<a name="line-207"></a> <span class='varid'>showAttrType</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-208"></a> <span class='varop'>.</span>-<a name="line-209"></a> <span class='varid'>showAttrKind</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_kind</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-210"></a> <span class='layout'>)</span>-<a name="line-211"></a> <span class='layout'>)</span>-<a name="line-212"></a> <span class='layout'>)</span>-<a name="line-213"></a> <span class='varop'>.</span>-<a name="line-214"></a> <span class='varid'>showString</span> <span class='str'>" >"</span>-<a name="line-215"></a> <span class='keyword'>where</span>-<a name="line-216"></a> <span class='varid'>showAttrType</span> <span class='varid'>t</span>-<a name="line-217"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>k_peref</span>-<a name="line-218"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showPEAttr</span> <span class='varid'>al</span>-<a name="line-219"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>k_enumeration</span>-<a name="line-220"></a> <span class='keyglyph'>=</span> <span class='varid'>showAttrEnum</span>-<a name="line-221"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>k_notation</span>-<a name="line-222"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_notation</span> <span class='varop'>.</span> <span class='varid'>showAttrEnum</span>-<a name="line-223"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-224"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>t</span>-<a name="line-225"></a>-<a name="line-226"></a> <span class='varid'>showAttrEnum</span>-<a name="line-227"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>" ("</span>-<a name="line-228"></a> <span class='varop'>.</span>-<a name="line-229"></a> <span class='varid'>foldr1</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s1</span> <span class='varid'>s2</span> <span class='keyglyph'>-></span> <span class='varid'>s1</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>" | "</span> <span class='varop'>.</span> <span class='varid'>s2</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>getEnum</span> <span class='varop'>.</span> <span class='varid'>fromMaybe</span> <span class='conid'>[]</span> <span class='varop'>.</span> <span class='varid'>getDTDAttrl</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-230"></a> <span class='varop'>.</span>-<a name="line-231"></a> <span class='varid'>showString</span> <span class='str'>")"</span>-<a name="line-232"></a> <span class='keyword'>where</span>-<a name="line-233"></a> <span class='varid'>getEnum</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'>String</span>-<a name="line-234"></a> <span class='varid'>getEnum</span> <span class='varid'>l</span> <span class='keyglyph'>=</span> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>l</span> <span class='varop'>.</span> <span class='varid'>showPEAttr</span> <span class='varid'>l</span>-<a name="line-235"></a>-<a name="line-236"></a> <span class='varid'>showAttrKind</span> <span class='varid'>k</span>-<a name="line-237"></a> <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>k_default</span>-<a name="line-238"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</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-239"></a> <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>k_fixed</span>-<a name="line-240"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_fixed</span>-<a name="line-241"></a> <span class='varop'>.</span>-<a name="line-242"></a> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</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-243"></a> <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='str'>""</span>-<a name="line-244"></a> <span class='keyglyph'>=</span> <span class='varid'>id</span>-<a name="line-245"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-246"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k</span>-<a name="line-247"></a>-<a name="line-248"></a><span class='definition'>showXmlDTD</span> <span class='conid'>NOTATION</span> <span class='varid'>al</span> <span class='sel'>_cs</span>-<a name="line-249"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!NOTATION "</span>-<a name="line-250"></a> <span class='varop'>.</span>-<a name="line-251"></a> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-252"></a> <span class='varop'>.</span>-<a name="line-253"></a> <span class='varid'>showExternalId</span> <span class='varid'>al</span>-<a name="line-254"></a> <span class='varop'>.</span>-<a name="line-255"></a> <span class='varid'>showString</span> <span class='str'>" >"</span>-<a name="line-256"></a>-<a name="line-257"></a><span class='definition'>showXmlDTD</span> <span class='conid'>PENTITY</span> <span class='varid'>al</span> <span class='varid'>cs</span>-<a name="line-258"></a> <span class='keyglyph'>=</span> <span class='varid'>showEntity</span> <span class='str'>"% "</span> <span class='varid'>al</span> <span class='varid'>cs</span>-<a name="line-259"></a>-<a name="line-260"></a><span class='definition'>showXmlDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span> <span class='varid'>cs</span>-<a name="line-261"></a> <span class='keyglyph'>=</span> <span class='varid'>showEntity</span> <span class='str'>""</span> <span class='varid'>al</span> <span class='varid'>cs</span>-<a name="line-262"></a>-<a name="line-263"></a><span class='definition'>showXmlDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span> <span class='sel'>_cs</span>-<a name="line-264"></a> <span class='keyglyph'>=</span> <span class='varid'>showPEAttr</span> <span class='varid'>al</span>-<a name="line-265"></a>-<a name="line-266"></a><span class='definition'>showXmlDTD</span> <span class='conid'>CONDSECT</span> <span class='keyword'>_</span> <span class='layout'>(</span><span class='varid'>c1</span> <span class='conop'>:</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-267"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<![ "</span>-<a name="line-268"></a> <span class='varop'>.</span>-<a name="line-269"></a> <span class='varid'>showXmlTree</span> <span class='varid'>c1</span>-<a name="line-270"></a> <span class='varop'>.</span>-<a name="line-271"></a> <span class='varid'>showString</span> <span class='str'>" [\n"</span>-<a name="line-272"></a> <span class='varop'>.</span>-<a name="line-273"></a> <span class='varid'>showXmlTrees</span> <span class='varid'>cs</span>-<a name="line-274"></a> <span class='varop'>.</span>-<a name="line-275"></a> <span class='varid'>showString</span> <span class='str'>"]]>"</span>-<a name="line-276"></a>-<a name="line-277"></a><span class='definition'>showXmlDTD</span> <span class='conid'>CONTENT</span> <span class='varid'>al</span> <span class='varid'>cs</span>-<a name="line-278"></a> <span class='keyglyph'>=</span> <span class='varid'>showContent</span> <span class='layout'>(</span><span class='varid'>mkDTDElem</span> <span class='conid'>CONTENT</span> <span class='varid'>al</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-279"></a>-<a name="line-280"></a><span class='definition'>showXmlDTD</span> <span class='conid'>NAME</span> <span class='varid'>al</span> <span class='sel'>_cs</span>-<a name="line-281"></a> <span class='keyglyph'>=</span> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-282"></a>-<a name="line-283"></a><span class='definition'>showXmlDTD</span> <span class='varid'>de</span> <span class='varid'>al</span> <span class='sel'>_cs</span>-<a name="line-284"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"NOT YET IMPLEMETED: "</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>de</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>" [...]\n"</span>-<a name="line-285"></a>-<a name="line-286"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-287"></a>-<a name="line-288"></a><a name="showElemType"></a><span class='definition'>showElemType</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'>String</span>-<a name="line-289"></a><span class='definition'>showElemType</span> <span class='varid'>t</span> <span class='varid'>cs</span>-<a name="line-290"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>v_pcdata</span>-<a name="line-291"></a> <span class='keyglyph'>=</span> <span class='varid'>showLpar</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>v_pcdata</span> <span class='varop'>.</span> <span class='varid'>showRpar</span>-<a name="line-292"></a>-<a name="line-293"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>v_mixed</span> <span class='varop'>&&</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span> <span class='varid'>cs</span>-<a name="line-294"></a> <span class='keyglyph'>=</span> <span class='varid'>showLpar</span>-<a name="line-295"></a> <span class='varop'>.</span>-<a name="line-296"></a> <span class='varid'>showString</span> <span class='varid'>v_pcdata</span>-<a name="line-297"></a> <span class='varop'>.</span>-<a name="line-298"></a> <span class='layout'>(</span> <span class='varid'>foldr</span> <span class='layout'>(</span><span class='varop'>.</span><span class='layout'>)</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>mixedContent</span> <span class='varop'>.</span> <span class='varid'>selAttrl</span> <span class='varop'>.</span> <span class='varid'>getNode</span><span class='layout'>)</span> <span class='layout'>)</span> <span class='varid'>cs1</span>-<a name="line-299"></a> <span class='varop'>.</span>-<a name="line-300"></a> <span class='varid'>showRpar</span>-<a name="line-301"></a> <span class='varop'>.</span>-<a name="line-302"></a> <span class='varid'>showAttr</span> <span class='varid'>a_modifier</span> <span class='varid'>al1</span>-<a name="line-303"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>v_mixed</span> <span class='comment'>-- incorrect tree, e.g. after erronius pe substitution</span>-<a name="line-304"></a> <span class='keyglyph'>=</span> <span class='varid'>showLpar</span>-<a name="line-305"></a> <span class='varop'>.</span>-<a name="line-306"></a> <span class='varid'>showRpar</span>-<a name="line-307"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>v_children</span> <span class='varop'>&&</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span> <span class='varid'>cs</span>-<a name="line-308"></a> <span class='keyglyph'>=</span> <span class='varid'>showContent</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-309"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>v_children</span>-<a name="line-310"></a> <span class='keyglyph'>=</span> <span class='varid'>showLpar</span>-<a name="line-311"></a> <span class='varop'>.</span> <span class='varid'>showRpar</span>-<a name="line-312"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>k_peref</span>-<a name="line-313"></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'>id</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>showContent</span> <span class='varop'>$</span> <span class='varid'>cs</span>-<a name="line-314"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-315"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='varid'>t</span>-<a name="line-316"></a> <span class='keyword'>where</span>-<a name="line-317"></a> <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'>CONTENT</span> <span class='varid'>al1</span><span class='layout'>)</span> <span class='varid'>cs1</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='varid'>cs</span>-<a name="line-318"></a>-<a name="line-319"></a> <span class='varid'>mixedContent</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'>String</span>-<a name="line-320"></a> <span class='varid'>mixedContent</span> <span class='varid'>l</span>-<a name="line-321"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>" | "</span> <span class='varop'>.</span> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>l</span> <span class='varop'>.</span> <span class='varid'>showPEAttr</span> <span class='varid'>l</span>-<a name="line-322"></a>-<a name="line-323"></a> <span class='varid'>selAttrl</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='keyword'>_</span> <span class='keyword'>as</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyword'>as</span>-<a name="line-324"></a> <span class='varid'>selAttrl</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='varid'>tex</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>a_name</span><span class='layout'>,</span> <span class='varid'>tex</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-325"></a> <span class='varid'>selAttrl</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-326"></a>-<a name="line-327"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-328"></a>-<a name="line-329"></a><a name="showContent"></a><span class='definition'>showContent</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'>String</span>-<a name="line-330"></a><span class='definition'>showContent</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>de</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-331"></a> <span class='keyglyph'>=</span> <span class='varid'>cont2String</span> <span class='varid'>de</span>-<a name="line-332"></a> <span class='keyword'>where</span>-<a name="line-333"></a> <span class='varid'>cont2String</span> <span class='keyglyph'>::</span> <span class='conid'>DTDElem</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-334"></a> <span class='varid'>cont2String</span> <span class='conid'>NAME</span>-<a name="line-335"></a> <span class='keyglyph'>=</span> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-336"></a> <span class='varid'>cont2String</span> <span class='conid'>PEREF</span>-<a name="line-337"></a> <span class='keyglyph'>=</span> <span class='varid'>showPEAttr</span> <span class='varid'>al</span>-<a name="line-338"></a> <span class='varid'>cont2String</span> <span class='conid'>CONTENT</span>-<a name="line-339"></a> <span class='keyglyph'>=</span> <span class='varid'>showLpar</span>-<a name="line-340"></a> <span class='varop'>.</span>-<a name="line-341"></a> <span class='varid'>foldr1</span> <span class='layout'>(</span><span class='varid'>combine</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_kind</span> <span class='varid'>al</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>showContent</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-342"></a> <span class='varop'>.</span>-<a name="line-343"></a> <span class='varid'>showRpar</span>-<a name="line-344"></a> <span class='varop'>.</span>-<a name="line-345"></a> <span class='varid'>showAttr</span> <span class='varid'>a_modifier</span> <span class='varid'>al</span>-<a name="line-346"></a> <span class='varid'>cont2String</span> <span class='varid'>n</span>-<a name="line-347"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"cont2string "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" is undefined"</span><span class='layout'>)</span>-<a name="line-348"></a> <span class='varid'>combine</span> <span class='varid'>k</span> <span class='varid'>s1</span> <span class='varid'>s2</span>-<a name="line-349"></a> <span class='keyglyph'>=</span> <span class='varid'>s1</span>-<a name="line-350"></a> <span class='varop'>.</span>-<a name="line-351"></a> <span class='varid'>showString</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>v_seq</span>-<a name="line-352"></a> <span class='keyword'>then</span> <span class='str'>", "</span>-<a name="line-353"></a> <span class='keyword'>else</span> <span class='str'>" | "</span>-<a name="line-354"></a> <span class='layout'>)</span>-<a name="line-355"></a> <span class='varop'>.</span>-<a name="line-356"></a> <span class='varid'>s2</span>-<a name="line-357"></a>-<a name="line-358"></a><span class='definition'>showContent</span> <span class='varid'>n</span>-<a name="line-359"></a> <span class='keyglyph'>=</span> <span class='varid'>showXmlTree</span> <span class='varid'>n</span>-<a name="line-360"></a>-<a name="line-361"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-362"></a>-<a name="line-363"></a><a name="showEntity"></a><span class='definition'>showEntity</span> <span class='keyglyph'>::</span> <span class='conid'>String</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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-364"></a>-<a name="line-365"></a><span class='definition'>showEntity</span> <span class='varid'>kind</span> <span class='varid'>al</span> <span class='varid'>cs</span>-<a name="line-366"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!ENTITY "</span>-<a name="line-367"></a> <span class='varop'>.</span>-<a name="line-368"></a> <span class='varid'>showString</span> <span class='varid'>kind</span>-<a name="line-369"></a> <span class='varop'>.</span>-<a name="line-370"></a> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>-<a name="line-371"></a> <span class='varop'>.</span>-<a name="line-372"></a> <span class='varid'>showExternalId</span> <span class='varid'>al</span>-<a name="line-373"></a> <span class='varop'>.</span>-<a name="line-374"></a> <span class='varid'>showNData</span> <span class='varid'>al</span>-<a name="line-375"></a> <span class='varop'>.</span>-<a name="line-376"></a> <span class='varid'>showEntityValue</span> <span class='varid'>cs</span>-<a name="line-377"></a> <span class='varop'>.</span>-<a name="line-378"></a> <span class='varid'>showString</span> <span class='str'>" >"</span>-<a name="line-379"></a>-<a name="line-380"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-381"></a>-<a name="line-382"></a><a name="showEntityValue"></a><span class='definition'>showEntityValue</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'>String</span>-<a name="line-383"></a>-<a name="line-384"></a><span class='definition'>showEntityValue</span> <span class='conid'>[]</span>-<a name="line-385"></a> <span class='keyglyph'>=</span> <span class='varid'>id</span>-<a name="line-386"></a>-<a name="line-387"></a><span class='definition'>showEntityValue</span> <span class='varid'>cs</span>-<a name="line-388"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-389"></a>-<a name="line-390"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-391"></a>-<a name="line-392"></a><a name="showBlank"></a><span class='definition'>showBlank</span><span class='layout'>,</span>-<a name="line-393"></a> <span class='varid'>showEq</span><span class='layout'>,</span> <span class='varid'>showLt</span><span class='layout'>,</span> <span class='varid'>showGt</span><span class='layout'>,</span> <span class='varid'>showSlash</span><span class='layout'>,</span> <span class='varid'>showApos</span><span class='layout'>,</span> <span class='varid'>showQuot</span><span class='layout'>,</span> <span class='varid'>showLpar</span><span class='layout'>,</span> <span class='varid'>showRpar</span><span class='layout'>,</span> <span class='varid'>showNL</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-394"></a>-<a name="line-395"></a><span class='definition'>showBlank</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>' '</span>-<a name="line-396"></a><a name="showEq"></a><span class='definition'>showEq</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'='</span>-<a name="line-397"></a><a name="showLt"></a><span class='definition'>showLt</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'<'</span>-<a name="line-398"></a><a name="showGt"></a><span class='definition'>showGt</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'>'</span>-<a name="line-399"></a><a name="showSlash"></a><span class='definition'>showSlash</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'/'</span>-<a name="line-400"></a><a name="showApos"></a><span class='definition'>showApos</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'\''</span>-<a name="line-401"></a><a name="showQuot"></a><span class='definition'>showQuot</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'\"'</span>-<a name="line-402"></a><a name="showLpar"></a><span class='definition'>showLpar</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'('</span>-<a name="line-403"></a><a name="showRpar"></a><span class='definition'>showRpar</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>')'</span>-<a name="line-404"></a><a name="showNL"></a><span class='definition'>showNL</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'\n'</span>-<a name="line-405"></a>-<a name="line-406"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-124"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-125"></a>+<a name="line-126"></a><a name="showAttr"></a><span class='definition'>showAttr</span> <span class='keyglyph'>::</span> <span class='conid'>String</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'>String</span>+<a name="line-127"></a><span class='definition'>showAttr</span> <span class='varid'>k</span> <span class='varid'>al</span>+<a name="line-128"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='str'>""</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>k</span> <span class='varop'>$</span> <span class='varid'>al</span><span class='layout'>)</span>+<a name="line-129"></a>+<a name="line-130"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-131"></a>+<a name="line-132"></a><a name="showPEAttr"></a><span class='definition'>showPEAttr</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'>String</span>+<a name="line-133"></a><span class='definition'>showPEAttr</span> <span class='varid'>al</span>+<a name="line-134"></a> <span class='keyglyph'>=</span> <span class='varid'>showPE</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>a_peref</span> <span class='varid'>al</span><span class='layout'>)</span>+<a name="line-135"></a> <span class='keyword'>where</span>+<a name="line-136"></a> <span class='varid'>showPE</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>pe</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'%'</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>pe</span> <span class='varop'>.</span> <span class='varid'>showChar</span> <span class='chr'>';'</span>+<a name="line-137"></a> <span class='varid'>showPE</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>id</span>+<a name="line-138"></a>+<a name="line-139"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-140"></a>+<a name="line-141"></a><a name="showExternalId"></a><span class='definition'>showExternalId</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'>String</span>+<a name="line-142"></a><span class='definition'>showExternalId</span> <span class='varid'>al</span>+<a name="line-143"></a> <span class='keyglyph'>=</span> <span class='varid'>id2Str</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>k_system</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>k_public</span> <span class='varid'>al</span><span class='layout'>)</span>+<a name="line-144"></a> <span class='keyword'>where</span>+<a name="line-145"></a> <span class='varid'>id2Str</span> <span class='conid'>Nothing</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>id</span>+<a name="line-146"></a> <span class='varid'>id2Str</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_system</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='varid'>s</span>+<a name="line-147"></a> <span class='varid'>id2Str</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_public</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='varid'>p</span>+<a name="line-148"></a> <span class='varid'>id2Str</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_public</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='varid'>p</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='varid'>s</span>+<a name="line-149"></a>+<a name="line-150"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-151"></a>+<a name="line-152"></a><a name="showNData"></a><span class='definition'>showNData</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'>String</span>+<a name="line-153"></a><span class='definition'>showNData</span> <span class='varid'>al</span>+<a name="line-154"></a> <span class='keyglyph'>=</span> <span class='varid'>nd2Str</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>k_ndata</span> <span class='varid'>al</span><span class='layout'>)</span>+<a name="line-155"></a> <span class='keyword'>where</span>+<a name="line-156"></a> <span class='varid'>nd2Str</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>id</span>+<a name="line-157"></a> <span class='varid'>nd2Str</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>v</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_ndata</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>v</span>+<a name="line-158"></a>+<a name="line-159"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-160"></a>+<a name="line-161"></a><a name="showXmlDTD"></a><span class='definition'>showXmlDTD</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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-162"></a>+<a name="line-163"></a><span class='definition'>showXmlDTD</span> <span class='conid'>DOCTYPE</span> <span class='varid'>al</span> <span class='varid'>cs</span>+<a name="line-164"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!DOCTYPE "</span>+<a name="line-165"></a> <span class='varop'>.</span>+<a name="line-166"></a> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>+<a name="line-167"></a> <span class='varop'>.</span>+<a name="line-168"></a> <span class='varid'>showExternalId</span> <span class='varid'>al</span>+<a name="line-169"></a> <span class='varop'>.</span>+<a name="line-170"></a> <span class='varid'>showInternalDTD</span> <span class='varid'>cs</span>+<a name="line-171"></a> <span class='varop'>.</span>+<a name="line-172"></a> <span class='varid'>showString</span> <span class='str'>">"</span>+<a name="line-173"></a> <span class='keyword'>where</span>+<a name="line-174"></a> <span class='varid'>showInternalDTD</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='varid'>id</span>+<a name="line-175"></a> <span class='varid'>showInternalDTD</span> <span class='varid'>ds</span> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>" [\n"</span> <span class='varop'>.</span> <span class='varid'>showXmlTrees'</span> <span class='varid'>ds</span> <span class='varop'>.</span> <span class='varid'>showChar</span> <span class='chr'>']'</span>+<a name="line-176"></a>+<a name="line-177"></a><span class='definition'>showXmlDTD</span> <span class='conid'>ELEMENT</span> <span class='varid'>al</span> <span class='varid'>cs</span>+<a name="line-178"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!ELEMENT "</span>+<a name="line-179"></a> <span class='varop'>.</span>+<a name="line-180"></a> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>+<a name="line-181"></a> <span class='varop'>.</span>+<a name="line-182"></a> <span class='varid'>showBlank</span>+<a name="line-183"></a> <span class='varop'>.</span>+<a name="line-184"></a> <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>+<a name="line-185"></a> <span class='varop'>.</span>+<a name="line-186"></a> <span class='varid'>showString</span> <span class='str'>" >"</span>+<a name="line-187"></a>+<a name="line-188"></a><span class='definition'>showXmlDTD</span> <span class='conid'>ATTLIST</span> <span class='varid'>al</span> <span class='varid'>cs</span>+<a name="line-189"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!ATTLIST "</span>+<a name="line-190"></a> <span class='varop'>.</span>+<a name="line-191"></a> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>isNothing</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>a_name</span> <span class='varop'>$</span> <span class='varid'>al</span>+<a name="line-192"></a> <span class='keyword'>then</span>+<a name="line-193"></a> <span class='varid'>showXmlTrees</span> <span class='varid'>cs</span>+<a name="line-194"></a> <span class='keyword'>else</span>+<a name="line-195"></a> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>+<a name="line-196"></a> <span class='varop'>.</span>+<a name="line-197"></a> <span class='varid'>showBlank</span>+<a name="line-198"></a> <span class='varop'>.</span>+<a name="line-199"></a> <span class='layout'>(</span> <span class='keyword'>case</span> <span class='varid'>lookup</span> <span class='varid'>a_value</span> <span class='varid'>al</span> <span class='keyword'>of</span>+<a name="line-200"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='varid'>showPEAttr</span>+<a name="line-201"></a> <span class='varop'>.</span> <span class='varid'>fromMaybe</span> <span class='conid'>[]</span> <span class='varop'>.</span> <span class='varid'>getDTDAttrl</span>+<a name="line-202"></a> <span class='varop'>.</span> <span class='varid'>head</span>+<a name="line-203"></a> <span class='layout'>)</span> <span class='varid'>cs</span>+<a name="line-204"></a> <span class='conid'>Just</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='varid'>showString</span> <span class='varid'>a</span>+<a name="line-205"></a> <span class='varop'>.</span>+<a name="line-206"></a> <span class='varid'>showAttrType</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-207"></a> <span class='varop'>.</span>+<a name="line-208"></a> <span class='varid'>showAttrKind</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_kind</span> <span class='varid'>al</span><span class='layout'>)</span>+<a name="line-209"></a> <span class='layout'>)</span>+<a name="line-210"></a> <span class='layout'>)</span>+<a name="line-211"></a> <span class='layout'>)</span>+<a name="line-212"></a> <span class='varop'>.</span>+<a name="line-213"></a> <span class='varid'>showString</span> <span class='str'>" >"</span>+<a name="line-214"></a> <span class='keyword'>where</span>+<a name="line-215"></a> <span class='varid'>showAttrType</span> <span class='varid'>t</span>+<a name="line-216"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>k_peref</span>+<a name="line-217"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showPEAttr</span> <span class='varid'>al</span>+<a name="line-218"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>k_enumeration</span>+<a name="line-219"></a> <span class='keyglyph'>=</span> <span class='varid'>showAttrEnum</span>+<a name="line-220"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>k_notation</span>+<a name="line-221"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_notation</span> <span class='varop'>.</span> <span class='varid'>showAttrEnum</span>+<a name="line-222"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-223"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>t</span>+<a name="line-224"></a>+<a name="line-225"></a> <span class='varid'>showAttrEnum</span>+<a name="line-226"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>" ("</span>+<a name="line-227"></a> <span class='varop'>.</span>+<a name="line-228"></a> <span class='varid'>foldr1</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>s1</span> <span class='varid'>s2</span> <span class='keyglyph'>-></span> <span class='varid'>s1</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>" | "</span> <span class='varop'>.</span> <span class='varid'>s2</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>getEnum</span> <span class='varop'>.</span> <span class='varid'>fromMaybe</span> <span class='conid'>[]</span> <span class='varop'>.</span> <span class='varid'>getDTDAttrl</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>+<a name="line-229"></a> <span class='varop'>.</span>+<a name="line-230"></a> <span class='varid'>showString</span> <span class='str'>")"</span>+<a name="line-231"></a> <span class='keyword'>where</span>+<a name="line-232"></a> <span class='varid'>getEnum</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'>String</span>+<a name="line-233"></a> <span class='varid'>getEnum</span> <span class='varid'>l</span> <span class='keyglyph'>=</span> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>l</span> <span class='varop'>.</span> <span class='varid'>showPEAttr</span> <span class='varid'>l</span>+<a name="line-234"></a>+<a name="line-235"></a> <span class='varid'>showAttrKind</span> <span class='varid'>k</span>+<a name="line-236"></a> <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>k_default</span>+<a name="line-237"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</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-238"></a> <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>k_fixed</span>+<a name="line-239"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k_fixed</span>+<a name="line-240"></a> <span class='varop'>.</span>+<a name="line-241"></a> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</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-242"></a> <span class='keyglyph'>|</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='str'>""</span>+<a name="line-243"></a> <span class='keyglyph'>=</span> <span class='varid'>id</span>+<a name="line-244"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-245"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>k</span>+<a name="line-246"></a>+<a name="line-247"></a><span class='definition'>showXmlDTD</span> <span class='conid'>NOTATION</span> <span class='varid'>al</span> <span class='sel'>_cs</span>+<a name="line-248"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!NOTATION "</span>+<a name="line-249"></a> <span class='varop'>.</span>+<a name="line-250"></a> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>+<a name="line-251"></a> <span class='varop'>.</span>+<a name="line-252"></a> <span class='varid'>showExternalId</span> <span class='varid'>al</span>+<a name="line-253"></a> <span class='varop'>.</span>+<a name="line-254"></a> <span class='varid'>showString</span> <span class='str'>" >"</span>+<a name="line-255"></a>+<a name="line-256"></a><span class='definition'>showXmlDTD</span> <span class='conid'>PENTITY</span> <span class='varid'>al</span> <span class='varid'>cs</span>+<a name="line-257"></a> <span class='keyglyph'>=</span> <span class='varid'>showEntity</span> <span class='str'>"% "</span> <span class='varid'>al</span> <span class='varid'>cs</span>+<a name="line-258"></a>+<a name="line-259"></a><span class='definition'>showXmlDTD</span> <span class='conid'>ENTITY</span> <span class='varid'>al</span> <span class='varid'>cs</span>+<a name="line-260"></a> <span class='keyglyph'>=</span> <span class='varid'>showEntity</span> <span class='str'>""</span> <span class='varid'>al</span> <span class='varid'>cs</span>+<a name="line-261"></a>+<a name="line-262"></a><span class='definition'>showXmlDTD</span> <span class='conid'>PEREF</span> <span class='varid'>al</span> <span class='sel'>_cs</span>+<a name="line-263"></a> <span class='keyglyph'>=</span> <span class='varid'>showPEAttr</span> <span class='varid'>al</span>+<a name="line-264"></a>+<a name="line-265"></a><span class='definition'>showXmlDTD</span> <span class='conid'>CONDSECT</span> <span class='keyword'>_</span> <span class='layout'>(</span><span class='varid'>c1</span> <span class='conop'>:</span> <span class='varid'>cs</span><span class='layout'>)</span>+<a name="line-266"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<![ "</span>+<a name="line-267"></a> <span class='varop'>.</span>+<a name="line-268"></a> <span class='varid'>showXmlTree</span> <span class='varid'>c1</span>+<a name="line-269"></a> <span class='varop'>.</span>+<a name="line-270"></a> <span class='varid'>showString</span> <span class='str'>" [\n"</span>+<a name="line-271"></a> <span class='varop'>.</span>+<a name="line-272"></a> <span class='varid'>showXmlTrees</span> <span class='varid'>cs</span>+<a name="line-273"></a> <span class='varop'>.</span>+<a name="line-274"></a> <span class='varid'>showString</span> <span class='str'>"]]>"</span>+<a name="line-275"></a>+<a name="line-276"></a><span class='definition'>showXmlDTD</span> <span class='conid'>CONTENT</span> <span class='varid'>al</span> <span class='varid'>cs</span>+<a name="line-277"></a> <span class='keyglyph'>=</span> <span class='varid'>showContent</span> <span class='layout'>(</span><span class='varid'>mkDTDElem</span> <span class='conid'>CONTENT</span> <span class='varid'>al</span> <span class='varid'>cs</span><span class='layout'>)</span>+<a name="line-278"></a>+<a name="line-279"></a><span class='definition'>showXmlDTD</span> <span class='conid'>NAME</span> <span class='varid'>al</span> <span class='sel'>_cs</span>+<a name="line-280"></a> <span class='keyglyph'>=</span> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>+<a name="line-281"></a>+<a name="line-282"></a><span class='definition'>showXmlDTD</span> <span class='varid'>de</span> <span class='varid'>al</span> <span class='sel'>_cs</span>+<a name="line-283"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"NOT YET IMPLEMETED: "</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>de</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='str'>" [...]\n"</span>+<a name="line-284"></a>+<a name="line-285"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-286"></a>+<a name="line-287"></a><a name="showElemType"></a><span class='definition'>showElemType</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'>String</span>+<a name="line-288"></a><span class='definition'>showElemType</span> <span class='varid'>t</span> <span class='varid'>cs</span>+<a name="line-289"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>v_pcdata</span>+<a name="line-290"></a> <span class='keyglyph'>=</span> <span class='varid'>showLpar</span> <span class='varop'>.</span> <span class='varid'>showString</span> <span class='varid'>v_pcdata</span> <span class='varop'>.</span> <span class='varid'>showRpar</span>+<a name="line-291"></a>+<a name="line-292"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>v_mixed</span> <span class='varop'>&&</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span> <span class='varid'>cs</span>+<a name="line-293"></a> <span class='keyglyph'>=</span> <span class='varid'>showLpar</span>+<a name="line-294"></a> <span class='varop'>.</span>+<a name="line-295"></a> <span class='varid'>showString</span> <span class='varid'>v_pcdata</span>+<a name="line-296"></a> <span class='varop'>.</span>+<a name="line-297"></a> <span class='layout'>(</span> <span class='varid'>foldr</span> <span class='layout'>(</span><span class='varop'>.</span><span class='layout'>)</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>mixedContent</span> <span class='varop'>.</span> <span class='varid'>selAttrl</span> <span class='varop'>.</span> <span class='varid'>getNode</span><span class='layout'>)</span> <span class='layout'>)</span> <span class='varid'>cs1</span>+<a name="line-298"></a> <span class='varop'>.</span>+<a name="line-299"></a> <span class='varid'>showRpar</span>+<a name="line-300"></a> <span class='varop'>.</span>+<a name="line-301"></a> <span class='varid'>showAttr</span> <span class='varid'>a_modifier</span> <span class='varid'>al1</span>+<a name="line-302"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>v_mixed</span> <span class='comment'>-- incorrect tree, e.g. after erronius pe substitution</span>+<a name="line-303"></a> <span class='keyglyph'>=</span> <span class='varid'>showLpar</span>+<a name="line-304"></a> <span class='varop'>.</span>+<a name="line-305"></a> <span class='varid'>showRpar</span>+<a name="line-306"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>v_children</span> <span class='varop'>&&</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span><span class='layout'>)</span> <span class='varid'>cs</span>+<a name="line-307"></a> <span class='keyglyph'>=</span> <span class='varid'>showContent</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cs</span><span class='layout'>)</span>+<a name="line-308"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>v_children</span>+<a name="line-309"></a> <span class='keyglyph'>=</span> <span class='varid'>showLpar</span>+<a name="line-310"></a> <span class='varop'>.</span> <span class='varid'>showRpar</span>+<a name="line-311"></a> <span class='keyglyph'>|</span> <span class='varid'>t</span> <span class='varop'>==</span> <span class='varid'>k_peref</span>+<a name="line-312"></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'>id</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>showContent</span> <span class='varop'>$</span> <span class='varid'>cs</span>+<a name="line-313"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-314"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='varid'>t</span>+<a name="line-315"></a> <span class='keyword'>where</span>+<a name="line-316"></a> <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'>CONTENT</span> <span class='varid'>al1</span><span class='layout'>)</span> <span class='varid'>cs1</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='varid'>cs</span>+<a name="line-317"></a>+<a name="line-318"></a> <span class='varid'>mixedContent</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'>String</span>+<a name="line-319"></a> <span class='varid'>mixedContent</span> <span class='varid'>l</span>+<a name="line-320"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>" | "</span> <span class='varop'>.</span> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>l</span> <span class='varop'>.</span> <span class='varid'>showPEAttr</span> <span class='varid'>l</span>+<a name="line-321"></a>+<a name="line-322"></a> <span class='varid'>selAttrl</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='keyword'>_</span> <span class='keyword'>as</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyword'>as</span>+<a name="line-323"></a> <span class='varid'>selAttrl</span> <span class='layout'>(</span><span class='conid'>XText</span> <span class='varid'>tex</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>a_name</span><span class='layout'>,</span> <span class='varid'>tex</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-324"></a> <span class='varid'>selAttrl</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-325"></a>+<a name="line-326"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-327"></a>+<a name="line-328"></a><a name="showContent"></a><span class='definition'>showContent</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'>String</span>+<a name="line-329"></a><span class='definition'>showContent</span> <span class='layout'>(</span><span class='conid'>NTree</span> <span class='layout'>(</span><span class='conid'>XDTD</span> <span class='varid'>de</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='varid'>cs</span><span class='layout'>)</span>+<a name="line-330"></a> <span class='keyglyph'>=</span> <span class='varid'>cont2String</span> <span class='varid'>de</span>+<a name="line-331"></a> <span class='keyword'>where</span>+<a name="line-332"></a> <span class='varid'>cont2String</span> <span class='keyglyph'>::</span> <span class='conid'>DTDElem</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-333"></a> <span class='varid'>cont2String</span> <span class='conid'>NAME</span>+<a name="line-334"></a> <span class='keyglyph'>=</span> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>+<a name="line-335"></a> <span class='varid'>cont2String</span> <span class='conid'>PEREF</span>+<a name="line-336"></a> <span class='keyglyph'>=</span> <span class='varid'>showPEAttr</span> <span class='varid'>al</span>+<a name="line-337"></a> <span class='varid'>cont2String</span> <span class='conid'>CONTENT</span>+<a name="line-338"></a> <span class='keyglyph'>=</span> <span class='varid'>showLpar</span>+<a name="line-339"></a> <span class='varop'>.</span>+<a name="line-340"></a> <span class='varid'>foldr1</span> <span class='layout'>(</span><span class='varid'>combine</span> <span class='layout'>(</span><span class='varid'>lookup1</span> <span class='varid'>a_kind</span> <span class='varid'>al</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>showContent</span> <span class='varid'>cs</span><span class='layout'>)</span>+<a name="line-341"></a> <span class='varop'>.</span>+<a name="line-342"></a> <span class='varid'>showRpar</span>+<a name="line-343"></a> <span class='varop'>.</span>+<a name="line-344"></a> <span class='varid'>showAttr</span> <span class='varid'>a_modifier</span> <span class='varid'>al</span>+<a name="line-345"></a> <span class='varid'>cont2String</span> <span class='varid'>n</span>+<a name="line-346"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"cont2string "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n</span> <span class='varop'>++</span> <span class='str'>" is undefined"</span><span class='layout'>)</span>+<a name="line-347"></a> <span class='varid'>combine</span> <span class='varid'>k</span> <span class='varid'>s1</span> <span class='varid'>s2</span>+<a name="line-348"></a> <span class='keyglyph'>=</span> <span class='varid'>s1</span>+<a name="line-349"></a> <span class='varop'>.</span>+<a name="line-350"></a> <span class='varid'>showString</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>k</span> <span class='varop'>==</span> <span class='varid'>v_seq</span>+<a name="line-351"></a> <span class='keyword'>then</span> <span class='str'>", "</span>+<a name="line-352"></a> <span class='keyword'>else</span> <span class='str'>" | "</span>+<a name="line-353"></a> <span class='layout'>)</span>+<a name="line-354"></a> <span class='varop'>.</span>+<a name="line-355"></a> <span class='varid'>s2</span>+<a name="line-356"></a>+<a name="line-357"></a><span class='definition'>showContent</span> <span class='varid'>n</span>+<a name="line-358"></a> <span class='keyglyph'>=</span> <span class='varid'>showXmlTree</span> <span class='varid'>n</span>+<a name="line-359"></a>+<a name="line-360"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-361"></a>+<a name="line-362"></a><a name="showEntity"></a><span class='definition'>showEntity</span> <span class='keyglyph'>::</span> <span class='conid'>String</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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-363"></a>+<a name="line-364"></a><span class='definition'>showEntity</span> <span class='varid'>kind</span> <span class='varid'>al</span> <span class='varid'>cs</span>+<a name="line-365"></a> <span class='keyglyph'>=</span> <span class='varid'>showString</span> <span class='str'>"<!ENTITY "</span>+<a name="line-366"></a> <span class='varop'>.</span>+<a name="line-367"></a> <span class='varid'>showString</span> <span class='varid'>kind</span>+<a name="line-368"></a> <span class='varop'>.</span>+<a name="line-369"></a> <span class='varid'>showAttr</span> <span class='varid'>a_name</span> <span class='varid'>al</span>+<a name="line-370"></a> <span class='varop'>.</span>+<a name="line-371"></a> <span class='varid'>showExternalId</span> <span class='varid'>al</span>+<a name="line-372"></a> <span class='varop'>.</span>+<a name="line-373"></a> <span class='varid'>showNData</span> <span class='varid'>al</span>+<a name="line-374"></a> <span class='varop'>.</span>+<a name="line-375"></a> <span class='varid'>showEntityValue</span> <span class='varid'>cs</span>+<a name="line-376"></a> <span class='varop'>.</span>+<a name="line-377"></a> <span class='varid'>showString</span> <span class='str'>" >"</span>+<a name="line-378"></a>+<a name="line-379"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-380"></a>+<a name="line-381"></a><a name="showEntityValue"></a><span class='definition'>showEntityValue</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'>String</span>+<a name="line-382"></a>+<a name="line-383"></a><span class='definition'>showEntityValue</span> <span class='conid'>[]</span>+<a name="line-384"></a> <span class='keyglyph'>=</span> <span class='varid'>id</span>+<a name="line-385"></a>+<a name="line-386"></a><span class='definition'>showEntityValue</span> <span class='varid'>cs</span>+<a name="line-387"></a> <span class='keyglyph'>=</span> <span class='varid'>showBlank</span> <span class='varop'>.</span> <span class='varid'>showQuoteString</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='varid'>cs</span><span class='layout'>)</span>+<a name="line-388"></a>+<a name="line-389"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-390"></a>+<a name="line-391"></a><a name="showBlank"></a><span class='definition'>showBlank</span><span class='layout'>,</span>+<a name="line-392"></a> <span class='varid'>showEq</span><span class='layout'>,</span> <span class='varid'>showLt</span><span class='layout'>,</span> <span class='varid'>showGt</span><span class='layout'>,</span> <span class='varid'>showSlash</span><span class='layout'>,</span> <span class='varid'>showApos</span><span class='layout'>,</span> <span class='varid'>showQuot</span><span class='layout'>,</span> <span class='varid'>showLpar</span><span class='layout'>,</span> <span class='varid'>showRpar</span><span class='layout'>,</span> <span class='varid'>showNL</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-393"></a>+<a name="line-394"></a><span class='definition'>showBlank</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>' '</span>+<a name="line-395"></a><a name="showEq"></a><span class='definition'>showEq</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'='</span>+<a name="line-396"></a><a name="showLt"></a><span class='definition'>showLt</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'<'</span>+<a name="line-397"></a><a name="showGt"></a><span class='definition'>showGt</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'>'</span>+<a name="line-398"></a><a name="showSlash"></a><span class='definition'>showSlash</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'/'</span>+<a name="line-399"></a><a name="showApos"></a><span class='definition'>showApos</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'\''</span>+<a name="line-400"></a><a name="showQuot"></a><span class='definition'>showQuot</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'\"'</span>+<a name="line-401"></a><a name="showLpar"></a><span class='definition'>showLpar</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'('</span>+<a name="line-402"></a><a name="showRpar"></a><span class='definition'>showRpar</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>')'</span>+<a name="line-403"></a><a name="showNL"></a><span class='definition'>showNL</span> <span class='keyglyph'>=</span> <span class='varid'>showChar</span> <span class='chr'>'\n'</span>+<a name="line-404"></a>+<a name="line-405"></a><span class='comment'>-- -----------------------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-DOM-TypeDefs.html view
@@ -37,7 +37,7 @@ <a name="line-29"></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-30"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Typeable</span> <a name="line-31"></a>-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>QualifiedName</span> <span class='varid'>hiding</span> <span class='layout'>(</span> <span class='conid'>QN</span> <span class='layout'>)</span>+<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>QualifiedName</span> <a name="line-33"></a> <a name="line-34"></a><span class='comment'>-- -----------------------------------------------------------------------------</span> <a name="line-35"></a><span class='comment'>--</span>@@ -137,49 +137,40 @@ <a name="line-129"></a> <a name="line-130"></a><span class='comment'>-- -----------------------------------------------------------------------------</span> <a name="line-131"></a><span class='comment'>--</span>-<a name="line-132"></a>-<a name="line-133"></a><span class='comment'>-- |</span>-<a name="line-134"></a><span class='comment'>-- Type for the namespace association list, used when propagating namespaces by</span>-<a name="line-135"></a><span class='comment'>-- modifying the 'QName' values in a tree</span>-<a name="line-136"></a>-<a name="line-137"></a><a name="NsEnv"></a><span class='keyword'>type</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>=</span> <span class='conid'>AssocList</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-138"></a>-<a name="line-139"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-140"></a><span class='comment'>--</span>-<a name="line-141"></a><span class='comment'>-- Constants for error levels</span>-<a name="line-142"></a>-<a name="line-143"></a><a name="c_ok"></a><span class='comment'>-- | no error, everything is ok</span>-<a name="line-144"></a><span class='definition'>c_ok</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>-<a name="line-145"></a><span class='definition'>c_ok</span> <span class='keyglyph'>=</span> <span class='num'>0</span>-<a name="line-146"></a>-<a name="line-147"></a><a name="c_warn"></a><span class='comment'>-- | Error level for XError, type warning</span>-<a name="line-148"></a><span class='definition'>c_warn</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>-<a name="line-149"></a><span class='definition'>c_warn</span> <span class='keyglyph'>=</span> <span class='varid'>c_ok</span> <span class='varop'>+</span> <span class='num'>1</span>-<a name="line-150"></a>-<a name="line-151"></a><a name="c_err"></a><span class='comment'>-- | Error level for XError, type error</span>-<a name="line-152"></a><span class='definition'>c_err</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>-<a name="line-153"></a><span class='definition'>c_err</span> <span class='keyglyph'>=</span> <span class='varid'>c_warn</span> <span class='varop'>+</span> <span class='num'>1</span>-<a name="line-154"></a>-<a name="line-155"></a><a name="c_fatal"></a><span class='comment'>-- | Error level for XError, type fatal error</span>-<a name="line-156"></a><span class='definition'>c_fatal</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>-<a name="line-157"></a><span class='definition'>c_fatal</span> <span class='keyglyph'>=</span> <span class='varid'>c_err</span> <span class='varop'>+</span> <span class='num'>1</span>-<a name="line-158"></a>-<a name="line-159"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>-<a name="line-160"></a>-<a name="line-161"></a><span class='comment'>-- | data type for representing a set of nodes as a tree structure</span>-<a name="line-162"></a><span class='comment'>--</span>-<a name="line-163"></a><span class='comment'>-- this structure is e.g. used to repesent the result of an XPath query</span>-<a name="line-164"></a><span class='comment'>-- such that the selected nodes can be processed or selected later in</span>-<a name="line-165"></a><span class='comment'>-- processing a document tree</span>-<a name="line-166"></a>-<a name="line-167"></a><a name="XmlNodeSet"></a><span class='keyword'>data</span> <span class='conid'>XmlNodeSet</span> <span class='keyglyph'>=</span> <span class='conid'>XNS</span> <span class='layout'>{</span> <span class='varid'>thisNode</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='comment'>-- ^ is this node part of the set ?</span>-<a name="line-168"></a> <span class='layout'>,</span> <span class='varid'>attrNodes</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>QName</span><span class='keyglyph'>]</span> <span class='comment'>-- ^ the set of attribute nodes</span>-<a name="line-169"></a> <span class='layout'>,</span> <span class='varid'>childNodes</span> <span class='keyglyph'>::</span> <span class='conid'>ChildNodes</span> <span class='comment'>-- ^ the set of child nodes, a list of pairs of index and node set </span>-<a name="line-170"></a> <span class='layout'>}</span>-<a name="line-171"></a> <span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>Show</span><span class='layout'>,</span> <span class='conid'>Typeable</span><span class='layout'>)</span>-<a name="line-172"></a>-<a name="line-173"></a><a name="ChildNodes"></a><span class='keyword'>type</span> <span class='conid'>ChildNodes</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>XmlNodeSet</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-174"></a>-<a name="line-175"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-132"></a><span class='comment'>-- Constants for error levels</span>+<a name="line-133"></a>+<a name="line-134"></a><a name="c_ok"></a><span class='comment'>-- | no error, everything is ok</span>+<a name="line-135"></a><span class='definition'>c_ok</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>+<a name="line-136"></a><span class='definition'>c_ok</span> <span class='keyglyph'>=</span> <span class='num'>0</span>+<a name="line-137"></a>+<a name="line-138"></a><a name="c_warn"></a><span class='comment'>-- | Error level for XError, type warning</span>+<a name="line-139"></a><span class='definition'>c_warn</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>+<a name="line-140"></a><span class='definition'>c_warn</span> <span class='keyglyph'>=</span> <span class='varid'>c_ok</span> <span class='varop'>+</span> <span class='num'>1</span>+<a name="line-141"></a>+<a name="line-142"></a><a name="c_err"></a><span class='comment'>-- | Error level for XError, type error</span>+<a name="line-143"></a><span class='definition'>c_err</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>+<a name="line-144"></a><span class='definition'>c_err</span> <span class='keyglyph'>=</span> <span class='varid'>c_warn</span> <span class='varop'>+</span> <span class='num'>1</span>+<a name="line-145"></a>+<a name="line-146"></a><a name="c_fatal"></a><span class='comment'>-- | Error level for XError, type fatal error</span>+<a name="line-147"></a><span class='definition'>c_fatal</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span>+<a name="line-148"></a><span class='definition'>c_fatal</span> <span class='keyglyph'>=</span> <span class='varid'>c_err</span> <span class='varop'>+</span> <span class='num'>1</span>+<a name="line-149"></a>+<a name="line-150"></a><span class='comment'>-- -----------------------------------------------------------------------------</span>+<a name="line-151"></a>+<a name="line-152"></a><span class='comment'>-- | data type for representing a set of nodes as a tree structure</span>+<a name="line-153"></a><span class='comment'>--</span>+<a name="line-154"></a><span class='comment'>-- this structure is e.g. used to repesent the result of an XPath query</span>+<a name="line-155"></a><span class='comment'>-- such that the selected nodes can be processed or selected later in</span>+<a name="line-156"></a><span class='comment'>-- processing a document tree</span>+<a name="line-157"></a>+<a name="line-158"></a><a name="XmlNodeSet"></a><span class='keyword'>data</span> <span class='conid'>XmlNodeSet</span> <span class='keyglyph'>=</span> <span class='conid'>XNS</span> <span class='layout'>{</span> <span class='varid'>thisNode</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='comment'>-- ^ is this node part of the set ?</span>+<a name="line-159"></a> <span class='layout'>,</span> <span class='varid'>attrNodes</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>QName</span><span class='keyglyph'>]</span> <span class='comment'>-- ^ the set of attribute nodes</span>+<a name="line-160"></a> <span class='layout'>,</span> <span class='varid'>childNodes</span> <span class='keyglyph'>::</span> <span class='conid'>ChildNodes</span> <span class='comment'>-- ^ the set of child nodes, a list of pairs of index and node set </span>+<a name="line-161"></a> <span class='layout'>}</span>+<a name="line-162"></a> <span class='keyword'>deriving</span> <span class='layout'>(</span><span class='conid'>Eq</span><span class='layout'>,</span> <span class='conid'>Show</span><span class='layout'>,</span> <span class='conid'>Typeable</span><span class='layout'>)</span>+<a name="line-163"></a>+<a name="line-164"></a><a name="ChildNodes"></a><span class='keyword'>type</span> <span class='conid'>ChildNodes</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>XmlNodeSet</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-165"></a>+<a name="line-166"></a><span class='comment'>-- -----------------------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-DOM-Unicode.html view
@@ -10,1106 +10,1105 @@ <a name="line-2"></a> <a name="line-3"></a><span class='comment'>{- | <a name="line-4"></a> Module : Text.XML.HXT.DOM.Unicode-<a name="line-5"></a> Copyright : Copyright (C) 2005 Uwe Schmidt-<a name="line-6"></a> License : MIT-<a name="line-7"></a>-<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de)-<a name="line-9"></a> Stability : experimental-<a name="line-10"></a> Portability: portable-<a name="line-11"></a> Version : $Id$-<a name="line-12"></a>-<a name="line-13"></a> Unicode and UTF-8 Conversion 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'>Text</span><span 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-20"></a> <span class='layout'>(</span>-<a name="line-21"></a> <span class='comment'>-- * Unicode Type declarations</span>-<a name="line-22"></a> <span class='conid'>Unicode</span><span class='layout'>,</span>-<a name="line-23"></a> <span class='conid'>UString</span><span class='layout'>,</span>-<a name="line-24"></a> <span class='conid'>UTF8Char</span><span class='layout'>,</span>-<a name="line-25"></a> <span class='conid'>UTF8String</span><span class='layout'>,</span>-<a name="line-26"></a> <span class='conid'>UStringWithErrors</span><span class='layout'>,</span>-<a name="line-27"></a> <span class='conid'>DecodingFct</span><span class='layout'>,</span>-<a name="line-28"></a> <span class='conid'>DecodingFctEmbedErrors</span><span class='layout'>,</span>-<a name="line-29"></a>-<a name="line-30"></a> <span class='comment'>-- * XML char predicates</span>-<a name="line-31"></a>-<a name="line-32"></a> <span class='varid'>isXmlChar</span>-<a name="line-33"></a> <span class='layout'>,</span> <span class='varid'>isXmlLatin1Char</span>-<a name="line-34"></a> <span class='layout'>,</span> <span class='varid'>isXmlSpaceChar</span>-<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>isXml11SpaceChar</span>-<a name="line-36"></a> <span class='layout'>,</span> <span class='varid'>isXmlNameChar</span>-<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>isXmlNameStartChar</span>-<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>isXmlNCNameChar</span>-<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>isXmlNCNameStartChar</span>-<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>isXmlPubidChar</span>-<a name="line-41"></a> <span class='layout'>,</span> <span class='varid'>isXmlLetter</span>-<a name="line-42"></a> <span class='layout'>,</span> <span class='varid'>isXmlBaseChar</span>-<a name="line-43"></a> <span class='layout'>,</span> <span class='varid'>isXmlIdeographicChar</span>-<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>isXmlCombiningChar</span>-<a name="line-45"></a> <span class='layout'>,</span> <span class='varid'>isXmlDigit</span>-<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>isXmlExtender</span>-<a name="line-47"></a> <span class='layout'>,</span> <span class='varid'>isXmlControlOrPermanentlyUndefined</span>-<a name="line-48"></a>-<a name="line-49"></a> <span class='comment'>-- * UTF-8 and Unicode conversion functions</span>-<a name="line-50"></a> <span class='layout'>,</span> <span class='varid'>utf8ToUnicode</span>-<a name="line-51"></a> <span class='layout'>,</span> <span class='varid'>utf8ToUnicodeEmbedErrors</span>-<a name="line-52"></a> <span class='layout'>,</span> <span class='varid'>latin1ToUnicode</span>-<a name="line-53"></a> <span class='layout'>,</span> <span class='varid'>ucs2ToUnicode</span>-<a name="line-54"></a> <span class='layout'>,</span> <span class='varid'>ucs2BigEndianToUnicode</span>-<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>ucs2LittleEndianToUnicode</span>-<a name="line-56"></a> <span class='layout'>,</span> <span class='varid'>utf16beToUnicode</span>-<a name="line-57"></a> <span class='layout'>,</span> <span class='varid'>utf16leToUnicode</span>-<a name="line-58"></a>-<a name="line-59"></a> <span class='layout'>,</span> <span class='varid'>unicodeCharToUtf8</span>-<a name="line-60"></a>-<a name="line-61"></a> <span class='layout'>,</span> <span class='varid'>unicodeToUtf8</span>-<a name="line-62"></a> <span class='layout'>,</span> <span class='varid'>unicodeToXmlEntity</span>-<a name="line-63"></a> <span class='layout'>,</span> <span class='varid'>unicodeToLatin1</span>-<a name="line-64"></a> <span class='layout'>,</span> <span class='varid'>unicodeRemoveNoneAscii</span>-<a name="line-65"></a> <span class='layout'>,</span> <span class='varid'>unicodeRemoveNoneLatin1</span>-<a name="line-66"></a>-<a name="line-67"></a> <span class='layout'>,</span> <span class='varid'>intToCharRef</span>-<a name="line-68"></a> <span class='layout'>,</span> <span class='varid'>intToCharRefHex</span>-<a name="line-69"></a>-<a name="line-70"></a> <span class='layout'>,</span> <span class='varid'>getDecodingFct</span>-<a name="line-71"></a> <span class='layout'>,</span> <span class='varid'>getDecodingFctEmbedErrors</span>-<a name="line-72"></a> <span class='layout'>,</span> <span class='varid'>getOutputEncodingFct</span>-<a name="line-73"></a>-<a name="line-74"></a> <span class='layout'>,</span> <span class='varid'>normalizeNL</span>-<a name="line-75"></a> <span class='layout'>,</span> <span class='varid'>guessEncoding</span>-<a name="line-76"></a> <span class='layout'>)</span>-<a name="line-77"></a><span class='keyword'>where</span>-<a name="line-78"></a>-<a name="line-79"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span><span class='layout'>(</span> <span class='varid'>toUpper</span> <span class='layout'>)</span>-<a name="line-80"></a>-<a name="line-81"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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'>swap</span><span class='layout'>,</span> <span class='varid'>partitionEither</span> <span class='layout'>)</span>-<a name="line-82"></a>-<a name="line-83"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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'>IsoLatinTables</span>-<a name="line-84"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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'>UTF8Decoding</span> <span class='layout'>(</span> <span class='varid'>decodeUtf8</span><span class='layout'>,</span> <span class='varid'>decodeUtf8EmbedErrors</span> <span class='layout'>)</span>-<a name="line-85"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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'>intToHexString</span> <span class='layout'>)</span>-<a name="line-86"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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-87"></a>-<a name="line-88"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-89"></a>-<a name="line-90"></a><span class='comment'>-- | Unicode is represented as the Char type</span>-<a name="line-91"></a><span class='comment'>-- Precondition for this is the support of Unicode character range</span>-<a name="line-92"></a><span class='comment'>-- in the compiler (e.g. ghc but not hugs)</span>-<a name="line-93"></a>-<a name="line-94"></a><a name="Unicode"></a><span class='keyword'>type</span> <span class='conid'>Unicode</span> <span class='keyglyph'>=</span> <span class='conid'>Char</span>-<a name="line-95"></a>-<a name="line-96"></a><span class='comment'>-- | the type for Unicode strings</span>-<a name="line-97"></a>-<a name="line-98"></a><a name="UString"></a><span class='keyword'>type</span> <span class='conid'>UString</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>Unicode</span><span class='keyglyph'>]</span>-<a name="line-99"></a>-<a name="line-100"></a><span class='comment'>-- | UTF-8 charachters are represented by the Char type</span>-<a name="line-101"></a>-<a name="line-102"></a><a name="UTF8Char"></a><span class='keyword'>type</span> <span class='conid'>UTF8Char</span> <span class='keyglyph'>=</span> <span class='conid'>Char</span>-<a name="line-103"></a>-<a name="line-104"></a><span class='comment'>-- | UTF-8 strings are implemented as Haskell strings</span>-<a name="line-105"></a>-<a name="line-106"></a><a name="UTF8String"></a><span class='keyword'>type</span> <span class='conid'>UTF8String</span> <span class='keyglyph'>=</span> <span class='conid'>String</span>-<a name="line-107"></a>-<a name="line-108"></a><span class='comment'>-- | Decoding function with a pair containing the result string and a list of decoding errors as result</span>-<a name="line-109"></a>-<a name="line-110"></a><a name="DecodingFct"></a><span class='keyword'>type</span> <span class='conid'>DecodingFct</span> <span class='keyglyph'>=</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>UString</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-111"></a>-<a name="line-112"></a><a name="UStringWithErrors"></a><span class='keyword'>type</span> <span class='conid'>UStringWithErrors</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>Char</span><span class='keyglyph'>]</span>-<a name="line-113"></a>-<a name="line-114"></a><span class='comment'>-- | Decoding function where decoding errors are interleaved with decoded characters</span>-<a name="line-115"></a>-<a name="line-116"></a><a name="DecodingFctEmbedErrors"></a><span class='keyword'>type</span> <span class='conid'>DecodingFctEmbedErrors</span> <span class='keyglyph'>=</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UStringWithErrors</span>-<a name="line-117"></a>-<a name="line-118"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-119"></a><span class='comment'>--</span>-<a name="line-120"></a><span class='comment'>-- Unicode predicates</span>-<a name="line-121"></a>-<a name="line-122"></a><span class='comment'>-- |</span>-<a name="line-123"></a><span class='comment'>-- test for a legal 1 byte XML char</span>-<a name="line-124"></a>-<a name="line-125"></a><a name="is1ByteXmlChar"></a><span class='definition'>is1ByteXmlChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-126"></a><span class='definition'>is1ByteXmlChar</span> <span class='varid'>c</span>-<a name="line-127"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'><</span> <span class='chr'>'\x80'</span>-<a name="line-128"></a> <span class='varop'>&&</span> <span class='layout'>(</span> <span class='varid'>c</span> <span class='varop'>>=</span> <span class='chr'>' '</span>-<a name="line-129"></a> <span class='varop'>||</span>-<a name="line-130"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\n'</span>-<a name="line-131"></a> <span class='varop'>||</span>-<a name="line-132"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\t'</span>-<a name="line-133"></a> <span class='varop'>||</span>-<a name="line-134"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\r'</span>-<a name="line-135"></a> <span class='layout'>)</span>-<a name="line-136"></a>-<a name="line-137"></a><span class='comment'>-- |</span>-<a name="line-138"></a><span class='comment'>-- test for a legal latin1 XML char</span>-<a name="line-139"></a>-<a name="line-140"></a><a name="isXmlLatin1Char"></a><span class='definition'>isXmlLatin1Char</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-141"></a><span class='definition'>isXmlLatin1Char</span> <span class='varid'>i</span>-<a name="line-142"></a> <span class='keyglyph'>=</span> <span class='varid'>is1ByteXmlChar</span> <span class='varid'>i</span>-<a name="line-143"></a> <span class='varop'>||</span>-<a name="line-144"></a> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>>=</span> <span class='chr'>'\x80'</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='chr'>'\xff'</span><span class='layout'>)</span>-<a name="line-145"></a>-<a name="line-146"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-147"></a>-<a name="line-148"></a><span class='comment'>-- |</span>-<a name="line-149"></a><span class='comment'>-- conversion from Unicode strings (UString) to UTF8 encoded strings.</span>-<a name="line-150"></a>-<a name="line-151"></a><a name="unicodeToUtf8"></a><span class='definition'>unicodeToUtf8</span> <span class='keyglyph'>::</span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>UTF8String</span>-<a name="line-152"></a><span class='definition'>unicodeToUtf8</span> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>unicodeCharToUtf8</span>-<a name="line-153"></a>-<a name="line-154"></a><span class='comment'>-- |</span>-<a name="line-155"></a><span class='comment'>-- conversion from Unicode (Char) to a UTF8 encoded string.</span>-<a name="line-156"></a>-<a name="line-157"></a><a name="unicodeCharToUtf8"></a><span class='definition'>unicodeCharToUtf8</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>UTF8String</span>-<a name="line-158"></a><span class='definition'>unicodeCharToUtf8</span> <span class='varid'>c</span>-<a name="line-159"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x0000007F</span> <span class='comment'>-- 1 byte UTF8 (7 bits)</span>-<a name="line-160"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='varid'>i</span> <span class='keyglyph'>]</span>-<a name="line-161"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0x00000080</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x000007FF</span> <span class='comment'>-- 2 byte UTF8 (5 + 6 bits)</span>-<a name="line-162"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0xC0</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-163"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-164"></a> <span class='keyglyph'>]</span>-<a name="line-165"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0x00000800</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x0000FFFF</span> <span class='comment'>-- 3 byte UTF8 (4 + 6 + 6 bits)</span>-<a name="line-166"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0xE0</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000</span><span class='layout'>)</span>-<a name="line-167"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-168"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-169"></a> <span class='keyglyph'>]</span>-<a name="line-170"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0x00010000</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x001FFFFF</span> <span class='comment'>-- 4 byte UTF8 (3 + 6 + 6 + 6 bits)</span>-<a name="line-171"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0xF0</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40000</span><span class='layout'>)</span>-<a name="line-172"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-173"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-174"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-175"></a> <span class='keyglyph'>]</span>-<a name="line-176"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0x00200000</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x03FFFFFF</span> <span class='comment'>-- 5 byte UTF8 (2 + 6 + 6 + 6 + 6 bits)</span>-<a name="line-177"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0xF8</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000000</span><span class='layout'>)</span>-<a name="line-178"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-179"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-180"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-181"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-182"></a> <span class='keyglyph'>]</span>-<a name="line-183"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0x04000000</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x7FFFFFFF</span> <span class='comment'>-- 6 byte UTF8 (1 + 6 + 6 + 6 + 6 + 6 bits)</span>-<a name="line-184"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0xFC</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40000000</span><span class='layout'>)</span>-<a name="line-185"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-186"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-187"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-188"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-189"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>-<a name="line-190"></a> <span class='keyglyph'>]</span>-<a name="line-191"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='comment'>-- other values not supported</span>-<a name="line-192"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"unicodeCharToUtf8: illegal integer argument "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>i</span><span class='layout'>)</span>-<a name="line-193"></a> <span class='keyword'>where</span>-<a name="line-194"></a> <span class='varid'>i</span> <span class='keyglyph'>=</span> <span class='varid'>fromEnum</span> <span class='varid'>c</span>-<a name="line-195"></a>-<a name="line-196"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-197"></a>-<a name="line-198"></a><span class='comment'>-- |</span>-<a name="line-199"></a><span class='comment'>-- checking for valid XML characters</span>-<a name="line-200"></a>-<a name="line-201"></a><a name="isXmlChar"></a><span class='definition'>isXmlChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-202"></a><span class='definition'>isXmlChar</span> <span class='varid'>c</span>-<a name="line-203"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>-<a name="line-204"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x0009'</span><span class='layout'>,</span> <span class='chr'>'\x000A'</span><span class='layout'>)</span>-<a name="line-205"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x000D'</span><span class='layout'>,</span> <span class='chr'>'\x000D'</span><span class='layout'>)</span>-<a name="line-206"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0020'</span><span class='layout'>,</span> <span class='chr'>'\xD7FF'</span><span class='layout'>)</span>-<a name="line-207"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xE000'</span><span class='layout'>,</span> <span class='chr'>'\xFFFD'</span><span class='layout'>)</span>-<a name="line-208"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x10000'</span><span class='layout'>,</span> <span class='chr'>'\x10FFFF'</span><span class='layout'>)</span>-<a name="line-209"></a> <span class='keyglyph'>]</span>-<a name="line-210"></a>-<a name="line-211"></a><span class='comment'>-- |</span>-<a name="line-212"></a><span class='comment'>-- checking for XML space character: \\\n, \\\r, \\\t and \" \"</span>-<a name="line-213"></a>-<a name="line-214"></a><a name="isXmlSpaceChar"></a><span class='definition'>isXmlSpaceChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-215"></a><span class='definition'>isXmlSpaceChar</span> <span class='varid'>c</span>-<a name="line-216"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'\x20'</span><span class='layout'>,</span> <span class='chr'>'\x09'</span><span class='layout'>,</span> <span class='chr'>'\x0D'</span><span class='layout'>,</span> <span class='chr'>'\x0A'</span><span class='keyglyph'>]</span>-<a name="line-217"></a>-<a name="line-218"></a><span class='comment'>-- |</span>-<a name="line-219"></a><span class='comment'>-- checking for XML1.1 space character: additional space 0x85 and 0x2028</span>-<a name="line-220"></a><span class='comment'>--</span>-<a name="line-221"></a><span class='comment'>-- see also : 'isXmlSpaceChar'</span>-<a name="line-222"></a>-<a name="line-223"></a><a name="isXml11SpaceChar"></a><span class='definition'>isXml11SpaceChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-224"></a><span class='definition'>isXml11SpaceChar</span> <span class='varid'>c</span>-<a name="line-225"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'\x20'</span><span class='layout'>,</span> <span class='chr'>'\x09'</span><span class='layout'>,</span> <span class='chr'>'\x0D'</span><span class='layout'>,</span> <span class='chr'>'\x0A'</span><span class='layout'>,</span> <span class='chr'>'\x85'</span><span class='layout'>,</span> <span class='chr'>'\x2028'</span><span class='keyglyph'>]</span>-<a name="line-226"></a>-<a name="line-227"></a><span class='comment'>-- |</span>-<a name="line-228"></a><span class='comment'>-- checking for XML name character</span>-<a name="line-229"></a>-<a name="line-230"></a><a name="isXmlNameChar"></a><span class='definition'>isXmlNameChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-231"></a><span class='definition'>isXmlNameChar</span> <span class='varid'>c</span>-<a name="line-232"></a> <span class='keyglyph'>=</span> <span class='varid'>isXmlLetter</span> <span class='varid'>c</span>-<a name="line-233"></a> <span class='varop'>||</span>-<a name="line-234"></a> <span class='varid'>isXmlDigit</span> <span class='varid'>c</span>-<a name="line-235"></a> <span class='varop'>||</span>-<a name="line-236"></a> <span class='layout'>(</span><span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x2D'</span> <span class='varop'>||</span> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x2E'</span><span class='layout'>)</span> <span class='comment'>-- '-' | '.'</span>-<a name="line-237"></a> <span class='varop'>||</span>-<a name="line-238"></a> <span class='layout'>(</span><span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x3A'</span> <span class='varop'>||</span> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x5F'</span><span class='layout'>)</span> <span class='comment'>-- Letter | ':' | '_'</span>-<a name="line-239"></a> <span class='varop'>||</span>-<a name="line-240"></a> <span class='varid'>isXmlCombiningChar</span> <span class='varid'>c</span>-<a name="line-241"></a> <span class='varop'>||</span>-<a name="line-242"></a> <span class='varid'>isXmlExtender</span> <span class='varid'>c</span>-<a name="line-243"></a>-<a name="line-244"></a><span class='comment'>-- |</span>-<a name="line-245"></a><span class='comment'>-- checking for XML name start character</span>-<a name="line-246"></a><span class='comment'>--</span>-<a name="line-247"></a><span class='comment'>-- see also : 'isXmlNameChar'</span>-<a name="line-248"></a>-<a name="line-249"></a><a name="isXmlNameStartChar"></a><span class='definition'>isXmlNameStartChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-250"></a><span class='definition'>isXmlNameStartChar</span> <span class='varid'>c</span>-<a name="line-251"></a> <span class='keyglyph'>=</span> <span class='varid'>isXmlLetter</span> <span class='varid'>c</span>-<a name="line-252"></a> <span class='varop'>||</span>-<a name="line-253"></a> <span class='layout'>(</span><span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x3A'</span> <span class='varop'>||</span> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x5F'</span><span class='layout'>)</span> <span class='comment'>-- Letter | ':' | '_'</span>-<a name="line-254"></a>-<a name="line-255"></a><span class='comment'>-- |</span>-<a name="line-256"></a><span class='comment'>-- checking for XML NCName character: no \":\" allowed</span>-<a name="line-257"></a><span class='comment'>--</span>-<a name="line-258"></a><span class='comment'>-- see also : 'isXmlNameChar'</span>-<a name="line-259"></a>-<a name="line-260"></a><a name="isXmlNCNameChar"></a><span class='definition'>isXmlNCNameChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-261"></a><span class='definition'>isXmlNCNameChar</span> <span class='varid'>c</span>-<a name="line-262"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>/=</span> <span class='chr'>'\x3A'</span>-<a name="line-263"></a> <span class='varop'>&&</span>-<a name="line-264"></a> <span class='varid'>isXmlNameChar</span> <span class='varid'>c</span>-<a name="line-265"></a>-<a name="line-266"></a><span class='comment'>-- |</span>-<a name="line-267"></a><span class='comment'>-- checking for XML NCName start character: no \":\" allowed</span>-<a name="line-268"></a><span class='comment'>--</span>-<a name="line-269"></a><span class='comment'>-- see also : 'isXmlNameChar', 'isXmlNCNameChar'</span>-<a name="line-270"></a>-<a name="line-271"></a><a name="isXmlNCNameStartChar"></a><span class='definition'>isXmlNCNameStartChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-272"></a><span class='definition'>isXmlNCNameStartChar</span> <span class='varid'>c</span>-<a name="line-273"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>/=</span> <span class='chr'>'\x3A'</span>-<a name="line-274"></a> <span class='varop'>&&</span>-<a name="line-275"></a> <span class='varid'>isXmlNameStartChar</span> <span class='varid'>c</span>-<a name="line-276"></a>-<a name="line-277"></a><span class='comment'>-- |</span>-<a name="line-278"></a><span class='comment'>-- checking for XML public id character</span>-<a name="line-279"></a>-<a name="line-280"></a><a name="isXmlPubidChar"></a><span class='definition'>isXmlPubidChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-281"></a><span class='definition'>isXmlPubidChar</span> <span class='varid'>c</span>-<a name="line-282"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'A'</span><span class='layout'>,</span> <span class='chr'>'Z'</span><span class='layout'>)</span>-<a name="line-283"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'a'</span><span class='layout'>,</span> <span class='chr'>'z'</span><span class='layout'>)</span>-<a name="line-284"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'0'</span><span class='layout'>,</span> <span class='chr'>'9'</span><span class='layout'>)</span>-<a name="line-285"></a> <span class='keyglyph'>]</span>-<a name="line-286"></a> <span class='varop'>||</span>-<a name="line-287"></a> <span class='layout'>(</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='str'>" \r\n-'()+,./:=?;!*#@$_%"</span> <span class='layout'>)</span>-<a name="line-288"></a>-<a name="line-289"></a><span class='comment'>-- |</span>-<a name="line-290"></a><span class='comment'>-- checking for XML letter</span>-<a name="line-291"></a>-<a name="line-292"></a><a name="isXmlLetter"></a><span class='definition'>isXmlLetter</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-293"></a><span class='definition'>isXmlLetter</span> <span class='varid'>c</span>-<a name="line-294"></a> <span class='keyglyph'>=</span> <span class='varid'>isXmlBaseChar</span> <span class='varid'>c</span>-<a name="line-295"></a> <span class='varop'>||</span>-<a name="line-296"></a> <span class='varid'>isXmlIdeographicChar</span> <span class='varid'>c</span>-<a name="line-297"></a>-<a name="line-298"></a><span class='comment'>-- |</span>-<a name="line-299"></a><span class='comment'>-- checking for XML base charater</span>-<a name="line-300"></a>-<a name="line-301"></a><a name="isXmlBaseChar"></a><span class='definition'>isXmlBaseChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-302"></a><span class='definition'>isXmlBaseChar</span> <span class='varid'>c</span>-<a name="line-303"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>-<a name="line-304"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x0041'</span><span class='layout'>,</span> <span class='chr'>'\x005A'</span><span class='layout'>)</span>-<a name="line-305"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0061'</span><span class='layout'>,</span> <span class='chr'>'\x007A'</span><span class='layout'>)</span>-<a name="line-306"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x00C0'</span><span class='layout'>,</span> <span class='chr'>'\x00D6'</span><span class='layout'>)</span>-<a name="line-307"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x00D8'</span><span class='layout'>,</span> <span class='chr'>'\x00F6'</span><span class='layout'>)</span>-<a name="line-308"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x00F8'</span><span class='layout'>,</span> <span class='chr'>'\x0131'</span><span class='layout'>)</span>-<a name="line-309"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0134'</span><span class='layout'>,</span> <span class='chr'>'\x013E'</span><span class='layout'>)</span>-<a name="line-310"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0141'</span><span class='layout'>,</span> <span class='chr'>'\x0148'</span><span class='layout'>)</span>-<a name="line-311"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x014A'</span><span class='layout'>,</span> <span class='chr'>'\x017E'</span><span class='layout'>)</span>-<a name="line-312"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0180'</span><span class='layout'>,</span> <span class='chr'>'\x01C3'</span><span class='layout'>)</span>-<a name="line-313"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x01CD'</span><span class='layout'>,</span> <span class='chr'>'\x01F0'</span><span class='layout'>)</span>-<a name="line-314"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x01F4'</span><span class='layout'>,</span> <span class='chr'>'\x01F5'</span><span class='layout'>)</span>-<a name="line-315"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x01FA'</span><span class='layout'>,</span> <span class='chr'>'\x0217'</span><span class='layout'>)</span>-<a name="line-316"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0250'</span><span class='layout'>,</span> <span class='chr'>'\x02A8'</span><span class='layout'>)</span>-<a name="line-317"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x02BB'</span><span class='layout'>,</span> <span class='chr'>'\x02C1'</span><span class='layout'>)</span>-<a name="line-318"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0386'</span><span class='layout'>,</span> <span class='chr'>'\x0386'</span><span class='layout'>)</span>-<a name="line-319"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0388'</span><span class='layout'>,</span> <span class='chr'>'\x038A'</span><span class='layout'>)</span>-<a name="line-320"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x038C'</span><span class='layout'>,</span> <span class='chr'>'\x038C'</span><span class='layout'>)</span>-<a name="line-321"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x038E'</span><span class='layout'>,</span> <span class='chr'>'\x03A1'</span><span class='layout'>)</span>-<a name="line-322"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03A3'</span><span class='layout'>,</span> <span class='chr'>'\x03CE'</span><span class='layout'>)</span>-<a name="line-323"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03D0'</span><span class='layout'>,</span> <span class='chr'>'\x03D6'</span><span class='layout'>)</span>-<a name="line-324"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03DA'</span><span class='layout'>,</span> <span class='chr'>'\x03DA'</span><span class='layout'>)</span>-<a name="line-325"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03DC'</span><span class='layout'>,</span> <span class='chr'>'\x03DC'</span><span class='layout'>)</span>-<a name="line-326"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03DE'</span><span class='layout'>,</span> <span class='chr'>'\x03DE'</span><span class='layout'>)</span>-<a name="line-327"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03E0'</span><span class='layout'>,</span> <span class='chr'>'\x03E0'</span><span class='layout'>)</span>-<a name="line-328"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03E2'</span><span class='layout'>,</span> <span class='chr'>'\x03F3'</span><span class='layout'>)</span>-<a name="line-329"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0401'</span><span class='layout'>,</span> <span class='chr'>'\x040C'</span><span class='layout'>)</span>-<a name="line-330"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x040E'</span><span class='layout'>,</span> <span class='chr'>'\x044F'</span><span class='layout'>)</span>-<a name="line-331"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0451'</span><span class='layout'>,</span> <span class='chr'>'\x045C'</span><span class='layout'>)</span>-<a name="line-332"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x045E'</span><span class='layout'>,</span> <span class='chr'>'\x0481'</span><span class='layout'>)</span>-<a name="line-333"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0490'</span><span class='layout'>,</span> <span class='chr'>'\x04C4'</span><span class='layout'>)</span>-<a name="line-334"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x04C7'</span><span class='layout'>,</span> <span class='chr'>'\x04C8'</span><span class='layout'>)</span>-<a name="line-335"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x04CB'</span><span class='layout'>,</span> <span class='chr'>'\x04CC'</span><span class='layout'>)</span>-<a name="line-336"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x04D0'</span><span class='layout'>,</span> <span class='chr'>'\x04EB'</span><span class='layout'>)</span>-<a name="line-337"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x04EE'</span><span class='layout'>,</span> <span class='chr'>'\x04F5'</span><span class='layout'>)</span>-<a name="line-338"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x04F8'</span><span class='layout'>,</span> <span class='chr'>'\x04F9'</span><span class='layout'>)</span>-<a name="line-339"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0531'</span><span class='layout'>,</span> <span class='chr'>'\x0556'</span><span class='layout'>)</span>-<a name="line-340"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0559'</span><span class='layout'>,</span> <span class='chr'>'\x0559'</span><span class='layout'>)</span>-<a name="line-341"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0561'</span><span class='layout'>,</span> <span class='chr'>'\x0586'</span><span class='layout'>)</span>-<a name="line-342"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05D0'</span><span class='layout'>,</span> <span class='chr'>'\x05EA'</span><span class='layout'>)</span>-<a name="line-343"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05F0'</span><span class='layout'>,</span> <span class='chr'>'\x05F2'</span><span class='layout'>)</span>-<a name="line-344"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0621'</span><span class='layout'>,</span> <span class='chr'>'\x063A'</span><span class='layout'>)</span>-<a name="line-345"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0641'</span><span class='layout'>,</span> <span class='chr'>'\x064A'</span><span class='layout'>)</span>-<a name="line-346"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0671'</span><span class='layout'>,</span> <span class='chr'>'\x06B7'</span><span class='layout'>)</span>-<a name="line-347"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06BA'</span><span class='layout'>,</span> <span class='chr'>'\x06BE'</span><span class='layout'>)</span>-<a name="line-348"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06C0'</span><span class='layout'>,</span> <span class='chr'>'\x06CE'</span><span class='layout'>)</span>-<a name="line-349"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06D0'</span><span class='layout'>,</span> <span class='chr'>'\x06D3'</span><span class='layout'>)</span>-<a name="line-350"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06D5'</span><span class='layout'>,</span> <span class='chr'>'\x06D5'</span><span class='layout'>)</span>-<a name="line-351"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06E5'</span><span class='layout'>,</span> <span class='chr'>'\x06E6'</span><span class='layout'>)</span>-<a name="line-352"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0905'</span><span class='layout'>,</span> <span class='chr'>'\x0939'</span><span class='layout'>)</span>-<a name="line-353"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x093D'</span><span class='layout'>,</span> <span class='chr'>'\x093D'</span><span class='layout'>)</span>-<a name="line-354"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0958'</span><span class='layout'>,</span> <span class='chr'>'\x0961'</span><span class='layout'>)</span>-<a name="line-355"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0985'</span><span class='layout'>,</span> <span class='chr'>'\x098C'</span><span class='layout'>)</span>-<a name="line-356"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x098F'</span><span class='layout'>,</span> <span class='chr'>'\x0990'</span><span class='layout'>)</span>-<a name="line-357"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0993'</span><span class='layout'>,</span> <span class='chr'>'\x09A8'</span><span class='layout'>)</span>-<a name="line-358"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09AA'</span><span class='layout'>,</span> <span class='chr'>'\x09B0'</span><span class='layout'>)</span>-<a name="line-359"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09B2'</span><span class='layout'>,</span> <span class='chr'>'\x09B2'</span><span class='layout'>)</span>-<a name="line-360"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09B6'</span><span class='layout'>,</span> <span class='chr'>'\x09B9'</span><span class='layout'>)</span>-<a name="line-361"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09DC'</span><span class='layout'>,</span> <span class='chr'>'\x09DD'</span><span class='layout'>)</span>-<a name="line-362"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09DF'</span><span class='layout'>,</span> <span class='chr'>'\x09E1'</span><span class='layout'>)</span>-<a name="line-363"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09F0'</span><span class='layout'>,</span> <span class='chr'>'\x09F1'</span><span class='layout'>)</span>-<a name="line-364"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A05'</span><span class='layout'>,</span> <span class='chr'>'\x0A0A'</span><span class='layout'>)</span>-<a name="line-365"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A0F'</span><span class='layout'>,</span> <span class='chr'>'\x0A10'</span><span class='layout'>)</span>-<a name="line-366"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A13'</span><span class='layout'>,</span> <span class='chr'>'\x0A28'</span><span class='layout'>)</span>-<a name="line-367"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A2A'</span><span class='layout'>,</span> <span class='chr'>'\x0A30'</span><span class='layout'>)</span>-<a name="line-368"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A32'</span><span class='layout'>,</span> <span class='chr'>'\x0A33'</span><span class='layout'>)</span>-<a name="line-369"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A35'</span><span class='layout'>,</span> <span class='chr'>'\x0A36'</span><span class='layout'>)</span>-<a name="line-370"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A38'</span><span class='layout'>,</span> <span class='chr'>'\x0A39'</span><span class='layout'>)</span>-<a name="line-371"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A59'</span><span class='layout'>,</span> <span class='chr'>'\x0A5C'</span><span class='layout'>)</span>-<a name="line-372"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A5E'</span><span class='layout'>,</span> <span class='chr'>'\x0A5E'</span><span class='layout'>)</span>-<a name="line-373"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A72'</span><span class='layout'>,</span> <span class='chr'>'\x0A74'</span><span class='layout'>)</span>-<a name="line-374"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A85'</span><span class='layout'>,</span> <span class='chr'>'\x0A8B'</span><span class='layout'>)</span>-<a name="line-375"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A8D'</span><span class='layout'>,</span> <span class='chr'>'\x0A8D'</span><span class='layout'>)</span>-<a name="line-376"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A8F'</span><span class='layout'>,</span> <span class='chr'>'\x0A91'</span><span class='layout'>)</span>-<a name="line-377"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A93'</span><span class='layout'>,</span> <span class='chr'>'\x0AA8'</span><span class='layout'>)</span>-<a name="line-378"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AAA'</span><span class='layout'>,</span> <span class='chr'>'\x0AB0'</span><span class='layout'>)</span>-<a name="line-379"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AB2'</span><span class='layout'>,</span> <span class='chr'>'\x0AB3'</span><span class='layout'>)</span>-<a name="line-380"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AB5'</span><span class='layout'>,</span> <span class='chr'>'\x0AB9'</span><span class='layout'>)</span>-<a name="line-381"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0ABD'</span><span class='layout'>,</span> <span class='chr'>'\x0ABD'</span><span class='layout'>)</span>-<a name="line-382"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AE0'</span><span class='layout'>,</span> <span class='chr'>'\x0AE0'</span><span class='layout'>)</span>-<a name="line-383"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B05'</span><span class='layout'>,</span> <span class='chr'>'\x0B0C'</span><span class='layout'>)</span>-<a name="line-384"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B0F'</span><span class='layout'>,</span> <span class='chr'>'\x0B10'</span><span class='layout'>)</span>-<a name="line-385"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B13'</span><span class='layout'>,</span> <span class='chr'>'\x0B28'</span><span class='layout'>)</span>-<a name="line-386"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B2A'</span><span class='layout'>,</span> <span class='chr'>'\x0B30'</span><span class='layout'>)</span>-<a name="line-387"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B32'</span><span class='layout'>,</span> <span class='chr'>'\x0B33'</span><span class='layout'>)</span>-<a name="line-388"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B36'</span><span class='layout'>,</span> <span class='chr'>'\x0B39'</span><span class='layout'>)</span>-<a name="line-389"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B3D'</span><span class='layout'>,</span> <span class='chr'>'\x0B3D'</span><span class='layout'>)</span>-<a name="line-390"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B5C'</span><span class='layout'>,</span> <span class='chr'>'\x0B5D'</span><span class='layout'>)</span>-<a name="line-391"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B5F'</span><span class='layout'>,</span> <span class='chr'>'\x0B61'</span><span class='layout'>)</span>-<a name="line-392"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B85'</span><span class='layout'>,</span> <span class='chr'>'\x0B8A'</span><span class='layout'>)</span>-<a name="line-393"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B8E'</span><span class='layout'>,</span> <span class='chr'>'\x0B90'</span><span class='layout'>)</span>-<a name="line-394"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B92'</span><span class='layout'>,</span> <span class='chr'>'\x0B95'</span><span class='layout'>)</span>-<a name="line-395"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B99'</span><span class='layout'>,</span> <span class='chr'>'\x0B9A'</span><span class='layout'>)</span>-<a name="line-396"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B9C'</span><span class='layout'>,</span> <span class='chr'>'\x0B9C'</span><span class='layout'>)</span>-<a name="line-397"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B9E'</span><span class='layout'>,</span> <span class='chr'>'\x0B9F'</span><span class='layout'>)</span>-<a name="line-398"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BA3'</span><span class='layout'>,</span> <span class='chr'>'\x0BA4'</span><span class='layout'>)</span>-<a name="line-399"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BA8'</span><span class='layout'>,</span> <span class='chr'>'\x0BAA'</span><span class='layout'>)</span>-<a name="line-400"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BAE'</span><span class='layout'>,</span> <span class='chr'>'\x0BB5'</span><span class='layout'>)</span>-<a name="line-401"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BB7'</span><span class='layout'>,</span> <span class='chr'>'\x0BB9'</span><span class='layout'>)</span>-<a name="line-402"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C05'</span><span class='layout'>,</span> <span class='chr'>'\x0C0C'</span><span class='layout'>)</span>-<a name="line-403"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C0E'</span><span class='layout'>,</span> <span class='chr'>'\x0C10'</span><span class='layout'>)</span>-<a name="line-404"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C12'</span><span class='layout'>,</span> <span class='chr'>'\x0C28'</span><span class='layout'>)</span>-<a name="line-405"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C2A'</span><span class='layout'>,</span> <span class='chr'>'\x0C33'</span><span class='layout'>)</span>-<a name="line-406"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C35'</span><span class='layout'>,</span> <span class='chr'>'\x0C39'</span><span class='layout'>)</span>-<a name="line-407"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C60'</span><span class='layout'>,</span> <span class='chr'>'\x0C61'</span><span class='layout'>)</span>-<a name="line-408"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C85'</span><span class='layout'>,</span> <span class='chr'>'\x0C8C'</span><span class='layout'>)</span>-<a name="line-409"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C8E'</span><span class='layout'>,</span> <span class='chr'>'\x0C90'</span><span class='layout'>)</span>-<a name="line-410"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C92'</span><span class='layout'>,</span> <span class='chr'>'\x0CA8'</span><span class='layout'>)</span>-<a name="line-411"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CAA'</span><span class='layout'>,</span> <span class='chr'>'\x0CB3'</span><span class='layout'>)</span>-<a name="line-412"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CB5'</span><span class='layout'>,</span> <span class='chr'>'\x0CB9'</span><span class='layout'>)</span>-<a name="line-413"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CDE'</span><span class='layout'>,</span> <span class='chr'>'\x0CDE'</span><span class='layout'>)</span>-<a name="line-414"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CE0'</span><span class='layout'>,</span> <span class='chr'>'\x0CE1'</span><span class='layout'>)</span>-<a name="line-415"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D05'</span><span class='layout'>,</span> <span class='chr'>'\x0D0C'</span><span class='layout'>)</span>-<a name="line-416"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D0E'</span><span class='layout'>,</span> <span class='chr'>'\x0D10'</span><span class='layout'>)</span>-<a name="line-417"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D12'</span><span class='layout'>,</span> <span class='chr'>'\x0D28'</span><span class='layout'>)</span>-<a name="line-418"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D2A'</span><span class='layout'>,</span> <span class='chr'>'\x0D39'</span><span class='layout'>)</span>-<a name="line-419"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D60'</span><span class='layout'>,</span> <span class='chr'>'\x0D61'</span><span class='layout'>)</span>-<a name="line-420"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E01'</span><span class='layout'>,</span> <span class='chr'>'\x0E2E'</span><span class='layout'>)</span>-<a name="line-421"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E30'</span><span class='layout'>,</span> <span class='chr'>'\x0E30'</span><span class='layout'>)</span>-<a name="line-422"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E32'</span><span class='layout'>,</span> <span class='chr'>'\x0E33'</span><span class='layout'>)</span>-<a name="line-423"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E40'</span><span class='layout'>,</span> <span class='chr'>'\x0E45'</span><span class='layout'>)</span>-<a name="line-424"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E81'</span><span class='layout'>,</span> <span class='chr'>'\x0E82'</span><span class='layout'>)</span>-<a name="line-425"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E84'</span><span class='layout'>,</span> <span class='chr'>'\x0E84'</span><span class='layout'>)</span>-<a name="line-426"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E87'</span><span class='layout'>,</span> <span class='chr'>'\x0E88'</span><span class='layout'>)</span>-<a name="line-427"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E8A'</span><span class='layout'>,</span> <span class='chr'>'\x0E8A'</span><span class='layout'>)</span>-<a name="line-428"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E8D'</span><span class='layout'>,</span> <span class='chr'>'\x0E8D'</span><span class='layout'>)</span>-<a name="line-429"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E94'</span><span class='layout'>,</span> <span class='chr'>'\x0E97'</span><span class='layout'>)</span>-<a name="line-430"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E99'</span><span class='layout'>,</span> <span class='chr'>'\x0E9F'</span><span class='layout'>)</span>-<a name="line-431"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EA1'</span><span class='layout'>,</span> <span class='chr'>'\x0EA3'</span><span class='layout'>)</span>-<a name="line-432"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EA5'</span><span class='layout'>,</span> <span class='chr'>'\x0EA5'</span><span class='layout'>)</span>-<a name="line-433"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EA7'</span><span class='layout'>,</span> <span class='chr'>'\x0EA7'</span><span class='layout'>)</span>-<a name="line-434"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EAA'</span><span class='layout'>,</span> <span class='chr'>'\x0EAB'</span><span class='layout'>)</span>-<a name="line-435"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EAD'</span><span class='layout'>,</span> <span class='chr'>'\x0EAE'</span><span class='layout'>)</span>-<a name="line-436"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EB0'</span><span class='layout'>,</span> <span class='chr'>'\x0EB0'</span><span class='layout'>)</span>-<a name="line-437"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EB2'</span><span class='layout'>,</span> <span class='chr'>'\x0EB3'</span><span class='layout'>)</span>-<a name="line-438"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EBD'</span><span class='layout'>,</span> <span class='chr'>'\x0EBD'</span><span class='layout'>)</span>-<a name="line-439"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EC0'</span><span class='layout'>,</span> <span class='chr'>'\x0EC4'</span><span class='layout'>)</span>-<a name="line-440"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F40'</span><span class='layout'>,</span> <span class='chr'>'\x0F47'</span><span class='layout'>)</span>-<a name="line-441"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F49'</span><span class='layout'>,</span> <span class='chr'>'\x0F69'</span><span class='layout'>)</span>-<a name="line-442"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x10A0'</span><span class='layout'>,</span> <span class='chr'>'\x10C5'</span><span class='layout'>)</span>-<a name="line-443"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x10D0'</span><span class='layout'>,</span> <span class='chr'>'\x10F6'</span><span class='layout'>)</span>-<a name="line-444"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1100'</span><span class='layout'>,</span> <span class='chr'>'\x1100'</span><span class='layout'>)</span>-<a name="line-445"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1102'</span><span class='layout'>,</span> <span class='chr'>'\x1103'</span><span class='layout'>)</span>-<a name="line-446"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1105'</span><span class='layout'>,</span> <span class='chr'>'\x1107'</span><span class='layout'>)</span>-<a name="line-447"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1109'</span><span class='layout'>,</span> <span class='chr'>'\x1109'</span><span class='layout'>)</span>-<a name="line-448"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x110B'</span><span class='layout'>,</span> <span class='chr'>'\x110C'</span><span class='layout'>)</span>-<a name="line-449"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x110E'</span><span class='layout'>,</span> <span class='chr'>'\x1112'</span><span class='layout'>)</span>-<a name="line-450"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x113C'</span><span class='layout'>,</span> <span class='chr'>'\x113C'</span><span class='layout'>)</span>-<a name="line-451"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x113E'</span><span class='layout'>,</span> <span class='chr'>'\x113E'</span><span class='layout'>)</span>-<a name="line-452"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1140'</span><span class='layout'>,</span> <span class='chr'>'\x1140'</span><span class='layout'>)</span>-<a name="line-453"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x114C'</span><span class='layout'>,</span> <span class='chr'>'\x114C'</span><span class='layout'>)</span>-<a name="line-454"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x114E'</span><span class='layout'>,</span> <span class='chr'>'\x114E'</span><span class='layout'>)</span>-<a name="line-455"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1150'</span><span class='layout'>,</span> <span class='chr'>'\x1150'</span><span class='layout'>)</span>-<a name="line-456"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1154'</span><span class='layout'>,</span> <span class='chr'>'\x1155'</span><span class='layout'>)</span>-<a name="line-457"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1159'</span><span class='layout'>,</span> <span class='chr'>'\x1159'</span><span class='layout'>)</span>-<a name="line-458"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x115F'</span><span class='layout'>,</span> <span class='chr'>'\x1161'</span><span class='layout'>)</span>-<a name="line-459"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1163'</span><span class='layout'>,</span> <span class='chr'>'\x1163'</span><span class='layout'>)</span>-<a name="line-460"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1165'</span><span class='layout'>,</span> <span class='chr'>'\x1165'</span><span class='layout'>)</span>-<a name="line-461"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1167'</span><span class='layout'>,</span> <span class='chr'>'\x1167'</span><span class='layout'>)</span>-<a name="line-462"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1169'</span><span class='layout'>,</span> <span class='chr'>'\x1169'</span><span class='layout'>)</span>-<a name="line-463"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x116D'</span><span class='layout'>,</span> <span class='chr'>'\x116E'</span><span class='layout'>)</span>-<a name="line-464"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1172'</span><span class='layout'>,</span> <span class='chr'>'\x1173'</span><span class='layout'>)</span>-<a name="line-465"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1175'</span><span class='layout'>,</span> <span class='chr'>'\x1175'</span><span class='layout'>)</span>-<a name="line-466"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x119E'</span><span class='layout'>,</span> <span class='chr'>'\x119E'</span><span class='layout'>)</span>-<a name="line-467"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11A8'</span><span class='layout'>,</span> <span class='chr'>'\x11A8'</span><span class='layout'>)</span>-<a name="line-468"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11AB'</span><span class='layout'>,</span> <span class='chr'>'\x11AB'</span><span class='layout'>)</span>-<a name="line-469"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11AE'</span><span class='layout'>,</span> <span class='chr'>'\x11AF'</span><span class='layout'>)</span>-<a name="line-470"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11B7'</span><span class='layout'>,</span> <span class='chr'>'\x11B8'</span><span class='layout'>)</span>-<a name="line-471"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11BA'</span><span class='layout'>,</span> <span class='chr'>'\x11BA'</span><span class='layout'>)</span>-<a name="line-472"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11BC'</span><span class='layout'>,</span> <span class='chr'>'\x11C2'</span><span class='layout'>)</span>-<a name="line-473"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11EB'</span><span class='layout'>,</span> <span class='chr'>'\x11EB'</span><span class='layout'>)</span>-<a name="line-474"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11F0'</span><span class='layout'>,</span> <span class='chr'>'\x11F0'</span><span class='layout'>)</span>-<a name="line-475"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11F9'</span><span class='layout'>,</span> <span class='chr'>'\x11F9'</span><span class='layout'>)</span>-<a name="line-476"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1E00'</span><span class='layout'>,</span> <span class='chr'>'\x1E9B'</span><span class='layout'>)</span>-<a name="line-477"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1EA0'</span><span class='layout'>,</span> <span class='chr'>'\x1EF9'</span><span class='layout'>)</span>-<a name="line-478"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F00'</span><span class='layout'>,</span> <span class='chr'>'\x1F15'</span><span class='layout'>)</span>-<a name="line-479"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F18'</span><span class='layout'>,</span> <span class='chr'>'\x1F1D'</span><span class='layout'>)</span>-<a name="line-480"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F20'</span><span class='layout'>,</span> <span class='chr'>'\x1F45'</span><span class='layout'>)</span>-<a name="line-481"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F48'</span><span class='layout'>,</span> <span class='chr'>'\x1F4D'</span><span class='layout'>)</span>-<a name="line-482"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F50'</span><span class='layout'>,</span> <span class='chr'>'\x1F57'</span><span class='layout'>)</span>-<a name="line-483"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F59'</span><span class='layout'>,</span> <span class='chr'>'\x1F59'</span><span class='layout'>)</span>-<a name="line-484"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F5B'</span><span class='layout'>,</span> <span class='chr'>'\x1F5B'</span><span class='layout'>)</span>-<a name="line-485"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F5D'</span><span class='layout'>,</span> <span class='chr'>'\x1F5D'</span><span class='layout'>)</span>-<a name="line-486"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F5F'</span><span class='layout'>,</span> <span class='chr'>'\x1F7D'</span><span class='layout'>)</span>-<a name="line-487"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F80'</span><span class='layout'>,</span> <span class='chr'>'\x1FB4'</span><span class='layout'>)</span>-<a name="line-488"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FB6'</span><span class='layout'>,</span> <span class='chr'>'\x1FBC'</span><span class='layout'>)</span>-<a name="line-489"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FBE'</span><span class='layout'>,</span> <span class='chr'>'\x1FBE'</span><span class='layout'>)</span>-<a name="line-490"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FC2'</span><span class='layout'>,</span> <span class='chr'>'\x1FC4'</span><span class='layout'>)</span>-<a name="line-491"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FC6'</span><span class='layout'>,</span> <span class='chr'>'\x1FCC'</span><span class='layout'>)</span>-<a name="line-492"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FD0'</span><span class='layout'>,</span> <span class='chr'>'\x1FD3'</span><span class='layout'>)</span>-<a name="line-493"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FD6'</span><span class='layout'>,</span> <span class='chr'>'\x1FDB'</span><span class='layout'>)</span>-<a name="line-494"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FE0'</span><span class='layout'>,</span> <span class='chr'>'\x1FEC'</span><span class='layout'>)</span>-<a name="line-495"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FF2'</span><span class='layout'>,</span> <span class='chr'>'\x1FF4'</span><span class='layout'>)</span>-<a name="line-496"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FF6'</span><span class='layout'>,</span> <span class='chr'>'\x1FFC'</span><span class='layout'>)</span>-<a name="line-497"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x2126'</span><span class='layout'>,</span> <span class='chr'>'\x2126'</span><span class='layout'>)</span>-<a name="line-498"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x212A'</span><span class='layout'>,</span> <span class='chr'>'\x212B'</span><span class='layout'>)</span>-<a name="line-499"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x212E'</span><span class='layout'>,</span> <span class='chr'>'\x212E'</span><span class='layout'>)</span>-<a name="line-500"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x2180'</span><span class='layout'>,</span> <span class='chr'>'\x2182'</span><span class='layout'>)</span>-<a name="line-501"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3041'</span><span class='layout'>,</span> <span class='chr'>'\x3094'</span><span class='layout'>)</span>-<a name="line-502"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x30A1'</span><span class='layout'>,</span> <span class='chr'>'\x30FA'</span><span class='layout'>)</span>-<a name="line-503"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3105'</span><span class='layout'>,</span> <span class='chr'>'\x312C'</span><span class='layout'>)</span>-<a name="line-504"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xAC00'</span><span class='layout'>,</span> <span class='chr'>'\xD7A3'</span><span class='layout'>)</span>-<a name="line-505"></a> <span class='keyglyph'>]</span>-<a name="line-506"></a>-<a name="line-507"></a><span class='comment'>-- |</span>-<a name="line-508"></a><span class='comment'>-- checking for XML ideographic charater</span>-<a name="line-509"></a>-<a name="line-510"></a><a name="isXmlIdeographicChar"></a><span class='definition'>isXmlIdeographicChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-511"></a><span class='definition'>isXmlIdeographicChar</span> <span class='varid'>c</span>-<a name="line-512"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>-<a name="line-513"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x3007'</span><span class='layout'>,</span> <span class='chr'>'\x3007'</span><span class='layout'>)</span>-<a name="line-514"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3021'</span><span class='layout'>,</span> <span class='chr'>'\x3029'</span><span class='layout'>)</span>-<a name="line-515"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x4E00'</span><span class='layout'>,</span> <span class='chr'>'\x9FA5'</span><span class='layout'>)</span>-<a name="line-516"></a> <span class='keyglyph'>]</span>-<a name="line-517"></a>-<a name="line-518"></a><span class='comment'>-- |</span>-<a name="line-519"></a><span class='comment'>-- checking for XML combining charater</span>-<a name="line-520"></a>-<a name="line-521"></a><a name="isXmlCombiningChar"></a><span class='definition'>isXmlCombiningChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-522"></a><span class='definition'>isXmlCombiningChar</span> <span class='varid'>c</span>-<a name="line-523"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>-<a name="line-524"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x0300'</span><span class='layout'>,</span> <span class='chr'>'\x0345'</span><span class='layout'>)</span>-<a name="line-525"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0360'</span><span class='layout'>,</span> <span class='chr'>'\x0361'</span><span class='layout'>)</span>-<a name="line-526"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0483'</span><span class='layout'>,</span> <span class='chr'>'\x0486'</span><span class='layout'>)</span>-<a name="line-527"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0591'</span><span class='layout'>,</span> <span class='chr'>'\x05A1'</span><span class='layout'>)</span>-<a name="line-528"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05A3'</span><span class='layout'>,</span> <span class='chr'>'\x05B9'</span><span class='layout'>)</span>-<a name="line-529"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05BB'</span><span class='layout'>,</span> <span class='chr'>'\x05BD'</span><span class='layout'>)</span>-<a name="line-530"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05BF'</span><span class='layout'>,</span> <span class='chr'>'\x05BF'</span><span class='layout'>)</span>-<a name="line-531"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05C1'</span><span class='layout'>,</span> <span class='chr'>'\x05C2'</span><span class='layout'>)</span>-<a name="line-532"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05C4'</span><span class='layout'>,</span> <span class='chr'>'\x05C4'</span><span class='layout'>)</span>-<a name="line-533"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x064B'</span><span class='layout'>,</span> <span class='chr'>'\x0652'</span><span class='layout'>)</span>-<a name="line-534"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0670'</span><span class='layout'>,</span> <span class='chr'>'\x0670'</span><span class='layout'>)</span>-<a name="line-535"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06D6'</span><span class='layout'>,</span> <span class='chr'>'\x06DC'</span><span class='layout'>)</span>-<a name="line-536"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06DD'</span><span class='layout'>,</span> <span class='chr'>'\x06DF'</span><span class='layout'>)</span>-<a name="line-537"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06E0'</span><span class='layout'>,</span> <span class='chr'>'\x06E4'</span><span class='layout'>)</span>-<a name="line-538"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06E7'</span><span class='layout'>,</span> <span class='chr'>'\x06E8'</span><span class='layout'>)</span>-<a name="line-539"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06EA'</span><span class='layout'>,</span> <span class='chr'>'\x06ED'</span><span class='layout'>)</span>-<a name="line-540"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0901'</span><span class='layout'>,</span> <span class='chr'>'\x0903'</span><span class='layout'>)</span>-<a name="line-541"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x093C'</span><span class='layout'>,</span> <span class='chr'>'\x093C'</span><span class='layout'>)</span>-<a name="line-542"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x093E'</span><span class='layout'>,</span> <span class='chr'>'\x094C'</span><span class='layout'>)</span>-<a name="line-543"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x094D'</span><span class='layout'>,</span> <span class='chr'>'\x094D'</span><span class='layout'>)</span>-<a name="line-544"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0951'</span><span class='layout'>,</span> <span class='chr'>'\x0954'</span><span class='layout'>)</span>-<a name="line-545"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0962'</span><span class='layout'>,</span> <span class='chr'>'\x0963'</span><span class='layout'>)</span>-<a name="line-546"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0981'</span><span class='layout'>,</span> <span class='chr'>'\x0983'</span><span class='layout'>)</span>-<a name="line-547"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09BC'</span><span class='layout'>,</span> <span class='chr'>'\x09BC'</span><span class='layout'>)</span>-<a name="line-548"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09BE'</span><span class='layout'>,</span> <span class='chr'>'\x09BE'</span><span class='layout'>)</span>-<a name="line-549"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09BF'</span><span class='layout'>,</span> <span class='chr'>'\x09BF'</span><span class='layout'>)</span>-<a name="line-550"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09C0'</span><span class='layout'>,</span> <span class='chr'>'\x09C4'</span><span class='layout'>)</span>-<a name="line-551"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09C7'</span><span class='layout'>,</span> <span class='chr'>'\x09C8'</span><span class='layout'>)</span>-<a name="line-552"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09CB'</span><span class='layout'>,</span> <span class='chr'>'\x09CD'</span><span class='layout'>)</span>-<a name="line-553"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09D7'</span><span class='layout'>,</span> <span class='chr'>'\x09D7'</span><span class='layout'>)</span>-<a name="line-554"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09E2'</span><span class='layout'>,</span> <span class='chr'>'\x09E3'</span><span class='layout'>)</span>-<a name="line-555"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A02'</span><span class='layout'>,</span> <span class='chr'>'\x0A02'</span><span class='layout'>)</span>-<a name="line-556"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A3C'</span><span class='layout'>,</span> <span class='chr'>'\x0A3C'</span><span class='layout'>)</span>-<a name="line-557"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A3E'</span><span class='layout'>,</span> <span class='chr'>'\x0A3E'</span><span class='layout'>)</span>-<a name="line-558"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A3F'</span><span class='layout'>,</span> <span class='chr'>'\x0A3F'</span><span class='layout'>)</span>-<a name="line-559"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A40'</span><span class='layout'>,</span> <span class='chr'>'\x0A42'</span><span class='layout'>)</span>-<a name="line-560"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A47'</span><span class='layout'>,</span> <span class='chr'>'\x0A48'</span><span class='layout'>)</span>-<a name="line-561"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A4B'</span><span class='layout'>,</span> <span class='chr'>'\x0A4D'</span><span class='layout'>)</span>-<a name="line-562"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A70'</span><span class='layout'>,</span> <span class='chr'>'\x0A71'</span><span class='layout'>)</span>-<a name="line-563"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A81'</span><span class='layout'>,</span> <span class='chr'>'\x0A83'</span><span class='layout'>)</span>-<a name="line-564"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0ABC'</span><span class='layout'>,</span> <span class='chr'>'\x0ABC'</span><span class='layout'>)</span>-<a name="line-565"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0ABE'</span><span class='layout'>,</span> <span class='chr'>'\x0AC5'</span><span class='layout'>)</span>-<a name="line-566"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AC7'</span><span class='layout'>,</span> <span class='chr'>'\x0AC9'</span><span class='layout'>)</span>-<a name="line-567"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0ACB'</span><span class='layout'>,</span> <span class='chr'>'\x0ACD'</span><span class='layout'>)</span>-<a name="line-568"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B01'</span><span class='layout'>,</span> <span class='chr'>'\x0B03'</span><span class='layout'>)</span>-<a name="line-569"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B3C'</span><span class='layout'>,</span> <span class='chr'>'\x0B3C'</span><span class='layout'>)</span>-<a name="line-570"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B3E'</span><span class='layout'>,</span> <span class='chr'>'\x0B43'</span><span class='layout'>)</span>-<a name="line-571"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B47'</span><span class='layout'>,</span> <span class='chr'>'\x0B48'</span><span class='layout'>)</span>-<a name="line-572"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B4B'</span><span class='layout'>,</span> <span class='chr'>'\x0B4D'</span><span class='layout'>)</span>-<a name="line-573"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B56'</span><span class='layout'>,</span> <span class='chr'>'\x0B57'</span><span class='layout'>)</span>-<a name="line-574"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B82'</span><span class='layout'>,</span> <span class='chr'>'\x0B83'</span><span class='layout'>)</span>-<a name="line-575"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BBE'</span><span class='layout'>,</span> <span class='chr'>'\x0BC2'</span><span class='layout'>)</span>-<a name="line-576"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BC6'</span><span class='layout'>,</span> <span class='chr'>'\x0BC8'</span><span class='layout'>)</span>-<a name="line-577"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BCA'</span><span class='layout'>,</span> <span class='chr'>'\x0BCD'</span><span class='layout'>)</span>-<a name="line-578"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BD7'</span><span class='layout'>,</span> <span class='chr'>'\x0BD7'</span><span class='layout'>)</span>-<a name="line-579"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C01'</span><span class='layout'>,</span> <span class='chr'>'\x0C03'</span><span class='layout'>)</span>-<a name="line-580"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C3E'</span><span class='layout'>,</span> <span class='chr'>'\x0C44'</span><span class='layout'>)</span>-<a name="line-581"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C46'</span><span class='layout'>,</span> <span class='chr'>'\x0C48'</span><span class='layout'>)</span>-<a name="line-582"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C4A'</span><span class='layout'>,</span> <span class='chr'>'\x0C4D'</span><span class='layout'>)</span>-<a name="line-583"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C55'</span><span class='layout'>,</span> <span class='chr'>'\x0C56'</span><span class='layout'>)</span>-<a name="line-584"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C82'</span><span class='layout'>,</span> <span class='chr'>'\x0C83'</span><span class='layout'>)</span>-<a name="line-585"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CBE'</span><span class='layout'>,</span> <span class='chr'>'\x0CC4'</span><span class='layout'>)</span>-<a name="line-586"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CC6'</span><span class='layout'>,</span> <span class='chr'>'\x0CC8'</span><span class='layout'>)</span>-<a name="line-587"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CCA'</span><span class='layout'>,</span> <span class='chr'>'\x0CCD'</span><span class='layout'>)</span>-<a name="line-588"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CD5'</span><span class='layout'>,</span> <span class='chr'>'\x0CD6'</span><span class='layout'>)</span>-<a name="line-589"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D02'</span><span class='layout'>,</span> <span class='chr'>'\x0D03'</span><span class='layout'>)</span>-<a name="line-590"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D3E'</span><span class='layout'>,</span> <span class='chr'>'\x0D43'</span><span class='layout'>)</span>-<a name="line-591"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D46'</span><span class='layout'>,</span> <span class='chr'>'\x0D48'</span><span class='layout'>)</span>-<a name="line-592"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D4A'</span><span class='layout'>,</span> <span class='chr'>'\x0D4D'</span><span class='layout'>)</span>-<a name="line-593"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D57'</span><span class='layout'>,</span> <span class='chr'>'\x0D57'</span><span class='layout'>)</span>-<a name="line-594"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E31'</span><span class='layout'>,</span> <span class='chr'>'\x0E31'</span><span class='layout'>)</span>-<a name="line-595"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E34'</span><span class='layout'>,</span> <span class='chr'>'\x0E3A'</span><span class='layout'>)</span>-<a name="line-596"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E47'</span><span class='layout'>,</span> <span class='chr'>'\x0E4E'</span><span class='layout'>)</span>-<a name="line-597"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EB1'</span><span class='layout'>,</span> <span class='chr'>'\x0EB1'</span><span class='layout'>)</span>-<a name="line-598"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EB4'</span><span class='layout'>,</span> <span class='chr'>'\x0EB9'</span><span class='layout'>)</span>-<a name="line-599"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EBB'</span><span class='layout'>,</span> <span class='chr'>'\x0EBC'</span><span class='layout'>)</span>-<a name="line-600"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EC8'</span><span class='layout'>,</span> <span class='chr'>'\x0ECD'</span><span class='layout'>)</span>-<a name="line-601"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F18'</span><span class='layout'>,</span> <span class='chr'>'\x0F19'</span><span class='layout'>)</span>-<a name="line-602"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F35'</span><span class='layout'>,</span> <span class='chr'>'\x0F35'</span><span class='layout'>)</span>-<a name="line-603"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F37'</span><span class='layout'>,</span> <span class='chr'>'\x0F37'</span><span class='layout'>)</span>-<a name="line-604"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F39'</span><span class='layout'>,</span> <span class='chr'>'\x0F39'</span><span class='layout'>)</span>-<a name="line-605"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F3E'</span><span class='layout'>,</span> <span class='chr'>'\x0F3E'</span><span class='layout'>)</span>-<a name="line-606"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F3F'</span><span class='layout'>,</span> <span class='chr'>'\x0F3F'</span><span class='layout'>)</span>-<a name="line-607"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F71'</span><span class='layout'>,</span> <span class='chr'>'\x0F84'</span><span class='layout'>)</span>-<a name="line-608"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F86'</span><span class='layout'>,</span> <span class='chr'>'\x0F8B'</span><span class='layout'>)</span>-<a name="line-609"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F90'</span><span class='layout'>,</span> <span class='chr'>'\x0F95'</span><span class='layout'>)</span>-<a name="line-610"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F97'</span><span class='layout'>,</span> <span class='chr'>'\x0F97'</span><span class='layout'>)</span>-<a name="line-611"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F99'</span><span class='layout'>,</span> <span class='chr'>'\x0FAD'</span><span class='layout'>)</span>-<a name="line-612"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0FB1'</span><span class='layout'>,</span> <span class='chr'>'\x0FB7'</span><span class='layout'>)</span>-<a name="line-613"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0FB9'</span><span class='layout'>,</span> <span class='chr'>'\x0FB9'</span><span class='layout'>)</span>-<a name="line-614"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x20D0'</span><span class='layout'>,</span> <span class='chr'>'\x20DC'</span><span class='layout'>)</span>-<a name="line-615"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x20E1'</span><span class='layout'>,</span> <span class='chr'>'\x20E1'</span><span class='layout'>)</span>-<a name="line-616"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x302A'</span><span class='layout'>,</span> <span class='chr'>'\x302F'</span><span class='layout'>)</span>-<a name="line-617"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3099'</span><span class='layout'>,</span> <span class='chr'>'\x3099'</span><span class='layout'>)</span>-<a name="line-618"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x309A'</span><span class='layout'>,</span> <span class='chr'>'\x309A'</span><span class='layout'>)</span>-<a name="line-619"></a> <span class='keyglyph'>]</span>-<a name="line-620"></a>-<a name="line-621"></a><span class='comment'>-- |</span>-<a name="line-622"></a><span class='comment'>-- checking for XML digit</span>-<a name="line-623"></a>-<a name="line-624"></a><a name="isXmlDigit"></a><span class='definition'>isXmlDigit</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-625"></a><span class='definition'>isXmlDigit</span> <span class='varid'>c</span>-<a name="line-626"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>-<a name="line-627"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x0030'</span><span class='layout'>,</span> <span class='chr'>'\x0039'</span><span class='layout'>)</span>-<a name="line-628"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0660'</span><span class='layout'>,</span> <span class='chr'>'\x0669'</span><span class='layout'>)</span>-<a name="line-629"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06F0'</span><span class='layout'>,</span> <span class='chr'>'\x06F9'</span><span class='layout'>)</span>-<a name="line-630"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0966'</span><span class='layout'>,</span> <span class='chr'>'\x096F'</span><span class='layout'>)</span>-<a name="line-631"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09E6'</span><span class='layout'>,</span> <span class='chr'>'\x09EF'</span><span class='layout'>)</span>-<a name="line-632"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A66'</span><span class='layout'>,</span> <span class='chr'>'\x0A6F'</span><span class='layout'>)</span>-<a name="line-633"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AE6'</span><span class='layout'>,</span> <span class='chr'>'\x0AEF'</span><span class='layout'>)</span>-<a name="line-634"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B66'</span><span class='layout'>,</span> <span class='chr'>'\x0B6F'</span><span class='layout'>)</span>-<a name="line-635"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BE7'</span><span class='layout'>,</span> <span class='chr'>'\x0BEF'</span><span class='layout'>)</span>-<a name="line-636"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C66'</span><span class='layout'>,</span> <span class='chr'>'\x0C6F'</span><span class='layout'>)</span>-<a name="line-637"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CE6'</span><span class='layout'>,</span> <span class='chr'>'\x0CEF'</span><span class='layout'>)</span>-<a name="line-638"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D66'</span><span class='layout'>,</span> <span class='chr'>'\x0D6F'</span><span class='layout'>)</span>-<a name="line-639"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E50'</span><span class='layout'>,</span> <span class='chr'>'\x0E59'</span><span class='layout'>)</span>-<a name="line-640"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0ED0'</span><span class='layout'>,</span> <span class='chr'>'\x0ED9'</span><span class='layout'>)</span>-<a name="line-641"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F20'</span><span class='layout'>,</span> <span class='chr'>'\x0F29'</span><span class='layout'>)</span>-<a name="line-642"></a> <span class='keyglyph'>]</span>-<a name="line-643"></a>-<a name="line-644"></a><span class='comment'>-- |</span>-<a name="line-645"></a><span class='comment'>-- checking for XML extender</span>-<a name="line-646"></a>-<a name="line-647"></a><a name="isXmlExtender"></a><span class='definition'>isXmlExtender</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-648"></a><span class='definition'>isXmlExtender</span> <span class='varid'>c</span>-<a name="line-649"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>-<a name="line-650"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x00B7'</span><span class='layout'>,</span> <span class='chr'>'\x00B7'</span><span class='layout'>)</span>-<a name="line-651"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x02D0'</span><span class='layout'>,</span> <span class='chr'>'\x02D0'</span><span class='layout'>)</span>-<a name="line-652"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x02D1'</span><span class='layout'>,</span> <span class='chr'>'\x02D1'</span><span class='layout'>)</span>-<a name="line-653"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0387'</span><span class='layout'>,</span> <span class='chr'>'\x0387'</span><span class='layout'>)</span>-<a name="line-654"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0640'</span><span class='layout'>,</span> <span class='chr'>'\x0640'</span><span class='layout'>)</span>-<a name="line-655"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E46'</span><span class='layout'>,</span> <span class='chr'>'\x0E46'</span><span class='layout'>)</span>-<a name="line-656"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EC6'</span><span class='layout'>,</span> <span class='chr'>'\x0EC6'</span><span class='layout'>)</span>-<a name="line-657"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3005'</span><span class='layout'>,</span> <span class='chr'>'\x3005'</span><span class='layout'>)</span>-<a name="line-658"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3031'</span><span class='layout'>,</span> <span class='chr'>'\x3035'</span><span class='layout'>)</span>-<a name="line-659"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x309D'</span><span class='layout'>,</span> <span class='chr'>'\x309E'</span><span class='layout'>)</span>-<a name="line-660"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x30FC'</span><span class='layout'>,</span> <span class='chr'>'\x30FE'</span><span class='layout'>)</span>-<a name="line-661"></a> <span class='keyglyph'>]</span>-<a name="line-662"></a>-<a name="line-663"></a><span class='comment'>-- |</span>-<a name="line-664"></a><span class='comment'>-- checking for XML control or permanently discouraged char</span>-<a name="line-665"></a><span class='comment'>--</span>-<a name="line-666"></a><span class='comment'>-- see Errata to XML1.0 (http:\/\/www.w3.org\/XML\/xml-V10-2e-errata) No 46</span>-<a name="line-667"></a><span class='comment'>--</span>-<a name="line-668"></a><span class='comment'>-- Document authors are encouraged to avoid "compatibility characters",</span>-<a name="line-669"></a><span class='comment'>-- as defined in section 6.8 of [Unicode] (see also D21 in section 3.6 of [Unicode3]).</span>-<a name="line-670"></a><span class='comment'>-- The characters defined in the following ranges are also discouraged.</span>-<a name="line-671"></a><span class='comment'>-- They are either control characters or permanently undefined Unicode characters:</span>-<a name="line-672"></a>-<a name="line-673"></a>-<a name="line-674"></a><a name="isXmlControlOrPermanentlyUndefined"></a><span class='definition'>isXmlControlOrPermanentlyUndefined</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-675"></a><span class='definition'>isXmlControlOrPermanentlyUndefined</span> <span class='varid'>c</span>-<a name="line-676"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>-<a name="line-677"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x7F'</span><span class='layout'>,</span> <span class='chr'>'\x84'</span><span class='layout'>)</span>-<a name="line-678"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x86'</span><span class='layout'>,</span> <span class='chr'>'\x9F'</span><span class='layout'>)</span>-<a name="line-679"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xFDD0'</span><span class='layout'>,</span> <span class='chr'>'\xFDDF'</span><span class='layout'>)</span>-<a name="line-680"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x1FFFF'</span><span class='layout'>)</span>-<a name="line-681"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x2FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x2FFFF'</span><span class='layout'>)</span>-<a name="line-682"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x3FFFF'</span><span class='layout'>)</span>-<a name="line-683"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x4FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x4FFFF'</span><span class='layout'>)</span>-<a name="line-684"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x5FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x5FFFF'</span><span class='layout'>)</span>-<a name="line-685"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x6FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x6FFFF'</span><span class='layout'>)</span>-<a name="line-686"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x7FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x7FFFF'</span><span class='layout'>)</span>-<a name="line-687"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x8FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x8FFFF'</span><span class='layout'>)</span>-<a name="line-688"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x9FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x9FFFF'</span><span class='layout'>)</span>-<a name="line-689"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xAFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xAFFFF'</span><span class='layout'>)</span>-<a name="line-690"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xBFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xBFFFF'</span><span class='layout'>)</span>-<a name="line-691"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xCFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xCFFFF'</span><span class='layout'>)</span>-<a name="line-692"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xDFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xDFFFF'</span><span class='layout'>)</span>-<a name="line-693"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xEFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xEFFFF'</span><span class='layout'>)</span>-<a name="line-694"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xFFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xFFFFF'</span><span class='layout'>)</span>-<a name="line-695"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x10FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x10FFFF'</span><span class='layout'>)</span>-<a name="line-696"></a> <span class='keyglyph'>]</span>-<a name="line-697"></a>-<a name="line-698"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-699"></a>-<a name="line-700"></a><a name="isInList"></a><span class='definition'>isInList</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Unicode</span><span class='layout'>,</span> <span class='conid'>Unicode</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-701"></a><span class='definition'>isInList</span> <span class='varid'>i</span> <span class='keyglyph'>=</span>-<a name="line-702"></a> <span class='varid'>foldr</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='layout'>(</span><span class='varid'>lb</span><span class='layout'>,</span> <span class='varid'>ub</span><span class='layout'>)</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='varid'>lb</span> <span class='varop'>&&</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'><=</span> <span class='varid'>ub</span> <span class='varop'>||</span> <span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span> <span class='conid'>False</span>-<a name="line-703"></a> <span class='comment'>{- The expression (i>=lb && i<=ub) || b would work more generally,-<a name="line-704"></a> but in a sorted list, the above one aborts the computation as early as possible. -}</span>-<a name="line-705"></a>-<a name="line-706"></a><span class='comment'>{--<a name="line-707"></a>isInList' :: Unicode -> [(Unicode, Unicode)] -> Bool-<a name="line-708"></a>isInList' i ((lb, ub) : l)-<a name="line-709"></a> | i < lb = False-<a name="line-710"></a> | i <= ub = True-<a name="line-711"></a> | otherwise = isInList' i l-<a name="line-712"></a>-<a name="line-713"></a>isInList' _ []-<a name="line-714"></a> = False-<a name="line-715"></a>-<a name="line-716"></a>{- works, but is not so fast -}-<a name="line-717"></a>isInList'' :: Unicode -> [(Unicode, Unicode)] -> Bool-<a name="line-718"></a>isInList'' i = any (flip isInRange i)-<a name="line-719"></a>-<a name="line-720"></a>-- move to an Utility module?-<a name="line-721"></a>isInRange :: Ord a => (a,a) -> a -> Bool-<a name="line-722"></a>isInRange (l,r) x = l<=x && x<=r-<a name="line-723"></a>-<a name="line-724"></a>propIsInList :: Bool-<a name="line-725"></a>propIsInList =-<a name="line-726"></a> all-<a name="line-727"></a> (\c -> let dict = [ ('\x0041', '\x005A'), ('\x0061', '\x007A') ]-<a name="line-728"></a> b0 = isInList c dict-<a name="line-729"></a> b1 = isInList' c dict-<a name="line-730"></a> b2 = isInList'' c dict-<a name="line-731"></a> in b0 == b1 && b0 == b2)-<a name="line-732"></a> ['\x00'..'\x100']-<a name="line-733"></a>-}</span>-<a name="line-734"></a>-<a name="line-735"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-736"></a>-<a name="line-737"></a><span class='comment'>-- |</span>-<a name="line-738"></a><span class='comment'>-- code conversion from latin1 to Unicode</span>-<a name="line-739"></a>-<a name="line-740"></a><a name="latin1ToUnicode"></a><span class='definition'>latin1ToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>-<a name="line-741"></a><span class='definition'>latin1ToUnicode</span> <span class='keyglyph'>=</span> <span class='varid'>id</span>-<a name="line-742"></a>-<a name="line-743"></a><a name="latinToUnicode"></a><span class='definition'>latinToUnicode</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Char</span><span class='layout'>,</span> <span class='conid'>Char</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>-<a name="line-744"></a><span class='definition'>latinToUnicode</span> <span class='varid'>tt</span>-<a name="line-745"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>charToUni</span>-<a name="line-746"></a> <span class='keyword'>where</span>-<a name="line-747"></a> <span class='varid'>charToUni</span> <span class='varid'>c</span> <span class='keyglyph'>=</span>-<a name="line-748"></a> <span class='varid'>foldr</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='layout'>(</span><span class='varid'>src</span><span class='layout'>,</span><span class='varid'>dst</span><span class='layout'>)</span> <span class='varid'>r</span> <span class='keyglyph'>-></span>-<a name="line-749"></a> <span class='keyword'>case</span> <span class='varid'>compare</span> <span class='varid'>c</span> <span class='varid'>src</span> <span class='keyword'>of</span>-<a name="line-750"></a> <span class='conid'>EQ</span> <span class='keyglyph'>-></span> <span class='varid'>dst</span>-<a name="line-751"></a> <span class='conid'>LT</span> <span class='keyglyph'>-></span> <span class='varid'>c</span> <span class='comment'>{- not found in table -}</span>-<a name="line-752"></a> <span class='conid'>GT</span> <span class='keyglyph'>-></span> <span class='varid'>r</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='varid'>tt</span>-<a name="line-753"></a>-<a name="line-754"></a><span class='comment'>-- | conversion from ASCII to unicode with check for legal ASCII char set</span>-<a name="line-755"></a><span class='comment'>--</span>-<a name="line-756"></a><span class='comment'>-- Structure of decoding function copied from 'Data.Char.UTF8.decode'.</span>-<a name="line-757"></a>-<a name="line-758"></a><a name="decodeAscii"></a><span class='definition'>decodeAscii</span> <span class='keyglyph'>::</span> <span class='conid'>DecodingFct</span>-<a name="line-759"></a><span class='definition'>decodeAscii</span>-<a name="line-760"></a> <span class='keyglyph'>=</span> <span class='varid'>swap</span> <span class='varop'>.</span> <span class='varid'>partitionEither</span> <span class='varop'>.</span> <span class='varid'>decodeAsciiEmbedErrors</span>-<a name="line-761"></a>-<a name="line-762"></a><a name="decodeAsciiEmbedErrors"></a><span class='definition'>decodeAsciiEmbedErrors</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UStringWithErrors</span>-<a name="line-763"></a><span class='definition'>decodeAsciiEmbedErrors</span> <span class='varid'>str</span>-<a name="line-764"></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'>c</span><span class='layout'>,</span><span class='varid'>pos</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>isValid</span> <span class='varid'>c</span>-<a name="line-765"></a> <span class='keyword'>then</span> <span class='conid'>Right</span> <span class='varid'>c</span>-<a name="line-766"></a> <span class='keyword'>else</span> <span class='conid'>Left</span> <span class='layout'>(</span><span class='varid'>toErrStr</span> <span class='varid'>c</span> <span class='varid'>pos</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>posStr</span>-<a name="line-767"></a> <span class='keyword'>where</span>-<a name="line-768"></a> <span class='varid'>posStr</span> <span class='keyglyph'>=</span> <span class='varid'>zip</span> <span class='varid'>str</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-769"></a> <span class='varid'>toErrStr</span> <span class='varid'>errChr</span> <span class='varid'>pos</span>-<a name="line-770"></a> <span class='keyglyph'>=</span> <span class='str'>" at input position "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>pos</span> <span class='varop'>++</span> <span class='str'>": none ASCII char "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>errChr</span>-<a name="line-771"></a> <span class='varid'>isValid</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='varop'><</span> <span class='chr'>'\x80'</span>-<a name="line-772"></a>-<a name="line-773"></a><span class='comment'>-- |</span>-<a name="line-774"></a><span class='comment'>-- UCS-2 big endian to Unicode conversion</span>-<a name="line-775"></a>-<a name="line-776"></a><a name="ucs2BigEndianToUnicode"></a><span class='definition'>ucs2BigEndianToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>-<a name="line-777"></a>-<a name="line-778"></a><span class='definition'>ucs2BigEndianToUnicode</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='conop'>:</span> <span class='varid'>l</span> <span class='conop'>:</span> <span class='varid'>r</span><span class='layout'>)</span>-<a name="line-779"></a> <span class='keyglyph'>=</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='varid'>fromEnum</span> <span class='varid'>b</span> <span class='varop'>*</span> <span class='num'>256</span> <span class='varop'>+</span> <span class='varid'>fromEnum</span> <span class='varid'>l</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>ucs2BigEndianToUnicode</span> <span class='varid'>r</span>-<a name="line-780"></a>-<a name="line-781"></a><span class='definition'>ucs2BigEndianToUnicode</span> <span class='conid'>[]</span>-<a name="line-782"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-783"></a>-<a name="line-784"></a><span class='definition'>ucs2BigEndianToUnicode</span> <span class='keyword'>_</span>-<a name="line-785"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span> <span class='comment'>-- error "illegal UCS-2 byte input sequence with odd length"</span>-<a name="line-786"></a> <span class='comment'>-- is ignored (garbage in, garbage out)</span>-<a name="line-787"></a>-<a name="line-788"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-789"></a>-<a name="line-790"></a><span class='comment'>-- |</span>-<a name="line-791"></a><span class='comment'>-- UCS-2 little endian to Unicode conversion</span>-<a name="line-792"></a>-<a name="line-793"></a><a name="ucs2LittleEndianToUnicode"></a><span class='definition'>ucs2LittleEndianToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>-<a name="line-794"></a>-<a name="line-795"></a><span class='definition'>ucs2LittleEndianToUnicode</span> <span class='layout'>(</span><span class='varid'>l</span> <span class='conop'>:</span> <span class='varid'>b</span> <span class='conop'>:</span> <span class='varid'>r</span><span class='layout'>)</span>-<a name="line-796"></a> <span class='keyglyph'>=</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='varid'>fromEnum</span> <span class='varid'>b</span> <span class='varop'>*</span> <span class='num'>256</span> <span class='varop'>+</span> <span class='varid'>fromEnum</span> <span class='varid'>l</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>ucs2LittleEndianToUnicode</span> <span class='varid'>r</span>-<a name="line-797"></a>-<a name="line-798"></a><span class='definition'>ucs2LittleEndianToUnicode</span> <span class='conid'>[]</span>-<a name="line-799"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-800"></a>-<a name="line-801"></a><span class='definition'>ucs2LittleEndianToUnicode</span> <span class='keyglyph'>[</span><span class='keyword'>_</span><span class='keyglyph'>]</span>-<a name="line-802"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span> <span class='comment'>-- error "illegal UCS-2 byte input sequence with odd length"</span>-<a name="line-803"></a> <span class='comment'>-- is ignored</span>-<a name="line-804"></a>-<a name="line-805"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-806"></a>-<a name="line-807"></a><span class='comment'>-- |</span>-<a name="line-808"></a><span class='comment'>-- UCS-2 to UTF-8 conversion with byte order mark analysis</span>-<a name="line-809"></a>-<a name="line-810"></a><a name="ucs2ToUnicode"></a><span class='definition'>ucs2ToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>-<a name="line-811"></a>-<a name="line-812"></a><span class='definition'>ucs2ToUnicode</span> <span class='layout'>(</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- 2 byte mark for big endian encoding</span>-<a name="line-813"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2BigEndianToUnicode</span> <span class='varid'>s</span>-<a name="line-814"></a>-<a name="line-815"></a><span class='definition'>ucs2ToUnicode</span> <span class='layout'>(</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- 2 byte mark for little endian encoding</span>-<a name="line-816"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2LittleEndianToUnicode</span> <span class='varid'>s</span>-<a name="line-817"></a>-<a name="line-818"></a><span class='definition'>ucs2ToUnicode</span> <span class='varid'>s</span>-<a name="line-819"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2BigEndianToUnicode</span> <span class='varid'>s</span> <span class='comment'>-- default: big endian</span>-<a name="line-820"></a>-<a name="line-821"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-822"></a>-<a name="line-823"></a><span class='comment'>-- |</span>-<a name="line-824"></a><span class='comment'>-- UTF-8 to Unicode conversion with deletion of leading byte order mark, as described in XML standard F.1</span>-<a name="line-825"></a>-<a name="line-826"></a><a name="utf8ToUnicode"></a><span class='definition'>utf8ToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>DecodingFct</span>-<a name="line-827"></a>-<a name="line-828"></a><span class='definition'>utf8ToUnicode</span> <span class='layout'>(</span><span class='chr'>'\xEF'</span><span class='conop'>:</span><span class='chr'>'\xBB'</span><span class='conop'>:</span><span class='chr'>'\xBF'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- remove byte order mark ( XML standard F.1 )</span>-<a name="line-829"></a> <span class='keyglyph'>=</span> <span class='varid'>decodeUtf8</span> <span class='varid'>s</span>-<a name="line-830"></a>-<a name="line-831"></a><span class='definition'>utf8ToUnicode</span> <span class='varid'>s</span>-<a name="line-832"></a> <span class='keyglyph'>=</span> <span class='varid'>decodeUtf8</span> <span class='varid'>s</span>-<a name="line-833"></a>-<a name="line-834"></a><a name="utf8ToUnicodeEmbedErrors"></a><span class='definition'>utf8ToUnicodeEmbedErrors</span> <span class='keyglyph'>::</span> <span class='conid'>DecodingFctEmbedErrors</span>-<a name="line-835"></a>-<a name="line-836"></a><span class='definition'>utf8ToUnicodeEmbedErrors</span> <span class='layout'>(</span><span class='chr'>'\xEF'</span><span class='conop'>:</span><span class='chr'>'\xBB'</span><span class='conop'>:</span><span class='chr'>'\xBF'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- remove byte order mark ( XML standard F.1 )</span>-<a name="line-837"></a> <span class='keyglyph'>=</span> <span class='varid'>decodeUtf8EmbedErrors</span> <span class='varid'>s</span>-<a name="line-838"></a>-<a name="line-839"></a><span class='definition'>utf8ToUnicodeEmbedErrors</span> <span class='varid'>s</span>-<a name="line-840"></a> <span class='keyglyph'>=</span> <span class='varid'>decodeUtf8EmbedErrors</span> <span class='varid'>s</span>-<a name="line-841"></a>-<a name="line-842"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-843"></a>-<a name="line-844"></a><span class='comment'>-- |</span>-<a name="line-845"></a><span class='comment'>-- UTF-16 big endian to UTF-8 conversion with removal of byte order mark</span>-<a name="line-846"></a>-<a name="line-847"></a><a name="utf16beToUnicode"></a><span class='definition'>utf16beToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>-<a name="line-848"></a>-<a name="line-849"></a><span class='definition'>utf16beToUnicode</span> <span class='layout'>(</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- remove byte order mark</span>-<a name="line-850"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2BigEndianToUnicode</span> <span class='varid'>s</span>-<a name="line-851"></a>-<a name="line-852"></a><span class='definition'>utf16beToUnicode</span> <span class='varid'>s</span>-<a name="line-853"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2BigEndianToUnicode</span> <span class='varid'>s</span>-<a name="line-854"></a>-<a name="line-855"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-856"></a>-<a name="line-857"></a><span class='comment'>-- |</span>-<a name="line-858"></a><span class='comment'>-- UTF-16 little endian to UTF-8 conversion with removal of byte order mark</span>-<a name="line-859"></a>-<a name="line-860"></a><a name="utf16leToUnicode"></a><span class='definition'>utf16leToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>-<a name="line-861"></a>-<a name="line-862"></a><span class='definition'>utf16leToUnicode</span> <span class='layout'>(</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- remove byte order mark</span>-<a name="line-863"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2LittleEndianToUnicode</span> <span class='varid'>s</span>-<a name="line-864"></a>-<a name="line-865"></a><span class='definition'>utf16leToUnicode</span> <span class='varid'>s</span>-<a name="line-866"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2LittleEndianToUnicode</span> <span class='varid'>s</span>-<a name="line-867"></a>-<a name="line-868"></a>-<a name="line-869"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-870"></a>-<a name="line-871"></a><span class='comment'>-- |</span>-<a name="line-872"></a><span class='comment'>-- substitute all Unicode characters, that are not legal 1-byte</span>-<a name="line-873"></a><span class='comment'>-- UTF-8 XML characters by a character reference.</span>-<a name="line-874"></a><span class='comment'>--</span>-<a name="line-875"></a><span class='comment'>-- This function can be used to translate all text nodes and</span>-<a name="line-876"></a><span class='comment'>-- attribute values into pure ascii.</span>-<a name="line-877"></a><span class='comment'>--</span>-<a name="line-878"></a><span class='comment'>-- see also : 'unicodeToLatin1'</span>-<a name="line-879"></a>-<a name="line-880"></a><a name="unicodeToXmlEntity"></a><span class='definition'>unicodeToXmlEntity</span> <span class='keyglyph'>::</span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-881"></a><span class='definition'>unicodeToXmlEntity</span>-<a name="line-882"></a> <span class='keyglyph'>=</span> <span class='varid'>escape</span> <span class='varid'>is1ByteXmlChar</span> <span class='layout'>(</span><span class='varid'>intToCharRef</span> <span class='varop'>.</span> <span class='varid'>fromEnum</span><span class='layout'>)</span>-<a name="line-883"></a>-<a name="line-884"></a><span class='comment'>-- |</span>-<a name="line-885"></a><span class='comment'>-- substitute all Unicode characters, that are not legal latin1</span>-<a name="line-886"></a><span class='comment'>-- UTF-8 XML characters by a character reference.</span>-<a name="line-887"></a><span class='comment'>--</span>-<a name="line-888"></a><span class='comment'>-- This function can be used to translate all text nodes and</span>-<a name="line-889"></a><span class='comment'>-- attribute values into ISO latin1.</span>-<a name="line-890"></a><span class='comment'>--</span>-<a name="line-891"></a><span class='comment'>-- see also : 'unicodeToXmlEntity'</span>-<a name="line-892"></a>-<a name="line-893"></a><a name="unicodeToLatin1"></a><span class='definition'>unicodeToLatin1</span> <span class='keyglyph'>::</span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-894"></a><span class='definition'>unicodeToLatin1</span>-<a name="line-895"></a> <span class='keyglyph'>=</span> <span class='varid'>escape</span> <span class='varid'>isXmlLatin1Char</span> <span class='layout'>(</span><span class='varid'>intToCharRef</span> <span class='varop'>.</span> <span class='varid'>fromEnum</span><span class='layout'>)</span>-<a name="line-896"></a>-<a name="line-897"></a>-<a name="line-898"></a><a name="escape"></a><span class='comment'>-- |</span>-<a name="line-899"></a><span class='comment'>-- substitute selected characters</span>-<a name="line-900"></a><span class='comment'>-- The @check@ function returns 'True' whenever a character needs to substitution</span>-<a name="line-901"></a><span class='comment'>-- The function @esc@ computes a substitute.</span>-<a name="line-902"></a><span class='definition'>escape</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-903"></a><span class='definition'>escape</span> <span class='varid'>check</span> <span class='varid'>esc</span> <span class='keyglyph'>=</span>-<a name="line-904"></a> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>uc</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>check</span> <span class='varid'>uc</span> <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='varid'>uc</span><span class='keyglyph'>]</span> <span class='keyword'>else</span> <span class='varid'>esc</span> <span class='varid'>uc</span><span class='layout'>)</span>-<a name="line-905"></a>-<a name="line-906"></a><span class='comment'>-- |</span>-<a name="line-907"></a><span class='comment'>-- removes all non ascii chars, may be used to transform</span>-<a name="line-908"></a><span class='comment'>-- a document into a pure ascii representation by removing</span>-<a name="line-909"></a><span class='comment'>-- all non ascii chars from tag and attibute names</span>-<a name="line-910"></a><span class='comment'>--</span>-<a name="line-911"></a><span class='comment'>-- see also : 'unicodeRemoveNoneLatin1', 'unicodeToXmlEntity'</span>-<a name="line-912"></a>-<a name="line-913"></a><a name="unicodeRemoveNoneAscii"></a><span class='definition'>unicodeRemoveNoneAscii</span> <span class='keyglyph'>::</span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-914"></a><span class='definition'>unicodeRemoveNoneAscii</span>-<a name="line-915"></a> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='varid'>is1ByteXmlChar</span>-<a name="line-916"></a>-<a name="line-917"></a><span class='comment'>-- |</span>-<a name="line-918"></a><span class='comment'>-- removes all non latin1 chars, may be used to transform</span>-<a name="line-919"></a><span class='comment'>-- a document into a pure ascii representation by removing</span>-<a name="line-920"></a><span class='comment'>-- all non ascii chars from tag and attibute names</span>-<a name="line-921"></a><span class='comment'>--</span>-<a name="line-922"></a><span class='comment'>-- see also : 'unicodeRemoveNoneAscii', 'unicodeToLatin1'</span>-<a name="line-923"></a>-<a name="line-924"></a><a name="unicodeRemoveNoneLatin1"></a><span class='definition'>unicodeRemoveNoneLatin1</span> <span class='keyglyph'>::</span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-925"></a><span class='definition'>unicodeRemoveNoneLatin1</span>-<a name="line-926"></a> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='varid'>isXmlLatin1Char</span>-<a name="line-927"></a>-<a name="line-928"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-929"></a>-<a name="line-930"></a><span class='comment'>-- |</span>-<a name="line-931"></a><span class='comment'>-- convert an Unicode into a XML character reference.</span>-<a name="line-932"></a><span class='comment'>--</span>-<a name="line-933"></a><span class='comment'>-- see also : 'intToCharRefHex'</span>-<a name="line-934"></a>-<a name="line-935"></a><a name="intToCharRef"></a><span class='definition'>intToCharRef</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-936"></a><span class='definition'>intToCharRef</span> <span class='varid'>i</span>-<a name="line-937"></a> <span class='keyglyph'>=</span> <span class='str'>"&#"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>i</span> <span class='varop'>++</span> <span class='str'>";"</span>-<a name="line-938"></a>-<a name="line-939"></a><span class='comment'>-- |</span>-<a name="line-940"></a><span class='comment'>-- convert an Unicode into a XML hexadecimal character reference.</span>-<a name="line-941"></a><span class='comment'>--</span>-<a name="line-942"></a><span class='comment'>-- see also: 'intToCharRef'</span>-<a name="line-943"></a>-<a name="line-944"></a><a name="intToCharRefHex"></a><span class='definition'>intToCharRefHex</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-945"></a><span class='definition'>intToCharRefHex</span> <span class='varid'>i</span>-<a name="line-946"></a> <span class='keyglyph'>=</span> <span class='str'>"&#x"</span> <span class='varop'>++</span> <span class='varid'>h2</span> <span class='varop'>++</span> <span class='str'>";"</span>-<a name="line-947"></a> <span class='keyword'>where</span>-<a name="line-948"></a> <span class='varid'>h1</span> <span class='keyglyph'>=</span> <span class='varid'>intToHexString</span> <span class='varid'>i</span>-<a name="line-949"></a> <span class='varid'>h2</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>length</span> <span class='varid'>h1</span> <span class='varop'>`mod`</span> <span class='num'>2</span> <span class='varop'>==</span> <span class='num'>1</span>-<a name="line-950"></a> <span class='keyword'>then</span> <span class='chr'>'0'</span><span class='conop'>:</span> <span class='varid'>h1</span>-<a name="line-951"></a> <span class='keyword'>else</span> <span class='varid'>h1</span>-<a name="line-952"></a>-<a name="line-953"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-954"></a><span class='comment'>--</span>-<a name="line-955"></a><span class='comment'>-- | White Space (XML Standard 2.3) and</span>-<a name="line-956"></a><span class='comment'>-- end of line handling (2.11)</span>-<a name="line-957"></a><span class='comment'>--</span>-<a name="line-958"></a><span class='comment'>-- \#x0D and \#x0D\#x0A are mapped to \#x0A</span>-<a name="line-959"></a>-<a name="line-960"></a><a name="normalizeNL"></a><span class='definition'>normalizeNL</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-961"></a><span class='definition'>normalizeNL</span> <span class='layout'>(</span><span class='chr'>'\r'</span> <span class='conop'>:</span> <span class='chr'>'\n'</span> <span class='conop'>:</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='chr'>'\n'</span> <span class='conop'>:</span> <span class='varid'>normalizeNL</span> <span class='varid'>rest</span>-<a name="line-962"></a><span class='definition'>normalizeNL</span> <span class='layout'>(</span><span class='chr'>'\r'</span> <span class='conop'>:</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='chr'>'\n'</span> <span class='conop'>:</span> <span class='varid'>normalizeNL</span> <span class='varid'>rest</span>-<a name="line-963"></a><span class='definition'>normalizeNL</span> <span class='layout'>(</span><span class='varid'>c</span> <span class='conop'>:</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='conop'>:</span> <span class='varid'>normalizeNL</span> <span class='varid'>rest</span>-<a name="line-964"></a><span class='definition'>normalizeNL</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-965"></a>-<a name="line-966"></a>-<a name="line-967"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-968"></a>-<a name="line-969"></a><span class='comment'>-- |</span>-<a name="line-970"></a><span class='comment'>-- the table of supported character encoding schemes and the associated</span>-<a name="line-971"></a><span class='comment'>-- conversion functions into Unicode:q</span>-<a name="line-972"></a>-<a name="line-973"></a><span class='comment'>{--<a name="line-974"></a>This table could be derived from decodingTableEither,-<a name="line-975"></a>but this way it is certainly more efficient.-<a name="line-976"></a>-}</span>-<a name="line-977"></a>-<a name="line-978"></a><a name="decodingTable"></a><span class='definition'>decodingTable</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'>DecodingFct</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-979"></a><span class='definition'>decodingTable</span>-<a name="line-980"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>utf8</span><span class='layout'>,</span> <span class='varid'>utf8ToUnicode</span> <span class='layout'>)</span>-<a name="line-981"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>isoLatin1</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>latin1ToUnicode</span> <span class='layout'>)</span>-<a name="line-982"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>usAscii</span><span class='layout'>,</span> <span class='varid'>decodeAscii</span> <span class='layout'>)</span>-<a name="line-983"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>ucs2</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>ucs2ToUnicode</span> <span class='layout'>)</span>-<a name="line-984"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>ucs2ToUnicode</span> <span class='layout'>)</span>-<a name="line-985"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16be</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>utf16beToUnicode</span> <span class='layout'>)</span>-<a name="line-986"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16le</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>utf16leToUnicode</span> <span class='layout'>)</span>-<a name="line-987"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_2</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_2</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-988"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_3</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_3</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-989"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_4</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_4</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-990"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_5</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_5</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-991"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_6</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_6</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-992"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_7</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_7</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-993"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_8</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_8</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-994"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_9</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_9</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-995"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_10</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_10</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-996"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_11</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_11</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-997"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_13</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_13</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-998"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_14</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_14</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-999"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_15</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_15</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1000"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_16</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_16</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1001"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>unicodeString</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>id</span> <span class='layout'>)</span>-<a name="line-1002"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>id</span> <span class='layout'>)</span> <span class='comment'>-- default</span>-<a name="line-1003"></a> <span class='keyglyph'>]</span>-<a name="line-1004"></a> <span class='keyword'>where</span>-<a name="line-1005"></a> <span class='varid'>liftDecFct</span> <span class='varid'>df</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>df</span> <span class='varid'>s</span><span class='layout'>,</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-1006"></a>-<a name="line-1007"></a><span class='comment'>-- |</span>-<a name="line-1008"></a><span class='comment'>-- the lookup function for selecting the decoding function</span>-<a name="line-1009"></a>-<a name="line-1010"></a><a name="getDecodingFct"></a><span class='definition'>getDecodingFct</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>DecodingFct</span>-<a name="line-1011"></a><span class='definition'>getDecodingFct</span> <span class='varid'>enc</span>-<a name="line-1012"></a> <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toUpper</span> <span class='varid'>enc</span><span class='layout'>)</span> <span class='varid'>decodingTable</span>-<a name="line-1013"></a>-<a name="line-1014"></a>-<a name="line-1015"></a><span class='comment'>-- |</span>-<a name="line-1016"></a><span class='comment'>-- Similar to 'decodingTable' but it embeds errors</span>-<a name="line-1017"></a><span class='comment'>-- in the string of decoded characters.</span>-<a name="line-1018"></a>-<a name="line-1019"></a><a name="decodingTableEmbedErrors"></a><span class='definition'>decodingTableEmbedErrors</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'>DecodingFctEmbedErrors</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-1020"></a><span class='definition'>decodingTableEmbedErrors</span>-<a name="line-1021"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>utf8</span><span class='layout'>,</span> <span class='varid'>utf8ToUnicodeEmbedErrors</span> <span class='layout'>)</span>-<a name="line-1022"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>isoLatin1</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>latin1ToUnicode</span> <span class='layout'>)</span>-<a name="line-1023"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>usAscii</span><span class='layout'>,</span> <span class='varid'>decodeAsciiEmbedErrors</span> <span class='layout'>)</span>-<a name="line-1024"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>ucs2</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>ucs2ToUnicode</span> <span class='layout'>)</span>-<a name="line-1025"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>ucs2ToUnicode</span> <span class='layout'>)</span>-<a name="line-1026"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16be</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>utf16beToUnicode</span> <span class='layout'>)</span>-<a name="line-1027"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16le</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>utf16leToUnicode</span> <span class='layout'>)</span>-<a name="line-1028"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_2</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_2</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1029"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_3</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_3</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1030"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_4</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_4</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1031"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_5</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_5</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1032"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_6</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_6</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1033"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_7</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_7</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1034"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_8</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_8</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1035"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_9</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_9</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1036"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_10</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_10</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1037"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_11</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_11</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1038"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_13</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_13</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1039"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_14</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_14</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1040"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_15</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_15</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1041"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_16</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_16</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-1042"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>unicodeString</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>id</span> <span class='layout'>)</span>-<a name="line-1043"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>id</span> <span class='layout'>)</span> <span class='comment'>-- default</span>-<a name="line-1044"></a> <span class='keyglyph'>]</span>-<a name="line-1045"></a> <span class='keyword'>where</span>-<a name="line-1046"></a> <span class='varid'>liftDecFct</span> <span class='varid'>df</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='conid'>Right</span> <span class='varop'>.</span> <span class='varid'>df</span>-<a name="line-1047"></a>-<a name="line-1048"></a><span class='comment'>-- |</span>-<a name="line-1049"></a><span class='comment'>-- the lookup function for selecting the decoding function</span>-<a name="line-1050"></a>-<a name="line-1051"></a><a name="getDecodingFctEmbedErrors"></a><span class='definition'>getDecodingFctEmbedErrors</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>DecodingFctEmbedErrors</span>-<a name="line-1052"></a><span class='definition'>getDecodingFctEmbedErrors</span> <span class='varid'>enc</span>-<a name="line-1053"></a> <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toUpper</span> <span class='varid'>enc</span><span class='layout'>)</span> <span class='varid'>decodingTableEmbedErrors</span>-<a name="line-1054"></a>-<a name="line-1055"></a>-<a name="line-1056"></a>-<a name="line-1057"></a><span class='comment'>-- |</span>-<a name="line-1058"></a><span class='comment'>-- the table of supported output encoding schemes and the associated</span>-<a name="line-1059"></a><span class='comment'>-- conversion functions from Unicode</span>-<a name="line-1060"></a>-<a name="line-1061"></a><a name="outputEncodingTable"></a><span class='definition'>outputEncodingTable</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='layout'>(</span><span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-1062"></a><span class='definition'>outputEncodingTable</span>-<a name="line-1063"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>utf8</span><span class='layout'>,</span> <span class='varid'>unicodeToUtf8</span> <span class='layout'>)</span>-<a name="line-1064"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>isoLatin1</span><span class='layout'>,</span> <span class='varid'>unicodeToLatin1</span> <span class='layout'>)</span>-<a name="line-1065"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>usAscii</span><span class='layout'>,</span> <span class='varid'>unicodeToXmlEntity</span> <span class='layout'>)</span>-<a name="line-1066"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>ucs2</span><span class='layout'>,</span> <span class='varid'>ucs2ToUnicode</span> <span class='layout'>)</span>-<a name="line-1067"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='varid'>unicodeToUtf8</span> <span class='layout'>)</span> <span class='comment'>-- default</span>-<a name="line-1068"></a> <span class='keyglyph'>]</span>-<a name="line-1069"></a>-<a name="line-1070"></a><span class='comment'>-- |</span>-<a name="line-1071"></a><span class='comment'>-- the lookup function for selecting the encoding function</span>-<a name="line-1072"></a>-<a name="line-1073"></a><a name="getOutputEncodingFct"></a><span class='definition'>getOutputEncodingFct</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span><span class='layout'>)</span>-<a name="line-1074"></a><span class='definition'>getOutputEncodingFct</span> <span class='varid'>enc</span>-<a name="line-1075"></a> <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toUpper</span> <span class='varid'>enc</span><span class='layout'>)</span> <span class='varid'>outputEncodingTable</span>-<a name="line-1076"></a>-<a name="line-1077"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-1078"></a><span class='comment'>--</span>-<a name="line-1079"></a>-<a name="line-1080"></a><a name="guessEncoding"></a><span class='definition'>guessEncoding</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-1081"></a>-<a name="line-1082"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4LE"</span> <span class='comment'>-- with byte order mark</span>-<a name="line-1083"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16LE"</span> <span class='comment'>-- with byte order mark</span>-<a name="line-1084"></a>-<a name="line-1085"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4-3421"</span> <span class='comment'>-- with byte order mark</span>-<a name="line-1086"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16BE"</span> <span class='comment'>-- with byte order mark</span>-<a name="line-1087"></a>-<a name="line-1088"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\xEF'</span><span class='conop'>:</span><span class='chr'>'\xBB'</span><span class='conop'>:</span><span class='chr'>'\xBF'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>utf8</span> <span class='comment'>-- with byte order mark</span>-<a name="line-1089"></a>-<a name="line-1090"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4BE"</span> <span class='comment'>-- with byte order mark</span>-<a name="line-1091"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4-2143"</span> <span class='comment'>-- with byte order mark</span>-<a name="line-1092"></a>-<a name="line-1093"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4BE"</span> <span class='comment'>-- "<" of "<?xml"</span>-<a name="line-1094"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4LE"</span> <span class='comment'>-- "<" of "<?xml"</span>-<a name="line-1095"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4-2143"</span> <span class='comment'>-- "<" of "<?xml"</span>-<a name="line-1096"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4-3412"</span> <span class='comment'>-- "<" of "<?xml"</span>-<a name="line-1097"></a>-<a name="line-1098"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3F'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16BE"</span> <span class='comment'>-- "<?" of "<?xml"</span>-<a name="line-1099"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3F'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16LE"</span> <span class='comment'>-- "<?" of "<?xml"</span>-<a name="line-1100"></a>-<a name="line-1101"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x4C'</span><span class='conop'>:</span><span class='chr'>'\x6F'</span><span class='conop'>:</span><span class='chr'>'\xA7'</span><span class='conop'>:</span><span class='chr'>'\x94'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"EBCDIC"</span> <span class='comment'>-- "<?xm" of "<?xml"</span>-<a name="line-1102"></a>-<a name="line-1103"></a><span class='definition'>guessEncoding</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span> <span class='comment'>-- no guess</span>-<a name="line-1104"></a>-<a name="line-1105"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-5"></a> Copyright : Copyright (C) 2005-2008 Uwe Schmidt+<a name="line-6"></a> License : MIT+<a name="line-7"></a>+<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de)+<a name="line-9"></a> Stability : experimental+<a name="line-10"></a> Portability: portable+<a name="line-11"></a>+<a name="line-12"></a> Unicode and UTF-8 Conversion 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'>Unicode</span>+<a name="line-19"></a> <span class='layout'>(</span>+<a name="line-20"></a> <span class='comment'>-- * Unicode Type declarations</span>+<a name="line-21"></a> <span class='conid'>Unicode</span><span class='layout'>,</span>+<a name="line-22"></a> <span class='conid'>UString</span><span class='layout'>,</span>+<a name="line-23"></a> <span class='conid'>UTF8Char</span><span class='layout'>,</span>+<a name="line-24"></a> <span class='conid'>UTF8String</span><span class='layout'>,</span>+<a name="line-25"></a> <span class='conid'>UStringWithErrors</span><span class='layout'>,</span>+<a name="line-26"></a> <span class='conid'>DecodingFct</span><span class='layout'>,</span>+<a name="line-27"></a> <span class='conid'>DecodingFctEmbedErrors</span><span class='layout'>,</span>+<a name="line-28"></a>+<a name="line-29"></a> <span class='comment'>-- * XML char predicates</span>+<a name="line-30"></a>+<a name="line-31"></a> <span class='varid'>isXmlChar</span>+<a name="line-32"></a> <span class='layout'>,</span> <span class='varid'>isXmlLatin1Char</span>+<a name="line-33"></a> <span class='layout'>,</span> <span class='varid'>isXmlSpaceChar</span>+<a name="line-34"></a> <span class='layout'>,</span> <span class='varid'>isXml11SpaceChar</span>+<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>isXmlNameChar</span>+<a name="line-36"></a> <span class='layout'>,</span> <span class='varid'>isXmlNameStartChar</span>+<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>isXmlNCNameChar</span>+<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>isXmlNCNameStartChar</span>+<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>isXmlPubidChar</span>+<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>isXmlLetter</span>+<a name="line-41"></a> <span class='layout'>,</span> <span class='varid'>isXmlBaseChar</span>+<a name="line-42"></a> <span class='layout'>,</span> <span class='varid'>isXmlIdeographicChar</span>+<a name="line-43"></a> <span class='layout'>,</span> <span class='varid'>isXmlCombiningChar</span>+<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>isXmlDigit</span>+<a name="line-45"></a> <span class='layout'>,</span> <span class='varid'>isXmlExtender</span>+<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>isXmlControlOrPermanentlyUndefined</span>+<a name="line-47"></a>+<a name="line-48"></a> <span class='comment'>-- * UTF-8 and Unicode conversion functions</span>+<a name="line-49"></a> <span class='layout'>,</span> <span class='varid'>utf8ToUnicode</span>+<a name="line-50"></a> <span class='layout'>,</span> <span class='varid'>utf8ToUnicodeEmbedErrors</span>+<a name="line-51"></a> <span class='layout'>,</span> <span class='varid'>latin1ToUnicode</span>+<a name="line-52"></a> <span class='layout'>,</span> <span class='varid'>ucs2ToUnicode</span>+<a name="line-53"></a> <span class='layout'>,</span> <span class='varid'>ucs2BigEndianToUnicode</span>+<a name="line-54"></a> <span class='layout'>,</span> <span class='varid'>ucs2LittleEndianToUnicode</span>+<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>utf16beToUnicode</span>+<a name="line-56"></a> <span class='layout'>,</span> <span class='varid'>utf16leToUnicode</span>+<a name="line-57"></a>+<a name="line-58"></a> <span class='layout'>,</span> <span class='varid'>unicodeCharToUtf8</span>+<a name="line-59"></a>+<a name="line-60"></a> <span class='layout'>,</span> <span class='varid'>unicodeToUtf8</span>+<a name="line-61"></a> <span class='layout'>,</span> <span class='varid'>unicodeToXmlEntity</span>+<a name="line-62"></a> <span class='layout'>,</span> <span class='varid'>unicodeToLatin1</span>+<a name="line-63"></a> <span class='layout'>,</span> <span class='varid'>unicodeRemoveNoneAscii</span>+<a name="line-64"></a> <span class='layout'>,</span> <span class='varid'>unicodeRemoveNoneLatin1</span>+<a name="line-65"></a>+<a name="line-66"></a> <span class='layout'>,</span> <span class='varid'>intToCharRef</span>+<a name="line-67"></a> <span class='layout'>,</span> <span class='varid'>intToCharRefHex</span>+<a name="line-68"></a>+<a name="line-69"></a> <span class='layout'>,</span> <span class='varid'>getDecodingFct</span>+<a name="line-70"></a> <span class='layout'>,</span> <span class='varid'>getDecodingFctEmbedErrors</span>+<a name="line-71"></a> <span class='layout'>,</span> <span class='varid'>getOutputEncodingFct</span>+<a name="line-72"></a>+<a name="line-73"></a> <span class='layout'>,</span> <span class='varid'>normalizeNL</span>+<a name="line-74"></a> <span class='layout'>,</span> <span class='varid'>guessEncoding</span>+<a name="line-75"></a> <span class='layout'>)</span>+<a name="line-76"></a><span class='keyword'>where</span>+<a name="line-77"></a>+<a name="line-78"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span><span class='layout'>(</span> <span class='varid'>toUpper</span> <span class='layout'>)</span>+<a name="line-79"></a>+<a name="line-80"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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'>swap</span><span class='layout'>,</span> <span class='varid'>partitionEither</span> <span class='layout'>)</span>+<a name="line-81"></a>+<a name="line-82"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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'>IsoLatinTables</span>+<a name="line-83"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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'>UTF8Decoding</span> <span class='layout'>(</span> <span class='varid'>decodeUtf8</span><span class='layout'>,</span> <span class='varid'>decodeUtf8EmbedErrors</span> <span class='layout'>)</span>+<a name="line-84"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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'>intToHexString</span> <span class='layout'>)</span>+<a name="line-85"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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-86"></a>+<a name="line-87"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-88"></a>+<a name="line-89"></a><span class='comment'>-- | Unicode is represented as the Char type</span>+<a name="line-90"></a><span class='comment'>-- Precondition for this is the support of Unicode character range</span>+<a name="line-91"></a><span class='comment'>-- in the compiler (e.g. ghc but not hugs)</span>+<a name="line-92"></a>+<a name="line-93"></a><a name="Unicode"></a><span class='keyword'>type</span> <span class='conid'>Unicode</span> <span class='keyglyph'>=</span> <span class='conid'>Char</span>+<a name="line-94"></a>+<a name="line-95"></a><span class='comment'>-- | the type for Unicode strings</span>+<a name="line-96"></a>+<a name="line-97"></a><a name="UString"></a><span class='keyword'>type</span> <span class='conid'>UString</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>Unicode</span><span class='keyglyph'>]</span>+<a name="line-98"></a>+<a name="line-99"></a><span class='comment'>-- | UTF-8 charachters are represented by the Char type</span>+<a name="line-100"></a>+<a name="line-101"></a><a name="UTF8Char"></a><span class='keyword'>type</span> <span class='conid'>UTF8Char</span> <span class='keyglyph'>=</span> <span class='conid'>Char</span>+<a name="line-102"></a>+<a name="line-103"></a><span class='comment'>-- | UTF-8 strings are implemented as Haskell strings</span>+<a name="line-104"></a>+<a name="line-105"></a><a name="UTF8String"></a><span class='keyword'>type</span> <span class='conid'>UTF8String</span> <span class='keyglyph'>=</span> <span class='conid'>String</span>+<a name="line-106"></a>+<a name="line-107"></a><span class='comment'>-- | Decoding function with a pair containing the result string and a list of decoding errors as result</span>+<a name="line-108"></a>+<a name="line-109"></a><a name="DecodingFct"></a><span class='keyword'>type</span> <span class='conid'>DecodingFct</span> <span class='keyglyph'>=</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>UString</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-110"></a>+<a name="line-111"></a><a name="UStringWithErrors"></a><span class='keyword'>type</span> <span class='conid'>UStringWithErrors</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>Char</span><span class='keyglyph'>]</span>+<a name="line-112"></a>+<a name="line-113"></a><span class='comment'>-- | Decoding function where decoding errors are interleaved with decoded characters</span>+<a name="line-114"></a>+<a name="line-115"></a><a name="DecodingFctEmbedErrors"></a><span class='keyword'>type</span> <span class='conid'>DecodingFctEmbedErrors</span> <span class='keyglyph'>=</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UStringWithErrors</span>+<a name="line-116"></a>+<a name="line-117"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-118"></a><span class='comment'>--</span>+<a name="line-119"></a><span class='comment'>-- Unicode predicates</span>+<a name="line-120"></a>+<a name="line-121"></a><span class='comment'>-- |</span>+<a name="line-122"></a><span class='comment'>-- test for a legal 1 byte XML char</span>+<a name="line-123"></a>+<a name="line-124"></a><a name="is1ByteXmlChar"></a><span class='definition'>is1ByteXmlChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-125"></a><span class='definition'>is1ByteXmlChar</span> <span class='varid'>c</span>+<a name="line-126"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'><</span> <span class='chr'>'\x80'</span>+<a name="line-127"></a> <span class='varop'>&&</span> <span class='layout'>(</span> <span class='varid'>c</span> <span class='varop'>>=</span> <span class='chr'>' '</span>+<a name="line-128"></a> <span class='varop'>||</span>+<a name="line-129"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\n'</span>+<a name="line-130"></a> <span class='varop'>||</span>+<a name="line-131"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\t'</span>+<a name="line-132"></a> <span class='varop'>||</span>+<a name="line-133"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\r'</span>+<a name="line-134"></a> <span class='layout'>)</span>+<a name="line-135"></a>+<a name="line-136"></a><span class='comment'>-- |</span>+<a name="line-137"></a><span class='comment'>-- test for a legal latin1 XML char</span>+<a name="line-138"></a>+<a name="line-139"></a><a name="isXmlLatin1Char"></a><span class='definition'>isXmlLatin1Char</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-140"></a><span class='definition'>isXmlLatin1Char</span> <span class='varid'>i</span>+<a name="line-141"></a> <span class='keyglyph'>=</span> <span class='varid'>is1ByteXmlChar</span> <span class='varid'>i</span>+<a name="line-142"></a> <span class='varop'>||</span>+<a name="line-143"></a> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>>=</span> <span class='chr'>'\x80'</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='chr'>'\xff'</span><span class='layout'>)</span>+<a name="line-144"></a>+<a name="line-145"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-146"></a>+<a name="line-147"></a><span class='comment'>-- |</span>+<a name="line-148"></a><span class='comment'>-- conversion from Unicode strings (UString) to UTF8 encoded strings.</span>+<a name="line-149"></a>+<a name="line-150"></a><a name="unicodeToUtf8"></a><span class='definition'>unicodeToUtf8</span> <span class='keyglyph'>::</span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>UTF8String</span>+<a name="line-151"></a><span class='definition'>unicodeToUtf8</span> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>unicodeCharToUtf8</span>+<a name="line-152"></a>+<a name="line-153"></a><span class='comment'>-- |</span>+<a name="line-154"></a><span class='comment'>-- conversion from Unicode (Char) to a UTF8 encoded string.</span>+<a name="line-155"></a>+<a name="line-156"></a><a name="unicodeCharToUtf8"></a><span class='definition'>unicodeCharToUtf8</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>UTF8String</span>+<a name="line-157"></a><span class='definition'>unicodeCharToUtf8</span> <span class='varid'>c</span>+<a name="line-158"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x0000007F</span> <span class='comment'>-- 1 byte UTF8 (7 bits)</span>+<a name="line-159"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='varid'>i</span> <span class='keyglyph'>]</span>+<a name="line-160"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0x00000080</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x000007FF</span> <span class='comment'>-- 2 byte UTF8 (5 + 6 bits)</span>+<a name="line-161"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0xC0</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-162"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-163"></a> <span class='keyglyph'>]</span>+<a name="line-164"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0x00000800</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x0000FFFF</span> <span class='comment'>-- 3 byte UTF8 (4 + 6 + 6 bits)</span>+<a name="line-165"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0xE0</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000</span><span class='layout'>)</span>+<a name="line-166"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-167"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-168"></a> <span class='keyglyph'>]</span>+<a name="line-169"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0x00010000</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x001FFFFF</span> <span class='comment'>-- 4 byte UTF8 (3 + 6 + 6 + 6 bits)</span>+<a name="line-170"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0xF0</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40000</span><span class='layout'>)</span>+<a name="line-171"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-172"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-173"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-174"></a> <span class='keyglyph'>]</span>+<a name="line-175"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0x00200000</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x03FFFFFF</span> <span class='comment'>-- 5 byte UTF8 (2 + 6 + 6 + 6 + 6 bits)</span>+<a name="line-176"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0xF8</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000000</span><span class='layout'>)</span>+<a name="line-177"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-178"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-179"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-180"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-181"></a> <span class='keyglyph'>]</span>+<a name="line-182"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='num'>0x04000000</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><=</span> <span class='num'>0x7FFFFFFF</span> <span class='comment'>-- 6 byte UTF8 (1 + 6 + 6 + 6 + 6 + 6 bits)</span>+<a name="line-183"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0xFC</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40000000</span><span class='layout'>)</span>+<a name="line-184"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-185"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-186"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x1000</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-187"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'>`div`</span> <span class='num'>0x40</span><span class='layout'>)</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-188"></a> <span class='layout'>,</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='num'>0x80</span> <span class='varop'>+</span> <span class='varid'>i</span> <span class='varop'>`mod`</span> <span class='num'>0x40</span><span class='layout'>)</span>+<a name="line-189"></a> <span class='keyglyph'>]</span>+<a name="line-190"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='comment'>-- other values not supported</span>+<a name="line-191"></a> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"unicodeCharToUtf8: illegal integer argument "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>i</span><span class='layout'>)</span>+<a name="line-192"></a> <span class='keyword'>where</span>+<a name="line-193"></a> <span class='varid'>i</span> <span class='keyglyph'>=</span> <span class='varid'>fromEnum</span> <span class='varid'>c</span>+<a name="line-194"></a>+<a name="line-195"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-196"></a>+<a name="line-197"></a><span class='comment'>-- |</span>+<a name="line-198"></a><span class='comment'>-- checking for valid XML characters</span>+<a name="line-199"></a>+<a name="line-200"></a><a name="isXmlChar"></a><span class='definition'>isXmlChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-201"></a><span class='definition'>isXmlChar</span> <span class='varid'>c</span>+<a name="line-202"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>+<a name="line-203"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x0009'</span><span class='layout'>,</span> <span class='chr'>'\x000A'</span><span class='layout'>)</span>+<a name="line-204"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x000D'</span><span class='layout'>,</span> <span class='chr'>'\x000D'</span><span class='layout'>)</span>+<a name="line-205"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0020'</span><span class='layout'>,</span> <span class='chr'>'\xD7FF'</span><span class='layout'>)</span>+<a name="line-206"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xE000'</span><span class='layout'>,</span> <span class='chr'>'\xFFFD'</span><span class='layout'>)</span>+<a name="line-207"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x10000'</span><span class='layout'>,</span> <span class='chr'>'\x10FFFF'</span><span class='layout'>)</span>+<a name="line-208"></a> <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'>-- checking for XML space character: \\\n, \\\r, \\\t and \" \"</span>+<a name="line-212"></a>+<a name="line-213"></a><a name="isXmlSpaceChar"></a><span class='definition'>isXmlSpaceChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-214"></a><span class='definition'>isXmlSpaceChar</span> <span class='varid'>c</span>+<a name="line-215"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'\x20'</span><span class='layout'>,</span> <span class='chr'>'\x09'</span><span class='layout'>,</span> <span class='chr'>'\x0D'</span><span class='layout'>,</span> <span class='chr'>'\x0A'</span><span class='keyglyph'>]</span>+<a name="line-216"></a>+<a name="line-217"></a><span class='comment'>-- |</span>+<a name="line-218"></a><span class='comment'>-- checking for XML1.1 space character: additional space 0x85 and 0x2028</span>+<a name="line-219"></a><span class='comment'>--</span>+<a name="line-220"></a><span class='comment'>-- see also : 'isXmlSpaceChar'</span>+<a name="line-221"></a>+<a name="line-222"></a><a name="isXml11SpaceChar"></a><span class='definition'>isXml11SpaceChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-223"></a><span class='definition'>isXml11SpaceChar</span> <span class='varid'>c</span>+<a name="line-224"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'\x20'</span><span class='layout'>,</span> <span class='chr'>'\x09'</span><span class='layout'>,</span> <span class='chr'>'\x0D'</span><span class='layout'>,</span> <span class='chr'>'\x0A'</span><span class='layout'>,</span> <span class='chr'>'\x85'</span><span class='layout'>,</span> <span class='chr'>'\x2028'</span><span class='keyglyph'>]</span>+<a name="line-225"></a>+<a name="line-226"></a><span class='comment'>-- |</span>+<a name="line-227"></a><span class='comment'>-- checking for XML name character</span>+<a name="line-228"></a>+<a name="line-229"></a><a name="isXmlNameChar"></a><span class='definition'>isXmlNameChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-230"></a><span class='definition'>isXmlNameChar</span> <span class='varid'>c</span>+<a name="line-231"></a> <span class='keyglyph'>=</span> <span class='varid'>isXmlLetter</span> <span class='varid'>c</span>+<a name="line-232"></a> <span class='varop'>||</span>+<a name="line-233"></a> <span class='varid'>isXmlDigit</span> <span class='varid'>c</span>+<a name="line-234"></a> <span class='varop'>||</span>+<a name="line-235"></a> <span class='layout'>(</span><span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x2D'</span> <span class='varop'>||</span> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x2E'</span><span class='layout'>)</span> <span class='comment'>-- '-' | '.'</span>+<a name="line-236"></a> <span class='varop'>||</span>+<a name="line-237"></a> <span class='layout'>(</span><span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x3A'</span> <span class='varop'>||</span> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x5F'</span><span class='layout'>)</span> <span class='comment'>-- Letter | ':' | '_'</span>+<a name="line-238"></a> <span class='varop'>||</span>+<a name="line-239"></a> <span class='varid'>isXmlCombiningChar</span> <span class='varid'>c</span>+<a name="line-240"></a> <span class='varop'>||</span>+<a name="line-241"></a> <span class='varid'>isXmlExtender</span> <span class='varid'>c</span>+<a name="line-242"></a>+<a name="line-243"></a><span class='comment'>-- |</span>+<a name="line-244"></a><span class='comment'>-- checking for XML name start character</span>+<a name="line-245"></a><span class='comment'>--</span>+<a name="line-246"></a><span class='comment'>-- see also : 'isXmlNameChar'</span>+<a name="line-247"></a>+<a name="line-248"></a><a name="isXmlNameStartChar"></a><span class='definition'>isXmlNameStartChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-249"></a><span class='definition'>isXmlNameStartChar</span> <span class='varid'>c</span>+<a name="line-250"></a> <span class='keyglyph'>=</span> <span class='varid'>isXmlLetter</span> <span class='varid'>c</span>+<a name="line-251"></a> <span class='varop'>||</span>+<a name="line-252"></a> <span class='layout'>(</span><span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x3A'</span> <span class='varop'>||</span> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'\x5F'</span><span class='layout'>)</span> <span class='comment'>-- Letter | ':' | '_'</span>+<a name="line-253"></a>+<a name="line-254"></a><span class='comment'>-- |</span>+<a name="line-255"></a><span class='comment'>-- checking for XML NCName character: no \":\" allowed</span>+<a name="line-256"></a><span class='comment'>--</span>+<a name="line-257"></a><span class='comment'>-- see also : 'isXmlNameChar'</span>+<a name="line-258"></a>+<a name="line-259"></a><a name="isXmlNCNameChar"></a><span class='definition'>isXmlNCNameChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-260"></a><span class='definition'>isXmlNCNameChar</span> <span class='varid'>c</span>+<a name="line-261"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>/=</span> <span class='chr'>'\x3A'</span>+<a name="line-262"></a> <span class='varop'>&&</span>+<a name="line-263"></a> <span class='varid'>isXmlNameChar</span> <span class='varid'>c</span>+<a name="line-264"></a>+<a name="line-265"></a><span class='comment'>-- |</span>+<a name="line-266"></a><span class='comment'>-- checking for XML NCName start character: no \":\" allowed</span>+<a name="line-267"></a><span class='comment'>--</span>+<a name="line-268"></a><span class='comment'>-- see also : 'isXmlNameChar', 'isXmlNCNameChar'</span>+<a name="line-269"></a>+<a name="line-270"></a><a name="isXmlNCNameStartChar"></a><span class='definition'>isXmlNCNameStartChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-271"></a><span class='definition'>isXmlNCNameStartChar</span> <span class='varid'>c</span>+<a name="line-272"></a> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='varop'>/=</span> <span class='chr'>'\x3A'</span>+<a name="line-273"></a> <span class='varop'>&&</span>+<a name="line-274"></a> <span class='varid'>isXmlNameStartChar</span> <span class='varid'>c</span>+<a name="line-275"></a>+<a name="line-276"></a><span class='comment'>-- |</span>+<a name="line-277"></a><span class='comment'>-- checking for XML public id character</span>+<a name="line-278"></a>+<a name="line-279"></a><a name="isXmlPubidChar"></a><span class='definition'>isXmlPubidChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-280"></a><span class='definition'>isXmlPubidChar</span> <span class='varid'>c</span>+<a name="line-281"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'0'</span><span class='layout'>,</span> <span class='chr'>'9'</span><span class='layout'>)</span>+<a name="line-282"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'A'</span><span class='layout'>,</span> <span class='chr'>'Z'</span><span class='layout'>)</span>+<a name="line-283"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'a'</span><span class='layout'>,</span> <span class='chr'>'z'</span><span class='layout'>)</span>+<a name="line-284"></a> <span class='keyglyph'>]</span>+<a name="line-285"></a> <span class='varop'>||</span>+<a name="line-286"></a> <span class='layout'>(</span> <span class='varid'>c</span> <span class='varop'>`elem`</span> <span class='str'>" \r\n-'()+,./:=?;!*#@$_%"</span> <span class='layout'>)</span>+<a name="line-287"></a>+<a name="line-288"></a><span class='comment'>-- |</span>+<a name="line-289"></a><span class='comment'>-- checking for XML letter</span>+<a name="line-290"></a>+<a name="line-291"></a><a name="isXmlLetter"></a><span class='definition'>isXmlLetter</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-292"></a><span class='definition'>isXmlLetter</span> <span class='varid'>c</span>+<a name="line-293"></a> <span class='keyglyph'>=</span> <span class='varid'>isXmlBaseChar</span> <span class='varid'>c</span>+<a name="line-294"></a> <span class='varop'>||</span>+<a name="line-295"></a> <span class='varid'>isXmlIdeographicChar</span> <span class='varid'>c</span>+<a name="line-296"></a>+<a name="line-297"></a><span class='comment'>-- |</span>+<a name="line-298"></a><span class='comment'>-- checking for XML base charater</span>+<a name="line-299"></a>+<a name="line-300"></a><a name="isXmlBaseChar"></a><span class='definition'>isXmlBaseChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-301"></a><span class='definition'>isXmlBaseChar</span> <span class='varid'>c</span>+<a name="line-302"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>+<a name="line-303"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x0041'</span><span class='layout'>,</span> <span class='chr'>'\x005A'</span><span class='layout'>)</span>+<a name="line-304"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0061'</span><span class='layout'>,</span> <span class='chr'>'\x007A'</span><span class='layout'>)</span>+<a name="line-305"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x00C0'</span><span class='layout'>,</span> <span class='chr'>'\x00D6'</span><span class='layout'>)</span>+<a name="line-306"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x00D8'</span><span class='layout'>,</span> <span class='chr'>'\x00F6'</span><span class='layout'>)</span>+<a name="line-307"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x00F8'</span><span class='layout'>,</span> <span class='chr'>'\x0131'</span><span class='layout'>)</span>+<a name="line-308"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0134'</span><span class='layout'>,</span> <span class='chr'>'\x013E'</span><span class='layout'>)</span>+<a name="line-309"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0141'</span><span class='layout'>,</span> <span class='chr'>'\x0148'</span><span class='layout'>)</span>+<a name="line-310"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x014A'</span><span class='layout'>,</span> <span class='chr'>'\x017E'</span><span class='layout'>)</span>+<a name="line-311"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0180'</span><span class='layout'>,</span> <span class='chr'>'\x01C3'</span><span class='layout'>)</span>+<a name="line-312"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x01CD'</span><span class='layout'>,</span> <span class='chr'>'\x01F0'</span><span class='layout'>)</span>+<a name="line-313"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x01F4'</span><span class='layout'>,</span> <span class='chr'>'\x01F5'</span><span class='layout'>)</span>+<a name="line-314"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x01FA'</span><span class='layout'>,</span> <span class='chr'>'\x0217'</span><span class='layout'>)</span>+<a name="line-315"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0250'</span><span class='layout'>,</span> <span class='chr'>'\x02A8'</span><span class='layout'>)</span>+<a name="line-316"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x02BB'</span><span class='layout'>,</span> <span class='chr'>'\x02C1'</span><span class='layout'>)</span>+<a name="line-317"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0386'</span><span class='layout'>,</span> <span class='chr'>'\x0386'</span><span class='layout'>)</span>+<a name="line-318"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0388'</span><span class='layout'>,</span> <span class='chr'>'\x038A'</span><span class='layout'>)</span>+<a name="line-319"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x038C'</span><span class='layout'>,</span> <span class='chr'>'\x038C'</span><span class='layout'>)</span>+<a name="line-320"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x038E'</span><span class='layout'>,</span> <span class='chr'>'\x03A1'</span><span class='layout'>)</span>+<a name="line-321"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03A3'</span><span class='layout'>,</span> <span class='chr'>'\x03CE'</span><span class='layout'>)</span>+<a name="line-322"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03D0'</span><span class='layout'>,</span> <span class='chr'>'\x03D6'</span><span class='layout'>)</span>+<a name="line-323"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03DA'</span><span class='layout'>,</span> <span class='chr'>'\x03DA'</span><span class='layout'>)</span>+<a name="line-324"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03DC'</span><span class='layout'>,</span> <span class='chr'>'\x03DC'</span><span class='layout'>)</span>+<a name="line-325"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03DE'</span><span class='layout'>,</span> <span class='chr'>'\x03DE'</span><span class='layout'>)</span>+<a name="line-326"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03E0'</span><span class='layout'>,</span> <span class='chr'>'\x03E0'</span><span class='layout'>)</span>+<a name="line-327"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x03E2'</span><span class='layout'>,</span> <span class='chr'>'\x03F3'</span><span class='layout'>)</span>+<a name="line-328"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0401'</span><span class='layout'>,</span> <span class='chr'>'\x040C'</span><span class='layout'>)</span>+<a name="line-329"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x040E'</span><span class='layout'>,</span> <span class='chr'>'\x044F'</span><span class='layout'>)</span>+<a name="line-330"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0451'</span><span class='layout'>,</span> <span class='chr'>'\x045C'</span><span class='layout'>)</span>+<a name="line-331"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x045E'</span><span class='layout'>,</span> <span class='chr'>'\x0481'</span><span class='layout'>)</span>+<a name="line-332"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0490'</span><span class='layout'>,</span> <span class='chr'>'\x04C4'</span><span class='layout'>)</span>+<a name="line-333"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x04C7'</span><span class='layout'>,</span> <span class='chr'>'\x04C8'</span><span class='layout'>)</span>+<a name="line-334"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x04CB'</span><span class='layout'>,</span> <span class='chr'>'\x04CC'</span><span class='layout'>)</span>+<a name="line-335"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x04D0'</span><span class='layout'>,</span> <span class='chr'>'\x04EB'</span><span class='layout'>)</span>+<a name="line-336"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x04EE'</span><span class='layout'>,</span> <span class='chr'>'\x04F5'</span><span class='layout'>)</span>+<a name="line-337"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x04F8'</span><span class='layout'>,</span> <span class='chr'>'\x04F9'</span><span class='layout'>)</span>+<a name="line-338"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0531'</span><span class='layout'>,</span> <span class='chr'>'\x0556'</span><span class='layout'>)</span>+<a name="line-339"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0559'</span><span class='layout'>,</span> <span class='chr'>'\x0559'</span><span class='layout'>)</span>+<a name="line-340"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0561'</span><span class='layout'>,</span> <span class='chr'>'\x0586'</span><span class='layout'>)</span>+<a name="line-341"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05D0'</span><span class='layout'>,</span> <span class='chr'>'\x05EA'</span><span class='layout'>)</span>+<a name="line-342"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05F0'</span><span class='layout'>,</span> <span class='chr'>'\x05F2'</span><span class='layout'>)</span>+<a name="line-343"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0621'</span><span class='layout'>,</span> <span class='chr'>'\x063A'</span><span class='layout'>)</span>+<a name="line-344"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0641'</span><span class='layout'>,</span> <span class='chr'>'\x064A'</span><span class='layout'>)</span>+<a name="line-345"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0671'</span><span class='layout'>,</span> <span class='chr'>'\x06B7'</span><span class='layout'>)</span>+<a name="line-346"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06BA'</span><span class='layout'>,</span> <span class='chr'>'\x06BE'</span><span class='layout'>)</span>+<a name="line-347"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06C0'</span><span class='layout'>,</span> <span class='chr'>'\x06CE'</span><span class='layout'>)</span>+<a name="line-348"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06D0'</span><span class='layout'>,</span> <span class='chr'>'\x06D3'</span><span class='layout'>)</span>+<a name="line-349"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06D5'</span><span class='layout'>,</span> <span class='chr'>'\x06D5'</span><span class='layout'>)</span>+<a name="line-350"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06E5'</span><span class='layout'>,</span> <span class='chr'>'\x06E6'</span><span class='layout'>)</span>+<a name="line-351"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0905'</span><span class='layout'>,</span> <span class='chr'>'\x0939'</span><span class='layout'>)</span>+<a name="line-352"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x093D'</span><span class='layout'>,</span> <span class='chr'>'\x093D'</span><span class='layout'>)</span>+<a name="line-353"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0958'</span><span class='layout'>,</span> <span class='chr'>'\x0961'</span><span class='layout'>)</span>+<a name="line-354"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0985'</span><span class='layout'>,</span> <span class='chr'>'\x098C'</span><span class='layout'>)</span>+<a name="line-355"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x098F'</span><span class='layout'>,</span> <span class='chr'>'\x0990'</span><span class='layout'>)</span>+<a name="line-356"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0993'</span><span class='layout'>,</span> <span class='chr'>'\x09A8'</span><span class='layout'>)</span>+<a name="line-357"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09AA'</span><span class='layout'>,</span> <span class='chr'>'\x09B0'</span><span class='layout'>)</span>+<a name="line-358"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09B2'</span><span class='layout'>,</span> <span class='chr'>'\x09B2'</span><span class='layout'>)</span>+<a name="line-359"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09B6'</span><span class='layout'>,</span> <span class='chr'>'\x09B9'</span><span class='layout'>)</span>+<a name="line-360"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09DC'</span><span class='layout'>,</span> <span class='chr'>'\x09DD'</span><span class='layout'>)</span>+<a name="line-361"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09DF'</span><span class='layout'>,</span> <span class='chr'>'\x09E1'</span><span class='layout'>)</span>+<a name="line-362"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09F0'</span><span class='layout'>,</span> <span class='chr'>'\x09F1'</span><span class='layout'>)</span>+<a name="line-363"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A05'</span><span class='layout'>,</span> <span class='chr'>'\x0A0A'</span><span class='layout'>)</span>+<a name="line-364"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A0F'</span><span class='layout'>,</span> <span class='chr'>'\x0A10'</span><span class='layout'>)</span>+<a name="line-365"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A13'</span><span class='layout'>,</span> <span class='chr'>'\x0A28'</span><span class='layout'>)</span>+<a name="line-366"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A2A'</span><span class='layout'>,</span> <span class='chr'>'\x0A30'</span><span class='layout'>)</span>+<a name="line-367"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A32'</span><span class='layout'>,</span> <span class='chr'>'\x0A33'</span><span class='layout'>)</span>+<a name="line-368"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A35'</span><span class='layout'>,</span> <span class='chr'>'\x0A36'</span><span class='layout'>)</span>+<a name="line-369"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A38'</span><span class='layout'>,</span> <span class='chr'>'\x0A39'</span><span class='layout'>)</span>+<a name="line-370"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A59'</span><span class='layout'>,</span> <span class='chr'>'\x0A5C'</span><span class='layout'>)</span>+<a name="line-371"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A5E'</span><span class='layout'>,</span> <span class='chr'>'\x0A5E'</span><span class='layout'>)</span>+<a name="line-372"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A72'</span><span class='layout'>,</span> <span class='chr'>'\x0A74'</span><span class='layout'>)</span>+<a name="line-373"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A85'</span><span class='layout'>,</span> <span class='chr'>'\x0A8B'</span><span class='layout'>)</span>+<a name="line-374"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A8D'</span><span class='layout'>,</span> <span class='chr'>'\x0A8D'</span><span class='layout'>)</span>+<a name="line-375"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A8F'</span><span class='layout'>,</span> <span class='chr'>'\x0A91'</span><span class='layout'>)</span>+<a name="line-376"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A93'</span><span class='layout'>,</span> <span class='chr'>'\x0AA8'</span><span class='layout'>)</span>+<a name="line-377"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AAA'</span><span class='layout'>,</span> <span class='chr'>'\x0AB0'</span><span class='layout'>)</span>+<a name="line-378"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AB2'</span><span class='layout'>,</span> <span class='chr'>'\x0AB3'</span><span class='layout'>)</span>+<a name="line-379"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AB5'</span><span class='layout'>,</span> <span class='chr'>'\x0AB9'</span><span class='layout'>)</span>+<a name="line-380"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0ABD'</span><span class='layout'>,</span> <span class='chr'>'\x0ABD'</span><span class='layout'>)</span>+<a name="line-381"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AE0'</span><span class='layout'>,</span> <span class='chr'>'\x0AE0'</span><span class='layout'>)</span>+<a name="line-382"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B05'</span><span class='layout'>,</span> <span class='chr'>'\x0B0C'</span><span class='layout'>)</span>+<a name="line-383"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B0F'</span><span class='layout'>,</span> <span class='chr'>'\x0B10'</span><span class='layout'>)</span>+<a name="line-384"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B13'</span><span class='layout'>,</span> <span class='chr'>'\x0B28'</span><span class='layout'>)</span>+<a name="line-385"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B2A'</span><span class='layout'>,</span> <span class='chr'>'\x0B30'</span><span class='layout'>)</span>+<a name="line-386"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B32'</span><span class='layout'>,</span> <span class='chr'>'\x0B33'</span><span class='layout'>)</span>+<a name="line-387"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B36'</span><span class='layout'>,</span> <span class='chr'>'\x0B39'</span><span class='layout'>)</span>+<a name="line-388"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B3D'</span><span class='layout'>,</span> <span class='chr'>'\x0B3D'</span><span class='layout'>)</span>+<a name="line-389"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B5C'</span><span class='layout'>,</span> <span class='chr'>'\x0B5D'</span><span class='layout'>)</span>+<a name="line-390"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B5F'</span><span class='layout'>,</span> <span class='chr'>'\x0B61'</span><span class='layout'>)</span>+<a name="line-391"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B85'</span><span class='layout'>,</span> <span class='chr'>'\x0B8A'</span><span class='layout'>)</span>+<a name="line-392"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B8E'</span><span class='layout'>,</span> <span class='chr'>'\x0B90'</span><span class='layout'>)</span>+<a name="line-393"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B92'</span><span class='layout'>,</span> <span class='chr'>'\x0B95'</span><span class='layout'>)</span>+<a name="line-394"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B99'</span><span class='layout'>,</span> <span class='chr'>'\x0B9A'</span><span class='layout'>)</span>+<a name="line-395"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B9C'</span><span class='layout'>,</span> <span class='chr'>'\x0B9C'</span><span class='layout'>)</span>+<a name="line-396"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B9E'</span><span class='layout'>,</span> <span class='chr'>'\x0B9F'</span><span class='layout'>)</span>+<a name="line-397"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BA3'</span><span class='layout'>,</span> <span class='chr'>'\x0BA4'</span><span class='layout'>)</span>+<a name="line-398"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BA8'</span><span class='layout'>,</span> <span class='chr'>'\x0BAA'</span><span class='layout'>)</span>+<a name="line-399"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BAE'</span><span class='layout'>,</span> <span class='chr'>'\x0BB5'</span><span class='layout'>)</span>+<a name="line-400"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BB7'</span><span class='layout'>,</span> <span class='chr'>'\x0BB9'</span><span class='layout'>)</span>+<a name="line-401"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C05'</span><span class='layout'>,</span> <span class='chr'>'\x0C0C'</span><span class='layout'>)</span>+<a name="line-402"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C0E'</span><span class='layout'>,</span> <span class='chr'>'\x0C10'</span><span class='layout'>)</span>+<a name="line-403"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C12'</span><span class='layout'>,</span> <span class='chr'>'\x0C28'</span><span class='layout'>)</span>+<a name="line-404"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C2A'</span><span class='layout'>,</span> <span class='chr'>'\x0C33'</span><span class='layout'>)</span>+<a name="line-405"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C35'</span><span class='layout'>,</span> <span class='chr'>'\x0C39'</span><span class='layout'>)</span>+<a name="line-406"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C60'</span><span class='layout'>,</span> <span class='chr'>'\x0C61'</span><span class='layout'>)</span>+<a name="line-407"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C85'</span><span class='layout'>,</span> <span class='chr'>'\x0C8C'</span><span class='layout'>)</span>+<a name="line-408"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C8E'</span><span class='layout'>,</span> <span class='chr'>'\x0C90'</span><span class='layout'>)</span>+<a name="line-409"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C92'</span><span class='layout'>,</span> <span class='chr'>'\x0CA8'</span><span class='layout'>)</span>+<a name="line-410"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CAA'</span><span class='layout'>,</span> <span class='chr'>'\x0CB3'</span><span class='layout'>)</span>+<a name="line-411"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CB5'</span><span class='layout'>,</span> <span class='chr'>'\x0CB9'</span><span class='layout'>)</span>+<a name="line-412"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CDE'</span><span class='layout'>,</span> <span class='chr'>'\x0CDE'</span><span class='layout'>)</span>+<a name="line-413"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CE0'</span><span class='layout'>,</span> <span class='chr'>'\x0CE1'</span><span class='layout'>)</span>+<a name="line-414"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D05'</span><span class='layout'>,</span> <span class='chr'>'\x0D0C'</span><span class='layout'>)</span>+<a name="line-415"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D0E'</span><span class='layout'>,</span> <span class='chr'>'\x0D10'</span><span class='layout'>)</span>+<a name="line-416"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D12'</span><span class='layout'>,</span> <span class='chr'>'\x0D28'</span><span class='layout'>)</span>+<a name="line-417"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D2A'</span><span class='layout'>,</span> <span class='chr'>'\x0D39'</span><span class='layout'>)</span>+<a name="line-418"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D60'</span><span class='layout'>,</span> <span class='chr'>'\x0D61'</span><span class='layout'>)</span>+<a name="line-419"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E01'</span><span class='layout'>,</span> <span class='chr'>'\x0E2E'</span><span class='layout'>)</span>+<a name="line-420"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E30'</span><span class='layout'>,</span> <span class='chr'>'\x0E30'</span><span class='layout'>)</span>+<a name="line-421"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E32'</span><span class='layout'>,</span> <span class='chr'>'\x0E33'</span><span class='layout'>)</span>+<a name="line-422"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E40'</span><span class='layout'>,</span> <span class='chr'>'\x0E45'</span><span class='layout'>)</span>+<a name="line-423"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E81'</span><span class='layout'>,</span> <span class='chr'>'\x0E82'</span><span class='layout'>)</span>+<a name="line-424"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E84'</span><span class='layout'>,</span> <span class='chr'>'\x0E84'</span><span class='layout'>)</span>+<a name="line-425"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E87'</span><span class='layout'>,</span> <span class='chr'>'\x0E88'</span><span class='layout'>)</span>+<a name="line-426"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E8A'</span><span class='layout'>,</span> <span class='chr'>'\x0E8A'</span><span class='layout'>)</span>+<a name="line-427"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E8D'</span><span class='layout'>,</span> <span class='chr'>'\x0E8D'</span><span class='layout'>)</span>+<a name="line-428"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E94'</span><span class='layout'>,</span> <span class='chr'>'\x0E97'</span><span class='layout'>)</span>+<a name="line-429"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E99'</span><span class='layout'>,</span> <span class='chr'>'\x0E9F'</span><span class='layout'>)</span>+<a name="line-430"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EA1'</span><span class='layout'>,</span> <span class='chr'>'\x0EA3'</span><span class='layout'>)</span>+<a name="line-431"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EA5'</span><span class='layout'>,</span> <span class='chr'>'\x0EA5'</span><span class='layout'>)</span>+<a name="line-432"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EA7'</span><span class='layout'>,</span> <span class='chr'>'\x0EA7'</span><span class='layout'>)</span>+<a name="line-433"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EAA'</span><span class='layout'>,</span> <span class='chr'>'\x0EAB'</span><span class='layout'>)</span>+<a name="line-434"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EAD'</span><span class='layout'>,</span> <span class='chr'>'\x0EAE'</span><span class='layout'>)</span>+<a name="line-435"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EB0'</span><span class='layout'>,</span> <span class='chr'>'\x0EB0'</span><span class='layout'>)</span>+<a name="line-436"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EB2'</span><span class='layout'>,</span> <span class='chr'>'\x0EB3'</span><span class='layout'>)</span>+<a name="line-437"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EBD'</span><span class='layout'>,</span> <span class='chr'>'\x0EBD'</span><span class='layout'>)</span>+<a name="line-438"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EC0'</span><span class='layout'>,</span> <span class='chr'>'\x0EC4'</span><span class='layout'>)</span>+<a name="line-439"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F40'</span><span class='layout'>,</span> <span class='chr'>'\x0F47'</span><span class='layout'>)</span>+<a name="line-440"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F49'</span><span class='layout'>,</span> <span class='chr'>'\x0F69'</span><span class='layout'>)</span>+<a name="line-441"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x10A0'</span><span class='layout'>,</span> <span class='chr'>'\x10C5'</span><span class='layout'>)</span>+<a name="line-442"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x10D0'</span><span class='layout'>,</span> <span class='chr'>'\x10F6'</span><span class='layout'>)</span>+<a name="line-443"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1100'</span><span class='layout'>,</span> <span class='chr'>'\x1100'</span><span class='layout'>)</span>+<a name="line-444"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1102'</span><span class='layout'>,</span> <span class='chr'>'\x1103'</span><span class='layout'>)</span>+<a name="line-445"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1105'</span><span class='layout'>,</span> <span class='chr'>'\x1107'</span><span class='layout'>)</span>+<a name="line-446"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1109'</span><span class='layout'>,</span> <span class='chr'>'\x1109'</span><span class='layout'>)</span>+<a name="line-447"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x110B'</span><span class='layout'>,</span> <span class='chr'>'\x110C'</span><span class='layout'>)</span>+<a name="line-448"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x110E'</span><span class='layout'>,</span> <span class='chr'>'\x1112'</span><span class='layout'>)</span>+<a name="line-449"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x113C'</span><span class='layout'>,</span> <span class='chr'>'\x113C'</span><span class='layout'>)</span>+<a name="line-450"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x113E'</span><span class='layout'>,</span> <span class='chr'>'\x113E'</span><span class='layout'>)</span>+<a name="line-451"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1140'</span><span class='layout'>,</span> <span class='chr'>'\x1140'</span><span class='layout'>)</span>+<a name="line-452"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x114C'</span><span class='layout'>,</span> <span class='chr'>'\x114C'</span><span class='layout'>)</span>+<a name="line-453"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x114E'</span><span class='layout'>,</span> <span class='chr'>'\x114E'</span><span class='layout'>)</span>+<a name="line-454"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1150'</span><span class='layout'>,</span> <span class='chr'>'\x1150'</span><span class='layout'>)</span>+<a name="line-455"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1154'</span><span class='layout'>,</span> <span class='chr'>'\x1155'</span><span class='layout'>)</span>+<a name="line-456"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1159'</span><span class='layout'>,</span> <span class='chr'>'\x1159'</span><span class='layout'>)</span>+<a name="line-457"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x115F'</span><span class='layout'>,</span> <span class='chr'>'\x1161'</span><span class='layout'>)</span>+<a name="line-458"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1163'</span><span class='layout'>,</span> <span class='chr'>'\x1163'</span><span class='layout'>)</span>+<a name="line-459"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1165'</span><span class='layout'>,</span> <span class='chr'>'\x1165'</span><span class='layout'>)</span>+<a name="line-460"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1167'</span><span class='layout'>,</span> <span class='chr'>'\x1167'</span><span class='layout'>)</span>+<a name="line-461"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1169'</span><span class='layout'>,</span> <span class='chr'>'\x1169'</span><span class='layout'>)</span>+<a name="line-462"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x116D'</span><span class='layout'>,</span> <span class='chr'>'\x116E'</span><span class='layout'>)</span>+<a name="line-463"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1172'</span><span class='layout'>,</span> <span class='chr'>'\x1173'</span><span class='layout'>)</span>+<a name="line-464"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1175'</span><span class='layout'>,</span> <span class='chr'>'\x1175'</span><span class='layout'>)</span>+<a name="line-465"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x119E'</span><span class='layout'>,</span> <span class='chr'>'\x119E'</span><span class='layout'>)</span>+<a name="line-466"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11A8'</span><span class='layout'>,</span> <span class='chr'>'\x11A8'</span><span class='layout'>)</span>+<a name="line-467"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11AB'</span><span class='layout'>,</span> <span class='chr'>'\x11AB'</span><span class='layout'>)</span>+<a name="line-468"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11AE'</span><span class='layout'>,</span> <span class='chr'>'\x11AF'</span><span class='layout'>)</span>+<a name="line-469"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11B7'</span><span class='layout'>,</span> <span class='chr'>'\x11B8'</span><span class='layout'>)</span>+<a name="line-470"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11BA'</span><span class='layout'>,</span> <span class='chr'>'\x11BA'</span><span class='layout'>)</span>+<a name="line-471"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11BC'</span><span class='layout'>,</span> <span class='chr'>'\x11C2'</span><span class='layout'>)</span>+<a name="line-472"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11EB'</span><span class='layout'>,</span> <span class='chr'>'\x11EB'</span><span class='layout'>)</span>+<a name="line-473"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11F0'</span><span class='layout'>,</span> <span class='chr'>'\x11F0'</span><span class='layout'>)</span>+<a name="line-474"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x11F9'</span><span class='layout'>,</span> <span class='chr'>'\x11F9'</span><span class='layout'>)</span>+<a name="line-475"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1E00'</span><span class='layout'>,</span> <span class='chr'>'\x1E9B'</span><span class='layout'>)</span>+<a name="line-476"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1EA0'</span><span class='layout'>,</span> <span class='chr'>'\x1EF9'</span><span class='layout'>)</span>+<a name="line-477"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F00'</span><span class='layout'>,</span> <span class='chr'>'\x1F15'</span><span class='layout'>)</span>+<a name="line-478"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F18'</span><span class='layout'>,</span> <span class='chr'>'\x1F1D'</span><span class='layout'>)</span>+<a name="line-479"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F20'</span><span class='layout'>,</span> <span class='chr'>'\x1F45'</span><span class='layout'>)</span>+<a name="line-480"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F48'</span><span class='layout'>,</span> <span class='chr'>'\x1F4D'</span><span class='layout'>)</span>+<a name="line-481"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F50'</span><span class='layout'>,</span> <span class='chr'>'\x1F57'</span><span class='layout'>)</span>+<a name="line-482"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F59'</span><span class='layout'>,</span> <span class='chr'>'\x1F59'</span><span class='layout'>)</span>+<a name="line-483"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F5B'</span><span class='layout'>,</span> <span class='chr'>'\x1F5B'</span><span class='layout'>)</span>+<a name="line-484"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F5D'</span><span class='layout'>,</span> <span class='chr'>'\x1F5D'</span><span class='layout'>)</span>+<a name="line-485"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F5F'</span><span class='layout'>,</span> <span class='chr'>'\x1F7D'</span><span class='layout'>)</span>+<a name="line-486"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1F80'</span><span class='layout'>,</span> <span class='chr'>'\x1FB4'</span><span class='layout'>)</span>+<a name="line-487"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FB6'</span><span class='layout'>,</span> <span class='chr'>'\x1FBC'</span><span class='layout'>)</span>+<a name="line-488"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FBE'</span><span class='layout'>,</span> <span class='chr'>'\x1FBE'</span><span class='layout'>)</span>+<a name="line-489"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FC2'</span><span class='layout'>,</span> <span class='chr'>'\x1FC4'</span><span class='layout'>)</span>+<a name="line-490"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FC6'</span><span class='layout'>,</span> <span class='chr'>'\x1FCC'</span><span class='layout'>)</span>+<a name="line-491"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FD0'</span><span class='layout'>,</span> <span class='chr'>'\x1FD3'</span><span class='layout'>)</span>+<a name="line-492"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FD6'</span><span class='layout'>,</span> <span class='chr'>'\x1FDB'</span><span class='layout'>)</span>+<a name="line-493"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FE0'</span><span class='layout'>,</span> <span class='chr'>'\x1FEC'</span><span class='layout'>)</span>+<a name="line-494"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FF2'</span><span class='layout'>,</span> <span class='chr'>'\x1FF4'</span><span class='layout'>)</span>+<a name="line-495"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FF6'</span><span class='layout'>,</span> <span class='chr'>'\x1FFC'</span><span class='layout'>)</span>+<a name="line-496"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x2126'</span><span class='layout'>,</span> <span class='chr'>'\x2126'</span><span class='layout'>)</span>+<a name="line-497"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x212A'</span><span class='layout'>,</span> <span class='chr'>'\x212B'</span><span class='layout'>)</span>+<a name="line-498"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x212E'</span><span class='layout'>,</span> <span class='chr'>'\x212E'</span><span class='layout'>)</span>+<a name="line-499"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x2180'</span><span class='layout'>,</span> <span class='chr'>'\x2182'</span><span class='layout'>)</span>+<a name="line-500"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3041'</span><span class='layout'>,</span> <span class='chr'>'\x3094'</span><span class='layout'>)</span>+<a name="line-501"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x30A1'</span><span class='layout'>,</span> <span class='chr'>'\x30FA'</span><span class='layout'>)</span>+<a name="line-502"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3105'</span><span class='layout'>,</span> <span class='chr'>'\x312C'</span><span class='layout'>)</span>+<a name="line-503"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xAC00'</span><span class='layout'>,</span> <span class='chr'>'\xD7A3'</span><span class='layout'>)</span>+<a name="line-504"></a> <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'>-- checking for XML ideographic charater</span>+<a name="line-508"></a>+<a name="line-509"></a><a name="isXmlIdeographicChar"></a><span class='definition'>isXmlIdeographicChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-510"></a><span class='definition'>isXmlIdeographicChar</span> <span class='varid'>c</span>+<a name="line-511"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>+<a name="line-512"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x3007'</span><span class='layout'>,</span> <span class='chr'>'\x3007'</span><span class='layout'>)</span>+<a name="line-513"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3021'</span><span class='layout'>,</span> <span class='chr'>'\x3029'</span><span class='layout'>)</span>+<a name="line-514"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x4E00'</span><span class='layout'>,</span> <span class='chr'>'\x9FA5'</span><span class='layout'>)</span>+<a name="line-515"></a> <span class='keyglyph'>]</span>+<a name="line-516"></a>+<a name="line-517"></a><span class='comment'>-- |</span>+<a name="line-518"></a><span class='comment'>-- checking for XML combining charater</span>+<a name="line-519"></a>+<a name="line-520"></a><a name="isXmlCombiningChar"></a><span class='definition'>isXmlCombiningChar</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-521"></a><span class='definition'>isXmlCombiningChar</span> <span class='varid'>c</span>+<a name="line-522"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>+<a name="line-523"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x0300'</span><span class='layout'>,</span> <span class='chr'>'\x0345'</span><span class='layout'>)</span>+<a name="line-524"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0360'</span><span class='layout'>,</span> <span class='chr'>'\x0361'</span><span class='layout'>)</span>+<a name="line-525"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0483'</span><span class='layout'>,</span> <span class='chr'>'\x0486'</span><span class='layout'>)</span>+<a name="line-526"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0591'</span><span class='layout'>,</span> <span class='chr'>'\x05A1'</span><span class='layout'>)</span>+<a name="line-527"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05A3'</span><span class='layout'>,</span> <span class='chr'>'\x05B9'</span><span class='layout'>)</span>+<a name="line-528"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05BB'</span><span class='layout'>,</span> <span class='chr'>'\x05BD'</span><span class='layout'>)</span>+<a name="line-529"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05BF'</span><span class='layout'>,</span> <span class='chr'>'\x05BF'</span><span class='layout'>)</span>+<a name="line-530"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05C1'</span><span class='layout'>,</span> <span class='chr'>'\x05C2'</span><span class='layout'>)</span>+<a name="line-531"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x05C4'</span><span class='layout'>,</span> <span class='chr'>'\x05C4'</span><span class='layout'>)</span>+<a name="line-532"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x064B'</span><span class='layout'>,</span> <span class='chr'>'\x0652'</span><span class='layout'>)</span>+<a name="line-533"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0670'</span><span class='layout'>,</span> <span class='chr'>'\x0670'</span><span class='layout'>)</span>+<a name="line-534"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06D6'</span><span class='layout'>,</span> <span class='chr'>'\x06DC'</span><span class='layout'>)</span>+<a name="line-535"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06DD'</span><span class='layout'>,</span> <span class='chr'>'\x06DF'</span><span class='layout'>)</span>+<a name="line-536"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06E0'</span><span class='layout'>,</span> <span class='chr'>'\x06E4'</span><span class='layout'>)</span>+<a name="line-537"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06E7'</span><span class='layout'>,</span> <span class='chr'>'\x06E8'</span><span class='layout'>)</span>+<a name="line-538"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06EA'</span><span class='layout'>,</span> <span class='chr'>'\x06ED'</span><span class='layout'>)</span>+<a name="line-539"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0901'</span><span class='layout'>,</span> <span class='chr'>'\x0903'</span><span class='layout'>)</span>+<a name="line-540"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x093C'</span><span class='layout'>,</span> <span class='chr'>'\x093C'</span><span class='layout'>)</span>+<a name="line-541"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x093E'</span><span class='layout'>,</span> <span class='chr'>'\x094C'</span><span class='layout'>)</span>+<a name="line-542"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x094D'</span><span class='layout'>,</span> <span class='chr'>'\x094D'</span><span class='layout'>)</span>+<a name="line-543"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0951'</span><span class='layout'>,</span> <span class='chr'>'\x0954'</span><span class='layout'>)</span>+<a name="line-544"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0962'</span><span class='layout'>,</span> <span class='chr'>'\x0963'</span><span class='layout'>)</span>+<a name="line-545"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0981'</span><span class='layout'>,</span> <span class='chr'>'\x0983'</span><span class='layout'>)</span>+<a name="line-546"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09BC'</span><span class='layout'>,</span> <span class='chr'>'\x09BC'</span><span class='layout'>)</span>+<a name="line-547"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09BE'</span><span class='layout'>,</span> <span class='chr'>'\x09BE'</span><span class='layout'>)</span>+<a name="line-548"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09BF'</span><span class='layout'>,</span> <span class='chr'>'\x09BF'</span><span class='layout'>)</span>+<a name="line-549"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09C0'</span><span class='layout'>,</span> <span class='chr'>'\x09C4'</span><span class='layout'>)</span>+<a name="line-550"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09C7'</span><span class='layout'>,</span> <span class='chr'>'\x09C8'</span><span class='layout'>)</span>+<a name="line-551"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09CB'</span><span class='layout'>,</span> <span class='chr'>'\x09CD'</span><span class='layout'>)</span>+<a name="line-552"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09D7'</span><span class='layout'>,</span> <span class='chr'>'\x09D7'</span><span class='layout'>)</span>+<a name="line-553"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09E2'</span><span class='layout'>,</span> <span class='chr'>'\x09E3'</span><span class='layout'>)</span>+<a name="line-554"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A02'</span><span class='layout'>,</span> <span class='chr'>'\x0A02'</span><span class='layout'>)</span>+<a name="line-555"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A3C'</span><span class='layout'>,</span> <span class='chr'>'\x0A3C'</span><span class='layout'>)</span>+<a name="line-556"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A3E'</span><span class='layout'>,</span> <span class='chr'>'\x0A3E'</span><span class='layout'>)</span>+<a name="line-557"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A3F'</span><span class='layout'>,</span> <span class='chr'>'\x0A3F'</span><span class='layout'>)</span>+<a name="line-558"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A40'</span><span class='layout'>,</span> <span class='chr'>'\x0A42'</span><span class='layout'>)</span>+<a name="line-559"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A47'</span><span class='layout'>,</span> <span class='chr'>'\x0A48'</span><span class='layout'>)</span>+<a name="line-560"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A4B'</span><span class='layout'>,</span> <span class='chr'>'\x0A4D'</span><span class='layout'>)</span>+<a name="line-561"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A70'</span><span class='layout'>,</span> <span class='chr'>'\x0A71'</span><span class='layout'>)</span>+<a name="line-562"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A81'</span><span class='layout'>,</span> <span class='chr'>'\x0A83'</span><span class='layout'>)</span>+<a name="line-563"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0ABC'</span><span class='layout'>,</span> <span class='chr'>'\x0ABC'</span><span class='layout'>)</span>+<a name="line-564"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0ABE'</span><span class='layout'>,</span> <span class='chr'>'\x0AC5'</span><span class='layout'>)</span>+<a name="line-565"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AC7'</span><span class='layout'>,</span> <span class='chr'>'\x0AC9'</span><span class='layout'>)</span>+<a name="line-566"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0ACB'</span><span class='layout'>,</span> <span class='chr'>'\x0ACD'</span><span class='layout'>)</span>+<a name="line-567"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B01'</span><span class='layout'>,</span> <span class='chr'>'\x0B03'</span><span class='layout'>)</span>+<a name="line-568"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B3C'</span><span class='layout'>,</span> <span class='chr'>'\x0B3C'</span><span class='layout'>)</span>+<a name="line-569"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B3E'</span><span class='layout'>,</span> <span class='chr'>'\x0B43'</span><span class='layout'>)</span>+<a name="line-570"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B47'</span><span class='layout'>,</span> <span class='chr'>'\x0B48'</span><span class='layout'>)</span>+<a name="line-571"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B4B'</span><span class='layout'>,</span> <span class='chr'>'\x0B4D'</span><span class='layout'>)</span>+<a name="line-572"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B56'</span><span class='layout'>,</span> <span class='chr'>'\x0B57'</span><span class='layout'>)</span>+<a name="line-573"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B82'</span><span class='layout'>,</span> <span class='chr'>'\x0B83'</span><span class='layout'>)</span>+<a name="line-574"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BBE'</span><span class='layout'>,</span> <span class='chr'>'\x0BC2'</span><span class='layout'>)</span>+<a name="line-575"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BC6'</span><span class='layout'>,</span> <span class='chr'>'\x0BC8'</span><span class='layout'>)</span>+<a name="line-576"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BCA'</span><span class='layout'>,</span> <span class='chr'>'\x0BCD'</span><span class='layout'>)</span>+<a name="line-577"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BD7'</span><span class='layout'>,</span> <span class='chr'>'\x0BD7'</span><span class='layout'>)</span>+<a name="line-578"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C01'</span><span class='layout'>,</span> <span class='chr'>'\x0C03'</span><span class='layout'>)</span>+<a name="line-579"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C3E'</span><span class='layout'>,</span> <span class='chr'>'\x0C44'</span><span class='layout'>)</span>+<a name="line-580"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C46'</span><span class='layout'>,</span> <span class='chr'>'\x0C48'</span><span class='layout'>)</span>+<a name="line-581"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C4A'</span><span class='layout'>,</span> <span class='chr'>'\x0C4D'</span><span class='layout'>)</span>+<a name="line-582"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C55'</span><span class='layout'>,</span> <span class='chr'>'\x0C56'</span><span class='layout'>)</span>+<a name="line-583"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C82'</span><span class='layout'>,</span> <span class='chr'>'\x0C83'</span><span class='layout'>)</span>+<a name="line-584"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CBE'</span><span class='layout'>,</span> <span class='chr'>'\x0CC4'</span><span class='layout'>)</span>+<a name="line-585"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CC6'</span><span class='layout'>,</span> <span class='chr'>'\x0CC8'</span><span class='layout'>)</span>+<a name="line-586"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CCA'</span><span class='layout'>,</span> <span class='chr'>'\x0CCD'</span><span class='layout'>)</span>+<a name="line-587"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CD5'</span><span class='layout'>,</span> <span class='chr'>'\x0CD6'</span><span class='layout'>)</span>+<a name="line-588"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D02'</span><span class='layout'>,</span> <span class='chr'>'\x0D03'</span><span class='layout'>)</span>+<a name="line-589"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D3E'</span><span class='layout'>,</span> <span class='chr'>'\x0D43'</span><span class='layout'>)</span>+<a name="line-590"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D46'</span><span class='layout'>,</span> <span class='chr'>'\x0D48'</span><span class='layout'>)</span>+<a name="line-591"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D4A'</span><span class='layout'>,</span> <span class='chr'>'\x0D4D'</span><span class='layout'>)</span>+<a name="line-592"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D57'</span><span class='layout'>,</span> <span class='chr'>'\x0D57'</span><span class='layout'>)</span>+<a name="line-593"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E31'</span><span class='layout'>,</span> <span class='chr'>'\x0E31'</span><span class='layout'>)</span>+<a name="line-594"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E34'</span><span class='layout'>,</span> <span class='chr'>'\x0E3A'</span><span class='layout'>)</span>+<a name="line-595"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E47'</span><span class='layout'>,</span> <span class='chr'>'\x0E4E'</span><span class='layout'>)</span>+<a name="line-596"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EB1'</span><span class='layout'>,</span> <span class='chr'>'\x0EB1'</span><span class='layout'>)</span>+<a name="line-597"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EB4'</span><span class='layout'>,</span> <span class='chr'>'\x0EB9'</span><span class='layout'>)</span>+<a name="line-598"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EBB'</span><span class='layout'>,</span> <span class='chr'>'\x0EBC'</span><span class='layout'>)</span>+<a name="line-599"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EC8'</span><span class='layout'>,</span> <span class='chr'>'\x0ECD'</span><span class='layout'>)</span>+<a name="line-600"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F18'</span><span class='layout'>,</span> <span class='chr'>'\x0F19'</span><span class='layout'>)</span>+<a name="line-601"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F35'</span><span class='layout'>,</span> <span class='chr'>'\x0F35'</span><span class='layout'>)</span>+<a name="line-602"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F37'</span><span class='layout'>,</span> <span class='chr'>'\x0F37'</span><span class='layout'>)</span>+<a name="line-603"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F39'</span><span class='layout'>,</span> <span class='chr'>'\x0F39'</span><span class='layout'>)</span>+<a name="line-604"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F3E'</span><span class='layout'>,</span> <span class='chr'>'\x0F3E'</span><span class='layout'>)</span>+<a name="line-605"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F3F'</span><span class='layout'>,</span> <span class='chr'>'\x0F3F'</span><span class='layout'>)</span>+<a name="line-606"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F71'</span><span class='layout'>,</span> <span class='chr'>'\x0F84'</span><span class='layout'>)</span>+<a name="line-607"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F86'</span><span class='layout'>,</span> <span class='chr'>'\x0F8B'</span><span class='layout'>)</span>+<a name="line-608"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F90'</span><span class='layout'>,</span> <span class='chr'>'\x0F95'</span><span class='layout'>)</span>+<a name="line-609"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F97'</span><span class='layout'>,</span> <span class='chr'>'\x0F97'</span><span class='layout'>)</span>+<a name="line-610"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F99'</span><span class='layout'>,</span> <span class='chr'>'\x0FAD'</span><span class='layout'>)</span>+<a name="line-611"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0FB1'</span><span class='layout'>,</span> <span class='chr'>'\x0FB7'</span><span class='layout'>)</span>+<a name="line-612"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0FB9'</span><span class='layout'>,</span> <span class='chr'>'\x0FB9'</span><span class='layout'>)</span>+<a name="line-613"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x20D0'</span><span class='layout'>,</span> <span class='chr'>'\x20DC'</span><span class='layout'>)</span>+<a name="line-614"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x20E1'</span><span class='layout'>,</span> <span class='chr'>'\x20E1'</span><span class='layout'>)</span>+<a name="line-615"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x302A'</span><span class='layout'>,</span> <span class='chr'>'\x302F'</span><span class='layout'>)</span>+<a name="line-616"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3099'</span><span class='layout'>,</span> <span class='chr'>'\x3099'</span><span class='layout'>)</span>+<a name="line-617"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x309A'</span><span class='layout'>,</span> <span class='chr'>'\x309A'</span><span class='layout'>)</span>+<a name="line-618"></a> <span class='keyglyph'>]</span>+<a name="line-619"></a>+<a name="line-620"></a><span class='comment'>-- |</span>+<a name="line-621"></a><span class='comment'>-- checking for XML digit</span>+<a name="line-622"></a>+<a name="line-623"></a><a name="isXmlDigit"></a><span class='definition'>isXmlDigit</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-624"></a><span class='definition'>isXmlDigit</span> <span class='varid'>c</span>+<a name="line-625"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>+<a name="line-626"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x0030'</span><span class='layout'>,</span> <span class='chr'>'\x0039'</span><span class='layout'>)</span>+<a name="line-627"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0660'</span><span class='layout'>,</span> <span class='chr'>'\x0669'</span><span class='layout'>)</span>+<a name="line-628"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x06F0'</span><span class='layout'>,</span> <span class='chr'>'\x06F9'</span><span class='layout'>)</span>+<a name="line-629"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0966'</span><span class='layout'>,</span> <span class='chr'>'\x096F'</span><span class='layout'>)</span>+<a name="line-630"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x09E6'</span><span class='layout'>,</span> <span class='chr'>'\x09EF'</span><span class='layout'>)</span>+<a name="line-631"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0A66'</span><span class='layout'>,</span> <span class='chr'>'\x0A6F'</span><span class='layout'>)</span>+<a name="line-632"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0AE6'</span><span class='layout'>,</span> <span class='chr'>'\x0AEF'</span><span class='layout'>)</span>+<a name="line-633"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0B66'</span><span class='layout'>,</span> <span class='chr'>'\x0B6F'</span><span class='layout'>)</span>+<a name="line-634"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0BE7'</span><span class='layout'>,</span> <span class='chr'>'\x0BEF'</span><span class='layout'>)</span>+<a name="line-635"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0C66'</span><span class='layout'>,</span> <span class='chr'>'\x0C6F'</span><span class='layout'>)</span>+<a name="line-636"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0CE6'</span><span class='layout'>,</span> <span class='chr'>'\x0CEF'</span><span class='layout'>)</span>+<a name="line-637"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0D66'</span><span class='layout'>,</span> <span class='chr'>'\x0D6F'</span><span class='layout'>)</span>+<a name="line-638"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E50'</span><span class='layout'>,</span> <span class='chr'>'\x0E59'</span><span class='layout'>)</span>+<a name="line-639"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0ED0'</span><span class='layout'>,</span> <span class='chr'>'\x0ED9'</span><span class='layout'>)</span>+<a name="line-640"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0F20'</span><span class='layout'>,</span> <span class='chr'>'\x0F29'</span><span class='layout'>)</span>+<a name="line-641"></a> <span class='keyglyph'>]</span>+<a name="line-642"></a>+<a name="line-643"></a><span class='comment'>-- |</span>+<a name="line-644"></a><span class='comment'>-- checking for XML extender</span>+<a name="line-645"></a>+<a name="line-646"></a><a name="isXmlExtender"></a><span class='definition'>isXmlExtender</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-647"></a><span class='definition'>isXmlExtender</span> <span class='varid'>c</span>+<a name="line-648"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>+<a name="line-649"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x00B7'</span><span class='layout'>,</span> <span class='chr'>'\x00B7'</span><span class='layout'>)</span>+<a name="line-650"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x02D0'</span><span class='layout'>,</span> <span class='chr'>'\x02D0'</span><span class='layout'>)</span>+<a name="line-651"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x02D1'</span><span class='layout'>,</span> <span class='chr'>'\x02D1'</span><span class='layout'>)</span>+<a name="line-652"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0387'</span><span class='layout'>,</span> <span class='chr'>'\x0387'</span><span class='layout'>)</span>+<a name="line-653"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0640'</span><span class='layout'>,</span> <span class='chr'>'\x0640'</span><span class='layout'>)</span>+<a name="line-654"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0E46'</span><span class='layout'>,</span> <span class='chr'>'\x0E46'</span><span class='layout'>)</span>+<a name="line-655"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x0EC6'</span><span class='layout'>,</span> <span class='chr'>'\x0EC6'</span><span class='layout'>)</span>+<a name="line-656"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3005'</span><span class='layout'>,</span> <span class='chr'>'\x3005'</span><span class='layout'>)</span>+<a name="line-657"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3031'</span><span class='layout'>,</span> <span class='chr'>'\x3035'</span><span class='layout'>)</span>+<a name="line-658"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x309D'</span><span class='layout'>,</span> <span class='chr'>'\x309E'</span><span class='layout'>)</span>+<a name="line-659"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x30FC'</span><span class='layout'>,</span> <span class='chr'>'\x30FE'</span><span class='layout'>)</span>+<a name="line-660"></a> <span class='keyglyph'>]</span>+<a name="line-661"></a>+<a name="line-662"></a><span class='comment'>-- |</span>+<a name="line-663"></a><span class='comment'>-- checking for XML control or permanently discouraged char</span>+<a name="line-664"></a><span class='comment'>--</span>+<a name="line-665"></a><span class='comment'>-- see Errata to XML1.0 (http:\/\/www.w3.org\/XML\/xml-V10-2e-errata) No 46</span>+<a name="line-666"></a><span class='comment'>--</span>+<a name="line-667"></a><span class='comment'>-- Document authors are encouraged to avoid "compatibility characters",</span>+<a name="line-668"></a><span class='comment'>-- as defined in section 6.8 of [Unicode] (see also D21 in section 3.6 of [Unicode3]).</span>+<a name="line-669"></a><span class='comment'>-- The characters defined in the following ranges are also discouraged.</span>+<a name="line-670"></a><span class='comment'>-- They are either control characters or permanently undefined Unicode characters:</span>+<a name="line-671"></a>+<a name="line-672"></a>+<a name="line-673"></a><a name="isXmlControlOrPermanentlyUndefined"></a><span class='definition'>isXmlControlOrPermanentlyUndefined</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-674"></a><span class='definition'>isXmlControlOrPermanentlyUndefined</span> <span class='varid'>c</span>+<a name="line-675"></a> <span class='keyglyph'>=</span> <span class='varid'>isInList</span> <span class='varid'>c</span>+<a name="line-676"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='chr'>'\x7F'</span><span class='layout'>,</span> <span class='chr'>'\x84'</span><span class='layout'>)</span>+<a name="line-677"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x86'</span><span class='layout'>,</span> <span class='chr'>'\x9F'</span><span class='layout'>)</span>+<a name="line-678"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xFDD0'</span><span class='layout'>,</span> <span class='chr'>'\xFDDF'</span><span class='layout'>)</span>+<a name="line-679"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x1FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x1FFFF'</span><span class='layout'>)</span>+<a name="line-680"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x2FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x2FFFF'</span><span class='layout'>)</span>+<a name="line-681"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x3FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x3FFFF'</span><span class='layout'>)</span>+<a name="line-682"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x4FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x4FFFF'</span><span class='layout'>)</span>+<a name="line-683"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x5FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x5FFFF'</span><span class='layout'>)</span>+<a name="line-684"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x6FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x6FFFF'</span><span class='layout'>)</span>+<a name="line-685"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x7FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x7FFFF'</span><span class='layout'>)</span>+<a name="line-686"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x8FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x8FFFF'</span><span class='layout'>)</span>+<a name="line-687"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x9FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x9FFFF'</span><span class='layout'>)</span>+<a name="line-688"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xAFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xAFFFF'</span><span class='layout'>)</span>+<a name="line-689"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xBFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xBFFFF'</span><span class='layout'>)</span>+<a name="line-690"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xCFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xCFFFF'</span><span class='layout'>)</span>+<a name="line-691"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xDFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xDFFFF'</span><span class='layout'>)</span>+<a name="line-692"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xEFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xEFFFF'</span><span class='layout'>)</span>+<a name="line-693"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\xFFFFE'</span><span class='layout'>,</span> <span class='chr'>'\xFFFFF'</span><span class='layout'>)</span>+<a name="line-694"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'\x10FFFE'</span><span class='layout'>,</span> <span class='chr'>'\x10FFFF'</span><span class='layout'>)</span>+<a name="line-695"></a> <span class='keyglyph'>]</span>+<a name="line-696"></a>+<a name="line-697"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-698"></a>+<a name="line-699"></a><a name="isInList"></a><span class='definition'>isInList</span> <span class='keyglyph'>::</span> <span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Unicode</span><span class='layout'>,</span> <span class='conid'>Unicode</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-700"></a><span class='definition'>isInList</span> <span class='varid'>i</span> <span class='keyglyph'>=</span>+<a name="line-701"></a> <span class='varid'>foldr</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='layout'>(</span><span class='varid'>lb</span><span class='layout'>,</span> <span class='varid'>ub</span><span class='layout'>)</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>i</span> <span class='varop'>>=</span> <span class='varid'>lb</span> <span class='varop'>&&</span> <span class='layout'>(</span><span class='varid'>i</span> <span class='varop'><=</span> <span class='varid'>ub</span> <span class='varop'>||</span> <span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span> <span class='conid'>False</span>+<a name="line-702"></a> <span class='comment'>{- The expression (i>=lb && i<=ub) || b would work more generally,+<a name="line-703"></a> but in a sorted list, the above one aborts the computation as early as possible. -}</span>+<a name="line-704"></a>+<a name="line-705"></a><span class='comment'>{-+<a name="line-706"></a>isInList' :: Unicode -> [(Unicode, Unicode)] -> Bool+<a name="line-707"></a>isInList' i ((lb, ub) : l)+<a name="line-708"></a> | i < lb = False+<a name="line-709"></a> | i <= ub = True+<a name="line-710"></a> | otherwise = isInList' i l+<a name="line-711"></a>+<a name="line-712"></a>isInList' _ []+<a name="line-713"></a> = False+<a name="line-714"></a>+<a name="line-715"></a>{- works, but is not so fast -}+<a name="line-716"></a>isInList'' :: Unicode -> [(Unicode, Unicode)] -> Bool+<a name="line-717"></a>isInList'' i = any (flip isInRange i)+<a name="line-718"></a>+<a name="line-719"></a>-- move to an Utility module?+<a name="line-720"></a>isInRange :: Ord a => (a,a) -> a -> Bool+<a name="line-721"></a>isInRange (l,r) x = l<=x && x<=r+<a name="line-722"></a>+<a name="line-723"></a>propIsInList :: Bool+<a name="line-724"></a>propIsInList =+<a name="line-725"></a> all+<a name="line-726"></a> (\c -> let dict = [ ('\x0041', '\x005A'), ('\x0061', '\x007A') ]+<a name="line-727"></a> b0 = isInList c dict+<a name="line-728"></a> b1 = isInList' c dict+<a name="line-729"></a> b2 = isInList'' c dict+<a name="line-730"></a> in b0 == b1 && b0 == b2)+<a name="line-731"></a> ['\x00'..'\x100']+<a name="line-732"></a>-}</span>+<a name="line-733"></a>+<a name="line-734"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-735"></a>+<a name="line-736"></a><span class='comment'>-- |</span>+<a name="line-737"></a><span class='comment'>-- code conversion from latin1 to Unicode</span>+<a name="line-738"></a>+<a name="line-739"></a><a name="latin1ToUnicode"></a><span class='definition'>latin1ToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>+<a name="line-740"></a><span class='definition'>latin1ToUnicode</span> <span class='keyglyph'>=</span> <span class='varid'>id</span>+<a name="line-741"></a>+<a name="line-742"></a><a name="latinToUnicode"></a><span class='definition'>latinToUnicode</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Char</span><span class='layout'>,</span> <span class='conid'>Char</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>+<a name="line-743"></a><span class='definition'>latinToUnicode</span> <span class='varid'>tt</span>+<a name="line-744"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>charToUni</span>+<a name="line-745"></a> <span class='keyword'>where</span>+<a name="line-746"></a> <span class='varid'>charToUni</span> <span class='varid'>c</span> <span class='keyglyph'>=</span>+<a name="line-747"></a> <span class='varid'>foldr</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='layout'>(</span><span class='varid'>src</span><span class='layout'>,</span><span class='varid'>dst</span><span class='layout'>)</span> <span class='varid'>r</span> <span class='keyglyph'>-></span>+<a name="line-748"></a> <span class='keyword'>case</span> <span class='varid'>compare</span> <span class='varid'>c</span> <span class='varid'>src</span> <span class='keyword'>of</span>+<a name="line-749"></a> <span class='conid'>EQ</span> <span class='keyglyph'>-></span> <span class='varid'>dst</span>+<a name="line-750"></a> <span class='conid'>LT</span> <span class='keyglyph'>-></span> <span class='varid'>c</span> <span class='comment'>{- not found in table -}</span>+<a name="line-751"></a> <span class='conid'>GT</span> <span class='keyglyph'>-></span> <span class='varid'>r</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='varid'>tt</span>+<a name="line-752"></a>+<a name="line-753"></a><span class='comment'>-- | conversion from ASCII to unicode with check for legal ASCII char set</span>+<a name="line-754"></a><span class='comment'>--</span>+<a name="line-755"></a><span class='comment'>-- Structure of decoding function copied from 'Data.Char.UTF8.decode'.</span>+<a name="line-756"></a>+<a name="line-757"></a><a name="decodeAscii"></a><span class='definition'>decodeAscii</span> <span class='keyglyph'>::</span> <span class='conid'>DecodingFct</span>+<a name="line-758"></a><span class='definition'>decodeAscii</span>+<a name="line-759"></a> <span class='keyglyph'>=</span> <span class='varid'>swap</span> <span class='varop'>.</span> <span class='varid'>partitionEither</span> <span class='varop'>.</span> <span class='varid'>decodeAsciiEmbedErrors</span>+<a name="line-760"></a>+<a name="line-761"></a><a name="decodeAsciiEmbedErrors"></a><span class='definition'>decodeAsciiEmbedErrors</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UStringWithErrors</span>+<a name="line-762"></a><span class='definition'>decodeAsciiEmbedErrors</span> <span class='varid'>str</span>+<a name="line-763"></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'>c</span><span class='layout'>,</span><span class='varid'>pos</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>isValid</span> <span class='varid'>c</span>+<a name="line-764"></a> <span class='keyword'>then</span> <span class='conid'>Right</span> <span class='varid'>c</span>+<a name="line-765"></a> <span class='keyword'>else</span> <span class='conid'>Left</span> <span class='layout'>(</span><span class='varid'>toErrStr</span> <span class='varid'>c</span> <span class='varid'>pos</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>posStr</span>+<a name="line-766"></a> <span class='keyword'>where</span>+<a name="line-767"></a> <span class='varid'>posStr</span> <span class='keyglyph'>=</span> <span class='varid'>zip</span> <span class='varid'>str</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-768"></a> <span class='varid'>toErrStr</span> <span class='varid'>errChr</span> <span class='varid'>pos</span>+<a name="line-769"></a> <span class='keyglyph'>=</span> <span class='str'>" at input position "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>pos</span> <span class='varop'>++</span> <span class='str'>": none ASCII char "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>errChr</span>+<a name="line-770"></a> <span class='varid'>isValid</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='varop'><</span> <span class='chr'>'\x80'</span>+<a name="line-771"></a>+<a name="line-772"></a><span class='comment'>-- |</span>+<a name="line-773"></a><span class='comment'>-- UCS-2 big endian to Unicode conversion</span>+<a name="line-774"></a>+<a name="line-775"></a><a name="ucs2BigEndianToUnicode"></a><span class='definition'>ucs2BigEndianToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>+<a name="line-776"></a>+<a name="line-777"></a><span class='definition'>ucs2BigEndianToUnicode</span> <span class='layout'>(</span><span class='varid'>b</span> <span class='conop'>:</span> <span class='varid'>l</span> <span class='conop'>:</span> <span class='varid'>r</span><span class='layout'>)</span>+<a name="line-778"></a> <span class='keyglyph'>=</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='varid'>fromEnum</span> <span class='varid'>b</span> <span class='varop'>*</span> <span class='num'>256</span> <span class='varop'>+</span> <span class='varid'>fromEnum</span> <span class='varid'>l</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>ucs2BigEndianToUnicode</span> <span class='varid'>r</span>+<a name="line-779"></a>+<a name="line-780"></a><span class='definition'>ucs2BigEndianToUnicode</span> <span class='conid'>[]</span>+<a name="line-781"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-782"></a>+<a name="line-783"></a><span class='definition'>ucs2BigEndianToUnicode</span> <span class='keyword'>_</span>+<a name="line-784"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span> <span class='comment'>-- error "illegal UCS-2 byte input sequence with odd length"</span>+<a name="line-785"></a> <span class='comment'>-- is ignored (garbage in, garbage out)</span>+<a name="line-786"></a>+<a name="line-787"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-788"></a>+<a name="line-789"></a><span class='comment'>-- |</span>+<a name="line-790"></a><span class='comment'>-- UCS-2 little endian to Unicode conversion</span>+<a name="line-791"></a>+<a name="line-792"></a><a name="ucs2LittleEndianToUnicode"></a><span class='definition'>ucs2LittleEndianToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>+<a name="line-793"></a>+<a name="line-794"></a><span class='definition'>ucs2LittleEndianToUnicode</span> <span class='layout'>(</span><span class='varid'>l</span> <span class='conop'>:</span> <span class='varid'>b</span> <span class='conop'>:</span> <span class='varid'>r</span><span class='layout'>)</span>+<a name="line-795"></a> <span class='keyglyph'>=</span> <span class='varid'>toEnum</span> <span class='layout'>(</span><span class='varid'>fromEnum</span> <span class='varid'>b</span> <span class='varop'>*</span> <span class='num'>256</span> <span class='varop'>+</span> <span class='varid'>fromEnum</span> <span class='varid'>l</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>ucs2LittleEndianToUnicode</span> <span class='varid'>r</span>+<a name="line-796"></a>+<a name="line-797"></a><span class='definition'>ucs2LittleEndianToUnicode</span> <span class='conid'>[]</span>+<a name="line-798"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-799"></a>+<a name="line-800"></a><span class='definition'>ucs2LittleEndianToUnicode</span> <span class='keyglyph'>[</span><span class='keyword'>_</span><span class='keyglyph'>]</span>+<a name="line-801"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span> <span class='comment'>-- error "illegal UCS-2 byte input sequence with odd length"</span>+<a name="line-802"></a> <span class='comment'>-- is ignored</span>+<a name="line-803"></a>+<a name="line-804"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-805"></a>+<a name="line-806"></a><span class='comment'>-- |</span>+<a name="line-807"></a><span class='comment'>-- UCS-2 to UTF-8 conversion with byte order mark analysis</span>+<a name="line-808"></a>+<a name="line-809"></a><a name="ucs2ToUnicode"></a><span class='definition'>ucs2ToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>+<a name="line-810"></a>+<a name="line-811"></a><span class='definition'>ucs2ToUnicode</span> <span class='layout'>(</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- 2 byte mark for big endian encoding</span>+<a name="line-812"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2BigEndianToUnicode</span> <span class='varid'>s</span>+<a name="line-813"></a>+<a name="line-814"></a><span class='definition'>ucs2ToUnicode</span> <span class='layout'>(</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- 2 byte mark for little endian encoding</span>+<a name="line-815"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2LittleEndianToUnicode</span> <span class='varid'>s</span>+<a name="line-816"></a>+<a name="line-817"></a><span class='definition'>ucs2ToUnicode</span> <span class='varid'>s</span>+<a name="line-818"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2BigEndianToUnicode</span> <span class='varid'>s</span> <span class='comment'>-- default: big endian</span>+<a name="line-819"></a>+<a name="line-820"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-821"></a>+<a name="line-822"></a><span class='comment'>-- |</span>+<a name="line-823"></a><span class='comment'>-- UTF-8 to Unicode conversion with deletion of leading byte order mark, as described in XML standard F.1</span>+<a name="line-824"></a>+<a name="line-825"></a><a name="utf8ToUnicode"></a><span class='definition'>utf8ToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>DecodingFct</span>+<a name="line-826"></a>+<a name="line-827"></a><span class='definition'>utf8ToUnicode</span> <span class='layout'>(</span><span class='chr'>'\xEF'</span><span class='conop'>:</span><span class='chr'>'\xBB'</span><span class='conop'>:</span><span class='chr'>'\xBF'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- remove byte order mark ( XML standard F.1 )</span>+<a name="line-828"></a> <span class='keyglyph'>=</span> <span class='varid'>decodeUtf8</span> <span class='varid'>s</span>+<a name="line-829"></a>+<a name="line-830"></a><span class='definition'>utf8ToUnicode</span> <span class='varid'>s</span>+<a name="line-831"></a> <span class='keyglyph'>=</span> <span class='varid'>decodeUtf8</span> <span class='varid'>s</span>+<a name="line-832"></a>+<a name="line-833"></a><a name="utf8ToUnicodeEmbedErrors"></a><span class='definition'>utf8ToUnicodeEmbedErrors</span> <span class='keyglyph'>::</span> <span class='conid'>DecodingFctEmbedErrors</span>+<a name="line-834"></a>+<a name="line-835"></a><span class='definition'>utf8ToUnicodeEmbedErrors</span> <span class='layout'>(</span><span class='chr'>'\xEF'</span><span class='conop'>:</span><span class='chr'>'\xBB'</span><span class='conop'>:</span><span class='chr'>'\xBF'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- remove byte order mark ( XML standard F.1 )</span>+<a name="line-836"></a> <span class='keyglyph'>=</span> <span class='varid'>decodeUtf8EmbedErrors</span> <span class='varid'>s</span>+<a name="line-837"></a>+<a name="line-838"></a><span class='definition'>utf8ToUnicodeEmbedErrors</span> <span class='varid'>s</span>+<a name="line-839"></a> <span class='keyglyph'>=</span> <span class='varid'>decodeUtf8EmbedErrors</span> <span class='varid'>s</span>+<a name="line-840"></a>+<a name="line-841"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-842"></a>+<a name="line-843"></a><span class='comment'>-- |</span>+<a name="line-844"></a><span class='comment'>-- UTF-16 big endian to UTF-8 conversion with removal of byte order mark</span>+<a name="line-845"></a>+<a name="line-846"></a><a name="utf16beToUnicode"></a><span class='definition'>utf16beToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>+<a name="line-847"></a>+<a name="line-848"></a><span class='definition'>utf16beToUnicode</span> <span class='layout'>(</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- remove byte order mark</span>+<a name="line-849"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2BigEndianToUnicode</span> <span class='varid'>s</span>+<a name="line-850"></a>+<a name="line-851"></a><span class='definition'>utf16beToUnicode</span> <span class='varid'>s</span>+<a name="line-852"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2BigEndianToUnicode</span> <span class='varid'>s</span>+<a name="line-853"></a>+<a name="line-854"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-855"></a>+<a name="line-856"></a><span class='comment'>-- |</span>+<a name="line-857"></a><span class='comment'>-- UTF-16 little endian to UTF-8 conversion with removal of byte order mark</span>+<a name="line-858"></a>+<a name="line-859"></a><a name="utf16leToUnicode"></a><span class='definition'>utf16leToUnicode</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span>+<a name="line-860"></a>+<a name="line-861"></a><span class='definition'>utf16leToUnicode</span> <span class='layout'>(</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='comment'>-- remove byte order mark</span>+<a name="line-862"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2LittleEndianToUnicode</span> <span class='varid'>s</span>+<a name="line-863"></a>+<a name="line-864"></a><span class='definition'>utf16leToUnicode</span> <span class='varid'>s</span>+<a name="line-865"></a> <span class='keyglyph'>=</span> <span class='varid'>ucs2LittleEndianToUnicode</span> <span class='varid'>s</span>+<a name="line-866"></a>+<a name="line-867"></a>+<a name="line-868"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-869"></a>+<a name="line-870"></a><span class='comment'>-- |</span>+<a name="line-871"></a><span class='comment'>-- substitute all Unicode characters, that are not legal 1-byte</span>+<a name="line-872"></a><span class='comment'>-- UTF-8 XML characters by a character reference.</span>+<a name="line-873"></a><span class='comment'>--</span>+<a name="line-874"></a><span class='comment'>-- This function can be used to translate all text nodes and</span>+<a name="line-875"></a><span class='comment'>-- attribute values into pure ascii.</span>+<a name="line-876"></a><span class='comment'>--</span>+<a name="line-877"></a><span class='comment'>-- see also : 'unicodeToLatin1'</span>+<a name="line-878"></a>+<a name="line-879"></a><a name="unicodeToXmlEntity"></a><span class='definition'>unicodeToXmlEntity</span> <span class='keyglyph'>::</span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-880"></a><span class='definition'>unicodeToXmlEntity</span>+<a name="line-881"></a> <span class='keyglyph'>=</span> <span class='varid'>escape</span> <span class='varid'>is1ByteXmlChar</span> <span class='layout'>(</span><span class='varid'>intToCharRef</span> <span class='varop'>.</span> <span class='varid'>fromEnum</span><span class='layout'>)</span>+<a name="line-882"></a>+<a name="line-883"></a><span class='comment'>-- |</span>+<a name="line-884"></a><span class='comment'>-- substitute all Unicode characters, that are not legal latin1</span>+<a name="line-885"></a><span class='comment'>-- UTF-8 XML characters by a character reference.</span>+<a name="line-886"></a><span class='comment'>--</span>+<a name="line-887"></a><span class='comment'>-- This function can be used to translate all text nodes and</span>+<a name="line-888"></a><span class='comment'>-- attribute values into ISO latin1.</span>+<a name="line-889"></a><span class='comment'>--</span>+<a name="line-890"></a><span class='comment'>-- see also : 'unicodeToXmlEntity'</span>+<a name="line-891"></a>+<a name="line-892"></a><a name="unicodeToLatin1"></a><span class='definition'>unicodeToLatin1</span> <span class='keyglyph'>::</span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-893"></a><span class='definition'>unicodeToLatin1</span>+<a name="line-894"></a> <span class='keyglyph'>=</span> <span class='varid'>escape</span> <span class='varid'>isXmlLatin1Char</span> <span class='layout'>(</span><span class='varid'>intToCharRef</span> <span class='varop'>.</span> <span class='varid'>fromEnum</span><span class='layout'>)</span>+<a name="line-895"></a>+<a name="line-896"></a>+<a name="line-897"></a><a name="escape"></a><span class='comment'>-- |</span>+<a name="line-898"></a><span class='comment'>-- substitute selected characters</span>+<a name="line-899"></a><span class='comment'>-- The @check@ function returns 'True' whenever a character needs to substitution</span>+<a name="line-900"></a><span class='comment'>-- The function @esc@ computes a substitute.</span>+<a name="line-901"></a><span class='definition'>escape</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Unicode</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-902"></a><span class='definition'>escape</span> <span class='varid'>check</span> <span class='varid'>esc</span> <span class='keyglyph'>=</span>+<a name="line-903"></a> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>uc</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='varid'>check</span> <span class='varid'>uc</span> <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='varid'>uc</span><span class='keyglyph'>]</span> <span class='keyword'>else</span> <span class='varid'>esc</span> <span class='varid'>uc</span><span class='layout'>)</span>+<a name="line-904"></a>+<a name="line-905"></a><span class='comment'>-- |</span>+<a name="line-906"></a><span class='comment'>-- removes all non ascii chars, may be used to transform</span>+<a name="line-907"></a><span class='comment'>-- a document into a pure ascii representation by removing</span>+<a name="line-908"></a><span class='comment'>-- all non ascii chars from tag and attibute names</span>+<a name="line-909"></a><span class='comment'>--</span>+<a name="line-910"></a><span class='comment'>-- see also : 'unicodeRemoveNoneLatin1', 'unicodeToXmlEntity'</span>+<a name="line-911"></a>+<a name="line-912"></a><a name="unicodeRemoveNoneAscii"></a><span class='definition'>unicodeRemoveNoneAscii</span> <span class='keyglyph'>::</span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-913"></a><span class='definition'>unicodeRemoveNoneAscii</span>+<a name="line-914"></a> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='varid'>is1ByteXmlChar</span>+<a name="line-915"></a>+<a name="line-916"></a><span class='comment'>-- |</span>+<a name="line-917"></a><span class='comment'>-- removes all non latin1 chars, may be used to transform</span>+<a name="line-918"></a><span class='comment'>-- a document into a pure ascii representation by removing</span>+<a name="line-919"></a><span class='comment'>-- all non ascii chars from tag and attibute names</span>+<a name="line-920"></a><span class='comment'>--</span>+<a name="line-921"></a><span class='comment'>-- see also : 'unicodeRemoveNoneAscii', 'unicodeToLatin1'</span>+<a name="line-922"></a>+<a name="line-923"></a><a name="unicodeRemoveNoneLatin1"></a><span class='definition'>unicodeRemoveNoneLatin1</span> <span class='keyglyph'>::</span> <span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-924"></a><span class='definition'>unicodeRemoveNoneLatin1</span>+<a name="line-925"></a> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='varid'>isXmlLatin1Char</span>+<a name="line-926"></a>+<a name="line-927"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-928"></a>+<a name="line-929"></a><span class='comment'>-- |</span>+<a name="line-930"></a><span class='comment'>-- convert an Unicode into a XML character reference.</span>+<a name="line-931"></a><span class='comment'>--</span>+<a name="line-932"></a><span class='comment'>-- see also : 'intToCharRefHex'</span>+<a name="line-933"></a>+<a name="line-934"></a><a name="intToCharRef"></a><span class='definition'>intToCharRef</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-935"></a><span class='definition'>intToCharRef</span> <span class='varid'>i</span>+<a name="line-936"></a> <span class='keyglyph'>=</span> <span class='str'>"&#"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>i</span> <span class='varop'>++</span> <span class='str'>";"</span>+<a name="line-937"></a>+<a name="line-938"></a><span class='comment'>-- |</span>+<a name="line-939"></a><span class='comment'>-- convert an Unicode into a XML hexadecimal character reference.</span>+<a name="line-940"></a><span class='comment'>--</span>+<a name="line-941"></a><span class='comment'>-- see also: 'intToCharRef'</span>+<a name="line-942"></a>+<a name="line-943"></a><a name="intToCharRefHex"></a><span class='definition'>intToCharRefHex</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-944"></a><span class='definition'>intToCharRefHex</span> <span class='varid'>i</span>+<a name="line-945"></a> <span class='keyglyph'>=</span> <span class='str'>"&#x"</span> <span class='varop'>++</span> <span class='varid'>h2</span> <span class='varop'>++</span> <span class='str'>";"</span>+<a name="line-946"></a> <span class='keyword'>where</span>+<a name="line-947"></a> <span class='varid'>h1</span> <span class='keyglyph'>=</span> <span class='varid'>intToHexString</span> <span class='varid'>i</span>+<a name="line-948"></a> <span class='varid'>h2</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>length</span> <span class='varid'>h1</span> <span class='varop'>`mod`</span> <span class='num'>2</span> <span class='varop'>==</span> <span class='num'>1</span>+<a name="line-949"></a> <span class='keyword'>then</span> <span class='chr'>'0'</span><span class='conop'>:</span> <span class='varid'>h1</span>+<a name="line-950"></a> <span class='keyword'>else</span> <span class='varid'>h1</span>+<a name="line-951"></a>+<a name="line-952"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-953"></a><span class='comment'>--</span>+<a name="line-954"></a><span class='comment'>-- | White Space (XML Standard 2.3) and</span>+<a name="line-955"></a><span class='comment'>-- end of line handling (2.11)</span>+<a name="line-956"></a><span class='comment'>--</span>+<a name="line-957"></a><span class='comment'>-- \#x0D and \#x0D\#x0A are mapped to \#x0A</span>+<a name="line-958"></a>+<a name="line-959"></a><a name="normalizeNL"></a><span class='definition'>normalizeNL</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-960"></a><span class='definition'>normalizeNL</span> <span class='layout'>(</span><span class='chr'>'\r'</span> <span class='conop'>:</span> <span class='chr'>'\n'</span> <span class='conop'>:</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='chr'>'\n'</span> <span class='conop'>:</span> <span class='varid'>normalizeNL</span> <span class='varid'>rest</span>+<a name="line-961"></a><span class='definition'>normalizeNL</span> <span class='layout'>(</span><span class='chr'>'\r'</span> <span class='conop'>:</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='chr'>'\n'</span> <span class='conop'>:</span> <span class='varid'>normalizeNL</span> <span class='varid'>rest</span>+<a name="line-962"></a><span class='definition'>normalizeNL</span> <span class='layout'>(</span><span class='varid'>c</span> <span class='conop'>:</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>c</span> <span class='conop'>:</span> <span class='varid'>normalizeNL</span> <span class='varid'>rest</span>+<a name="line-963"></a><span class='definition'>normalizeNL</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-964"></a>+<a name="line-965"></a>+<a name="line-966"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-967"></a>+<a name="line-968"></a><span class='comment'>-- |</span>+<a name="line-969"></a><span class='comment'>-- the table of supported character encoding schemes and the associated</span>+<a name="line-970"></a><span class='comment'>-- conversion functions into Unicode:q</span>+<a name="line-971"></a>+<a name="line-972"></a><span class='comment'>{-+<a name="line-973"></a>This table could be derived from decodingTableEither,+<a name="line-974"></a>but this way it is certainly more efficient.+<a name="line-975"></a>-}</span>+<a name="line-976"></a>+<a name="line-977"></a><a name="decodingTable"></a><span class='definition'>decodingTable</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'>DecodingFct</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-978"></a><span class='definition'>decodingTable</span>+<a name="line-979"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>utf8</span><span class='layout'>,</span> <span class='varid'>utf8ToUnicode</span> <span class='layout'>)</span>+<a name="line-980"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>isoLatin1</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>latin1ToUnicode</span> <span class='layout'>)</span>+<a name="line-981"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>usAscii</span><span class='layout'>,</span> <span class='varid'>decodeAscii</span> <span class='layout'>)</span>+<a name="line-982"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>ucs2</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>ucs2ToUnicode</span> <span class='layout'>)</span>+<a name="line-983"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>ucs2ToUnicode</span> <span class='layout'>)</span>+<a name="line-984"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16be</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>utf16beToUnicode</span> <span class='layout'>)</span>+<a name="line-985"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16le</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>utf16leToUnicode</span> <span class='layout'>)</span>+<a name="line-986"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_2</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_2</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-987"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_3</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_3</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-988"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_4</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_4</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-989"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_5</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_5</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-990"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_6</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_6</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-991"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_7</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_7</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-992"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_8</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_8</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-993"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_9</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_9</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-994"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_10</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_10</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-995"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_11</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_11</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-996"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_13</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_13</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-997"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_14</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_14</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-998"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_15</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_15</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-999"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_16</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_16</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1000"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>unicodeString</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>id</span> <span class='layout'>)</span>+<a name="line-1001"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>id</span> <span class='layout'>)</span> <span class='comment'>-- default</span>+<a name="line-1002"></a> <span class='keyglyph'>]</span>+<a name="line-1003"></a> <span class='keyword'>where</span>+<a name="line-1004"></a> <span class='varid'>liftDecFct</span> <span class='varid'>df</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>df</span> <span class='varid'>s</span><span class='layout'>,</span> <span class='conid'>[]</span><span class='layout'>)</span>+<a name="line-1005"></a>+<a name="line-1006"></a><span class='comment'>-- |</span>+<a name="line-1007"></a><span class='comment'>-- the lookup function for selecting the decoding function</span>+<a name="line-1008"></a>+<a name="line-1009"></a><a name="getDecodingFct"></a><span class='definition'>getDecodingFct</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>DecodingFct</span>+<a name="line-1010"></a><span class='definition'>getDecodingFct</span> <span class='varid'>enc</span>+<a name="line-1011"></a> <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toUpper</span> <span class='varid'>enc</span><span class='layout'>)</span> <span class='varid'>decodingTable</span>+<a name="line-1012"></a>+<a name="line-1013"></a>+<a name="line-1014"></a><span class='comment'>-- |</span>+<a name="line-1015"></a><span class='comment'>-- Similar to 'decodingTable' but it embeds errors</span>+<a name="line-1016"></a><span class='comment'>-- in the string of decoded characters.</span>+<a name="line-1017"></a>+<a name="line-1018"></a><a name="decodingTableEmbedErrors"></a><span class='definition'>decodingTableEmbedErrors</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'>DecodingFctEmbedErrors</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-1019"></a><span class='definition'>decodingTableEmbedErrors</span>+<a name="line-1020"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>utf8</span><span class='layout'>,</span> <span class='varid'>utf8ToUnicodeEmbedErrors</span> <span class='layout'>)</span>+<a name="line-1021"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>isoLatin1</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>latin1ToUnicode</span> <span class='layout'>)</span>+<a name="line-1022"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>usAscii</span><span class='layout'>,</span> <span class='varid'>decodeAsciiEmbedErrors</span> <span class='layout'>)</span>+<a name="line-1023"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>ucs2</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>ucs2ToUnicode</span> <span class='layout'>)</span>+<a name="line-1024"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>ucs2ToUnicode</span> <span class='layout'>)</span>+<a name="line-1025"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16be</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>utf16beToUnicode</span> <span class='layout'>)</span>+<a name="line-1026"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>utf16le</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>utf16leToUnicode</span> <span class='layout'>)</span>+<a name="line-1027"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_2</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_2</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1028"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_3</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_3</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1029"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_4</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_4</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1030"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_5</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_5</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1031"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_6</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_6</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1032"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_7</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_7</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1033"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_8</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_8</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1034"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_9</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_9</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1035"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_10</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_10</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1036"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_11</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_11</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1037"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_13</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_13</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1038"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_14</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_14</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1039"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_15</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_15</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1040"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>iso8859_16</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='layout'>(</span><span class='varid'>latinToUnicode</span> <span class='varid'>iso_8859_16</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-1041"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>unicodeString</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>id</span> <span class='layout'>)</span>+<a name="line-1042"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='varid'>liftDecFct</span> <span class='varid'>id</span> <span class='layout'>)</span> <span class='comment'>-- default</span>+<a name="line-1043"></a> <span class='keyglyph'>]</span>+<a name="line-1044"></a> <span class='keyword'>where</span>+<a name="line-1045"></a> <span class='varid'>liftDecFct</span> <span class='varid'>df</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='conid'>Right</span> <span class='varop'>.</span> <span class='varid'>df</span>+<a name="line-1046"></a>+<a name="line-1047"></a><span class='comment'>-- |</span>+<a name="line-1048"></a><span class='comment'>-- the lookup function for selecting the decoding function</span>+<a name="line-1049"></a>+<a name="line-1050"></a><a name="getDecodingFctEmbedErrors"></a><span class='definition'>getDecodingFctEmbedErrors</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>DecodingFctEmbedErrors</span>+<a name="line-1051"></a><span class='definition'>getDecodingFctEmbedErrors</span> <span class='varid'>enc</span>+<a name="line-1052"></a> <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toUpper</span> <span class='varid'>enc</span><span class='layout'>)</span> <span class='varid'>decodingTableEmbedErrors</span>+<a name="line-1053"></a>+<a name="line-1054"></a>+<a name="line-1055"></a>+<a name="line-1056"></a><span class='comment'>-- |</span>+<a name="line-1057"></a><span class='comment'>-- the table of supported output encoding schemes and the associated</span>+<a name="line-1058"></a><span class='comment'>-- conversion functions from Unicode</span>+<a name="line-1059"></a>+<a name="line-1060"></a><a name="outputEncodingTable"></a><span class='definition'>outputEncodingTable</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='layout'>(</span><span class='conid'>UString</span> <span class='keyglyph'>-></span> <span class='conid'>String</span><span class='layout'>)</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-1061"></a><span class='definition'>outputEncodingTable</span>+<a name="line-1062"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>utf8</span><span class='layout'>,</span> <span class='varid'>unicodeToUtf8</span> <span class='layout'>)</span>+<a name="line-1063"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>isoLatin1</span><span class='layout'>,</span> <span class='varid'>unicodeToLatin1</span> <span class='layout'>)</span>+<a name="line-1064"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>usAscii</span><span class='layout'>,</span> <span class='varid'>unicodeToXmlEntity</span> <span class='layout'>)</span>+<a name="line-1065"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>ucs2</span><span class='layout'>,</span> <span class='varid'>ucs2ToUnicode</span> <span class='layout'>)</span>+<a name="line-1066"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='varid'>unicodeToUtf8</span> <span class='layout'>)</span> <span class='comment'>-- default</span>+<a name="line-1067"></a> <span class='keyglyph'>]</span>+<a name="line-1068"></a>+<a name="line-1069"></a><span class='comment'>-- |</span>+<a name="line-1070"></a><span class='comment'>-- the lookup function for selecting the encoding function</span>+<a name="line-1071"></a>+<a name="line-1072"></a><a name="getOutputEncodingFct"></a><span class='definition'>getOutputEncodingFct</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>UString</span><span class='layout'>)</span>+<a name="line-1073"></a><span class='definition'>getOutputEncodingFct</span> <span class='varid'>enc</span>+<a name="line-1074"></a> <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>toUpper</span> <span class='varid'>enc</span><span class='layout'>)</span> <span class='varid'>outputEncodingTable</span>+<a name="line-1075"></a>+<a name="line-1076"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-1077"></a><span class='comment'>--</span>+<a name="line-1078"></a>+<a name="line-1079"></a><a name="guessEncoding"></a><span class='definition'>guessEncoding</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-1080"></a>+<a name="line-1081"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4LE"</span> <span class='comment'>-- with byte order mark</span>+<a name="line-1082"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16LE"</span> <span class='comment'>-- with byte order mark</span>+<a name="line-1083"></a>+<a name="line-1084"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4-3421"</span> <span class='comment'>-- with byte order mark</span>+<a name="line-1085"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16BE"</span> <span class='comment'>-- with byte order mark</span>+<a name="line-1086"></a>+<a name="line-1087"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\xEF'</span><span class='conop'>:</span><span class='chr'>'\xBB'</span><span class='conop'>:</span><span class='chr'>'\xBF'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>utf8</span> <span class='comment'>-- with byte order mark</span>+<a name="line-1088"></a>+<a name="line-1089"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4BE"</span> <span class='comment'>-- with byte order mark</span>+<a name="line-1090"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\xFF'</span><span class='conop'>:</span><span class='chr'>'\xFE'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4-2143"</span> <span class='comment'>-- with byte order mark</span>+<a name="line-1091"></a>+<a name="line-1092"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4BE"</span> <span class='comment'>-- "<" of "<?xml"</span>+<a name="line-1093"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4LE"</span> <span class='comment'>-- "<" of "<?xml"</span>+<a name="line-1094"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4-2143"</span> <span class='comment'>-- "<" of "<?xml"</span>+<a name="line-1095"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UCS-4-3412"</span> <span class='comment'>-- "<" of "<?xml"</span>+<a name="line-1096"></a>+<a name="line-1097"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3F'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16BE"</span> <span class='comment'>-- "<?" of "<?xml"</span>+<a name="line-1098"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x3C'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='chr'>'\x3F'</span><span class='conop'>:</span><span class='chr'>'\x00'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16LE"</span> <span class='comment'>-- "<?" of "<?xml"</span>+<a name="line-1099"></a>+<a name="line-1100"></a><span class='definition'>guessEncoding</span> <span class='layout'>(</span><span class='chr'>'\x4C'</span><span class='conop'>:</span><span class='chr'>'\x6F'</span><span class='conop'>:</span><span class='chr'>'\xA7'</span><span class='conop'>:</span><span class='chr'>'\x94'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"EBCDIC"</span> <span class='comment'>-- "<?xm" of "<?xml"</span>+<a name="line-1101"></a>+<a name="line-1102"></a><span class='definition'>guessEncoding</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='str'>""</span> <span class='comment'>-- no guess</span>+<a name="line-1103"></a>+<a name="line-1104"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-DOM-XmlKeywords.html view
@@ -64,301 +64,305 @@ <a name="line-56"></a> <span class='varid'>a_module</span><span class='layout'>,</span> <a name="line-57"></a> <span class='varid'>a_modifier</span><span class='layout'>,</span> <a name="line-58"></a> <span class='varid'>a_name</span><span class='layout'>,</span>-<a name="line-59"></a> <span class='varid'>a_no_xml_pi</span><span class='layout'>,</span>-<a name="line-60"></a> <span class='varid'>a_options_curl</span><span class='layout'>,</span>-<a name="line-61"></a> <span class='varid'>a_output_encoding</span><span class='layout'>,</span>-<a name="line-62"></a> <span class='varid'>a_output_file</span><span class='layout'>,</span>-<a name="line-63"></a> <span class='varid'>a_output_xml</span><span class='layout'>,</span>-<a name="line-64"></a> <span class='varid'>a_output_html</span><span class='layout'>,</span>-<a name="line-65"></a> <span class='varid'>a_parse_by_mimetype</span><span class='layout'>,</span>-<a name="line-66"></a> <span class='varid'>a_parse_html</span><span class='layout'>,</span>-<a name="line-67"></a> <span class='varid'>a_parse_xml</span><span class='layout'>,</span>-<a name="line-68"></a> <span class='varid'>a_peref</span><span class='layout'>,</span>-<a name="line-69"></a> <span class='varid'>a_preserve_comment</span><span class='layout'>,</span>-<a name="line-70"></a> <span class='varid'>a_propagate_errors</span><span class='layout'>,</span>-<a name="line-71"></a> <span class='varid'>a_proxy</span><span class='layout'>,</span>-<a name="line-72"></a> <span class='varid'>a_remove_whitespace</span><span class='layout'>,</span>-<a name="line-73"></a> <span class='varid'>a_show_haskell</span><span class='layout'>,</span>-<a name="line-74"></a> <span class='varid'>a_show_tree</span><span class='layout'>,</span>-<a name="line-75"></a> <span class='varid'>a_source</span><span class='layout'>,</span>-<a name="line-76"></a> <span class='varid'>a_status</span><span class='layout'>,</span>-<a name="line-77"></a> <span class='varid'>a_standalone</span><span class='layout'>,</span>-<a name="line-78"></a> <span class='varid'>a_tagsoup</span><span class='layout'>,</span>-<a name="line-79"></a> <span class='varid'>a_trace</span><span class='layout'>,</span>-<a name="line-80"></a> <span class='varid'>a_type</span><span class='layout'>,</span>-<a name="line-81"></a> <span class='varid'>a_use_curl</span><span class='layout'>,</span>-<a name="line-82"></a> <span class='varid'>a_url</span><span class='layout'>,</span>-<a name="line-83"></a> <span class='varid'>a_validate</span><span class='layout'>,</span>-<a name="line-84"></a> <span class='varid'>a_value</span><span class='layout'>,</span>-<a name="line-85"></a> <span class='varid'>a_verbose</span><span class='layout'>,</span>-<a name="line-86"></a> <span class='varid'>a_version</span><span class='layout'>,</span>-<a name="line-87"></a> <span class='varid'>a_xml</span><span class='layout'>,</span>-<a name="line-88"></a> <span class='varid'>a_xmlns</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-89"></a>-<a name="line-90"></a><a name="v_0"></a><span class='definition'>v_0</span><span class='layout'>,</span> <span class='comment'>-- attribute values</span>-<a name="line-91"></a> <span class='varid'>v_1</span><span class='layout'>,</span>-<a name="line-92"></a> <span class='varid'>v_yes</span><span class='layout'>,</span>-<a name="line-93"></a> <span class='varid'>v_no</span><span class='layout'>,</span>-<a name="line-94"></a> <span class='varid'>v_any</span><span class='layout'>,</span>-<a name="line-95"></a> <span class='varid'>v_children</span><span class='layout'>,</span>-<a name="line-96"></a> <span class='varid'>v_choice</span><span class='layout'>,</span>-<a name="line-97"></a> <span class='varid'>v_empty</span><span class='layout'>,</span>-<a name="line-98"></a> <span class='varid'>v_mixed</span><span class='layout'>,</span>-<a name="line-99"></a> <span class='varid'>v_seq</span><span class='layout'>,</span>-<a name="line-100"></a> <span class='varid'>v_null</span><span class='layout'>,</span>-<a name="line-101"></a> <span class='varid'>v_option</span><span class='layout'>,</span>-<a name="line-102"></a> <span class='varid'>v_pcdata</span><span class='layout'>,</span>-<a name="line-103"></a> <span class='varid'>v_star</span><span class='layout'>,</span>-<a name="line-104"></a> <span class='varid'>v_plus</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-105"></a>-<a name="line-106"></a><a name="k_any"></a><span class='definition'>k_any</span><span class='layout'>,</span> <span class='comment'>-- DTD keywords</span>-<a name="line-107"></a> <span class='varid'>k_cdata</span><span class='layout'>,</span>-<a name="line-108"></a> <span class='varid'>k_empty</span><span class='layout'>,</span>-<a name="line-109"></a> <span class='varid'>k_entity</span><span class='layout'>,</span>-<a name="line-110"></a> <span class='varid'>k_entities</span><span class='layout'>,</span>-<a name="line-111"></a> <span class='varid'>k_id</span><span class='layout'>,</span>-<a name="line-112"></a> <span class='varid'>k_idref</span><span class='layout'>,</span>-<a name="line-113"></a> <span class='varid'>k_idrefs</span><span class='layout'>,</span>-<a name="line-114"></a> <span class='varid'>k_include</span><span class='layout'>,</span>-<a name="line-115"></a> <span class='varid'>k_ignore</span><span class='layout'>,</span>-<a name="line-116"></a> <span class='varid'>k_nmtoken</span><span class='layout'>,</span>-<a name="line-117"></a> <span class='varid'>k_nmtokens</span><span class='layout'>,</span>-<a name="line-118"></a> <span class='varid'>k_peref</span><span class='layout'>,</span>-<a name="line-119"></a> <span class='varid'>k_public</span><span class='layout'>,</span>-<a name="line-120"></a> <span class='varid'>k_system</span><span class='layout'>,</span>-<a name="line-121"></a> <span class='varid'>k_enumeration</span><span class='layout'>,</span>-<a name="line-122"></a> <span class='varid'>k_fixed</span><span class='layout'>,</span>-<a name="line-123"></a> <span class='varid'>k_implied</span><span class='layout'>,</span>-<a name="line-124"></a> <span class='varid'>k_ndata</span><span class='layout'>,</span>-<a name="line-125"></a> <span class='varid'>k_notation</span><span class='layout'>,</span>-<a name="line-126"></a> <span class='varid'>k_pcdata</span><span class='layout'>,</span>-<a name="line-127"></a> <span class='varid'>k_required</span><span class='layout'>,</span>-<a name="line-128"></a> <span class='varid'>k_default</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-129"></a>-<a name="line-130"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-59"></a> <span class='varid'>a_no_empty_elements</span><span class='layout'>,</span>+<a name="line-60"></a> <span class='varid'>a_no_xml_pi</span><span class='layout'>,</span>+<a name="line-61"></a> <span class='varid'>a_options_curl</span><span class='layout'>,</span>+<a name="line-62"></a> <span class='varid'>a_output_encoding</span><span class='layout'>,</span>+<a name="line-63"></a> <span class='varid'>a_output_file</span><span class='layout'>,</span>+<a name="line-64"></a> <span class='varid'>a_output_xml</span><span class='layout'>,</span>+<a name="line-65"></a> <span class='varid'>a_output_html</span><span class='layout'>,</span>+<a name="line-66"></a> <span class='varid'>a_parse_by_mimetype</span><span class='layout'>,</span>+<a name="line-67"></a> <span class='varid'>a_parse_html</span><span class='layout'>,</span>+<a name="line-68"></a> <span class='varid'>a_parse_xml</span><span class='layout'>,</span>+<a name="line-69"></a> <span class='varid'>a_peref</span><span class='layout'>,</span>+<a name="line-70"></a> <span class='varid'>a_preserve_comment</span><span class='layout'>,</span>+<a name="line-71"></a> <span class='varid'>a_propagate_errors</span><span class='layout'>,</span>+<a name="line-72"></a> <span class='varid'>a_proxy</span><span class='layout'>,</span>+<a name="line-73"></a> <span class='varid'>a_remove_whitespace</span><span class='layout'>,</span>+<a name="line-74"></a> <span class='varid'>a_show_haskell</span><span class='layout'>,</span>+<a name="line-75"></a> <span class='varid'>a_show_tree</span><span class='layout'>,</span>+<a name="line-76"></a> <span class='varid'>a_source</span><span class='layout'>,</span>+<a name="line-77"></a> <span class='varid'>a_status</span><span class='layout'>,</span>+<a name="line-78"></a> <span class='varid'>a_standalone</span><span class='layout'>,</span>+<a name="line-79"></a> <span class='varid'>a_strict_input</span><span class='layout'>,</span>+<a name="line-80"></a> <span class='varid'>a_tagsoup</span><span class='layout'>,</span>+<a name="line-81"></a> <span class='varid'>a_trace</span><span class='layout'>,</span>+<a name="line-82"></a> <span class='varid'>a_type</span><span class='layout'>,</span>+<a name="line-83"></a> <span class='varid'>a_use_curl</span><span class='layout'>,</span>+<a name="line-84"></a> <span class='varid'>a_url</span><span class='layout'>,</span>+<a name="line-85"></a> <span class='varid'>a_validate</span><span class='layout'>,</span>+<a name="line-86"></a> <span class='varid'>a_value</span><span class='layout'>,</span>+<a name="line-87"></a> <span class='varid'>a_verbose</span><span class='layout'>,</span>+<a name="line-88"></a> <span class='varid'>a_version</span><span class='layout'>,</span>+<a name="line-89"></a> <span class='varid'>a_xml</span><span class='layout'>,</span>+<a name="line-90"></a> <span class='varid'>a_xmlns</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-91"></a>+<a name="line-92"></a><a name="v_0"></a><span class='definition'>v_0</span><span class='layout'>,</span> <span class='comment'>-- attribute values</span>+<a name="line-93"></a> <span class='varid'>v_1</span><span class='layout'>,</span>+<a name="line-94"></a> <span class='varid'>v_yes</span><span class='layout'>,</span>+<a name="line-95"></a> <span class='varid'>v_no</span><span class='layout'>,</span>+<a name="line-96"></a> <span class='varid'>v_any</span><span class='layout'>,</span>+<a name="line-97"></a> <span class='varid'>v_children</span><span class='layout'>,</span>+<a name="line-98"></a> <span class='varid'>v_choice</span><span class='layout'>,</span>+<a name="line-99"></a> <span class='varid'>v_empty</span><span class='layout'>,</span>+<a name="line-100"></a> <span class='varid'>v_mixed</span><span class='layout'>,</span>+<a name="line-101"></a> <span class='varid'>v_seq</span><span class='layout'>,</span>+<a name="line-102"></a> <span class='varid'>v_null</span><span class='layout'>,</span>+<a name="line-103"></a> <span class='varid'>v_option</span><span class='layout'>,</span>+<a name="line-104"></a> <span class='varid'>v_pcdata</span><span class='layout'>,</span>+<a name="line-105"></a> <span class='varid'>v_star</span><span class='layout'>,</span>+<a name="line-106"></a> <span class='varid'>v_plus</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-107"></a>+<a name="line-108"></a><a name="k_any"></a><span class='definition'>k_any</span><span class='layout'>,</span> <span class='comment'>-- DTD keywords</span>+<a name="line-109"></a> <span class='varid'>k_cdata</span><span class='layout'>,</span>+<a name="line-110"></a> <span class='varid'>k_empty</span><span class='layout'>,</span>+<a name="line-111"></a> <span class='varid'>k_entity</span><span class='layout'>,</span>+<a name="line-112"></a> <span class='varid'>k_entities</span><span class='layout'>,</span>+<a name="line-113"></a> <span class='varid'>k_id</span><span class='layout'>,</span>+<a name="line-114"></a> <span class='varid'>k_idref</span><span class='layout'>,</span>+<a name="line-115"></a> <span class='varid'>k_idrefs</span><span class='layout'>,</span>+<a name="line-116"></a> <span class='varid'>k_include</span><span class='layout'>,</span>+<a name="line-117"></a> <span class='varid'>k_ignore</span><span class='layout'>,</span>+<a name="line-118"></a> <span class='varid'>k_nmtoken</span><span class='layout'>,</span>+<a name="line-119"></a> <span class='varid'>k_nmtokens</span><span class='layout'>,</span>+<a name="line-120"></a> <span class='varid'>k_peref</span><span class='layout'>,</span>+<a name="line-121"></a> <span class='varid'>k_public</span><span class='layout'>,</span>+<a name="line-122"></a> <span class='varid'>k_system</span><span class='layout'>,</span>+<a name="line-123"></a> <span class='varid'>k_enumeration</span><span class='layout'>,</span>+<a name="line-124"></a> <span class='varid'>k_fixed</span><span class='layout'>,</span>+<a name="line-125"></a> <span class='varid'>k_implied</span><span class='layout'>,</span>+<a name="line-126"></a> <span class='varid'>k_ndata</span><span class='layout'>,</span>+<a name="line-127"></a> <span class='varid'>k_notation</span><span class='layout'>,</span>+<a name="line-128"></a> <span class='varid'>k_pcdata</span><span class='layout'>,</span>+<a name="line-129"></a> <span class='varid'>k_required</span><span class='layout'>,</span>+<a name="line-130"></a> <span class='varid'>k_default</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <a name="line-131"></a>-<a name="line-132"></a><span class='definition'>t_xml</span> <span class='keyglyph'>=</span> <span class='str'>"xml"</span>-<a name="line-133"></a><a name="t_root"></a><span class='definition'>t_root</span> <span class='keyglyph'>=</span> <span class='str'>"/"</span> <span class='comment'>-- name of root node tag</span>-<a name="line-134"></a>-<a name="line-135"></a><span class='definition'>a_canonicalize</span> <span class='keyglyph'>=</span> <span class='str'>"canonicalize"</span>-<a name="line-136"></a><a name="a_check_namespaces"></a><span class='definition'>a_check_namespaces</span> <span class='keyglyph'>=</span> <span class='str'>"check-namespaces"</span>-<a name="line-137"></a><a name="a_collect_errors"></a><span class='definition'>a_collect_errors</span> <span class='keyglyph'>=</span> <span class='str'>"collect-errors"</span>-<a name="line-138"></a><a name="a_column"></a><span class='definition'>a_column</span> <span class='keyglyph'>=</span> <span class='str'>"column"</span>-<a name="line-139"></a><a name="a_contentLength"></a><span class='definition'>a_contentLength</span> <span class='keyglyph'>=</span> <span class='str'>"Content-Length"</span>-<a name="line-140"></a><a name="a_default"></a><span class='definition'>a_default</span> <span class='keyglyph'>=</span> <span class='str'>"default"</span>-<a name="line-141"></a><a name="a_default_baseuri"></a><span class='definition'>a_default_baseuri</span> <span class='keyglyph'>=</span> <span class='str'>"default-base-URI"</span>-<a name="line-142"></a><a name="a_do_not_canonicalize"></a><span class='definition'>a_do_not_canonicalize</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-canonicalize"</span>-<a name="line-143"></a><a name="a_do_not_check_namespaces"></a><span class='definition'>a_do_not_check_namespaces</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-check-namespaces"</span>-<a name="line-144"></a><a name="a_do_not_issue_errors"></a><span class='definition'>a_do_not_issue_errors</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-issue-errors"</span>-<a name="line-145"></a><a name="a_do_not_issue_warnings"></a><span class='definition'>a_do_not_issue_warnings</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-issue-warnings"</span>-<a name="line-146"></a><a name="a_do_not_preserve_comment"></a><span class='definition'>a_do_not_preserve_comment</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-preserve-comment"</span>-<a name="line-147"></a><a name="a_do_not_remove_whitespace"></a><span class='definition'>a_do_not_remove_whitespace</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-remove-whitespace"</span>-<a name="line-148"></a><a name="a_do_not_use_curl"></a><span class='definition'>a_do_not_use_curl</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-use-curl"</span>-<a name="line-149"></a><a name="a_do_not_validate"></a><span class='definition'>a_do_not_validate</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-validate"</span>-<a name="line-150"></a><a name="a_encoding"></a><span class='definition'>a_encoding</span> <span class='keyglyph'>=</span> <span class='str'>"encoding"</span>-<a name="line-151"></a><a name="a_error"></a><span class='definition'>a_error</span> <span class='keyglyph'>=</span> <span class='str'>"error"</span>-<a name="line-152"></a><a name="a_error_log"></a><span class='definition'>a_error_log</span> <span class='keyglyph'>=</span> <span class='str'>"errorLog"</span>-<a name="line-153"></a><a name="a_help"></a><span class='definition'>a_help</span> <span class='keyglyph'>=</span> <span class='str'>"help"</span>-<a name="line-154"></a><a name="a_ignore_encoding_errors"></a><span class='definition'>a_ignore_encoding_errors</span> <span class='keyglyph'>=</span> <span class='str'>"ignore-encoding-errors"</span>-<a name="line-155"></a><a name="a_ignore_none_xml_contents"></a><span class='definition'>a_ignore_none_xml_contents</span> <span class='keyglyph'>=</span> <span class='str'>"ignore-none-xml-contents"</span>-<a name="line-156"></a><a name="a_indent"></a><span class='definition'>a_indent</span> <span class='keyglyph'>=</span> <span class='str'>"indent"</span>-<a name="line-157"></a><a name="a_issue_warnings"></a><span class='definition'>a_issue_warnings</span> <span class='keyglyph'>=</span> <span class='str'>"issue-warnings"</span>-<a name="line-158"></a><a name="a_issue_errors"></a><span class='definition'>a_issue_errors</span> <span class='keyglyph'>=</span> <span class='str'>"issue-errors"</span>-<a name="line-159"></a><a name="a_kind"></a><span class='definition'>a_kind</span> <span class='keyglyph'>=</span> <span class='str'>"kind"</span>-<a name="line-160"></a><a name="a_line"></a><span class='definition'>a_line</span> <span class='keyglyph'>=</span> <span class='str'>"line"</span>-<a name="line-161"></a><a name="a_mime_types"></a><span class='definition'>a_mime_types</span> <span class='keyglyph'>=</span> <span class='str'>"mimetypes"</span>-<a name="line-162"></a><a name="a_module"></a><span class='definition'>a_module</span> <span class='keyglyph'>=</span> <span class='str'>"module"</span>-<a name="line-163"></a><a name="a_modifier"></a><span class='definition'>a_modifier</span> <span class='keyglyph'>=</span> <span class='str'>"modifier"</span>-<a name="line-164"></a><a name="a_name"></a><span class='definition'>a_name</span> <span class='keyglyph'>=</span> <span class='str'>"name"</span>-<a name="line-165"></a><a name="a_no_xml_pi"></a><span class='definition'>a_no_xml_pi</span> <span class='keyglyph'>=</span> <span class='str'>"no-xml-pi"</span>-<a name="line-166"></a><a name="a_options_curl"></a><span class='definition'>a_options_curl</span> <span class='keyglyph'>=</span> <span class='str'>"options-curl"</span>-<a name="line-167"></a><a name="a_output_file"></a><span class='definition'>a_output_file</span> <span class='keyglyph'>=</span> <span class='str'>"output-file"</span>-<a name="line-168"></a><a name="a_output_encoding"></a><span class='definition'>a_output_encoding</span> <span class='keyglyph'>=</span> <span class='str'>"output-encoding"</span>-<a name="line-169"></a><a name="a_output_html"></a><span class='definition'>a_output_html</span> <span class='keyglyph'>=</span> <span class='str'>"output-html"</span>-<a name="line-170"></a><a name="a_output_xml"></a><span class='definition'>a_output_xml</span> <span class='keyglyph'>=</span> <span class='str'>"output-xml"</span>-<a name="line-171"></a><a name="a_parse_by_mimetype"></a><span class='definition'>a_parse_by_mimetype</span> <span class='keyglyph'>=</span> <span class='str'>"parse-by-mimetype"</span>-<a name="line-172"></a><a name="a_parse_html"></a><span class='definition'>a_parse_html</span> <span class='keyglyph'>=</span> <span class='str'>"parse-html"</span>-<a name="line-173"></a><a name="a_parse_xml"></a><span class='definition'>a_parse_xml</span> <span class='keyglyph'>=</span> <span class='str'>"parse-xml"</span>-<a name="line-174"></a><a name="a_peref"></a><span class='definition'>a_peref</span> <span class='keyglyph'>=</span> <span class='varid'>k_peref</span>-<a name="line-175"></a><a name="a_preserve_comment"></a><span class='definition'>a_preserve_comment</span> <span class='keyglyph'>=</span> <span class='str'>"preserve-comment"</span>-<a name="line-176"></a><a name="a_propagate_errors"></a><span class='definition'>a_propagate_errors</span> <span class='keyglyph'>=</span> <span class='str'>"propagate-errors"</span>-<a name="line-177"></a><a name="a_proxy"></a><span class='definition'>a_proxy</span> <span class='keyglyph'>=</span> <span class='str'>"proxy"</span>-<a name="line-178"></a><a name="a_remove_whitespace"></a><span class='definition'>a_remove_whitespace</span> <span class='keyglyph'>=</span> <span class='str'>"remove-whitespace"</span>-<a name="line-179"></a><a name="a_show_haskell"></a><span class='definition'>a_show_haskell</span> <span class='keyglyph'>=</span> <span class='str'>"show-haskell"</span>-<a name="line-180"></a><a name="a_show_tree"></a><span class='definition'>a_show_tree</span> <span class='keyglyph'>=</span> <span class='str'>"show-tree"</span>-<a name="line-181"></a><a name="a_source"></a><span class='definition'>a_source</span> <span class='keyglyph'>=</span> <span class='str'>"source"</span>-<a name="line-182"></a><a name="a_standalone"></a><span class='definition'>a_standalone</span> <span class='keyglyph'>=</span> <span class='str'>"standalone"</span>-<a name="line-183"></a><a name="a_status"></a><span class='definition'>a_status</span> <span class='keyglyph'>=</span> <span class='str'>"status"</span>-<a name="line-184"></a><a name="a_tagsoup"></a><span class='definition'>a_tagsoup</span> <span class='keyglyph'>=</span> <span class='str'>"tagsoup"</span>-<a name="line-185"></a><a name="a_trace"></a><span class='definition'>a_trace</span> <span class='keyglyph'>=</span> <span class='str'>"trace"</span>-<a name="line-186"></a><a name="a_type"></a><span class='definition'>a_type</span> <span class='keyglyph'>=</span> <span class='str'>"type"</span>-<a name="line-187"></a><a name="a_url"></a><span class='definition'>a_url</span> <span class='keyglyph'>=</span> <span class='str'>"url"</span>-<a name="line-188"></a><a name="a_use_curl"></a><span class='definition'>a_use_curl</span> <span class='keyglyph'>=</span> <span class='str'>"use-curl"</span>-<a name="line-189"></a><a name="a_validate"></a><span class='definition'>a_validate</span> <span class='keyglyph'>=</span> <span class='str'>"validate"</span>-<a name="line-190"></a><a name="a_value"></a><span class='definition'>a_value</span> <span class='keyglyph'>=</span> <span class='str'>"value"</span>-<a name="line-191"></a><a name="a_verbose"></a><span class='definition'>a_verbose</span> <span class='keyglyph'>=</span> <span class='str'>"verbose"</span>-<a name="line-192"></a><a name="a_version"></a><span class='definition'>a_version</span> <span class='keyglyph'>=</span> <span class='str'>"version"</span>-<a name="line-193"></a><a name="a_xml"></a><span class='definition'>a_xml</span> <span class='keyglyph'>=</span> <span class='str'>"xml"</span>-<a name="line-194"></a><a name="a_xmlns"></a><span class='definition'>a_xmlns</span> <span class='keyglyph'>=</span> <span class='str'>"xmlns"</span>-<a name="line-195"></a>-<a name="line-196"></a><a name="v_yes"></a><span class='definition'>v_yes</span> <span class='keyglyph'>=</span> <span class='str'>"yes"</span>-<a name="line-197"></a><a name="v_no"></a><span class='definition'>v_no</span> <span class='keyglyph'>=</span> <span class='str'>"no"</span>-<a name="line-198"></a><a name="v_1"></a><span class='definition'>v_1</span> <span class='keyglyph'>=</span> <span class='str'>"1"</span>-<a name="line-199"></a><span class='definition'>v_0</span> <span class='keyglyph'>=</span> <span class='str'>"0"</span>-<a name="line-200"></a>-<a name="line-201"></a><a name="v_any"></a><span class='definition'>v_any</span> <span class='keyglyph'>=</span> <span class='varid'>k_any</span>-<a name="line-202"></a><a name="v_children"></a><span class='definition'>v_children</span> <span class='keyglyph'>=</span> <span class='str'>"children"</span>-<a name="line-203"></a><a name="v_choice"></a><span class='definition'>v_choice</span> <span class='keyglyph'>=</span> <span class='str'>"choice"</span>-<a name="line-204"></a><a name="v_empty"></a><span class='definition'>v_empty</span> <span class='keyglyph'>=</span> <span class='varid'>k_empty</span>-<a name="line-205"></a><a name="v_pcdata"></a><span class='definition'>v_pcdata</span> <span class='keyglyph'>=</span> <span class='varid'>k_pcdata</span>-<a name="line-206"></a><a name="v_mixed"></a><span class='definition'>v_mixed</span> <span class='keyglyph'>=</span> <span class='str'>"mixed"</span>-<a name="line-207"></a><a name="v_seq"></a><span class='definition'>v_seq</span> <span class='keyglyph'>=</span> <span class='str'>"seq"</span>-<a name="line-208"></a>-<a name="line-209"></a><a name="v_null"></a><span class='definition'>v_null</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-210"></a><a name="v_option"></a><span class='definition'>v_option</span> <span class='keyglyph'>=</span> <span class='str'>"?"</span>-<a name="line-211"></a><a name="v_star"></a><span class='definition'>v_star</span> <span class='keyglyph'>=</span> <span class='str'>"*"</span>-<a name="line-212"></a><a name="v_plus"></a><span class='definition'>v_plus</span> <span class='keyglyph'>=</span> <span class='str'>"+"</span>-<a name="line-213"></a>-<a name="line-214"></a><span class='definition'>k_any</span> <span class='keyglyph'>=</span> <span class='str'>"ANY"</span>-<a name="line-215"></a><a name="k_cdata"></a><span class='definition'>k_cdata</span> <span class='keyglyph'>=</span> <span class='str'>"CDATA"</span>-<a name="line-216"></a><a name="k_empty"></a><span class='definition'>k_empty</span> <span class='keyglyph'>=</span> <span class='str'>"EMPTY"</span>-<a name="line-217"></a><a name="k_entity"></a><span class='definition'>k_entity</span> <span class='keyglyph'>=</span> <span class='str'>"ENTITY"</span>-<a name="line-218"></a><a name="k_entities"></a><span class='definition'>k_entities</span> <span class='keyglyph'>=</span> <span class='str'>"ENTITIES"</span>-<a name="line-219"></a><a name="k_id"></a><span class='definition'>k_id</span> <span class='keyglyph'>=</span> <span class='str'>"ID"</span>-<a name="line-220"></a><a name="k_idref"></a><span class='definition'>k_idref</span> <span class='keyglyph'>=</span> <span class='str'>"IDREF"</span>-<a name="line-221"></a><a name="k_idrefs"></a><span class='definition'>k_idrefs</span> <span class='keyglyph'>=</span> <span class='str'>"IDREFS"</span>-<a name="line-222"></a><a name="k_include"></a><span class='definition'>k_include</span> <span class='keyglyph'>=</span> <span class='str'>"INCLUDE"</span>-<a name="line-223"></a><a name="k_ignore"></a><span class='definition'>k_ignore</span> <span class='keyglyph'>=</span> <span class='str'>"IGNORE"</span>-<a name="line-224"></a><a name="k_nmtoken"></a><span class='definition'>k_nmtoken</span> <span class='keyglyph'>=</span> <span class='str'>"NMTOKEN"</span>-<a name="line-225"></a><a name="k_nmtokens"></a><span class='definition'>k_nmtokens</span> <span class='keyglyph'>=</span> <span class='str'>"NMTOKENS"</span>-<a name="line-226"></a><a name="k_peref"></a><span class='definition'>k_peref</span> <span class='keyglyph'>=</span> <span class='str'>"PERef"</span>-<a name="line-227"></a><a name="k_public"></a><span class='definition'>k_public</span> <span class='keyglyph'>=</span> <span class='str'>"PUBLIC"</span>-<a name="line-228"></a><a name="k_system"></a><span class='definition'>k_system</span> <span class='keyglyph'>=</span> <span class='str'>"SYSTEM"</span>-<a name="line-229"></a>-<a name="line-230"></a><a name="k_enumeration"></a><span class='definition'>k_enumeration</span> <span class='keyglyph'>=</span> <span class='str'>"#ENUMERATION"</span>-<a name="line-231"></a><a name="k_fixed"></a><span class='definition'>k_fixed</span> <span class='keyglyph'>=</span> <span class='str'>"#FIXED"</span>-<a name="line-232"></a><a name="k_implied"></a><span class='definition'>k_implied</span> <span class='keyglyph'>=</span> <span class='str'>"#IMPLIED"</span>-<a name="line-233"></a><a name="k_ndata"></a><span class='definition'>k_ndata</span> <span class='keyglyph'>=</span> <span class='str'>"NDATA"</span>-<a name="line-234"></a><a name="k_notation"></a><span class='definition'>k_notation</span> <span class='keyglyph'>=</span> <span class='str'>"NOTATION"</span>-<a name="line-235"></a><a name="k_pcdata"></a><span class='definition'>k_pcdata</span> <span class='keyglyph'>=</span> <span class='str'>"#PCDATA"</span>-<a name="line-236"></a><a name="k_required"></a><span class='definition'>k_required</span> <span class='keyglyph'>=</span> <span class='str'>"#REQUIRED"</span>-<a name="line-237"></a><a name="k_default"></a><span class='definition'>k_default</span> <span class='keyglyph'>=</span> <span class='str'>"#DEFAULT"</span>-<a name="line-238"></a>-<a name="line-239"></a>-<a name="line-240"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-241"></a><span class='comment'>--</span>+<a name="line-132"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-133"></a>+<a name="line-134"></a><span class='definition'>t_xml</span> <span class='keyglyph'>=</span> <span class='str'>"xml"</span>+<a name="line-135"></a><a name="t_root"></a><span class='definition'>t_root</span> <span class='keyglyph'>=</span> <span class='str'>"/"</span> <span class='comment'>-- name of root node tag</span>+<a name="line-136"></a>+<a name="line-137"></a><span class='definition'>a_canonicalize</span> <span class='keyglyph'>=</span> <span class='str'>"canonicalize"</span>+<a name="line-138"></a><a name="a_check_namespaces"></a><span class='definition'>a_check_namespaces</span> <span class='keyglyph'>=</span> <span class='str'>"check-namespaces"</span>+<a name="line-139"></a><a name="a_collect_errors"></a><span class='definition'>a_collect_errors</span> <span class='keyglyph'>=</span> <span class='str'>"collect-errors"</span>+<a name="line-140"></a><a name="a_column"></a><span class='definition'>a_column</span> <span class='keyglyph'>=</span> <span class='str'>"column"</span>+<a name="line-141"></a><a name="a_contentLength"></a><span class='definition'>a_contentLength</span> <span class='keyglyph'>=</span> <span class='str'>"Content-Length"</span>+<a name="line-142"></a><a name="a_default"></a><span class='definition'>a_default</span> <span class='keyglyph'>=</span> <span class='str'>"default"</span>+<a name="line-143"></a><a name="a_default_baseuri"></a><span class='definition'>a_default_baseuri</span> <span class='keyglyph'>=</span> <span class='str'>"default-base-URI"</span>+<a name="line-144"></a><a name="a_do_not_canonicalize"></a><span class='definition'>a_do_not_canonicalize</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-canonicalize"</span>+<a name="line-145"></a><a name="a_do_not_check_namespaces"></a><span class='definition'>a_do_not_check_namespaces</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-check-namespaces"</span>+<a name="line-146"></a><a name="a_do_not_issue_errors"></a><span class='definition'>a_do_not_issue_errors</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-issue-errors"</span>+<a name="line-147"></a><a name="a_do_not_issue_warnings"></a><span class='definition'>a_do_not_issue_warnings</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-issue-warnings"</span>+<a name="line-148"></a><a name="a_do_not_preserve_comment"></a><span class='definition'>a_do_not_preserve_comment</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-preserve-comment"</span>+<a name="line-149"></a><a name="a_do_not_remove_whitespace"></a><span class='definition'>a_do_not_remove_whitespace</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-remove-whitespace"</span>+<a name="line-150"></a><a name="a_do_not_use_curl"></a><span class='definition'>a_do_not_use_curl</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-use-curl"</span>+<a name="line-151"></a><a name="a_do_not_validate"></a><span class='definition'>a_do_not_validate</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-validate"</span>+<a name="line-152"></a><a name="a_encoding"></a><span class='definition'>a_encoding</span> <span class='keyglyph'>=</span> <span class='str'>"encoding"</span>+<a name="line-153"></a><a name="a_error"></a><span class='definition'>a_error</span> <span class='keyglyph'>=</span> <span class='str'>"error"</span>+<a name="line-154"></a><a name="a_error_log"></a><span class='definition'>a_error_log</span> <span class='keyglyph'>=</span> <span class='str'>"errorLog"</span>+<a name="line-155"></a><a name="a_help"></a><span class='definition'>a_help</span> <span class='keyglyph'>=</span> <span class='str'>"help"</span>+<a name="line-156"></a><a name="a_ignore_encoding_errors"></a><span class='definition'>a_ignore_encoding_errors</span> <span class='keyglyph'>=</span> <span class='str'>"ignore-encoding-errors"</span>+<a name="line-157"></a><a name="a_ignore_none_xml_contents"></a><span class='definition'>a_ignore_none_xml_contents</span> <span class='keyglyph'>=</span> <span class='str'>"ignore-none-xml-contents"</span>+<a name="line-158"></a><a name="a_indent"></a><span class='definition'>a_indent</span> <span class='keyglyph'>=</span> <span class='str'>"indent"</span>+<a name="line-159"></a><a name="a_issue_warnings"></a><span class='definition'>a_issue_warnings</span> <span class='keyglyph'>=</span> <span class='str'>"issue-warnings"</span>+<a name="line-160"></a><a name="a_issue_errors"></a><span class='definition'>a_issue_errors</span> <span class='keyglyph'>=</span> <span class='str'>"issue-errors"</span>+<a name="line-161"></a><a name="a_kind"></a><span class='definition'>a_kind</span> <span class='keyglyph'>=</span> <span class='str'>"kind"</span>+<a name="line-162"></a><a name="a_line"></a><span class='definition'>a_line</span> <span class='keyglyph'>=</span> <span class='str'>"line"</span>+<a name="line-163"></a><a name="a_mime_types"></a><span class='definition'>a_mime_types</span> <span class='keyglyph'>=</span> <span class='str'>"mimetypes"</span>+<a name="line-164"></a><a name="a_module"></a><span class='definition'>a_module</span> <span class='keyglyph'>=</span> <span class='str'>"module"</span>+<a name="line-165"></a><a name="a_modifier"></a><span class='definition'>a_modifier</span> <span class='keyglyph'>=</span> <span class='str'>"modifier"</span>+<a name="line-166"></a><a name="a_name"></a><span class='definition'>a_name</span> <span class='keyglyph'>=</span> <span class='str'>"name"</span>+<a name="line-167"></a><a name="a_no_empty_elements"></a><span class='definition'>a_no_empty_elements</span> <span class='keyglyph'>=</span> <span class='str'>"no-empty-elements"</span>+<a name="line-168"></a><a name="a_no_xml_pi"></a><span class='definition'>a_no_xml_pi</span> <span class='keyglyph'>=</span> <span class='str'>"no-xml-pi"</span>+<a name="line-169"></a><a name="a_options_curl"></a><span class='definition'>a_options_curl</span> <span class='keyglyph'>=</span> <span class='str'>"options-curl"</span>+<a name="line-170"></a><a name="a_output_file"></a><span class='definition'>a_output_file</span> <span class='keyglyph'>=</span> <span class='str'>"output-file"</span>+<a name="line-171"></a><a name="a_output_encoding"></a><span class='definition'>a_output_encoding</span> <span class='keyglyph'>=</span> <span class='str'>"output-encoding"</span>+<a name="line-172"></a><a name="a_output_html"></a><span class='definition'>a_output_html</span> <span class='keyglyph'>=</span> <span class='str'>"output-html"</span>+<a name="line-173"></a><a name="a_output_xml"></a><span class='definition'>a_output_xml</span> <span class='keyglyph'>=</span> <span class='str'>"output-xml"</span>+<a name="line-174"></a><a name="a_parse_by_mimetype"></a><span class='definition'>a_parse_by_mimetype</span> <span class='keyglyph'>=</span> <span class='str'>"parse-by-mimetype"</span>+<a name="line-175"></a><a name="a_parse_html"></a><span class='definition'>a_parse_html</span> <span class='keyglyph'>=</span> <span class='str'>"parse-html"</span>+<a name="line-176"></a><a name="a_parse_xml"></a><span class='definition'>a_parse_xml</span> <span class='keyglyph'>=</span> <span class='str'>"parse-xml"</span>+<a name="line-177"></a><a name="a_peref"></a><span class='definition'>a_peref</span> <span class='keyglyph'>=</span> <span class='varid'>k_peref</span>+<a name="line-178"></a><a name="a_preserve_comment"></a><span class='definition'>a_preserve_comment</span> <span class='keyglyph'>=</span> <span class='str'>"preserve-comment"</span>+<a name="line-179"></a><a name="a_propagate_errors"></a><span class='definition'>a_propagate_errors</span> <span class='keyglyph'>=</span> <span class='str'>"propagate-errors"</span>+<a name="line-180"></a><a name="a_proxy"></a><span class='definition'>a_proxy</span> <span class='keyglyph'>=</span> <span class='str'>"proxy"</span>+<a name="line-181"></a><a name="a_remove_whitespace"></a><span class='definition'>a_remove_whitespace</span> <span class='keyglyph'>=</span> <span class='str'>"remove-whitespace"</span>+<a name="line-182"></a><a name="a_show_haskell"></a><span class='definition'>a_show_haskell</span> <span class='keyglyph'>=</span> <span class='str'>"show-haskell"</span>+<a name="line-183"></a><a name="a_show_tree"></a><span class='definition'>a_show_tree</span> <span class='keyglyph'>=</span> <span class='str'>"show-tree"</span>+<a name="line-184"></a><a name="a_source"></a><span class='definition'>a_source</span> <span class='keyglyph'>=</span> <span class='str'>"source"</span>+<a name="line-185"></a><a name="a_standalone"></a><span class='definition'>a_standalone</span> <span class='keyglyph'>=</span> <span class='str'>"standalone"</span>+<a name="line-186"></a><a name="a_status"></a><span class='definition'>a_status</span> <span class='keyglyph'>=</span> <span class='str'>"status"</span>+<a name="line-187"></a><a name="a_strict_input"></a><span class='definition'>a_strict_input</span> <span class='keyglyph'>=</span> <span class='str'>"strict-input"</span>+<a name="line-188"></a><a name="a_tagsoup"></a><span class='definition'>a_tagsoup</span> <span class='keyglyph'>=</span> <span class='str'>"tagsoup"</span>+<a name="line-189"></a><a name="a_trace"></a><span class='definition'>a_trace</span> <span class='keyglyph'>=</span> <span class='str'>"trace"</span>+<a name="line-190"></a><a name="a_type"></a><span class='definition'>a_type</span> <span class='keyglyph'>=</span> <span class='str'>"type"</span>+<a name="line-191"></a><a name="a_url"></a><span class='definition'>a_url</span> <span class='keyglyph'>=</span> <span class='str'>"url"</span>+<a name="line-192"></a><a name="a_use_curl"></a><span class='definition'>a_use_curl</span> <span class='keyglyph'>=</span> <span class='str'>"use-curl"</span>+<a name="line-193"></a><a name="a_validate"></a><span class='definition'>a_validate</span> <span class='keyglyph'>=</span> <span class='str'>"validate"</span>+<a name="line-194"></a><a name="a_value"></a><span class='definition'>a_value</span> <span class='keyglyph'>=</span> <span class='str'>"value"</span>+<a name="line-195"></a><a name="a_verbose"></a><span class='definition'>a_verbose</span> <span class='keyglyph'>=</span> <span class='str'>"verbose"</span>+<a name="line-196"></a><a name="a_version"></a><span class='definition'>a_version</span> <span class='keyglyph'>=</span> <span class='str'>"version"</span>+<a name="line-197"></a><a name="a_xml"></a><span class='definition'>a_xml</span> <span class='keyglyph'>=</span> <span class='str'>"xml"</span>+<a name="line-198"></a><a name="a_xmlns"></a><span class='definition'>a_xmlns</span> <span class='keyglyph'>=</span> <span class='str'>"xmlns"</span>+<a name="line-199"></a>+<a name="line-200"></a><a name="v_yes"></a><span class='definition'>v_yes</span> <span class='keyglyph'>=</span> <span class='str'>"yes"</span>+<a name="line-201"></a><a name="v_no"></a><span class='definition'>v_no</span> <span class='keyglyph'>=</span> <span class='str'>"no"</span>+<a name="line-202"></a><a name="v_1"></a><span class='definition'>v_1</span> <span class='keyglyph'>=</span> <span class='str'>"1"</span>+<a name="line-203"></a><span class='definition'>v_0</span> <span class='keyglyph'>=</span> <span class='str'>"0"</span>+<a name="line-204"></a>+<a name="line-205"></a><a name="v_any"></a><span class='definition'>v_any</span> <span class='keyglyph'>=</span> <span class='varid'>k_any</span>+<a name="line-206"></a><a name="v_children"></a><span class='definition'>v_children</span> <span class='keyglyph'>=</span> <span class='str'>"children"</span>+<a name="line-207"></a><a name="v_choice"></a><span class='definition'>v_choice</span> <span class='keyglyph'>=</span> <span class='str'>"choice"</span>+<a name="line-208"></a><a name="v_empty"></a><span class='definition'>v_empty</span> <span class='keyglyph'>=</span> <span class='varid'>k_empty</span>+<a name="line-209"></a><a name="v_pcdata"></a><span class='definition'>v_pcdata</span> <span class='keyglyph'>=</span> <span class='varid'>k_pcdata</span>+<a name="line-210"></a><a name="v_mixed"></a><span class='definition'>v_mixed</span> <span class='keyglyph'>=</span> <span class='str'>"mixed"</span>+<a name="line-211"></a><a name="v_seq"></a><span class='definition'>v_seq</span> <span class='keyglyph'>=</span> <span class='str'>"seq"</span>+<a name="line-212"></a>+<a name="line-213"></a><a name="v_null"></a><span class='definition'>v_null</span> <span class='keyglyph'>=</span> <span class='str'>""</span>+<a name="line-214"></a><a name="v_option"></a><span class='definition'>v_option</span> <span class='keyglyph'>=</span> <span class='str'>"?"</span>+<a name="line-215"></a><a name="v_star"></a><span class='definition'>v_star</span> <span class='keyglyph'>=</span> <span class='str'>"*"</span>+<a name="line-216"></a><a name="v_plus"></a><span class='definition'>v_plus</span> <span class='keyglyph'>=</span> <span class='str'>"+"</span>+<a name="line-217"></a>+<a name="line-218"></a><span class='definition'>k_any</span> <span class='keyglyph'>=</span> <span class='str'>"ANY"</span>+<a name="line-219"></a><a name="k_cdata"></a><span class='definition'>k_cdata</span> <span class='keyglyph'>=</span> <span class='str'>"CDATA"</span>+<a name="line-220"></a><a name="k_empty"></a><span class='definition'>k_empty</span> <span class='keyglyph'>=</span> <span class='str'>"EMPTY"</span>+<a name="line-221"></a><a name="k_entity"></a><span class='definition'>k_entity</span> <span class='keyglyph'>=</span> <span class='str'>"ENTITY"</span>+<a name="line-222"></a><a name="k_entities"></a><span class='definition'>k_entities</span> <span class='keyglyph'>=</span> <span class='str'>"ENTITIES"</span>+<a name="line-223"></a><a name="k_id"></a><span class='definition'>k_id</span> <span class='keyglyph'>=</span> <span class='str'>"ID"</span>+<a name="line-224"></a><a name="k_idref"></a><span class='definition'>k_idref</span> <span class='keyglyph'>=</span> <span class='str'>"IDREF"</span>+<a name="line-225"></a><a name="k_idrefs"></a><span class='definition'>k_idrefs</span> <span class='keyglyph'>=</span> <span class='str'>"IDREFS"</span>+<a name="line-226"></a><a name="k_include"></a><span class='definition'>k_include</span> <span class='keyglyph'>=</span> <span class='str'>"INCLUDE"</span>+<a name="line-227"></a><a name="k_ignore"></a><span class='definition'>k_ignore</span> <span class='keyglyph'>=</span> <span class='str'>"IGNORE"</span>+<a name="line-228"></a><a name="k_nmtoken"></a><span class='definition'>k_nmtoken</span> <span class='keyglyph'>=</span> <span class='str'>"NMTOKEN"</span>+<a name="line-229"></a><a name="k_nmtokens"></a><span class='definition'>k_nmtokens</span> <span class='keyglyph'>=</span> <span class='str'>"NMTOKENS"</span>+<a name="line-230"></a><a name="k_peref"></a><span class='definition'>k_peref</span> <span class='keyglyph'>=</span> <span class='str'>"PERef"</span>+<a name="line-231"></a><a name="k_public"></a><span class='definition'>k_public</span> <span class='keyglyph'>=</span> <span class='str'>"PUBLIC"</span>+<a name="line-232"></a><a name="k_system"></a><span class='definition'>k_system</span> <span class='keyglyph'>=</span> <span class='str'>"SYSTEM"</span>+<a name="line-233"></a>+<a name="line-234"></a><a name="k_enumeration"></a><span class='definition'>k_enumeration</span> <span class='keyglyph'>=</span> <span class='str'>"#ENUMERATION"</span>+<a name="line-235"></a><a name="k_fixed"></a><span class='definition'>k_fixed</span> <span class='keyglyph'>=</span> <span class='str'>"#FIXED"</span>+<a name="line-236"></a><a name="k_implied"></a><span class='definition'>k_implied</span> <span class='keyglyph'>=</span> <span class='str'>"#IMPLIED"</span>+<a name="line-237"></a><a name="k_ndata"></a><span class='definition'>k_ndata</span> <span class='keyglyph'>=</span> <span class='str'>"NDATA"</span>+<a name="line-238"></a><a name="k_notation"></a><span class='definition'>k_notation</span> <span class='keyglyph'>=</span> <span class='str'>"NOTATION"</span>+<a name="line-239"></a><a name="k_pcdata"></a><span class='definition'>k_pcdata</span> <span class='keyglyph'>=</span> <span class='str'>"#PCDATA"</span>+<a name="line-240"></a><a name="k_required"></a><span class='definition'>k_required</span> <span class='keyglyph'>=</span> <span class='str'>"#REQUIRED"</span>+<a name="line-241"></a><a name="k_default"></a><span class='definition'>k_default</span> <span class='keyglyph'>=</span> <span class='str'>"#DEFAULT"</span> <a name="line-242"></a>-<a name="line-243"></a><span class='comment'>-- attribute names for transfer protocol attributes</span>-<a name="line-244"></a><span class='comment'>-- used in XmlInput for describing header information</span>-<a name="line-245"></a><span class='comment'>-- of http and other requests</span>+<a name="line-243"></a>+<a name="line-244"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-245"></a><span class='comment'>--</span> <a name="line-246"></a>-<a name="line-247"></a><a name="transferPrefix"></a><span class='definition'>transferPrefix</span>-<a name="line-248"></a> <span class='layout'>,</span> <span class='varid'>transferProtocol</span>-<a name="line-249"></a> <span class='layout'>,</span> <span class='varid'>transferMimeType</span>-<a name="line-250"></a> <span class='layout'>,</span> <span class='varid'>transferEncoding</span>-<a name="line-251"></a> <span class='layout'>,</span> <span class='varid'>transferURI</span>-<a name="line-252"></a> <span class='layout'>,</span> <span class='varid'>transferDefaultURI</span>-<a name="line-253"></a> <span class='layout'>,</span> <span class='varid'>transferStatus</span>-<a name="line-254"></a> <span class='layout'>,</span> <span class='varid'>transferMessage</span>-<a name="line-255"></a> <span class='layout'>,</span> <span class='varid'>transferVersion</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-256"></a>-<a name="line-257"></a><span class='definition'>transferPrefix</span> <span class='keyglyph'>=</span> <span class='str'>"transfer-"</span>-<a name="line-258"></a>-<a name="line-259"></a><a name="transferProtocol"></a><span class='definition'>transferProtocol</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Protocol"</span>-<a name="line-260"></a><a name="transferVersion"></a><span class='definition'>transferVersion</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Version"</span>-<a name="line-261"></a><a name="transferMimeType"></a><span class='definition'>transferMimeType</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"MimeType"</span>-<a name="line-262"></a><a name="transferEncoding"></a><span class='definition'>transferEncoding</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Encoding"</span>-<a name="line-263"></a><a name="transferDefaultURI"></a><span class='definition'>transferDefaultURI</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"DefaultURI"</span>-<a name="line-264"></a><a name="transferStatus"></a><span class='definition'>transferStatus</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Status"</span>-<a name="line-265"></a><a name="transferMessage"></a><span class='definition'>transferMessage</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Message"</span>-<a name="line-266"></a><a name="transferURI"></a><span class='definition'>transferURI</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"URI"</span>-<a name="line-267"></a>-<a name="line-268"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-269"></a><span class='comment'>--</span>-<a name="line-270"></a>-<a name="line-271"></a><a name="httpPrefix"></a><span class='definition'>httpPrefix</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-272"></a><span class='definition'>httpPrefix</span> <span class='keyglyph'>=</span> <span class='str'>"http-"</span>-<a name="line-273"></a>-<a name="line-274"></a><a name="stringProtocol"></a><span class='definition'>stringProtocol</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-275"></a><span class='definition'>stringProtocol</span> <span class='keyglyph'>=</span> <span class='str'>"string:"</span>-<a name="line-276"></a>-<a name="line-277"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-278"></a><span class='comment'>--</span>-<a name="line-279"></a><span class='comment'>-- encoding names</span>+<a name="line-247"></a><span class='comment'>-- attribute names for transfer protocol attributes</span>+<a name="line-248"></a><span class='comment'>-- used in XmlInput for describing header information</span>+<a name="line-249"></a><span class='comment'>-- of http and other requests</span>+<a name="line-250"></a>+<a name="line-251"></a><a name="transferPrefix"></a><span class='definition'>transferPrefix</span>+<a name="line-252"></a> <span class='layout'>,</span> <span class='varid'>transferProtocol</span>+<a name="line-253"></a> <span class='layout'>,</span> <span class='varid'>transferMimeType</span>+<a name="line-254"></a> <span class='layout'>,</span> <span class='varid'>transferEncoding</span>+<a name="line-255"></a> <span class='layout'>,</span> <span class='varid'>transferURI</span>+<a name="line-256"></a> <span class='layout'>,</span> <span class='varid'>transferDefaultURI</span>+<a name="line-257"></a> <span class='layout'>,</span> <span class='varid'>transferStatus</span>+<a name="line-258"></a> <span class='layout'>,</span> <span class='varid'>transferMessage</span>+<a name="line-259"></a> <span class='layout'>,</span> <span class='varid'>transferVersion</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-260"></a>+<a name="line-261"></a><span class='definition'>transferPrefix</span> <span class='keyglyph'>=</span> <span class='str'>"transfer-"</span>+<a name="line-262"></a>+<a name="line-263"></a><a name="transferProtocol"></a><span class='definition'>transferProtocol</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Protocol"</span>+<a name="line-264"></a><a name="transferVersion"></a><span class='definition'>transferVersion</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Version"</span>+<a name="line-265"></a><a name="transferMimeType"></a><span class='definition'>transferMimeType</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"MimeType"</span>+<a name="line-266"></a><a name="transferEncoding"></a><span class='definition'>transferEncoding</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Encoding"</span>+<a name="line-267"></a><a name="transferDefaultURI"></a><span class='definition'>transferDefaultURI</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"DefaultURI"</span>+<a name="line-268"></a><a name="transferStatus"></a><span class='definition'>transferStatus</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Status"</span>+<a name="line-269"></a><a name="transferMessage"></a><span class='definition'>transferMessage</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"Message"</span>+<a name="line-270"></a><a name="transferURI"></a><span class='definition'>transferURI</span> <span class='keyglyph'>=</span> <span class='varid'>transferPrefix</span> <span class='varop'>++</span> <span class='str'>"URI"</span>+<a name="line-271"></a>+<a name="line-272"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-273"></a><span class='comment'>--</span>+<a name="line-274"></a>+<a name="line-275"></a><a name="httpPrefix"></a><span class='definition'>httpPrefix</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-276"></a><span class='definition'>httpPrefix</span> <span class='keyglyph'>=</span> <span class='str'>"http-"</span>+<a name="line-277"></a>+<a name="line-278"></a><a name="stringProtocol"></a><span class='definition'>stringProtocol</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-279"></a><span class='definition'>stringProtocol</span> <span class='keyglyph'>=</span> <span class='str'>"string:"</span> <a name="line-280"></a>-<a name="line-281"></a><a name="isoLatin1"></a><span class='definition'>isoLatin1</span>-<a name="line-282"></a> <span class='layout'>,</span> <span class='varid'>iso8859_1</span><span class='layout'>,</span> <span class='varid'>iso8859_2</span><span class='layout'>,</span> <span class='varid'>iso8859_3</span><span class='layout'>,</span> <span class='varid'>iso8859_4</span><span class='layout'>,</span> <span class='varid'>iso8859_5</span>-<a name="line-283"></a> <span class='layout'>,</span> <span class='varid'>iso8859_6</span><span class='layout'>,</span> <span class='varid'>iso8859_7</span><span class='layout'>,</span> <span class='varid'>iso8859_8</span><span class='layout'>,</span> <span class='varid'>iso8859_9</span><span class='layout'>,</span> <span class='varid'>iso8859_10</span>-<a name="line-284"></a> <span class='layout'>,</span> <span class='varid'>iso8859_11</span><span class='layout'>,</span> <span class='varid'>iso8859_13</span><span class='layout'>,</span> <span class='varid'>iso8859_14</span><span class='layout'>,</span> <span class='varid'>iso8859_15</span><span class='layout'>,</span> <span class='varid'>iso8859_16</span>-<a name="line-285"></a> <span class='layout'>,</span> <span class='varid'>usAscii</span><span class='layout'>,</span> <span class='varid'>ucs2</span><span class='layout'>,</span> <span class='varid'>utf8</span><span class='layout'>,</span> <span class='varid'>utf16</span><span class='layout'>,</span> <span class='varid'>utf16be</span><span class='layout'>,</span> <span class='varid'>utf16le</span><span class='layout'>,</span> <span class='varid'>unicodeString</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-286"></a>-<a name="line-287"></a><span class='definition'>isoLatin1</span> <span class='keyglyph'>=</span> <span class='varid'>iso8859_1</span>-<a name="line-288"></a><a name="iso8859_1"></a><span class='definition'>iso8859_1</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-1"</span>-<a name="line-289"></a><a name="iso8859_2"></a><span class='definition'>iso8859_2</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-2"</span>-<a name="line-290"></a><a name="iso8859_3"></a><span class='definition'>iso8859_3</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-3"</span>-<a name="line-291"></a><a name="iso8859_4"></a><span class='definition'>iso8859_4</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-4"</span>-<a name="line-292"></a><a name="iso8859_5"></a><span class='definition'>iso8859_5</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-5"</span>-<a name="line-293"></a><a name="iso8859_6"></a><span class='definition'>iso8859_6</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-6"</span>-<a name="line-294"></a><a name="iso8859_7"></a><span class='definition'>iso8859_7</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-7"</span>-<a name="line-295"></a><a name="iso8859_8"></a><span class='definition'>iso8859_8</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-8"</span>-<a name="line-296"></a><a name="iso8859_9"></a><span class='definition'>iso8859_9</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-9"</span>-<a name="line-297"></a><a name="iso8859_10"></a><span class='definition'>iso8859_10</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-10"</span>-<a name="line-298"></a><a name="iso8859_11"></a><span class='definition'>iso8859_11</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-11"</span>-<a name="line-299"></a><a name="iso8859_13"></a><span class='definition'>iso8859_13</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-13"</span>-<a name="line-300"></a><a name="iso8859_14"></a><span class='definition'>iso8859_14</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-14"</span>-<a name="line-301"></a><a name="iso8859_15"></a><span class='definition'>iso8859_15</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-15"</span>-<a name="line-302"></a><a name="iso8859_16"></a><span class='definition'>iso8859_16</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-16"</span>-<a name="line-303"></a><a name="usAscii"></a><span class='definition'>usAscii</span> <span class='keyglyph'>=</span> <span class='str'>"US-ASCII"</span>-<a name="line-304"></a><a name="ucs2"></a><span class='definition'>ucs2</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-10646-UCS-2"</span>-<a name="line-305"></a><a name="utf8"></a><span class='definition'>utf8</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-8"</span>-<a name="line-306"></a><a name="utf16"></a><span class='definition'>utf16</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16"</span>-<a name="line-307"></a><a name="utf16be"></a><span class='definition'>utf16be</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16BE"</span>-<a name="line-308"></a><a name="utf16le"></a><span class='definition'>utf16le</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16LE"</span>-<a name="line-309"></a><a name="unicodeString"></a><span class='definition'>unicodeString</span> <span class='keyglyph'>=</span> <span class='str'>"UNICODE"</span>-<a name="line-310"></a>-<a name="line-311"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-312"></a><span class='comment'>--</span>-<a name="line-313"></a><span class='comment'>-- known namespaces</span>+<a name="line-281"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-282"></a><span class='comment'>--</span>+<a name="line-283"></a><span class='comment'>-- encoding names</span>+<a name="line-284"></a>+<a name="line-285"></a><a name="isoLatin1"></a><span class='definition'>isoLatin1</span>+<a name="line-286"></a> <span class='layout'>,</span> <span class='varid'>iso8859_1</span><span class='layout'>,</span> <span class='varid'>iso8859_2</span><span class='layout'>,</span> <span class='varid'>iso8859_3</span><span class='layout'>,</span> <span class='varid'>iso8859_4</span><span class='layout'>,</span> <span class='varid'>iso8859_5</span>+<a name="line-287"></a> <span class='layout'>,</span> <span class='varid'>iso8859_6</span><span class='layout'>,</span> <span class='varid'>iso8859_7</span><span class='layout'>,</span> <span class='varid'>iso8859_8</span><span class='layout'>,</span> <span class='varid'>iso8859_9</span><span class='layout'>,</span> <span class='varid'>iso8859_10</span>+<a name="line-288"></a> <span class='layout'>,</span> <span class='varid'>iso8859_11</span><span class='layout'>,</span> <span class='varid'>iso8859_13</span><span class='layout'>,</span> <span class='varid'>iso8859_14</span><span class='layout'>,</span> <span class='varid'>iso8859_15</span><span class='layout'>,</span> <span class='varid'>iso8859_16</span>+<a name="line-289"></a> <span class='layout'>,</span> <span class='varid'>usAscii</span><span class='layout'>,</span> <span class='varid'>ucs2</span><span class='layout'>,</span> <span class='varid'>utf8</span><span class='layout'>,</span> <span class='varid'>utf16</span><span class='layout'>,</span> <span class='varid'>utf16be</span><span class='layout'>,</span> <span class='varid'>utf16le</span><span class='layout'>,</span> <span class='varid'>unicodeString</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-290"></a>+<a name="line-291"></a><span class='definition'>isoLatin1</span> <span class='keyglyph'>=</span> <span class='varid'>iso8859_1</span>+<a name="line-292"></a><a name="iso8859_1"></a><span class='definition'>iso8859_1</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-1"</span>+<a name="line-293"></a><a name="iso8859_2"></a><span class='definition'>iso8859_2</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-2"</span>+<a name="line-294"></a><a name="iso8859_3"></a><span class='definition'>iso8859_3</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-3"</span>+<a name="line-295"></a><a name="iso8859_4"></a><span class='definition'>iso8859_4</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-4"</span>+<a name="line-296"></a><a name="iso8859_5"></a><span class='definition'>iso8859_5</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-5"</span>+<a name="line-297"></a><a name="iso8859_6"></a><span class='definition'>iso8859_6</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-6"</span>+<a name="line-298"></a><a name="iso8859_7"></a><span class='definition'>iso8859_7</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-7"</span>+<a name="line-299"></a><a name="iso8859_8"></a><span class='definition'>iso8859_8</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-8"</span>+<a name="line-300"></a><a name="iso8859_9"></a><span class='definition'>iso8859_9</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-9"</span>+<a name="line-301"></a><a name="iso8859_10"></a><span class='definition'>iso8859_10</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-10"</span>+<a name="line-302"></a><a name="iso8859_11"></a><span class='definition'>iso8859_11</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-11"</span>+<a name="line-303"></a><a name="iso8859_13"></a><span class='definition'>iso8859_13</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-13"</span>+<a name="line-304"></a><a name="iso8859_14"></a><span class='definition'>iso8859_14</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-14"</span>+<a name="line-305"></a><a name="iso8859_15"></a><span class='definition'>iso8859_15</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-15"</span>+<a name="line-306"></a><a name="iso8859_16"></a><span class='definition'>iso8859_16</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-8859-16"</span>+<a name="line-307"></a><a name="usAscii"></a><span class='definition'>usAscii</span> <span class='keyglyph'>=</span> <span class='str'>"US-ASCII"</span>+<a name="line-308"></a><a name="ucs2"></a><span class='definition'>ucs2</span> <span class='keyglyph'>=</span> <span class='str'>"ISO-10646-UCS-2"</span>+<a name="line-309"></a><a name="utf8"></a><span class='definition'>utf8</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-8"</span>+<a name="line-310"></a><a name="utf16"></a><span class='definition'>utf16</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16"</span>+<a name="line-311"></a><a name="utf16be"></a><span class='definition'>utf16be</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16BE"</span>+<a name="line-312"></a><a name="utf16le"></a><span class='definition'>utf16le</span> <span class='keyglyph'>=</span> <span class='str'>"UTF-16LE"</span>+<a name="line-313"></a><a name="unicodeString"></a><span class='definition'>unicodeString</span> <span class='keyglyph'>=</span> <span class='str'>"UNICODE"</span> <a name="line-314"></a>-<a name="line-315"></a><span class='comment'>-- |</span>-<a name="line-316"></a><span class='comment'>-- the predefined namespace uri for xml: \"http:\/\/www.w3.org\/XML\/1998\/namespace\"</span>-<a name="line-317"></a>-<a name="line-318"></a><a name="xmlNamespace"></a><span class='definition'>xmlNamespace</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-319"></a><span class='definition'>xmlNamespace</span> <span class='keyglyph'>=</span> <span class='str'>"http://www.w3.org/XML/1998/namespace"</span>-<a name="line-320"></a>-<a name="line-321"></a><span class='comment'>-- |</span>-<a name="line-322"></a><span class='comment'>-- the predefined namespace uri for xmlns: \"http:\/\/www.w3.org\/2000\/xmlns\/\"</span>-<a name="line-323"></a>-<a name="line-324"></a><a name="xmlnsNamespace"></a><span class='definition'>xmlnsNamespace</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-325"></a><span class='definition'>xmlnsNamespace</span> <span class='keyglyph'>=</span> <span class='str'>"http://www.w3.org/2000/xmlns/"</span>-<a name="line-326"></a>-<a name="line-327"></a><a name="relaxNamespace"></a><span class='comment'>-- | Relax NG namespace</span>-<a name="line-328"></a><span class='definition'>relaxNamespace</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-329"></a><span class='definition'>relaxNamespace</span> <span class='keyglyph'>=</span> <span class='str'>"http://relaxng.org/ns/structure/1.0"</span>+<a name="line-315"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-316"></a><span class='comment'>--</span>+<a name="line-317"></a><span class='comment'>-- known namespaces</span>+<a name="line-318"></a>+<a name="line-319"></a><span class='comment'>-- |</span>+<a name="line-320"></a><span class='comment'>-- the predefined namespace uri for xml: \"http:\/\/www.w3.org\/XML\/1998\/namespace\"</span>+<a name="line-321"></a>+<a name="line-322"></a><a name="xmlNamespace"></a><span class='definition'>xmlNamespace</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-323"></a><span class='definition'>xmlNamespace</span> <span class='keyglyph'>=</span> <span class='str'>"http://www.w3.org/XML/1998/namespace"</span>+<a name="line-324"></a>+<a name="line-325"></a><span class='comment'>-- |</span>+<a name="line-326"></a><span class='comment'>-- the predefined namespace uri for xmlns: \"http:\/\/www.w3.org\/2000\/xmlns\/\"</span>+<a name="line-327"></a>+<a name="line-328"></a><a name="xmlnsNamespace"></a><span class='definition'>xmlnsNamespace</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-329"></a><span class='definition'>xmlnsNamespace</span> <span class='keyglyph'>=</span> <span class='str'>"http://www.w3.org/2000/xmlns/"</span> <a name="line-330"></a>-<a name="line-331"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-332"></a><span class='comment'>-- option for Relax NG</span>-<a name="line-333"></a>-<a name="line-334"></a><a name="a_relax_schema"></a><span class='definition'>a_relax_schema</span><span class='layout'>,</span>-<a name="line-335"></a> <span class='varid'>a_do_not_check_restrictions</span><span class='layout'>,</span> -<a name="line-336"></a> <span class='varid'>a_check_restrictions</span><span class='layout'>,</span>-<a name="line-337"></a> <span class='varid'>a_do_not_validate_externalRef</span><span class='layout'>,</span>-<a name="line-338"></a> <span class='varid'>a_validate_externalRef</span><span class='layout'>,</span>-<a name="line-339"></a> <span class='varid'>a_do_not_validate_include</span><span class='layout'>,</span>-<a name="line-340"></a> <span class='varid'>a_validate_include</span><span class='layout'>,</span>-<a name="line-341"></a> <span class='varid'>a_output_changes</span><span class='layout'>,</span> -<a name="line-342"></a> <span class='varid'>a_do_not_collect_errors</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> -<a name="line-343"></a>-<a name="line-344"></a><span class='definition'>a_relax_schema</span> <span class='keyglyph'>=</span> <span class='str'>"relax-schema"</span>-<a name="line-345"></a><a name="a_do_not_check_restrictions"></a><span class='definition'>a_do_not_check_restrictions</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-check-restrictions"</span>-<a name="line-346"></a><a name="a_check_restrictions"></a><span class='definition'>a_check_restrictions</span> <span class='keyglyph'>=</span> <span class='str'>"check-restrictions"</span>-<a name="line-347"></a><a name="a_do_not_validate_externalRef"></a><span class='definition'>a_do_not_validate_externalRef</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-validate-externalRef"</span>-<a name="line-348"></a><a name="a_validate_externalRef"></a><span class='definition'>a_validate_externalRef</span> <span class='keyglyph'>=</span> <span class='str'>"validate-externalRef"</span> -<a name="line-349"></a><a name="a_do_not_validate_include"></a><span class='definition'>a_do_not_validate_include</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-validate-include"</span>-<a name="line-350"></a><a name="a_validate_include"></a><span class='definition'>a_validate_include</span> <span class='keyglyph'>=</span> <span class='str'>"validate-include"</span>-<a name="line-351"></a><a name="a_output_changes"></a><span class='definition'>a_output_changes</span> <span class='keyglyph'>=</span> <span class='str'>"output-pattern-transformations"</span>-<a name="line-352"></a><a name="a_do_not_collect_errors"></a><span class='definition'>a_do_not_collect_errors</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-collect-errors"</span>-<a name="line-353"></a>-<a name="line-354"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-331"></a><a name="relaxNamespace"></a><span class='comment'>-- | Relax NG namespace</span>+<a name="line-332"></a><span class='definition'>relaxNamespace</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-333"></a><span class='definition'>relaxNamespace</span> <span class='keyglyph'>=</span> <span class='str'>"http://relaxng.org/ns/structure/1.0"</span>+<a name="line-334"></a>+<a name="line-335"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-336"></a><span class='comment'>-- option for Relax NG</span>+<a name="line-337"></a>+<a name="line-338"></a><a name="a_relax_schema"></a><span class='definition'>a_relax_schema</span><span class='layout'>,</span>+<a name="line-339"></a> <span class='varid'>a_do_not_check_restrictions</span><span class='layout'>,</span> +<a name="line-340"></a> <span class='varid'>a_check_restrictions</span><span class='layout'>,</span>+<a name="line-341"></a> <span class='varid'>a_do_not_validate_externalRef</span><span class='layout'>,</span>+<a name="line-342"></a> <span class='varid'>a_validate_externalRef</span><span class='layout'>,</span>+<a name="line-343"></a> <span class='varid'>a_do_not_validate_include</span><span class='layout'>,</span>+<a name="line-344"></a> <span class='varid'>a_validate_include</span><span class='layout'>,</span>+<a name="line-345"></a> <span class='varid'>a_output_changes</span><span class='layout'>,</span> +<a name="line-346"></a> <span class='varid'>a_do_not_collect_errors</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> +<a name="line-347"></a>+<a name="line-348"></a><span class='definition'>a_relax_schema</span> <span class='keyglyph'>=</span> <span class='str'>"relax-schema"</span>+<a name="line-349"></a><a name="a_do_not_check_restrictions"></a><span class='definition'>a_do_not_check_restrictions</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-check-restrictions"</span>+<a name="line-350"></a><a name="a_check_restrictions"></a><span class='definition'>a_check_restrictions</span> <span class='keyglyph'>=</span> <span class='str'>"check-restrictions"</span>+<a name="line-351"></a><a name="a_do_not_validate_externalRef"></a><span class='definition'>a_do_not_validate_externalRef</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-validate-externalRef"</span>+<a name="line-352"></a><a name="a_validate_externalRef"></a><span class='definition'>a_validate_externalRef</span> <span class='keyglyph'>=</span> <span class='str'>"validate-externalRef"</span> +<a name="line-353"></a><a name="a_do_not_validate_include"></a><span class='definition'>a_do_not_validate_include</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-validate-include"</span>+<a name="line-354"></a><a name="a_validate_include"></a><span class='definition'>a_validate_include</span> <span class='keyglyph'>=</span> <span class='str'>"validate-include"</span>+<a name="line-355"></a><a name="a_output_changes"></a><span class='definition'>a_output_changes</span> <span class='keyglyph'>=</span> <span class='str'>"output-pattern-transformations"</span>+<a name="line-356"></a><a name="a_do_not_collect_errors"></a><span class='definition'>a_do_not_collect_errors</span> <span class='keyglyph'>=</span> <span class='str'>"do-not-collect-errors"</span>+<a name="line-357"></a>+<a name="line-358"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-DOM-XmlNode.html view
@@ -311,7 +311,7 @@ <a name="line-303"></a><span class='definition'>mkElement</span> <span class='varid'>n</span> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>mkTree</span> <span class='layout'>(</span><span class='varid'>mkElementNode</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span> <a name="line-304"></a> <a name="line-305"></a><a name="mkRoot"></a><span class='definition'>mkRoot</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-306"></a><span class='definition'>mkRoot</span> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>mkTree</span> <span class='layout'>(</span><span class='varid'>mkElementNode</span> <span class='layout'>(</span><span class='varid'>mkSNsName</span> <span class='varid'>t_root</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span>+<a name="line-306"></a><span class='definition'>mkRoot</span> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>mkTree</span> <span class='layout'>(</span><span class='varid'>mkElementNode</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>t_root</span><span class='layout'>)</span> <span class='varid'>al</span><span class='layout'>)</span> <a name="line-307"></a> <a name="line-308"></a><a name="mkAttr"></a><span class='definition'>mkAttr</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-309"></a><span class='definition'>mkAttr</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>mkTree</span> <span class='layout'>(</span><span class='varid'>mkAttrNode</span> <span class='varid'>n</span><span class='layout'>)</span>
doc/hdoc/src/Text-XML-HXT-DOM-XmlOptions.html view
@@ -66,124 +66,126 @@ <a name="line-58"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"H"</span> <span class='keyglyph'>[</span><span class='varid'>a_parse_html</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_parse_html</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"parse input as HTML, try to interprete everything as HTML, no validation"</span> <a name="line-59"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"M"</span> <span class='keyglyph'>[</span><span class='varid'>a_parse_by_mimetype</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_parse_by_mimetype</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"parse dependent on mime type: text/html as HTML, text/xml and text/xhtml and others as XML, else no parse"</span> <a name="line-60"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_parse_xml</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_parse_html</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"parse input as XML, (default)"</span>-<a name="line-61"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"T"</span> <span class='keyglyph'>[</span><span class='varid'>a_tagsoup</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_tagsoup</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"lasy tagsoup parser, for HTML and XML, no DTD, no validation, no PIs, only XHTML entityrefs"</span>-<a name="line-62"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_issue_warnings</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_warnings</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"issue warnings, when parsing HTML (default)"</span>-<a name="line-63"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"Q"</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_issue_warnings</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_warnings</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"ignore warnings, when parsing HTML"</span>-<a name="line-64"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_validate</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_validate</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"document validation when parsing XML (default)"</span>-<a name="line-65"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"w"</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_validate</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_validate</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"only wellformed check, no validation"</span>-<a name="line-66"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_canonicalize</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_canonicalize</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"canonicalize document, remove DTD, comment, transform CDATA, CharRef's, ... (default)"</span>-<a name="line-67"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"c"</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_canonicalize</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_canonicalize</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"do not canonicalize document, don't remove DTD, comment, don't transform CDATA, CharRef's, ..."</span>-<a name="line-68"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"C"</span> <span class='keyglyph'>[</span><span class='varid'>a_preserve_comment</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_preserve_comment</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"don't remove comments during canonicalisation"</span>-<a name="line-69"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_preserve_comment</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_preserve_comment</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"remove comments during canonicalisation (default)"</span>-<a name="line-70"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"n"</span> <span class='keyglyph'>[</span><span class='varid'>a_check_namespaces</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_check_namespaces</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"tag tree with namespace information and check namespaces"</span>-<a name="line-71"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_check_namespaces</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_check_namespaces</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"ignore namespaces (default)"</span>-<a name="line-72"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"r"</span> <span class='keyglyph'>[</span><span class='varid'>a_remove_whitespace</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_remove_whitespace</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"remove redundant whitespace, simplifies tree and processing"</span>-<a name="line-73"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_remove_whitespace</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_remove_whitespace</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"don't remove redundant whitespace (default)"</span>-<a name="line-74"></a> <span class='keyglyph'>]</span>-<a name="line-75"></a> <span class='keyword'>where</span>-<a name="line-76"></a> <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>-<a name="line-77"></a> <span class='varid'>trc</span> <span class='keyglyph'>=</span> <span class='varid'>att</span> <span class='varid'>a_trace</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>max</span> <span class='num'>0</span> <span class='varop'>.</span> <span class='varid'>min</span> <span class='num'>9</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>read</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='chr'>'0'</span><span class='conop'>:</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='str'>"0123456789"</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>fromMaybe</span> <span class='varid'>v_1</span>-<a name="line-78"></a>+<a name="line-61"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_strict_input</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_strict_input</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"read input files strictly, this ensures closing the files correctly even if not read completely"</span>+<a name="line-62"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"T"</span> <span class='keyglyph'>[</span><span class='varid'>a_tagsoup</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_tagsoup</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"lasy tagsoup parser, for HTML and XML, no DTD, no validation, no PIs, only XHTML entityrefs"</span>+<a name="line-63"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_issue_warnings</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_warnings</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"issue warnings, when parsing HTML (default)"</span>+<a name="line-64"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"Q"</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_issue_warnings</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_issue_warnings</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"ignore warnings, when parsing HTML"</span>+<a name="line-65"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_validate</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_validate</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"document validation when parsing XML (default)"</span>+<a name="line-66"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"w"</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_validate</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_validate</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"only wellformed check, no validation"</span>+<a name="line-67"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_canonicalize</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_canonicalize</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"canonicalize document, remove DTD, comment, transform CDATA, CharRef's, ... (default)"</span>+<a name="line-68"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"c"</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_canonicalize</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_canonicalize</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"do not canonicalize document, don't remove DTD, comment, don't transform CDATA, CharRef's, ..."</span>+<a name="line-69"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"C"</span> <span class='keyglyph'>[</span><span class='varid'>a_preserve_comment</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_preserve_comment</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"don't remove comments during canonicalisation"</span>+<a name="line-70"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_preserve_comment</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_preserve_comment</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"remove comments during canonicalisation (default)"</span>+<a name="line-71"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"n"</span> <span class='keyglyph'>[</span><span class='varid'>a_check_namespaces</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_check_namespaces</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"tag tree with namespace information and check namespaces"</span>+<a name="line-72"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_check_namespaces</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_check_namespaces</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"ignore namespaces (default)"</span>+<a name="line-73"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"r"</span> <span class='keyglyph'>[</span><span class='varid'>a_remove_whitespace</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_remove_whitespace</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"remove redundant whitespace, simplifies tree and processing"</span>+<a name="line-74"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_remove_whitespace</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_remove_whitespace</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"don't remove redundant whitespace (default)"</span>+<a name="line-75"></a> <span class='keyglyph'>]</span>+<a name="line-76"></a> <span class='keyword'>where</span>+<a name="line-77"></a> <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>+<a name="line-78"></a> <span class='varid'>trc</span> <span class='keyglyph'>=</span> <span class='varid'>att</span> <span class='varid'>a_trace</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>max</span> <span class='num'>0</span> <span class='varop'>.</span> <span class='varid'>min</span> <span class='num'>9</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>read</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='chr'>'0'</span><span class='conop'>:</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='str'>"0123456789"</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>fromMaybe</span> <span class='varid'>v_1</span> <a name="line-79"></a>-<a name="line-80"></a><span class='comment'>-- | available Relax NG validation options</span>-<a name="line-81"></a><span class='comment'>--</span>-<a name="line-82"></a><span class='comment'>-- defines options</span>-<a name="line-83"></a><span class='comment'>-- 'a_check_restrictions', 'a_validate_externalRef', 'a_validate_include', 'a_do_not_check_restrictions', </span>-<a name="line-84"></a><span class='comment'>-- 'a_do_not_validate_externalRef', 'a_do_not_validate_include'</span>-<a name="line-85"></a>-<a name="line-86"></a><a name="relaxOptions"></a><span class='definition'>relaxOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-87"></a><span class='definition'>relaxOptions</span> -<a name="line-88"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"X"</span> <span class='keyglyph'>[</span><span class='varid'>a_relax_schema</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_relax_schema</span><span class='layout'>)</span> <span class='str'>"SCHEMA"</span><span class='layout'>)</span> <span class='str'>"validation with Relax NG, SCHEMA is the URI for the Relax NG schema"</span>-<a name="line-89"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_check_restrictions</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_check_restrictions</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"check Relax NG schema restrictions during schema simplification (default)"</span>-<a name="line-90"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_check_restrictions</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_check_restrictions</span><span class='layout'>,</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"do not check Relax NG schema restrictions"</span>-<a name="line-91"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_validate_externalRef</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_externalRef</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"validate a Relax NG schema referenced by a externalRef-Pattern (default)"</span>-<a name="line-92"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_validate_externalRef</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_externalRef</span><span class='layout'>,</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"do not validate a Relax NG schema referenced by an externalRef-Pattern"</span>-<a name="line-93"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_validate_include</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_include</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"validate a Relax NG schema referenced by an include-Pattern (default)"</span>-<a name="line-94"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_validate_include</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_include</span><span class='layout'>,</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"do not validate a Relax NG schema referenced by an include-Pattern"</span>-<a name="line-95"></a> <span class='comment'>{--<a name="line-96"></a> , Option "" [a_output_changes] (NoArg (a_output_changes, v_1)) "output Pattern transformations in case of an error" -<a name="line-97"></a> , Option "" [a_do_not_collect_errors] (NoArg (a_do_not_collect_errors, v_1)) "stop Relax NG simplification after the first error has occurred"-<a name="line-98"></a> -}</span>-<a name="line-99"></a> <span class='keyglyph'>]</span>-<a name="line-100"></a> <span class='keyword'>where</span>-<a name="line-101"></a> <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>-<a name="line-102"></a>-<a name="line-103"></a><span class='comment'>-- |</span>-<a name="line-104"></a><span class='comment'>-- commonly useful options for XML output</span>-<a name="line-105"></a><span class='comment'>--</span>-<a name="line-106"></a><span class='comment'>-- defines options: 'a_indent', 'a_output_encoding', 'a_output_file', 'a_output_html'</span>-<a name="line-107"></a>-<a name="line-108"></a><a name="outputOptions"></a><span class='definition'>outputOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-109"></a><span class='definition'>outputOptions</span>-<a name="line-110"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"i"</span> <span class='keyglyph'>[</span><span class='varid'>a_indent</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_indent</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"indent XML output for readability"</span>-<a name="line-111"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"o"</span> <span class='keyglyph'>[</span><span class='varid'>a_output_encoding</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_encoding</span><span class='layout'>)</span> <span class='str'>"CHARSET"</span><span class='layout'>)</span> <span class='layout'>(</span> <span class='str'>"encoding of output ("</span> <span class='varop'>++</span> <span class='varid'>utf8</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>isoLatin1</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>usAscii</span> <span class='varop'>++</span> <span class='str'>")"</span> <span class='layout'>)</span>-<a name="line-112"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"f"</span> <span class='keyglyph'>[</span><span class='varid'>a_output_file</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_file</span><span class='layout'>)</span> <span class='str'>"FILE"</span><span class='layout'>)</span> <span class='str'>"output file for resulting document (default: stdout)"</span>-<a name="line-113"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_output_html</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_html</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"output of none ASCII chars as HTMl entity references"</span>-<a name="line-114"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_no_xml_pi</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_no_xml_pi</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>(</span><span class='str'>"output without <?xml ...?> processing instruction, useful in combination with --"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>a_output_html</span><span class='layout'>)</span>-<a name="line-115"></a> <span class='keyglyph'>]</span>-<a name="line-116"></a> <span class='keyword'>where</span>-<a name="line-117"></a> <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>-<a name="line-118"></a>-<a name="line-119"></a><span class='comment'>-- |</span>-<a name="line-120"></a><span class='comment'>-- commonly useful options</span>-<a name="line-121"></a><span class='comment'>--</span>-<a name="line-122"></a><span class='comment'>-- defines options: 'a_verbose', 'a_help'</span>-<a name="line-123"></a>-<a name="line-124"></a><a name="generalOptions"></a><span class='definition'>generalOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-125"></a><span class='definition'>generalOptions</span>-<a name="line-126"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"v"</span> <span class='keyglyph'>[</span><span class='varid'>a_verbose</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_verbose</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"verbose output"</span>-<a name="line-127"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"h?"</span> <span class='keyglyph'>[</span><span class='varid'>a_help</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_help</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"this message"</span>-<a name="line-128"></a> <span class='keyglyph'>]</span>-<a name="line-129"></a>-<a name="line-130"></a><span class='comment'>-- |</span>-<a name="line-131"></a><span class='comment'>-- defines 'a_version' option</span>-<a name="line-132"></a>-<a name="line-133"></a><a name="versionOptions"></a><span class='definition'>versionOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-134"></a><span class='definition'>versionOptions</span>-<a name="line-135"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"V"</span> <span class='keyglyph'>[</span><span class='varid'>a_version</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_version</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"show program version"</span>-<a name="line-136"></a> <span class='keyglyph'>]</span>-<a name="line-137"></a>-<a name="line-138"></a><span class='comment'>-- |</span>-<a name="line-139"></a><span class='comment'>-- debug output options</span>-<a name="line-140"></a>-<a name="line-141"></a><a name="showOptions"></a><span class='definition'>showOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-142"></a><span class='definition'>showOptions</span>-<a name="line-143"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_show_tree</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_show_tree</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"output tree representation instead of document source"</span>-<a name="line-144"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_show_haskell</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_show_haskell</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"output internal Haskell representation instead of document source"</span>-<a name="line-145"></a> <span class='keyglyph'>]</span>-<a name="line-146"></a>-<a name="line-147"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-80"></a>+<a name="line-81"></a><span class='comment'>-- | available Relax NG validation options</span>+<a name="line-82"></a><span class='comment'>--</span>+<a name="line-83"></a><span class='comment'>-- defines options</span>+<a name="line-84"></a><span class='comment'>-- 'a_check_restrictions', 'a_validate_externalRef', 'a_validate_include', 'a_do_not_check_restrictions', </span>+<a name="line-85"></a><span class='comment'>-- 'a_do_not_validate_externalRef', 'a_do_not_validate_include'</span>+<a name="line-86"></a>+<a name="line-87"></a><a name="relaxOptions"></a><span class='definition'>relaxOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-88"></a><span class='definition'>relaxOptions</span> +<a name="line-89"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"X"</span> <span class='keyglyph'>[</span><span class='varid'>a_relax_schema</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_relax_schema</span><span class='layout'>)</span> <span class='str'>"SCHEMA"</span><span class='layout'>)</span> <span class='str'>"validation with Relax NG, SCHEMA is the URI for the Relax NG schema"</span>+<a name="line-90"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_check_restrictions</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_check_restrictions</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"check Relax NG schema restrictions during schema simplification (default)"</span>+<a name="line-91"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_check_restrictions</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_check_restrictions</span><span class='layout'>,</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"do not check Relax NG schema restrictions"</span>+<a name="line-92"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_validate_externalRef</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_externalRef</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"validate a Relax NG schema referenced by a externalRef-Pattern (default)"</span>+<a name="line-93"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_validate_externalRef</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_externalRef</span><span class='layout'>,</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"do not validate a Relax NG schema referenced by an externalRef-Pattern"</span>+<a name="line-94"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_validate_include</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_include</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"validate a Relax NG schema referenced by an include-Pattern (default)"</span>+<a name="line-95"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_do_not_validate_include</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_validate_include</span><span class='layout'>,</span> <span class='varid'>v_0</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"do not validate a Relax NG schema referenced by an include-Pattern"</span>+<a name="line-96"></a> <span class='comment'>{-+<a name="line-97"></a> , Option "" [a_output_changes] (NoArg (a_output_changes, v_1)) "output Pattern transformations in case of an error" +<a name="line-98"></a> , Option "" [a_do_not_collect_errors] (NoArg (a_do_not_collect_errors, v_1)) "stop Relax NG simplification after the first error has occurred"+<a name="line-99"></a> -}</span>+<a name="line-100"></a> <span class='keyglyph'>]</span>+<a name="line-101"></a> <span class='keyword'>where</span>+<a name="line-102"></a> <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>+<a name="line-103"></a>+<a name="line-104"></a><span class='comment'>-- |</span>+<a name="line-105"></a><span class='comment'>-- commonly useful options for XML output</span>+<a name="line-106"></a><span class='comment'>--</span>+<a name="line-107"></a><span class='comment'>-- defines options: 'a_indent', 'a_output_encoding', 'a_output_file', 'a_output_html'</span>+<a name="line-108"></a>+<a name="line-109"></a><a name="outputOptions"></a><span class='definition'>outputOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-110"></a><span class='definition'>outputOptions</span>+<a name="line-111"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"i"</span> <span class='keyglyph'>[</span><span class='varid'>a_indent</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_indent</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"indent XML output for readability"</span>+<a name="line-112"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"o"</span> <span class='keyglyph'>[</span><span class='varid'>a_output_encoding</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_encoding</span><span class='layout'>)</span> <span class='str'>"CHARSET"</span><span class='layout'>)</span> <span class='layout'>(</span> <span class='str'>"encoding of output ("</span> <span class='varop'>++</span> <span class='varid'>utf8</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>isoLatin1</span> <span class='varop'>++</span> <span class='str'>", "</span> <span class='varop'>++</span> <span class='varid'>usAscii</span> <span class='varop'>++</span> <span class='str'>")"</span> <span class='layout'>)</span>+<a name="line-113"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"f"</span> <span class='keyglyph'>[</span><span class='varid'>a_output_file</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>ReqArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_file</span><span class='layout'>)</span> <span class='str'>"FILE"</span><span class='layout'>)</span> <span class='str'>"output file for resulting document (default: stdout)"</span>+<a name="line-114"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_output_html</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_output_html</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"output of none ASCII chars as HTMl entity references"</span>+<a name="line-115"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_no_xml_pi</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_no_xml_pi</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>(</span><span class='str'>"output without <?xml ...?> processing instruction, useful in combination with --"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>a_output_html</span><span class='layout'>)</span>+<a name="line-116"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_no_empty_elements</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>att</span> <span class='varid'>a_no_empty_elements</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"output of empty elements done in format <elem...></elem> instead of <elem/>"</span>+<a name="line-117"></a> <span class='keyglyph'>]</span>+<a name="line-118"></a> <span class='keyword'>where</span>+<a name="line-119"></a> <span class='varid'>att</span> <span class='varid'>n</span> <span class='varid'>v</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span>+<a name="line-120"></a>+<a name="line-121"></a><span class='comment'>-- |</span>+<a name="line-122"></a><span class='comment'>-- commonly useful options</span>+<a name="line-123"></a><span class='comment'>--</span>+<a name="line-124"></a><span class='comment'>-- defines options: 'a_verbose', 'a_help'</span>+<a name="line-125"></a>+<a name="line-126"></a><a name="generalOptions"></a><span class='definition'>generalOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-127"></a><span class='definition'>generalOptions</span>+<a name="line-128"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"v"</span> <span class='keyglyph'>[</span><span class='varid'>a_verbose</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_verbose</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"verbose output"</span>+<a name="line-129"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>"h?"</span> <span class='keyglyph'>[</span><span class='varid'>a_help</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_help</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"this message"</span>+<a name="line-130"></a> <span class='keyglyph'>]</span>+<a name="line-131"></a>+<a name="line-132"></a><span class='comment'>-- |</span>+<a name="line-133"></a><span class='comment'>-- defines 'a_version' option</span>+<a name="line-134"></a>+<a name="line-135"></a><a name="versionOptions"></a><span class='definition'>versionOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-136"></a><span class='definition'>versionOptions</span>+<a name="line-137"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>"V"</span> <span class='keyglyph'>[</span><span class='varid'>a_version</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_version</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"show program version"</span>+<a name="line-138"></a> <span class='keyglyph'>]</span>+<a name="line-139"></a>+<a name="line-140"></a><span class='comment'>-- |</span>+<a name="line-141"></a><span class='comment'>-- debug output options</span>+<a name="line-142"></a>+<a name="line-143"></a><a name="showOptions"></a><span class='definition'>showOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-144"></a><span class='definition'>showOptions</span>+<a name="line-145"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_show_tree</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_show_tree</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"output tree representation instead of document source"</span>+<a name="line-146"></a> <span class='layout'>,</span> <span class='conid'>Option</span> <span class='str'>""</span> <span class='keyglyph'>[</span><span class='varid'>a_show_haskell</span><span class='keyglyph'>]</span> <span class='layout'>(</span><span class='conid'>NoArg</span> <span class='layout'>(</span><span class='varid'>a_show_haskell</span><span class='layout'>,</span> <span class='varid'>v_1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='str'>"output internal Haskell representation instead of document source"</span>+<a name="line-147"></a> <span class='keyglyph'>]</span> <a name="line-148"></a>-<a name="line-149"></a><span class='comment'>-- |</span>-<a name="line-150"></a><span class='comment'>-- select options from a predefined list of option desciptions</span>-<a name="line-151"></a>-<a name="line-152"></a><a name="selectOptions"></a><span class='definition'>selectOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-153"></a><span class='definition'>selectOptions</span> <span class='varid'>ol</span> <span class='varid'>os</span>-<a name="line-154"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>on</span> <span class='keyglyph'>-></span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>Option</span> <span class='keyword'>_</span> <span class='varid'>ons</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>on</span> <span class='varop'>`elem`</span> <span class='varid'>ons</span><span class='layout'>)</span> <span class='varid'>os</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>ol</span>-<a name="line-155"></a>-<a name="line-156"></a><a name="removeOptions"></a><span class='definition'>removeOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-157"></a><span class='definition'>removeOptions</span> <span class='varid'>ol</span> <span class='varid'>os</span>-<a name="line-158"></a> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>Option</span> <span class='keyword'>_</span> <span class='varid'>ons</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>any</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='varid'>ol</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>ons</span> <span class='layout'>)</span> <span class='varid'>os</span>-<a name="line-159"></a>-<a name="line-160"></a><span class='comment'>-- |</span>-<a name="line-161"></a><span class='comment'>-- check whether an option is set</span>-<a name="line-162"></a><span class='comment'>--</span>-<a name="line-163"></a><span class='comment'>-- reads the value of an attribute, usually applied to a document root node,</span>-<a name="line-164"></a><span class='comment'>-- and checks if the value represents True. The following strings are interpreted</span>-<a name="line-165"></a><span class='comment'>-- as true: \"1\", \"True\", \"true\", \"yes\", \"Yes\".</span>-<a name="line-166"></a>-<a name="line-167"></a><a name="optionIsSet"></a><span class='definition'>optionIsSet</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-168"></a><span class='definition'>optionIsSet</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>isTrueValue</span> <span class='varop'>.</span> <span class='varid'>lookupDef</span> <span class='str'>""</span> <span class='varid'>n</span>-<a name="line-169"></a>-<a name="line-170"></a><span class='comment'>-- | check whether a string represents True</span>-<a name="line-171"></a><span class='comment'>--</span>-<a name="line-172"></a><span class='comment'>-- definition:</span>+<a name="line-149"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-150"></a>+<a name="line-151"></a><span class='comment'>-- |</span>+<a name="line-152"></a><span class='comment'>-- select options from a predefined list of option desciptions</span>+<a name="line-153"></a>+<a name="line-154"></a><a name="selectOptions"></a><span class='definition'>selectOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-155"></a><span class='definition'>selectOptions</span> <span class='varid'>ol</span> <span class='varid'>os</span>+<a name="line-156"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>on</span> <span class='keyglyph'>-></span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>Option</span> <span class='keyword'>_</span> <span class='varid'>ons</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>on</span> <span class='varop'>`elem`</span> <span class='varid'>ons</span><span class='layout'>)</span> <span class='varid'>os</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>ol</span>+<a name="line-157"></a>+<a name="line-158"></a><a name="removeOptions"></a><span class='definition'>removeOptions</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>OptDescr</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-159"></a><span class='definition'>removeOptions</span> <span class='varid'>ol</span> <span class='varid'>os</span>+<a name="line-160"></a> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>Option</span> <span class='keyword'>_</span> <span class='varid'>ons</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>any</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='varid'>ol</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>ons</span> <span class='layout'>)</span> <span class='varid'>os</span>+<a name="line-161"></a>+<a name="line-162"></a><span class='comment'>-- |</span>+<a name="line-163"></a><span class='comment'>-- check whether an option is set</span>+<a name="line-164"></a><span class='comment'>--</span>+<a name="line-165"></a><span class='comment'>-- reads the value of an attribute, usually applied to a document root node,</span>+<a name="line-166"></a><span class='comment'>-- and checks if the value represents True. The following strings are interpreted</span>+<a name="line-167"></a><span class='comment'>-- as true: \"1\", \"True\", \"true\", \"yes\", \"Yes\".</span>+<a name="line-168"></a>+<a name="line-169"></a><a name="optionIsSet"></a><span class='definition'>optionIsSet</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Attributes</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-170"></a><span class='definition'>optionIsSet</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>isTrueValue</span> <span class='varop'>.</span> <span class='varid'>lookupDef</span> <span class='str'>""</span> <span class='varid'>n</span>+<a name="line-171"></a>+<a name="line-172"></a><span class='comment'>-- | check whether a string represents True</span> <a name="line-173"></a><span class='comment'>--</span>-<a name="line-174"></a><span class='comment'>-- > isTrueValue = (`elem` ["1", "True", "true", "Yes", "yes"])</span>-<a name="line-175"></a>-<a name="line-176"></a><a name="isTrueValue"></a><span class='definition'>isTrueValue</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-177"></a><span class='definition'>isTrueValue</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"1"</span><span class='layout'>,</span> <span class='str'>"True"</span><span class='layout'>,</span> <span class='str'>"true"</span><span class='layout'>,</span> <span class='str'>"Yes"</span><span class='layout'>,</span> <span class='str'>"yes"</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-178"></a>-<a name="line-179"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-174"></a><span class='comment'>-- definition:</span>+<a name="line-175"></a><span class='comment'>--</span>+<a name="line-176"></a><span class='comment'>-- > isTrueValue = (`elem` ["1", "True", "true", "Yes", "yes"])</span>+<a name="line-177"></a>+<a name="line-178"></a><a name="isTrueValue"></a><span class='definition'>isTrueValue</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-179"></a><span class='definition'>isTrueValue</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"1"</span><span class='layout'>,</span> <span class='str'>"True"</span><span class='layout'>,</span> <span class='str'>"true"</span><span class='layout'>,</span> <span class='str'>"Yes"</span><span class='layout'>,</span> <span class='str'>"yes"</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-180"></a>+<a name="line-181"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
− doc/hdoc/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/hdoc/src/Text-XML-HXT-IO-GetFILE.html view
@@ -7,84 +7,104 @@ </head> <body> <pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-2"></a><span class='comment'>--</span>-<a name="line-3"></a><span class='comment'>-- GET for local file access</span>-<a name="line-4"></a><span class='comment'>--</span>-<a name="line-5"></a><span class='comment'>-- Version : $Id: GetFILE.hs,v 1.6 2006/09/04 06:03:03 hxml Exp $</span>-<a name="line-6"></a>-<a name="line-7"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>GetFILE</span>-<a name="line-8"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>GetFILE</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'>System</span><span class='varop'>.</span><span class='conid'>IO</span>-<a name="line-14"></a> <span class='layout'>(</span> <span class='conid'>IOMode</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-15"></a> <span class='layout'>,</span> <span class='varid'>openFile</span>-<a name="line-16"></a> <span class='comment'>-- , getContents is defined in the prelude</span>-<a name="line-17"></a> <span class='layout'>,</span> <span class='varid'>hGetContents</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'>System</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>Error</span>-<a name="line-21"></a> <span class='layout'>(</span> <span class='varid'>ioeGetErrorString</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='varid'>try</span>-<a name="line-23"></a> <span class='layout'>)</span>+<a name="line-2"></a>+<a name="line-3"></a><span class='comment'>{- |+<a name="line-4"></a> Module : Text.XML.HXT.IO.GetFILE+<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> The GET method for file protocol+<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'>IO</span><span class='varop'>.</span><span class='conid'>GetFILE</span>+<a name="line-19"></a> <span class='layout'>(</span> <span class='varid'>getStdinCont</span>+<a name="line-20"></a> <span class='layout'>,</span> <span class='varid'>getCont</span>+<a name="line-21"></a> <span class='layout'>)</span>+<a name="line-22"></a>+<a name="line-23"></a><span class='keyword'>where</span> <a name="line-24"></a>-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Directory</span>-<a name="line-26"></a> <span class='layout'>(</span> <span class='varid'>doesFileExist</span>-<a name="line-27"></a> <span class='layout'>,</span> <span class='varid'>getPermissions</span>-<a name="line-28"></a> <span class='layout'>,</span> <span class='varid'>readable</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>-<a name="line-33"></a><a name="getStdinCont"></a><span class='definition'>getStdinCont</span> <span class='keyglyph'>::</span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-34"></a><span class='definition'>getStdinCont</span>-<a name="line-35"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-36"></a> <span class='varid'>c</span> <span class='keyglyph'><-</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-37"></a> <span class='varid'>getContents</span>-<a name="line-38"></a> <span class='layout'>)</span>-<a name="line-39"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>either</span> <span class='varid'>readErr</span> <span class='conid'>Right</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-40"></a> <span class='keyword'>where</span>-<a name="line-41"></a> <span class='varid'>readErr</span> <span class='varid'>e</span>-<a name="line-42"></a> <span class='keyglyph'>=</span> <span class='conid'>Left</span> <span class='layout'>(</span> <span class='str'>"system error when reading from stdin: "</span>-<a name="line-43"></a> <span class='varop'>++</span> <span class='varid'>ioeGetErrorString</span> <span class='varid'>e</span>-<a name="line-44"></a> <span class='layout'>)</span>-<a name="line-45"></a>-<a name="line-46"></a><a name="getCont"></a><span class='definition'>getCont</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'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-47"></a><span class='definition'>getCont</span> <span class='varid'>source</span>-<a name="line-48"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span> <span class='comment'>-- preliminary</span>-<a name="line-49"></a> <span class='varid'>exists</span> <span class='keyglyph'><-</span> <span class='varid'>doesFileExist</span> <span class='varid'>source'</span>-<a name="line-50"></a> <span class='keyword'>if</span> <span class='varid'>not</span> <span class='varid'>exists</span>-<a name="line-51"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Left</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><span class='layout'>)</span>-<a name="line-52"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>-<a name="line-53"></a> <span class='varid'>perm</span> <span class='keyglyph'><-</span> <span class='varid'>getPermissions</span> <span class='varid'>source'</span>-<a name="line-54"></a> <span class='keyword'>if</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>readable</span> <span class='varid'>perm</span><span class='layout'>)</span>-<a name="line-55"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Left</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><span class='layout'>)</span>-<a name="line-56"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>-<a name="line-57"></a> <span class='varid'>c</span> <span class='keyglyph'><-</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-58"></a> <span class='varid'>h</span> <span class='keyglyph'><-</span> <span class='varid'>openFile</span> <span class='varid'>source'</span> <span class='conid'>ReadMode</span>-<a name="line-59"></a> <span class='varid'>hGetContents</span> <span class='varid'>h</span>-<a name="line-60"></a> <span class='layout'>)</span>-<a name="line-61"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>either</span> <span class='varid'>readErr</span> <span class='conid'>Right</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-62"></a> <span class='keyword'>where</span>-<a name="line-63"></a> <span class='comment'>-- please NO call of unEscapeString for file names, NOT: source' = drivePath . unEscapeString $ source</span>-<a name="line-64"></a> <span class='varid'>source'</span> <span class='keyglyph'>=</span> <span class='varid'>drivePath</span> <span class='varop'>$</span> <span class='varid'>source</span>-<a name="line-65"></a> <span class='varid'>readErr</span> <span class='varid'>e</span>-<a name="line-66"></a> <span class='keyglyph'>=</span> <span class='conid'>Left</span> <span class='layout'>(</span> <span class='str'>"system error when reading file "</span>-<a name="line-67"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>source</span>-<a name="line-68"></a> <span class='varop'>++</span> <span class='str'>": "</span>-<a name="line-69"></a> <span class='varop'>++</span> <span class='varid'>ioeGetErrorString</span> <span class='varid'>e</span>-<a name="line-70"></a> <span class='layout'>)</span>-<a name="line-71"></a>-<a name="line-72"></a> <span class='comment'>-- remove leading / if file starts with windows drive letter, e.g. /c:/windows -> c:/windows</span>-<a name="line-73"></a> <span class='varid'>drivePath</span> <span class='layout'>(</span><span class='chr'>'/'</span> <span class='conop'>:</span> <span class='varid'>file</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>d</span> <span class='conop'>:</span> <span class='chr'>':'</span> <span class='conop'>:</span> <span class='sel'>_more</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-74"></a> <span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'A'</span><span class='keyglyph'>..</span><span class='chr'>'Z'</span><span class='keyglyph'>]</span> <span class='varop'>||</span> <span class='varid'>d</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='chr'>'a'</span><span class='keyglyph'>..</span><span class='chr'>'z'</span><span class='keyglyph'>]</span>-<a name="line-75"></a> <span class='keyglyph'>=</span> <span class='varid'>file</span>-<a name="line-76"></a> <span class='varid'>drivePath</span> <span class='varid'>file</span>-<a name="line-77"></a> <span class='keyglyph'>=</span> <span class='varid'>file</span>-<a name="line-78"></a>-<a name="line-79"></a>-<a name="line-80"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-25"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>ByteString</span> <span class='keyword'>as</span> <span class='conid'>B</span>+<a name="line-26"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>ByteString</span><span class='varop'>.</span><span class='conid'>Char8</span> <span class='keyword'>as</span> <span class='conid'>C</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> <span class='layout'>(</span> <span class='conid'>IOMode</span><span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-29"></a> <span class='layout'>,</span> <span class='varid'>openFile</span>+<a name="line-30"></a> <span class='comment'>-- , getContents is defined in the prelude</span>+<a name="line-31"></a> <span class='layout'>,</span> <span class='varid'>hGetContents</span>+<a name="line-32"></a> <span class='layout'>)</span>+<a name="line-33"></a>+<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>IO</span><span class='varop'>.</span><span class='conid'>Error</span> <span class='layout'>(</span> <span class='varid'>ioeGetErrorString</span>+<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>try</span>+<a name="line-36"></a> <span class='layout'>)</span>+<a name="line-37"></a>+<a name="line-38"></a><span class='keyword'>import</span> <span class='conid'>System</span><span class='varop'>.</span><span class='conid'>Directory</span> <span class='layout'>(</span> <span class='varid'>doesFileExist</span>+<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>getPermissions</span>+<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>readable</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><a name="getStdinCont"></a><span class='definition'>getStdinCont</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>IO</span> <span class='layout'>(</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-46"></a><span class='definition'>getStdinCont</span> <span class='varid'>strictInput</span>+<a name="line-47"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-48"></a> <span class='varid'>c</span> <span class='keyglyph'><-</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>strictInput</span>+<a name="line-49"></a> <span class='keyword'>then</span> <span class='keyword'>do</span>+<a name="line-50"></a> <span class='varid'>cb</span> <span class='keyglyph'><-</span> <span class='conid'>B</span><span class='varop'>.</span><span class='varid'>getContents</span>+<a name="line-51"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>C</span><span class='varop'>.</span><span class='varid'>unpack</span> <span class='varid'>cb</span><span class='layout'>)</span>+<a name="line-52"></a> <span class='keyword'>else</span> <span class='varid'>getContents</span>+<a name="line-53"></a> <span class='layout'>)</span>+<a name="line-54"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>either</span> <span class='varid'>readErr</span> <span class='conid'>Right</span> <span class='varid'>c</span><span class='layout'>)</span>+<a name="line-55"></a> <span class='keyword'>where</span>+<a name="line-56"></a> <span class='varid'>readErr</span> <span class='varid'>e</span>+<a name="line-57"></a> <span class='keyglyph'>=</span> <span class='conid'>Left</span> <span class='layout'>(</span> <span class='str'>"system error when reading from stdin: "</span>+<a name="line-58"></a> <span class='varop'>++</span> <span class='varid'>ioeGetErrorString</span> <span class='varid'>e</span>+<a name="line-59"></a> <span class='layout'>)</span>+<a name="line-60"></a>+<a name="line-61"></a><a name="getCont"></a><span class='definition'>getCont</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</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'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-62"></a><span class='definition'>getCont</span> <span class='varid'>strictInput</span> <span class='varid'>source</span>+<a name="line-63"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span> <span class='comment'>-- preliminary</span>+<a name="line-64"></a> <span class='varid'>exists</span> <span class='keyglyph'><-</span> <span class='varid'>doesFileExist</span> <span class='varid'>source'</span>+<a name="line-65"></a> <span class='keyword'>if</span> <span class='varid'>not</span> <span class='varid'>exists</span>+<a name="line-66"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Left</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><span class='layout'>)</span>+<a name="line-67"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>+<a name="line-68"></a> <span class='varid'>perm</span> <span class='keyglyph'><-</span> <span class='varid'>getPermissions</span> <span class='varid'>source'</span>+<a name="line-69"></a> <span class='keyword'>if</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>readable</span> <span class='varid'>perm</span><span class='layout'>)</span>+<a name="line-70"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Left</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><span class='layout'>)</span>+<a name="line-71"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>+<a name="line-72"></a> <span class='varid'>c</span> <span class='keyglyph'><-</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>strictInput</span>+<a name="line-73"></a> <span class='keyword'>then</span> <span class='keyword'>do</span>+<a name="line-74"></a> <span class='varid'>cb</span> <span class='keyglyph'><-</span> <span class='conid'>B</span><span class='varop'>.</span><span class='varid'>readFile</span> <span class='varid'>source</span>+<a name="line-75"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>C</span><span class='varop'>.</span><span class='varid'>unpack</span> <span class='varid'>cb</span><span class='layout'>)</span>+<a name="line-76"></a> <span class='keyword'>else</span> <span class='keyword'>do</span>+<a name="line-77"></a> <span class='varid'>h</span> <span class='keyglyph'><-</span> <span class='varid'>openFile</span> <span class='varid'>source'</span> <span class='conid'>ReadMode</span>+<a name="line-78"></a> <span class='varid'>hGetContents</span> <span class='varid'>h</span>+<a name="line-79"></a> <span class='layout'>)</span>+<a name="line-80"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>either</span> <span class='varid'>readErr</span> <span class='conid'>Right</span> <span class='varid'>c</span><span class='layout'>)</span>+<a name="line-81"></a> <span class='keyword'>where</span>+<a name="line-82"></a>+<a name="line-83"></a> <span class='comment'>-- please NO call of unEscapeString for file names, NOT: source' = drivePath . unEscapeString $ source</span>+<a name="line-84"></a> <span class='varid'>source'</span> <span class='keyglyph'>=</span> <span class='varid'>drivePath</span> <span class='varop'>$</span> <span class='varid'>source</span>+<a name="line-85"></a> <span class='varid'>readErr</span> <span class='varid'>e</span>+<a name="line-86"></a> <span class='keyglyph'>=</span> <span class='conid'>Left</span> <span class='layout'>(</span> <span class='str'>"system error when reading file "</span>+<a name="line-87"></a> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>source</span>+<a name="line-88"></a> <span class='varop'>++</span> <span class='str'>": "</span>+<a name="line-89"></a> <span class='varop'>++</span> <span class='varid'>ioeGetErrorString</span> <span class='varid'>e</span>+<a name="line-90"></a> <span class='layout'>)</span>+<a name="line-91"></a>+<a name="line-92"></a> <span class='comment'>-- remove leading / if file starts with windows drive letter, e.g. /c:/windows -> c:/windows</span>+<a name="line-93"></a> <span class='varid'>drivePath</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-94"></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-95"></a> <span class='keyglyph'>=</span> <span class='varid'>file</span>+<a name="line-96"></a> <span class='varid'>drivePath</span> <span class='varid'>file</span>+<a name="line-97"></a> <span class='keyglyph'>=</span> <span class='varid'>file</span>+<a name="line-98"></a>+<a name="line-99"></a>+<a name="line-100"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-Parser-TagSoup.html view
@@ -10,7 +10,7 @@ <a name="line-2"></a> <a name="line-3"></a><span class='comment'>{- | <a name="line-4"></a> Module : Text.XML.HXT.Parser.TagSoup-<a name="line-5"></a> Copyright : Copyright (C) 2005 Uwe Schmidt+<a name="line-5"></a> Copyright : Copyright (C) 2005-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)@@ -31,461 +31,429 @@ <a name="line-23"></a> <a name="line-24"></a><span class='comment'>-- ------------------------------------------------------------</span> <a name="line-25"></a>-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span> <span class='layout'>(</span><span class='varid'>toLower</span><span class='layout'>)</span>-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-28"></a><span class='keyword'>import</span> <span class='keyword'>qualified</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='keyword'>as</span> <span class='conid'>M</span>-<a name="line-29"></a>-<a name="line-30"></a>-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>HTML</span><span class='varop'>.</span><span class='conid'>TagSoup</span>-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>HTML</span><span class='varop'>.</span><span class='conid'>TagSoup</span><span class='varop'>.</span><span class='conid'>Entity</span>-<a name="line-33"></a> <span class='layout'>(</span> <span class='varid'>lookupNumericEntity</span>-<a name="line-34"></a> <span class='layout'>)</span>-<a name="line-35"></a>-<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span>-<a name="line-37"></a> <span class='layout'>(</span> <span class='varid'>isXmlSpaceChar</span>-<a name="line-38"></a> <span class='layout'>)</span>-<a name="line-39"></a>-<a name="line-40"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</span>-<a name="line-41"></a> <span class='layout'>(</span> <span class='varid'>isWellformedQualifiedName</span>-<a name="line-42"></a> <span class='layout'>)</span>-<a name="line-43"></a>-<a name="line-44"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlEntities</span>-<a name="line-45"></a> <span class='layout'>(</span> <span class='comment'>-- xmlEntities</span>-<a name="line-46"></a> <span class='layout'>)</span>-<a name="line-47"></a>-<a name="line-48"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XhtmlEntities</span>-<a name="line-49"></a> <span class='layout'>(</span> <span class='varid'>xhtmlEntities</span>-<a name="line-50"></a> <span class='layout'>)</span>-<a name="line-51"></a>-<a name="line-52"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParsec</span>-<a name="line-53"></a> <span class='layout'>(</span> <span class='varid'>isEmptyHtmlTag</span>-<a name="line-54"></a> <span class='layout'>,</span> <span class='varid'>isInnerHtmlTagOf</span>-<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>closesHtmlTag</span>-<a name="line-56"></a> <span class='layout'>)</span>-<a name="line-57"></a>-<a name="line-58"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span>-<a name="line-59"></a> <span class='layout'>(</span> <span class='conid'>XmlTrees</span>-<a name="line-60"></a> <span class='layout'>,</span> <span class='conid'>QName</span>-<a name="line-61"></a> <span class='layout'>,</span> <span class='conid'>NsEnv</span>-<a name="line-62"></a> <span class='layout'>,</span> <span class='varid'>mkQName</span>-<a name="line-63"></a> <span class='layout'>,</span> <span class='varid'>mkName</span>-<a name="line-64"></a> <span class='layout'>,</span> <span class='varid'>mkPrefixLocalPart</span>-<a name="line-65"></a> <span class='layout'>,</span> <span class='varid'>c_warn</span>-<a name="line-66"></a> <span class='layout'>,</span> <span class='varid'>a_xml</span>-<a name="line-67"></a> <span class='layout'>,</span> <span class='varid'>a_xmlns</span>-<a name="line-68"></a> <span class='layout'>,</span> <span class='varid'>xmlNamespace</span>-<a name="line-69"></a> <span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span>-<a name="line-70"></a> <span class='layout'>)</span>+<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span> <span class='layout'>(</span><span class='varid'>toLower</span><span class='layout'>)</span>+<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-28"></a>+<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>HTML</span><span class='varop'>.</span><span class='conid'>TagSoup</span>+<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>HTML</span><span class='varop'>.</span><span class='conid'>TagSoup</span><span class='varop'>.</span><span class='conid'>Entity</span> <span class='layout'>(</span> <span class='varid'>lookupNumericEntity</span>+<a name="line-31"></a> <span class='layout'>)</span>+<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Unicode</span> <span class='layout'>(</span> <span class='varid'>isXmlSpaceChar</span>+<a name="line-33"></a> <span class='layout'>)</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'>Parser</span><span class='varop'>.</span><span class='conid'>HtmlParsec</span> <span class='layout'>(</span> <span class='varid'>isEmptyHtmlTag</span>+<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>isInnerHtmlTagOf</span>+<a name="line-36"></a> <span class='layout'>,</span> <span class='varid'>closesHtmlTag</span>+<a name="line-37"></a> <span class='layout'>)</span>+<a name="line-38"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XhtmlEntities</span>+<a name="line-39"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>Interface</span> <span class='layout'>(</span> <span class='conid'>XmlTrees</span>+<a name="line-40"></a> <span class='layout'>,</span> <span class='conid'>QName</span>+<a name="line-41"></a> <span class='layout'>,</span> <span class='conid'>NsEnv</span>+<a name="line-42"></a> <span class='layout'>,</span> <span class='varid'>toNsEnv</span>+<a name="line-43"></a> <span class='layout'>,</span> <span class='varid'>newXName</span>+<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>nullXName</span>+<a name="line-45"></a> <span class='layout'>,</span> <span class='varid'>mkQName'</span>+<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>mkName</span>+<a name="line-47"></a> <span class='layout'>,</span> <span class='varid'>isWellformedQualifiedName</span>+<a name="line-48"></a> <span class='layout'>,</span> <span class='varid'>c_warn</span>+<a name="line-49"></a> <span class='layout'>,</span> <span class='varid'>a_xml</span>+<a name="line-50"></a> <span class='layout'>,</span> <span class='varid'>a_xmlns</span>+<a name="line-51"></a> <span class='layout'>,</span> <span class='varid'>xmlNamespace</span>+<a name="line-52"></a> <span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span>+<a name="line-53"></a> <span class='layout'>)</span>+<a name="line-54"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span> <span class='layout'>(</span> <span class='varid'>isElem</span>+<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>mkError</span>+<a name="line-56"></a> <span class='layout'>,</span> <span class='varid'>mkCmt</span>+<a name="line-57"></a> <span class='layout'>,</span> <span class='varid'>mkText</span>+<a name="line-58"></a> <span class='layout'>,</span> <span class='varid'>mkElement</span>+<a name="line-59"></a> <span class='layout'>,</span> <span class='varid'>mkAttr</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>+<a name="line-64"></a><span class='comment'>-- The name table contains the id map. All element and attribute names are stored</span>+<a name="line-65"></a><span class='comment'>-- the first time they are ecountered, and later always this name is used,</span>+<a name="line-66"></a><span class='comment'>-- not a string built by the parser.</span>+<a name="line-67"></a>+<a name="line-68"></a><a name="Tags"></a><span class='keyword'>type</span> <span class='conid'>Tags</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span>+<a name="line-69"></a>+<a name="line-70"></a><a name="Context"></a><span class='keyword'>type</span> <span class='conid'>Context</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>NsEnv</span><span class='layout'>)</span> <a name="line-71"></a>-<a name="line-72"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span>-<a name="line-73"></a> <span class='layout'>(</span> <span class='varid'>isElem</span>-<a name="line-74"></a> <span class='layout'>,</span> <span class='varid'>mkError</span>-<a name="line-75"></a> <span class='layout'>,</span> <span class='varid'>mkCmt</span>-<a name="line-76"></a> <span class='layout'>,</span> <span class='varid'>mkText</span>-<a name="line-77"></a> <span class='layout'>,</span> <span class='varid'>mkElement</span>-<a name="line-78"></a> <span class='layout'>,</span> <span class='varid'>mkAttr</span>-<a name="line-79"></a> <span class='layout'>)</span>-<a name="line-80"></a>-<a name="line-81"></a><span class='comment'>-- ---------------------------------------- </span>+<a name="line-72"></a><a name="State"></a><span class='keyword'>type</span> <span class='conid'>State</span> <span class='keyglyph'>=</span> <span class='conid'>Tags</span>+<a name="line-73"></a>+<a name="line-74"></a><a name="Parser"></a><span class='keyword'>newtype</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='layout'>{</span> <span class='varid'>parse</span> <span class='keyglyph'>::</span> <span class='conid'>State</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>State</span><span class='layout'>)</span><span class='layout'>}</span>+<a name="line-75"></a>+<a name="line-76"></a><span class='keyword'>instance</span> <span class='conid'>Monad</span> <span class='conid'>Parser</span> <span class='keyword'>where</span>+<a name="line-77"></a> <span class='varid'>return</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>ts</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>ts</span><span class='layout'>)</span>+<a name="line-78"></a> <span class='varid'>p</span> <span class='varop'>>>=</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>ts</span> <span class='keyglyph'>-></span> <span class='keyword'>let</span>+<a name="line-79"></a> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>ts'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>parse</span> <span class='varid'>p</span> <span class='varid'>ts</span>+<a name="line-80"></a> <span class='keyword'>in</span>+<a name="line-81"></a> <span class='varid'>parse</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='varid'>ts'</span> <a name="line-82"></a>-<a name="line-83"></a><span class='comment'>-- The name table contains the id map. All element and attribute names are stored</span>-<a name="line-84"></a><span class='comment'>-- the first time they are ecountered, and later always this name is used,</span>-<a name="line-85"></a><span class='comment'>-- not a string built by the parser.</span>-<a name="line-86"></a>-<a name="line-87"></a><a name="Tags"></a><span class='keyword'>type</span> <span class='conid'>Tags</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span>-<a name="line-88"></a>-<a name="line-89"></a><a name="NameTable"></a><span class='keyword'>type</span> <span class='conid'>NameTable</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='conid'>QName</span> <span class='conid'>QName</span>-<a name="line-90"></a>-<a name="line-91"></a><a name="Context"></a><span class='keyword'>type</span> <span class='conid'>Context</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>NsEnv</span><span class='layout'>)</span>+<a name="line-83"></a><a name="runParser"></a><span class='definition'>runParser</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Tags</span> <span class='keyglyph'>-></span> <span class='varid'>a</span>+<a name="line-84"></a><span class='definition'>runParser</span> <span class='varid'>p</span> <span class='varid'>ts</span> <span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>parse</span> <span class='varid'>p</span> <span class='varop'>$</span> <span class='varid'>ts</span>+<a name="line-85"></a>+<a name="line-86"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-87"></a>+<a name="line-88"></a><a name="cond"></a><span class='definition'>cond</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='varid'>a</span>+<a name="line-89"></a><span class='definition'>cond</span> <span class='varid'>c</span> <span class='varid'>t</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-90"></a> <span class='varid'>p</span> <span class='keyglyph'><-</span> <span class='varid'>c</span>+<a name="line-91"></a> <span class='keyword'>if</span> <span class='varid'>p</span> <span class='keyword'>then</span> <span class='varid'>t</span> <span class='keyword'>else</span> <span class='varid'>e</span> <a name="line-92"></a>-<a name="line-93"></a><a name="State"></a><span class='keyword'>data</span> <span class='conid'>State</span> <span class='keyglyph'>=</span> <span class='conid'>S</span> <span class='varop'>!</span><span class='conid'>Tags</span> <span class='varop'>!</span><span class='conid'>NameTable</span> <span class='comment'>-- the name table must be evaluated striktly, else a stack overflow occurs</span>-<a name="line-94"></a>-<a name="line-95"></a><a name="Parser"></a><span class='keyword'>newtype</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='layout'>{</span> <span class='varid'>parse</span> <span class='keyglyph'>::</span> <span class='conid'>State</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>State</span><span class='layout'>)</span><span class='layout'>}</span>-<a name="line-96"></a>-<a name="line-97"></a><span class='keyword'>instance</span> <span class='conid'>Monad</span> <span class='conid'>Parser</span> <span class='keyword'>where</span>-<a name="line-98"></a> <span class='varid'>return</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>ts</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>ts</span><span class='layout'>)</span>-<a name="line-99"></a> <span class='varid'>p</span> <span class='varop'>>>=</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>ts</span> <span class='keyglyph'>-></span> <span class='keyword'>let</span>-<a name="line-100"></a> <span class='layout'>(</span><span class='varid'>res</span><span class='layout'>,</span> <span class='varid'>ts'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>parse</span> <span class='varid'>p</span> <span class='varid'>ts</span>-<a name="line-101"></a> <span class='keyword'>in</span>-<a name="line-102"></a> <span class='varid'>parse</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>res</span><span class='layout'>)</span> <span class='varid'>ts'</span>-<a name="line-103"></a>-<a name="line-104"></a><a name="runParser"></a><span class='definition'>runParser</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Tags</span> <span class='keyglyph'>-></span> <span class='varid'>a</span>-<a name="line-105"></a><span class='definition'>runParser</span> <span class='varid'>p</span> <span class='varid'>ts</span> <span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varop'>.</span> <span class='varid'>parse</span> <span class='varid'>p</span> <span class='varop'>$</span> <span class='conid'>S</span> <span class='varid'>ts</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>empty</span>-<a name="line-106"></a>-<a name="line-107"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-108"></a>-<a name="line-109"></a><a name="cond"></a><span class='definition'>cond</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='varid'>a</span>-<a name="line-110"></a><span class='definition'>cond</span> <span class='varid'>c</span> <span class='varid'>t</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-111"></a> <span class='varid'>p</span> <span class='keyglyph'><-</span> <span class='varid'>c</span>-<a name="line-112"></a> <span class='keyword'>if</span> <span class='varid'>p</span> <span class='keyword'>then</span> <span class='varid'>t</span> <span class='keyword'>else</span> <span class='varid'>e</span>+<a name="line-93"></a><a name="lookAhead"></a><span class='definition'>lookAhead</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Tag</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>+<a name="line-94"></a><span class='definition'>lookAhead</span> <span class='varid'>p</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-95"></a>+<a name="line-96"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-97"></a><span class='comment'>-- primitive look ahead tests</span>+<a name="line-98"></a>+<a name="line-99"></a><a name="isEof"></a><span class='definition'>isEof</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>+<a name="line-100"></a><span class='definition'>isEof</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>s</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-101"></a>+<a name="line-102"></a><a name="isText"></a><span class='definition'>isText</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>+<a name="line-103"></a><span class='definition'>isText</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>+<a name="line-104"></a> <span class='keyword'>where</span>+<a name="line-105"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-106"></a> <span class='varid'>is</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="isCmt"></a><span class='definition'>isCmt</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>+<a name="line-109"></a><span class='definition'>isCmt</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>+<a name="line-110"></a> <span class='keyword'>where</span>+<a name="line-111"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagComment</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-112"></a> <span class='varid'>is</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span> <a name="line-113"></a>-<a name="line-114"></a><a name="lookAhead"></a><span class='definition'>lookAhead</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Tag</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>-<a name="line-115"></a><span class='definition'>lookAhead</span> <span class='varid'>p</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ts</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>p</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>ts</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-116"></a>-<a name="line-117"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-118"></a><span class='comment'>-- primitive look ahead tests</span>+<a name="line-114"></a><a name="isWarn"></a><span class='definition'>isWarn</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>+<a name="line-115"></a><span class='definition'>isWarn</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>+<a name="line-116"></a> <span class='keyword'>where</span>+<a name="line-117"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagWarning</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-118"></a> <span class='varid'>is</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span> <a name="line-119"></a>-<a name="line-120"></a><a name="isEof"></a><span class='definition'>isEof</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>-<a name="line-121"></a><span class='definition'>isEof</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>s</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ts</span><span class='layout'>,</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-122"></a>-<a name="line-123"></a><a name="isText"></a><span class='definition'>isText</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>-<a name="line-124"></a><span class='definition'>isText</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>-<a name="line-125"></a> <span class='keyword'>where</span>-<a name="line-126"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-127"></a> <span class='varid'>is</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-128"></a>-<a name="line-129"></a><a name="isCmt"></a><span class='definition'>isCmt</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>-<a name="line-130"></a><span class='definition'>isCmt</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>-<a name="line-131"></a> <span class='keyword'>where</span>-<a name="line-132"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagComment</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-133"></a> <span class='varid'>is</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-134"></a>-<a name="line-135"></a><a name="isWarn"></a><span class='definition'>isWarn</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>-<a name="line-136"></a><span class='definition'>isWarn</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>-<a name="line-137"></a> <span class='keyword'>where</span>-<a name="line-138"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagWarning</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-139"></a> <span class='varid'>is</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-120"></a><a name="isPos"></a><span class='definition'>isPos</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>+<a name="line-121"></a><span class='definition'>isPos</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>+<a name="line-122"></a> <span class='keyword'>where</span>+<a name="line-123"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagPosition</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-124"></a> <span class='varid'>is</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-125"></a>+<a name="line-126"></a><a name="isCls"></a><span class='definition'>isCls</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>+<a name="line-127"></a><span class='definition'>isCls</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>+<a name="line-128"></a> <span class='keyword'>where</span>+<a name="line-129"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-130"></a> <span class='varid'>is</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-131"></a>+<a name="line-132"></a><a name="isOpn"></a><span class='definition'>isOpn</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>+<a name="line-133"></a><span class='definition'>isOpn</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>+<a name="line-134"></a> <span class='keyword'>where</span>+<a name="line-135"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-136"></a> <span class='varid'>is</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-137"></a>+<a name="line-138"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-139"></a><span class='comment'>-- primitive symbol parsers</span> <a name="line-140"></a>-<a name="line-141"></a><a name="isPos"></a><span class='definition'>isPos</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>-<a name="line-142"></a><span class='definition'>isPos</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>-<a name="line-143"></a> <span class='keyword'>where</span>-<a name="line-144"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagPosition</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-145"></a> <span class='varid'>is</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-146"></a>-<a name="line-147"></a><a name="isCls"></a><span class='definition'>isCls</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>-<a name="line-148"></a><span class='definition'>isCls</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>-<a name="line-149"></a> <span class='keyword'>where</span>-<a name="line-150"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-151"></a> <span class='varid'>is</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-152"></a>-<a name="line-153"></a><a name="isOpn"></a><span class='definition'>isOpn</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Bool</span>-<a name="line-154"></a><span class='definition'>isOpn</span> <span class='keyglyph'>=</span> <span class='varid'>lookAhead</span> <span class='varid'>is</span>-<a name="line-155"></a> <span class='keyword'>where</span>-<a name="line-156"></a> <span class='varid'>is</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-157"></a> <span class='varid'>is</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-158"></a>-<a name="line-159"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-160"></a><span class='comment'>-- primitive symbol parsers</span>-<a name="line-161"></a>-<a name="line-162"></a><a name="getTag"></a><span class='definition'>getTag</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Tag</span>-<a name="line-163"></a><span class='definition'>getTag</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>S</span> <span class='layout'>(</span><span class='varid'>t1</span><span class='conop'>:</span><span class='varid'>ts1</span><span class='layout'>)</span> <span class='varid'>nt</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>t1</span><span class='layout'>,</span> <span class='conid'>S</span> <span class='varid'>ts1</span> <span class='varid'>nt</span><span class='layout'>)</span>-<a name="line-164"></a>-<a name="line-165"></a><a name="getSym"></a><span class='definition'>getSym</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Tag</span> <span class='keyglyph'>-></span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='varid'>a</span>-<a name="line-166"></a><span class='definition'>getSym</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-167"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getTag</span>-<a name="line-168"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>t</span><span class='layout'>)</span>-<a name="line-169"></a>-<a name="line-170"></a><a name="getText"></a><span class='definition'>getText</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>-<a name="line-171"></a><span class='definition'>getText</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>-<a name="line-172"></a> <span class='keyword'>where</span>-<a name="line-173"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>t</span>-<a name="line-174"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>-<a name="line-175"></a>-<a name="line-176"></a><a name="getCmt"></a><span class='definition'>getCmt</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>-<a name="line-177"></a><span class='definition'>getCmt</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>-<a name="line-178"></a> <span class='keyword'>where</span>-<a name="line-179"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagComment</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>c</span>-<a name="line-180"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>-<a name="line-181"></a>-<a name="line-182"></a><a name="getWarn"></a><span class='definition'>getWarn</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>-<a name="line-183"></a><span class='definition'>getWarn</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>-<a name="line-184"></a> <span class='keyword'>where</span>-<a name="line-185"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagWarning</span> <span class='varid'>w</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>w</span>-<a name="line-186"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>+<a name="line-141"></a><a name="getTag"></a><span class='definition'>getTag</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Tag</span>+<a name="line-142"></a><span class='definition'>getTag</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>t1</span><span class='conop'>:</span><span class='varid'>ts1</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>t1</span><span class='layout'>,</span> <span class='varid'>ts1</span><span class='layout'>)</span>+<a name="line-143"></a>+<a name="line-144"></a><a name="getSym"></a><span class='definition'>getSym</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Tag</span> <span class='keyglyph'>-></span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='varid'>a</span>+<a name="line-145"></a><span class='definition'>getSym</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-146"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getTag</span>+<a name="line-147"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varid'>t</span><span class='layout'>)</span>+<a name="line-148"></a>+<a name="line-149"></a><a name="getText"></a><span class='definition'>getText</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>+<a name="line-150"></a><span class='definition'>getText</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>+<a name="line-151"></a> <span class='keyword'>where</span>+<a name="line-152"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='varid'>t</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>t</span>+<a name="line-153"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>+<a name="line-154"></a>+<a name="line-155"></a><a name="getCmt"></a><span class='definition'>getCmt</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>+<a name="line-156"></a><span class='definition'>getCmt</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>+<a name="line-157"></a> <span class='keyword'>where</span>+<a name="line-158"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagComment</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>c</span>+<a name="line-159"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>+<a name="line-160"></a>+<a name="line-161"></a><a name="getWarn"></a><span class='definition'>getWarn</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>+<a name="line-162"></a><span class='definition'>getWarn</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>+<a name="line-163"></a> <span class='keyword'>where</span>+<a name="line-164"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagWarning</span> <span class='varid'>w</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>w</span>+<a name="line-165"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>+<a name="line-166"></a>+<a name="line-167"></a><a name="getPos"></a><span class='definition'>getPos</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span>+<a name="line-168"></a><span class='definition'>getPos</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>+<a name="line-169"></a> <span class='keyword'>where</span>+<a name="line-170"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagPosition</span> <span class='varid'>l</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>l</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>+<a name="line-171"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>+<a name="line-172"></a>+<a name="line-173"></a><a name="getCls"></a><span class='definition'>getCls</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>+<a name="line-174"></a><span class='definition'>getCls</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>+<a name="line-175"></a> <span class='keyword'>where</span>+<a name="line-176"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>n</span>+<a name="line-177"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>+<a name="line-178"></a>+<a name="line-179"></a><a name="getOpn"></a><span class='definition'>getOpn</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span><span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-180"></a><span class='definition'>getOpn</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>+<a name="line-181"></a> <span class='keyword'>where</span>+<a name="line-182"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>al</span><span class='layout'>)</span>+<a name="line-183"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>+<a name="line-184"></a>+<a name="line-185"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-186"></a><span class='comment'>-- pushback parsers for inserting missing tags</span> <a name="line-187"></a>-<a name="line-188"></a><a name="getPos"></a><span class='definition'>getPos</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>Int</span><span class='layout'>,</span> <span class='conid'>Int</span><span class='layout'>)</span>-<a name="line-189"></a><span class='definition'>getPos</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>-<a name="line-190"></a> <span class='keyword'>where</span>-<a name="line-191"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagPosition</span> <span class='varid'>l</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>l</span><span class='layout'>,</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-192"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>+<a name="line-188"></a><a name="pushBack"></a><span class='definition'>pushBack</span> <span class='keyglyph'>::</span> <span class='conid'>Tag</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>()</span>+<a name="line-189"></a><span class='definition'>pushBack</span> <span class='varid'>t</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>ts</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>()</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-190"></a>+<a name="line-191"></a><a name="insCls"></a><span class='definition'>insCls</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>()</span>+<a name="line-192"></a><span class='definition'>insCls</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>pushBack</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='varid'>n</span><span class='layout'>)</span> <a name="line-193"></a>-<a name="line-194"></a><a name="getCls"></a><span class='definition'>getCls</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>String</span>-<a name="line-195"></a><span class='definition'>getCls</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>-<a name="line-196"></a> <span class='keyword'>where</span>-<a name="line-197"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>n</span>-<a name="line-198"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>-<a name="line-199"></a>-<a name="line-200"></a><a name="getOpn"></a><span class='definition'>getOpn</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span><span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-201"></a><span class='definition'>getOpn</span> <span class='keyglyph'>=</span> <span class='varid'>getSym</span> <span class='varid'>sym</span>-<a name="line-202"></a> <span class='keyword'>where</span>-<a name="line-203"></a> <span class='varid'>sym</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-204"></a> <span class='varid'>sym</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>undefined</span>-<a name="line-205"></a>-<a name="line-206"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-207"></a><span class='comment'>-- pushback parsers for inserting missing tags</span>-<a name="line-208"></a>-<a name="line-209"></a><a name="pushBack"></a><span class='definition'>pushBack</span> <span class='keyglyph'>::</span> <span class='conid'>Tag</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>()</span>-<a name="line-210"></a><span class='definition'>pushBack</span> <span class='varid'>t</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='varid'>nt</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>()</span><span class='layout'>,</span> <span class='conid'>S</span> <span class='layout'>(</span><span class='varid'>t</span><span class='conop'>:</span><span class='varid'>ts</span><span class='layout'>)</span> <span class='varid'>nt</span><span class='layout'>)</span>-<a name="line-211"></a>-<a name="line-212"></a><a name="insCls"></a><span class='definition'>insCls</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>()</span>-<a name="line-213"></a><span class='definition'>insCls</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='varid'>pushBack</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-214"></a>-<a name="line-215"></a><a name="insOpn"></a><span class='definition'>insOpn</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>()</span>-<a name="line-216"></a><span class='definition'>insOpn</span> <span class='varid'>n</span> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>pushBack</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span>-<a name="line-217"></a>-<a name="line-218"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-194"></a><a name="insOpn"></a><span class='definition'>insOpn</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>()</span>+<a name="line-195"></a><span class='definition'>insOpn</span> <span class='varid'>n</span> <span class='varid'>al</span> <span class='keyglyph'>=</span> <span class='varid'>pushBack</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='varid'>n</span> <span class='varid'>al</span><span class='layout'>)</span>+<a name="line-196"></a>+<a name="line-197"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-198"></a>+<a name="line-199"></a><a name="mkQN"></a><span class='definition'>mkQN</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>QName</span>+<a name="line-200"></a><span class='definition'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='varid'>isAttr</span> <span class='varid'>env</span> <span class='varid'>s</span>+<a name="line-201"></a> <span class='keyglyph'>|</span> <span class='varid'>withNamespaces</span>+<a name="line-202"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>qn1</span>+<a name="line-203"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-204"></a> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='varid'>qn0</span>+<a name="line-205"></a> <span class='keyword'>where</span>+<a name="line-206"></a> <span class='varid'>qn1</span>+<a name="line-207"></a> <span class='keyglyph'>|</span> <span class='varid'>isAttr</span> <span class='varop'>&&</span> <span class='varid'>isSimpleName</span> <span class='keyglyph'>=</span> <span class='varid'>s'</span>+<a name="line-208"></a> <span class='keyglyph'>|</span> <span class='varid'>isSimpleName</span> <span class='keyglyph'>=</span> <span class='varid'>mkQName'</span> <span class='varid'>nullXName</span> <span class='layout'>(</span><span class='varid'>newXName</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>nsUri</span> <span class='varid'>nullXName</span><span class='layout'>)</span>+<a name="line-209"></a> <span class='keyglyph'>|</span> <span class='varid'>isWellformedQualifiedName</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>mkQName'</span> <span class='varid'>px'</span> <span class='varid'>lp'</span> <span class='layout'>(</span><span class='varid'>nsUri</span> <span class='varid'>px'</span><span class='layout'>)</span>+<a name="line-210"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>s'</span>+<a name="line-211"></a> <span class='varid'>qn0</span> <span class='keyglyph'>=</span> <span class='varid'>s'</span>+<a name="line-212"></a>+<a name="line-213"></a> <span class='varid'>nsUri</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='varid'>nullXName</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>x</span> <span class='varop'>$</span> <span class='varid'>env</span>+<a name="line-214"></a> <span class='varid'>isSimpleName</span> <span class='keyglyph'>=</span> <span class='varid'>all</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>s</span>+<a name="line-215"></a> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='layout'>(</span><span class='keyword'>_</span> <span class='conop'>:</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span><span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>s</span>+<a name="line-216"></a> <span class='varid'>px'</span> <span class='keyglyph'>=</span> <span class='varid'>newXName</span> <span class='varid'>px</span>+<a name="line-217"></a> <span class='varid'>lp'</span> <span class='keyglyph'>=</span> <span class='varid'>newXName</span> <span class='varid'>lp</span>+<a name="line-218"></a> <span class='varid'>s'</span> <span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span> <a name="line-219"></a>-<a name="line-220"></a><a name="insertQName"></a><span class='definition'>insertQName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>QName</span>-<a name="line-221"></a><span class='definition'>insertQName</span> <span class='varid'>n</span> <span class='keyglyph'>=</span> <span class='conid'>P</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='layout'>(</span><span class='conid'>S</span> <span class='varid'>ts</span> <span class='varid'>nt</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='keyword'>let</span>-<a name="line-222"></a> <span class='layout'>(</span><span class='varid'>n'</span><span class='layout'>,</span> <span class='varid'>nt'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>insert</span> <span class='varid'>n</span> <span class='varid'>nt</span>-<a name="line-223"></a> <span class='keyword'>in</span>-<a name="line-224"></a> <span class='layout'>(</span><span class='varid'>n'</span><span class='layout'>,</span> <span class='conid'>S</span> <span class='varid'>ts</span> <span class='varid'>nt'</span><span class='layout'>)</span>-<a name="line-225"></a> <span class='keyword'>where</span>-<a name="line-226"></a> <span class='varid'>insert</span> <span class='varid'>s</span> <span class='varid'>nt</span>-<a name="line-227"></a> <span class='keyglyph'>|</span> <span class='varid'>isJust</span> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varid'>r</span><span class='layout'>,</span> <span class='varid'>nt</span><span class='layout'>)</span>-<a name="line-228"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>insert</span> <span class='varid'>s</span> <span class='varid'>s</span> <span class='varid'>nt</span><span class='layout'>)</span>-<a name="line-229"></a> <span class='keyword'>where</span>-<a name="line-230"></a> <span class='varid'>r</span> <span class='keyglyph'>=</span> <span class='conid'>M</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>s</span> <span class='varid'>nt</span>-<a name="line-231"></a>-<a name="line-232"></a><a name="mkQN"></a><span class='definition'>mkQN</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>QName</span>-<a name="line-233"></a><span class='definition'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='varid'>isAttr</span> <span class='varid'>env</span> <span class='varid'>s</span>-<a name="line-234"></a> <span class='keyglyph'>|</span> <span class='varid'>withNamespaces</span>-<a name="line-235"></a> <span class='keyglyph'>=</span> <span class='varid'>insertQName</span> <span class='varid'>qn1</span>-<a name="line-236"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-237"></a> <span class='keyglyph'>=</span> <span class='varid'>insertQName</span> <span class='varid'>qn0</span>-<a name="line-238"></a> <span class='keyword'>where</span>-<a name="line-239"></a> <span class='varid'>qn1</span>-<a name="line-240"></a> <span class='keyglyph'>|</span> <span class='varid'>isAttr</span> <span class='varop'>&&</span> <span class='varid'>isSimpleName</span> <span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>-<a name="line-241"></a> <span class='keyglyph'>|</span> <span class='varid'>isSimpleName</span> <span class='keyglyph'>=</span> <span class='varid'>mkQName</span> <span class='str'>""</span> <span class='varid'>s</span> <span class='layout'>(</span><span class='varid'>nsUri</span> <span class='str'>""</span><span class='layout'>)</span>-<a name="line-242"></a> <span class='keyglyph'>|</span> <span class='varid'>isWellformedQualifiedName</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>mkQName</span> <span class='varid'>px</span> <span class='varid'>lp</span> <span class='layout'>(</span><span class='varid'>nsUri</span> <span class='varid'>px</span><span class='layout'>)</span>-<a name="line-243"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>-<a name="line-244"></a> <span class='varid'>qn0</span>-<a name="line-245"></a> <span class='keyglyph'>|</span> <span class='varid'>isSimpleName</span> <span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>-<a name="line-246"></a> <span class='keyglyph'>|</span> <span class='varid'>isWellformedQualifiedName</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>mkPrefixLocalPart</span> <span class='varid'>px</span> <span class='varid'>lp</span>-<a name="line-247"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>mkName</span> <span class='varid'>s</span>-<a name="line-248"></a>-<a name="line-249"></a> <span class='varid'>nsUri</span> <span class='varid'>x</span> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='str'>""</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>x</span> <span class='varop'>$</span> <span class='varid'>env</span>-<a name="line-250"></a> <span class='varid'>isSimpleName</span> <span class='keyglyph'>=</span> <span class='varid'>all</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>s</span>-<a name="line-251"></a> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='layout'>(</span><span class='keyword'>_</span> <span class='conop'>:</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span><span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>s</span>-<a name="line-252"></a>-<a name="line-253"></a><a name="extendNsEnv"></a><span class='definition'>extendNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span>-<a name="line-254"></a><span class='definition'>extendNsEnv</span> <span class='varid'>withNamespaces</span> <span class='varid'>al1</span> <span class='varid'>env</span>-<a name="line-255"></a> <span class='keyglyph'>|</span> <span class='varid'>withNamespaces</span>-<a name="line-256"></a> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>addNs</span><span class='layout'>)</span> <span class='varid'>al1</span> <span class='varop'>++</span> <span class='varid'>env</span>-<a name="line-257"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-258"></a> <span class='keyglyph'>=</span> <span class='varid'>env</span>-<a name="line-259"></a> <span class='keyword'>where</span>-<a name="line-260"></a> <span class='varid'>addNs</span> <span class='varid'>n</span> <span class='varid'>v</span>-<a name="line-261"></a> <span class='keyglyph'>|</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span>-<a name="line-262"></a> <span class='varop'>&&</span>-<a name="line-263"></a> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>lp</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>tail</span> <span class='varop'>$</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-264"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>drop</span> <span class='num'>1</span> <span class='varid'>lp</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-265"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-266"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-267"></a> <span class='keyword'>where</span>-<a name="line-268"></a> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>n</span>-<a name="line-269"></a>-<a name="line-270"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-271"></a>-<a name="line-272"></a><span class='comment'>-- own entity lookup to prevent problems with &amp; and tagsoup hack for IE</span>-<a name="line-273"></a>-<a name="line-274"></a><a name="lookupEntity"></a><span class='definition'>lookupEntity</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span>-<a name="line-275"></a><span class='definition'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='sel'>_asHtml</span> <span class='varid'>e0</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='chr'>'#'</span><span class='conop'>:</span><span class='varid'>e</span><span class='layout'>)</span>-<a name="line-276"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>lookupNumericEntity</span> <span class='varid'>e</span> <span class='keyword'>of</span>-<a name="line-277"></a> <span class='conid'>Just</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='conid'>TagText</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span> <span class='keyglyph'>]</span>-<a name="line-278"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='conid'>TagText</span> <span class='varop'>$</span> <span class='str'>"&"</span> <span class='varop'>++</span> <span class='varid'>e0</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='layout'>)</span> <span class='conop'>:</span>-<a name="line-279"></a> <span class='keyword'>if</span> <span class='varid'>withWarnings</span>-<a name="line-280"></a> <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='conid'>TagWarning</span> <span class='varop'>$</span> <span class='str'>"illegal char reference: &"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='keyglyph'>]</span>-<a name="line-281"></a> <span class='keyword'>else</span> <span class='conid'>[]</span>+<a name="line-220"></a><a name="extendNsEnv"></a><span class='definition'>extendNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span>+<a name="line-221"></a><span class='definition'>extendNsEnv</span> <span class='varid'>withNamespaces</span> <span class='varid'>al1</span> <span class='varid'>env</span>+<a name="line-222"></a> <span class='keyglyph'>|</span> <span class='varid'>withNamespaces</span>+<a name="line-223"></a> <span class='keyglyph'>=</span> <span class='varid'>toNsEnv</span> <span class='layout'>(</span><span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>addNs</span><span class='layout'>)</span> <span class='varid'>al1</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='varid'>env</span>+<a name="line-224"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-225"></a> <span class='keyglyph'>=</span> <span class='varid'>env</span>+<a name="line-226"></a> <span class='keyword'>where</span>+<a name="line-227"></a> <span class='varid'>addNs</span> <span class='varid'>n</span> <span class='varid'>v</span>+<a name="line-228"></a> <span class='keyglyph'>|</span> <span class='varid'>px</span> <span class='varop'>==</span> <span class='varid'>a_xmlns</span>+<a name="line-229"></a> <span class='varop'>&&</span>+<a name="line-230"></a> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>lp</span> <span class='varop'>||</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>tail</span> <span class='varop'>$</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-231"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>drop</span> <span class='num'>1</span> <span class='varid'>lp</span><span class='layout'>,</span> <span class='varid'>v</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-232"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-233"></a> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-234"></a> <span class='keyword'>where</span>+<a name="line-235"></a> <span class='layout'>(</span><span class='varid'>px</span><span class='layout'>,</span> <span class='varid'>lp</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>n</span>+<a name="line-236"></a>+<a name="line-237"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-238"></a>+<a name="line-239"></a><span class='comment'>-- own entity lookup to prevent problems with &amp; and tagsoup hack for IE</span>+<a name="line-240"></a>+<a name="line-241"></a><a name="lookupEntity"></a><span class='definition'>lookupEntity</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span>+<a name="line-242"></a><span class='definition'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='sel'>_asHtml</span> <span class='varid'>e0</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='chr'>'#'</span><span class='conop'>:</span><span class='varid'>e</span><span class='layout'>)</span>+<a name="line-243"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>lookupNumericEntity</span> <span class='varid'>e</span> <span class='keyword'>of</span>+<a name="line-244"></a> <span class='conid'>Just</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='conid'>TagText</span> <span class='keyglyph'>[</span><span class='varid'>c</span><span class='keyglyph'>]</span> <span class='keyglyph'>]</span>+<a name="line-245"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='conid'>TagText</span> <span class='varop'>$</span> <span class='str'>"&"</span> <span class='varop'>++</span> <span class='varid'>e0</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='layout'>)</span> <span class='conop'>:</span>+<a name="line-246"></a> <span class='keyword'>if</span> <span class='varid'>withWarnings</span>+<a name="line-247"></a> <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='conid'>TagWarning</span> <span class='varop'>$</span> <span class='str'>"illegal char reference: &"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='keyglyph'>]</span>+<a name="line-248"></a> <span class='keyword'>else</span> <span class='conid'>[]</span>+<a name="line-249"></a>+<a name="line-250"></a><span class='definition'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='varid'>asHtml</span> <span class='varid'>e</span>+<a name="line-251"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>e</span> <span class='varid'>entities</span><span class='layout'>)</span> <span class='keyword'>of</span>+<a name="line-252"></a> <span class='conid'>Just</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='conid'>TagText</span> <span class='keyglyph'>[</span><span class='varid'>toEnum</span> <span class='varid'>x</span><span class='keyglyph'>]</span><span class='keyglyph'>]</span>+<a name="line-253"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='varop'>$</span> <span class='str'>"&"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='layout'>)</span> <span class='conop'>:</span>+<a name="line-254"></a> <span class='keyword'>if</span> <span class='varid'>withWarnings</span>+<a name="line-255"></a> <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='conid'>TagWarning</span> <span class='varop'>$</span> <span class='str'>"Unknown entity reference: &"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='keyglyph'>]</span>+<a name="line-256"></a> <span class='keyword'>else</span> <span class='conid'>[]</span>+<a name="line-257"></a> <span class='keyword'>where</span>+<a name="line-258"></a> <span class='varid'>entities</span>+<a name="line-259"></a> <span class='keyglyph'>|</span> <span class='varid'>asHtml</span> <span class='keyglyph'>=</span> <span class='varid'>xhtmlEntities</span>+<a name="line-260"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>xhtmlEntities</span> <span class='comment'>-- xmlEntities (TODO: xhtml is xml and html)</span>+<a name="line-261"></a>+<a name="line-262"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-263"></a>+<a name="line-264"></a><span class='comment'>-- |</span>+<a name="line-265"></a><span class='comment'>-- Turns all element and attribute names to lower case</span>+<a name="line-266"></a><span class='comment'>-- even !DOCTYPE stuff. But this is discarded when parsing the tagsoup</span>+<a name="line-267"></a>+<a name="line-268"></a><a name="lowerCaseNames"></a><span class='definition'>lowerCaseNames</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span>+<a name="line-269"></a><span class='definition'>lowerCaseNames</span>+<a name="line-270"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>f</span>+<a name="line-271"></a> <span class='keyword'>where</span>+<a name="line-272"></a> <span class='varid'>f</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='varid'>name</span> <span class='varid'>attrs</span><span class='layout'>)</span>+<a name="line-273"></a> <span class='keyglyph'>=</span> <span class='conid'>TagOpen</span> <span class='layout'>(</span><span class='varid'>nameToLower</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>attrToLower</span> <span class='varid'>attrs</span><span class='layout'>)</span>+<a name="line-274"></a> <span class='varid'>f</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='varid'>name</span><span class='layout'>)</span>+<a name="line-275"></a> <span class='keyglyph'>=</span> <span class='conid'>TagClose</span> <span class='layout'>(</span><span class='varid'>nameToLower</span> <span class='varid'>name</span><span class='layout'>)</span>+<a name="line-276"></a> <span class='varid'>f</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>a</span>+<a name="line-277"></a> <span class='varid'>nameToLower</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>toLower</span>+<a name="line-278"></a> <span class='varid'>attrToLower</span> <span class='layout'>(</span><span class='varid'>an</span><span class='layout'>,</span> <span class='varid'>av</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>nameToLower</span> <span class='varid'>an</span><span class='layout'>,</span> <span class='varid'>av</span><span class='layout'>)</span>+<a name="line-279"></a>+<a name="line-280"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-281"></a><span class='comment'>-- the main parser</span> <a name="line-282"></a>-<a name="line-283"></a><span class='definition'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='varid'>asHtml</span> <span class='varid'>e</span>-<a name="line-284"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>lookup</span> <span class='varid'>e</span> <span class='varid'>entities</span><span class='layout'>)</span> <span class='keyword'>of</span>-<a name="line-285"></a> <span class='conid'>Just</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span> <span class='conid'>TagText</span> <span class='keyglyph'>[</span><span class='varid'>toEnum</span> <span class='varid'>x</span><span class='keyglyph'>]</span><span class='keyglyph'>]</span>-<a name="line-286"></a> <span class='conid'>Nothing</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>TagText</span> <span class='varop'>$</span> <span class='str'>"&"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='layout'>)</span> <span class='conop'>:</span>-<a name="line-287"></a> <span class='keyword'>if</span> <span class='varid'>withWarnings</span>-<a name="line-288"></a> <span class='keyword'>then</span> <span class='keyglyph'>[</span><span class='conid'>TagWarning</span> <span class='varop'>$</span> <span class='str'>"Unknown entity reference: &"</span> <span class='varop'>++</span> <span class='varid'>e</span> <span class='varop'>++</span> <span class='str'>";"</span><span class='keyglyph'>]</span>-<a name="line-289"></a> <span class='keyword'>else</span> <span class='conid'>[]</span>-<a name="line-290"></a> <span class='keyword'>where</span>-<a name="line-291"></a> <span class='varid'>entities</span>-<a name="line-292"></a> <span class='keyglyph'>|</span> <span class='varid'>asHtml</span> <span class='keyglyph'>=</span> <span class='varid'>xhtmlEntities</span>-<a name="line-293"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>xhtmlEntities</span> <span class='comment'>-- xmlEntities (TODO: xhtml is xml and html)</span>-<a name="line-294"></a>-<a name="line-295"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-296"></a>-<a name="line-297"></a><span class='comment'>-- |</span>-<a name="line-298"></a><span class='comment'>-- Turns all element and attribute names to lower case</span>-<a name="line-299"></a><span class='comment'>-- even !DOCTYPE stuff. But this is discarded when parsing the tagsoup</span>-<a name="line-300"></a>-<a name="line-301"></a><a name="lowerCaseNames"></a><span class='definition'>lowerCaseNames</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Tag</span><span class='keyglyph'>]</span>-<a name="line-302"></a><span class='definition'>lowerCaseNames</span>-<a name="line-303"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>f</span>-<a name="line-304"></a> <span class='keyword'>where</span>-<a name="line-305"></a> <span class='varid'>f</span> <span class='layout'>(</span><span class='conid'>TagOpen</span> <span class='varid'>name</span> <span class='varid'>attrs</span><span class='layout'>)</span>-<a name="line-306"></a> <span class='keyglyph'>=</span> <span class='conid'>TagOpen</span> <span class='layout'>(</span><span class='varid'>nameToLower</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>attrToLower</span> <span class='varid'>attrs</span><span class='layout'>)</span>-<a name="line-307"></a> <span class='varid'>f</span> <span class='layout'>(</span><span class='conid'>TagClose</span> <span class='varid'>name</span><span class='layout'>)</span>-<a name="line-308"></a> <span class='keyglyph'>=</span> <span class='conid'>TagClose</span> <span class='layout'>(</span><span class='varid'>nameToLower</span> <span class='varid'>name</span><span class='layout'>)</span>-<a name="line-309"></a> <span class='varid'>f</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='varid'>a</span>-<a name="line-310"></a> <span class='varid'>nameToLower</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>toLower</span>-<a name="line-311"></a> <span class='varid'>attrToLower</span> <span class='layout'>(</span><span class='varid'>an</span><span class='layout'>,</span> <span class='varid'>av</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>nameToLower</span> <span class='varid'>an</span><span class='layout'>,</span> <span class='varid'>av</span><span class='layout'>)</span>-<a name="line-312"></a>-<a name="line-313"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-314"></a><span class='comment'>-- the main parser</span>-<a name="line-315"></a>-<a name="line-316"></a><a name="parseHtmlTagSoup"></a><span class='definition'>parseHtmlTagSoup</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</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-317"></a><span class='definition'>parseHtmlTagSoup</span> <span class='varid'>withNamespaces</span> <span class='varid'>withWarnings</span> <span class='varid'>withComment</span> <span class='varid'>removeWhiteSpace</span> <span class='varid'>asHtml</span> <span class='varid'>doc</span>-<a name="line-318"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>docRootElem</span>-<a name="line-319"></a> <span class='varop'>.</span> <span class='varid'>runParser</span> <span class='layout'>(</span><span class='varid'>buildCont</span> <span class='varid'>initContext</span><span class='layout'>)</span>-<a name="line-320"></a> <span class='varop'>.</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>asHtml</span>-<a name="line-321"></a> <span class='keyword'>then</span> <span class='varid'>lowerCaseNames</span>-<a name="line-322"></a> <span class='keyword'>else</span> <span class='varid'>id</span>-<a name="line-323"></a> <span class='layout'>)</span>-<a name="line-324"></a> <span class='varop'>.</span> <span class='varid'>parseTagsOptions</span> <span class='layout'>(</span><span class='varid'>parseOptions</span> <span class='layout'>{</span> <span class='varid'>optTagWarning</span> <span class='keyglyph'>=</span> <span class='varid'>withWarnings</span>-<a name="line-325"></a> <span class='layout'>,</span> <span class='varid'>optLookupEntity</span> <span class='keyglyph'>=</span> <span class='varid'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='varid'>asHtml</span>-<a name="line-326"></a> <span class='layout'>}</span>-<a name="line-327"></a> <span class='layout'>)</span>-<a name="line-328"></a> <span class='layout'>)</span>-<a name="line-329"></a> <span class='keyword'>where</span>-<a name="line-330"></a> <span class='comment'>-- This is essential for lasy parsing:</span>-<a name="line-331"></a> <span class='comment'>-- the call of "take 1" stops parsing, when the first element is detected</span>-<a name="line-332"></a> <span class='comment'>-- no check on end of input sequence is required to build this (0- or 1-element list)</span>-<a name="line-333"></a> <span class='comment'>-- so eof is never checked unneccessarily</span>-<a name="line-334"></a>-<a name="line-335"></a> <span class='varid'>docRootElem</span>-<a name="line-336"></a> <span class='keyglyph'>=</span> <span class='varid'>take</span> <span class='num'>1</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='varid'>isElem</span>-<a name="line-337"></a>-<a name="line-338"></a> <span class='varid'>initContext</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='conid'>[]</span>-<a name="line-339"></a> <span class='layout'>,</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_xml</span><span class='layout'>,</span> <span class='varid'>xmlNamespace</span><span class='layout'>)</span>-<a name="line-340"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_xmlns</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span><span class='layout'>)</span>-<a name="line-341"></a> <span class='keyglyph'>]</span>-<a name="line-342"></a> <span class='layout'>)</span>-<a name="line-343"></a>-<a name="line-344"></a> <span class='varid'>wrap</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-345"></a>-<a name="line-346"></a> <span class='varid'>warn</span>-<a name="line-347"></a> <span class='keyglyph'>|</span> <span class='varid'>withWarnings</span> <span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkError</span> <span class='varid'>c_warn</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>doc</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>" "</span> <span class='varop'>++</span><span class='layout'>)</span>-<a name="line-348"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>[]</span>-<a name="line-349"></a> <span class='varid'>cmt</span>-<a name="line-350"></a> <span class='keyglyph'>|</span> <span class='varid'>withComment</span> <span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkCmt</span>-<a name="line-351"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>[]</span>-<a name="line-352"></a> <span class='varid'>txt</span>-<a name="line-353"></a> <span class='keyglyph'>|</span> <span class='varid'>removeWhiteSpace</span>-<a name="line-354"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span>-<a name="line-355"></a> <span class='keyword'>if</span> <span class='varid'>all</span> <span class='varid'>isXmlSpaceChar</span> <span class='varid'>t</span>-<a name="line-356"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>-<a name="line-357"></a> <span class='keyword'>else</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span> <span class='varop'>$</span> <span class='varid'>t</span>-<a name="line-358"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span>-<a name="line-359"></a>-<a name="line-360"></a> <span class='varid'>isEmptyElem</span>-<a name="line-361"></a> <span class='keyglyph'>|</span> <span class='varid'>asHtml</span> <span class='keyglyph'>=</span> <span class='varid'>isEmptyHtmlTag</span>-<a name="line-362"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>False</span>-<a name="line-363"></a>-<a name="line-364"></a> <span class='varid'>isInnerElem</span>-<a name="line-365"></a> <span class='keyglyph'>|</span> <span class='varid'>asHtml</span> <span class='keyglyph'>=</span> <span class='varid'>isInnerHtmlTagOf</span>-<a name="line-366"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>False</span><span class='layout'>)</span>-<a name="line-367"></a>-<a name="line-368"></a> <span class='varid'>closesElem</span>-<a name="line-369"></a> <span class='keyglyph'>|</span> <span class='varid'>asHtml</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>ns</span> <span class='varid'>n1</span> <span class='keyglyph'>-></span>-<a name="line-370"></a> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ns</span><span class='layout'>)</span>-<a name="line-371"></a> <span class='varop'>&&</span>-<a name="line-372"></a> <span class='varid'>n1</span> <span class='varop'>`closesHtmlTag`</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>ns</span><span class='layout'>)</span>-<a name="line-373"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>False</span><span class='layout'>)</span>-<a name="line-374"></a>-<a name="line-375"></a> <span class='varid'>buildCont</span> <span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>-<a name="line-376"></a> <span class='varid'>buildCont</span> <span class='varid'>ns</span>-<a name="line-377"></a> <span class='keyglyph'>=</span> <span class='varid'>cond</span> <span class='varid'>isText</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-378"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getText</span>-<a name="line-379"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>-<a name="line-380"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>t</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>-<a name="line-381"></a> <span class='layout'>)</span>-<a name="line-382"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isOpn</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-383"></a> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span><span class='varid'>al</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>getOpn</span>-<a name="line-384"></a> <span class='varid'>openTag</span> <span class='varid'>ns</span> <span class='varid'>n</span> <span class='varid'>al</span>-<a name="line-385"></a> <span class='layout'>)</span>-<a name="line-386"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isCls</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-387"></a> <span class='varid'>n</span> <span class='keyglyph'><-</span> <span class='varid'>getCls</span>-<a name="line-388"></a> <span class='varid'>closeTag</span> <span class='varid'>ns</span> <span class='varid'>n</span>-<a name="line-389"></a> <span class='layout'>)</span>-<a name="line-390"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isCmt</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-391"></a> <span class='varid'>c</span> <span class='keyglyph'><-</span> <span class='varid'>getCmt</span>-<a name="line-392"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>-<a name="line-393"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>cmt</span> <span class='varid'>c</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>-<a name="line-394"></a> <span class='layout'>)</span>-<a name="line-395"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isWarn</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-396"></a> <span class='varid'>w</span> <span class='keyglyph'><-</span> <span class='varid'>getWarn</span>-<a name="line-397"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>-<a name="line-398"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='varid'>w</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>-<a name="line-399"></a> <span class='layout'>)</span>-<a name="line-400"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isPos</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-401"></a> <span class='varid'>getPos</span>-<a name="line-402"></a> <span class='varid'>buildCont</span> <span class='varid'>ns</span>-<a name="line-403"></a> <span class='layout'>)</span>-<a name="line-404"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isEof</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-405"></a> <span class='varid'>isEof</span>-<a name="line-406"></a> <span class='varid'>closeAll</span> <span class='varid'>ns</span>-<a name="line-407"></a> <span class='layout'>)</span>-<a name="line-408"></a> <span class='layout'>(</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='str'>"parse error in tagsoup tree construction"</span><span class='layout'>)</span>-<a name="line-409"></a> <span class='layout'>)</span>-<a name="line-410"></a> <span class='layout'>)</span>-<a name="line-411"></a> <span class='layout'>)</span>-<a name="line-412"></a> <span class='layout'>)</span>-<a name="line-413"></a> <span class='layout'>)</span>-<a name="line-414"></a> <span class='layout'>)</span>-<a name="line-415"></a> <span class='layout'>)</span>-<a name="line-416"></a> <span class='keyword'>where</span>-<a name="line-417"></a> <span class='varid'>closeTag</span> <span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>-<a name="line-418"></a> <span class='varid'>closeTag</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span>-<a name="line-419"></a> <span class='keyglyph'>|</span> <span class='varid'>n'</span> <span class='varop'>==</span> <span class='varid'>n1</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span> <span class='comment'>-- a normal closing tag</span>-<a name="line-420"></a> <span class='comment'>-- all other cases try to repair wrong html</span>-<a name="line-421"></a> <span class='varid'>closeTag</span> <span class='varid'>ns'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span> <span class='comment'>-- n1 closes n implicitly</span>-<a name="line-422"></a> <span class='keyglyph'>|</span> <span class='varid'>n'</span> <span class='varop'>`isInnerElem`</span> <span class='varid'>n1</span> <span class='comment'>-- e.g. <td>...</tr></span>-<a name="line-423"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-424"></a> <span class='varid'>insCls</span> <span class='varid'>n1</span> <span class='comment'>-- pushback </n1></span>-<a name="line-425"></a> <span class='varid'>insCls</span> <span class='varid'>n'</span> <span class='comment'>-- insert a </n'></span>-<a name="line-426"></a> <span class='varid'>buildCont</span> <span class='varid'>ns'</span> <span class='comment'>-- try again</span>-<a name="line-427"></a> <span class='varid'>closeTag</span> <span class='varid'>ns'</span> <span class='varid'>n1</span>-<a name="line-428"></a> <span class='keyglyph'>|</span> <span class='varid'>isEmptyElem</span> <span class='varid'>n1</span> <span class='keyglyph'>=</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span> <span class='comment'>-- ignore a redundant closing tag for empty element</span>-<a name="line-429"></a> <span class='varid'>closeTag</span> <span class='varid'>ns'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='varid'>ns1'</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span> <span class='comment'>-- insert a missing closing tag</span>-<a name="line-430"></a> <span class='keyglyph'>|</span> <span class='varid'>n1</span> <span class='varop'>`elem`</span> <span class='varid'>ns1'</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-431"></a> <span class='varid'>insCls</span> <span class='varid'>n1</span>-<a name="line-432"></a> <span class='varid'>insCls</span> <span class='varid'>n'</span>-<a name="line-433"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span>-<a name="line-434"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"closing tag "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n'</span> <span class='varop'>++</span>-<a name="line-435"></a> <span class='str'>" expected, but "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n1</span> <span class='varop'>++</span> <span class='str'>" found"</span><span class='layout'>)</span>-<a name="line-436"></a> <span class='varop'>++</span> <span class='varid'>rl</span>-<a name="line-437"></a> <span class='layout'>)</span>-<a name="line-438"></a> <span class='varid'>closeTag</span> <span class='varid'>ns'</span> <span class='varid'>n1</span> <span class='comment'>-- ignore a wrong closing tag</span>-<a name="line-439"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-440"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span>-<a name="line-441"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"no opening tag for closing tag "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n1</span><span class='layout'>)</span>-<a name="line-442"></a> <span class='varop'>++</span> <span class='varid'>rl</span>-<a name="line-443"></a> <span class='layout'>)</span>-<a name="line-444"></a>-<a name="line-445"></a> <span class='varid'>openTag</span> <span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>-<a name="line-446"></a> <span class='varid'>openTag</span> <span class='varid'>cx'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>ns'</span><span class='layout'>,</span><span class='varid'>env'</span><span class='layout'>)</span> <span class='varid'>n1</span> <span class='varid'>al1</span>-<a name="line-447"></a> <span class='keyglyph'>|</span> <span class='varid'>isPiDT</span> <span class='varid'>n1</span> <span class='keyglyph'>=</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>-<a name="line-448"></a> <span class='keyglyph'>|</span> <span class='varid'>isEmptyElem</span> <span class='varid'>n1</span>-<a name="line-449"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-450"></a> <span class='varid'>qn</span> <span class='keyglyph'><-</span> <span class='varid'>mkElemQN</span> <span class='varid'>nenv</span> <span class='varid'>n1</span>-<a name="line-451"></a> <span class='varid'>al</span> <span class='keyglyph'><-</span> <span class='varid'>mkAttrs</span> <span class='varid'>al1</span>-<a name="line-452"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>-<a name="line-453"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkElement</span> <span class='varid'>qn</span> <span class='varid'>al</span> <span class='conid'>[]</span> <span class='conop'>:</span> <span class='varid'>rl</span><span class='layout'>)</span>-<a name="line-454"></a> <span class='keyglyph'>|</span> <span class='varid'>closesElem</span> <span class='varid'>ns'</span> <span class='varid'>n1</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-455"></a> <span class='varid'>insOpn</span> <span class='varid'>n1</span> <span class='varid'>al1</span>-<a name="line-456"></a> <span class='varid'>insCls</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>ns'</span><span class='layout'>)</span>-<a name="line-457"></a> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>-<a name="line-458"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-459"></a> <span class='varid'>qn</span> <span class='keyglyph'><-</span> <span class='varid'>mkElemQN</span> <span class='varid'>nenv</span> <span class='varid'>n1</span>-<a name="line-460"></a> <span class='varid'>al</span> <span class='keyglyph'><-</span> <span class='varid'>mkAttrs</span> <span class='varid'>al1</span>-<a name="line-461"></a> <span class='varid'>cs</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n1</span> <span class='conop'>:</span> <span class='varid'>ns'</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>nenv</span><span class='layout'>)</span>-<a name="line-462"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>-<a name="line-463"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkElement</span> <span class='varid'>qn</span> <span class='varid'>al</span> <span class='varid'>cs</span> <span class='conop'>:</span> <span class='varid'>rl</span><span class='layout'>)</span>-<a name="line-464"></a> <span class='keyword'>where</span>-<a name="line-465"></a> <span class='varid'>nenv</span> <span class='keyglyph'>=</span> <span class='varid'>extendNsEnv</span> <span class='varid'>withNamespaces</span> <span class='varid'>al1</span> <span class='varid'>env'</span>-<a name="line-466"></a> <span class='varid'>mkElemQN</span> <span class='keyglyph'>=</span> <span class='varid'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='conid'>False</span>-<a name="line-467"></a> <span class='varid'>mkAttrQN</span> <span class='keyglyph'>=</span> <span class='varid'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='conid'>True</span>-<a name="line-468"></a> <span class='varid'>isPiDT</span> <span class='layout'>(</span><span class='chr'>'?'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-469"></a> <span class='varid'>isPiDT</span> <span class='layout'>(</span><span class='chr'>'!'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-470"></a> <span class='varid'>isPiDT</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-471"></a> <span class='varid'>mkAttrs</span> <span class='keyglyph'>=</span> <span class='varid'>mapM</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>mkA</span><span class='layout'>)</span>-<a name="line-472"></a> <span class='varid'>mkA</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-473"></a> <span class='varid'>qan</span> <span class='keyglyph'><-</span> <span class='varid'>mkAttrQN</span> <span class='varid'>nenv</span> <span class='varid'>an</span>-<a name="line-474"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkAttr</span> <span class='varid'>qan</span> <span class='layout'>(</span><span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span> <span class='varop'>$</span> <span class='varid'>av</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-475"></a>-<a name="line-476"></a> <span class='varid'>closeAll</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>NsEnv</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>-<a name="line-477"></a> <span class='varid'>closeAll</span> <span class='layout'>(</span><span class='varid'>ns'</span><span class='layout'>,</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>concatMap</span> <span class='varid'>wrn</span> <span class='varid'>ns'</span><span class='layout'>)</span>-<a name="line-478"></a> <span class='keyword'>where</span>-<a name="line-479"></a> <span class='varid'>wrn</span> <span class='keyglyph'>=</span> <span class='varid'>warn</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>"insert missing closing tag "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span>-<a name="line-480"></a>-<a name="line-481"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-283"></a><a name="parseHtmlTagSoup"></a><span class='definition'>parseHtmlTagSoup</span> <span class='keyglyph'>::</span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</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-284"></a><span class='definition'>parseHtmlTagSoup</span> <span class='varid'>withNamespaces</span> <span class='varid'>withWarnings</span> <span class='varid'>withComment</span> <span class='varid'>removeWhiteSpace</span> <span class='varid'>asHtml</span> <span class='varid'>doc</span>+<a name="line-285"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='varid'>docRootElem</span>+<a name="line-286"></a> <span class='varop'>.</span> <span class='varid'>runParser</span> <span class='layout'>(</span><span class='varid'>buildCont</span> <span class='varid'>initContext</span><span class='layout'>)</span>+<a name="line-287"></a> <span class='varop'>.</span> <span class='layout'>(</span> <span class='keyword'>if</span> <span class='varid'>asHtml</span>+<a name="line-288"></a> <span class='keyword'>then</span> <span class='varid'>lowerCaseNames</span>+<a name="line-289"></a> <span class='keyword'>else</span> <span class='varid'>id</span>+<a name="line-290"></a> <span class='layout'>)</span>+<a name="line-291"></a> <span class='varop'>.</span> <span class='varid'>parseTagsOptions</span> <span class='layout'>(</span><span class='varid'>parseOptions</span> <span class='layout'>{</span> <span class='varid'>optTagWarning</span> <span class='keyglyph'>=</span> <span class='varid'>withWarnings</span>+<a name="line-292"></a> <span class='layout'>,</span> <span class='varid'>optLookupEntity</span> <span class='keyglyph'>=</span> <span class='varid'>lookupEntity</span> <span class='varid'>withWarnings</span> <span class='varid'>asHtml</span>+<a name="line-293"></a> <span class='layout'>}</span>+<a name="line-294"></a> <span class='layout'>)</span>+<a name="line-295"></a> <span class='layout'>)</span>+<a name="line-296"></a> <span class='keyword'>where</span>+<a name="line-297"></a> <span class='comment'>-- This is essential for lasy parsing:</span>+<a name="line-298"></a> <span class='comment'>-- the call of "take 1" stops parsing, when the first element is detected</span>+<a name="line-299"></a> <span class='comment'>-- no check on end of input sequence is required to build this (0- or 1-element list)</span>+<a name="line-300"></a> <span class='comment'>-- so eof is never checked unneccessarily</span>+<a name="line-301"></a>+<a name="line-302"></a> <span class='varid'>docRootElem</span>+<a name="line-303"></a> <span class='keyglyph'>=</span> <span class='varid'>take</span> <span class='num'>1</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='varid'>isElem</span>+<a name="line-304"></a>+<a name="line-305"></a> <span class='varid'>initContext</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='conid'>[]</span>+<a name="line-306"></a> <span class='layout'>,</span> <span class='varid'>toNsEnv</span> <span class='varop'>$</span>+<a name="line-307"></a> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>a_xml</span><span class='layout'>,</span> <span class='varid'>xmlNamespace</span><span class='layout'>)</span>+<a name="line-308"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>a_xmlns</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span><span class='layout'>)</span>+<a name="line-309"></a> <span class='keyglyph'>]</span>+<a name="line-310"></a> <span class='layout'>)</span>+<a name="line-311"></a>+<a name="line-312"></a> <span class='varid'>wrap</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conop'>:</span><span class='conid'>[]</span><span class='layout'>)</span>+<a name="line-313"></a>+<a name="line-314"></a> <span class='varid'>warn</span>+<a name="line-315"></a> <span class='keyglyph'>|</span> <span class='varid'>withWarnings</span> <span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkError</span> <span class='varid'>c_warn</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>doc</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>" "</span> <span class='varop'>++</span><span class='layout'>)</span>+<a name="line-316"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>[]</span>+<a name="line-317"></a> <span class='varid'>cmt</span>+<a name="line-318"></a> <span class='keyglyph'>|</span> <span class='varid'>withComment</span> <span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkCmt</span>+<a name="line-319"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>[]</span>+<a name="line-320"></a> <span class='varid'>txt</span>+<a name="line-321"></a> <span class='keyglyph'>|</span> <span class='varid'>removeWhiteSpace</span>+<a name="line-322"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>t</span> <span class='keyglyph'>-></span>+<a name="line-323"></a> <span class='keyword'>if</span> <span class='varid'>all</span> <span class='varid'>isXmlSpaceChar</span> <span class='varid'>t</span>+<a name="line-324"></a> <span class='keyword'>then</span> <span class='conid'>[]</span>+<a name="line-325"></a> <span class='keyword'>else</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span> <span class='varop'>$</span> <span class='varid'>t</span>+<a name="line-326"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span>+<a name="line-327"></a>+<a name="line-328"></a> <span class='varid'>isEmptyElem</span>+<a name="line-329"></a> <span class='keyglyph'>|</span> <span class='varid'>asHtml</span> <span class='keyglyph'>=</span> <span class='varid'>isEmptyHtmlTag</span>+<a name="line-330"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='conid'>False</span>+<a name="line-331"></a>+<a name="line-332"></a> <span class='varid'>isInnerElem</span>+<a name="line-333"></a> <span class='keyglyph'>|</span> <span class='varid'>asHtml</span> <span class='keyglyph'>=</span> <span class='varid'>isInnerHtmlTagOf</span>+<a name="line-334"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>False</span><span class='layout'>)</span>+<a name="line-335"></a>+<a name="line-336"></a> <span class='varid'>closesElem</span>+<a name="line-337"></a> <span class='keyglyph'>|</span> <span class='varid'>asHtml</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>ns</span> <span class='varid'>n1</span> <span class='keyglyph'>-></span>+<a name="line-338"></a> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ns</span><span class='layout'>)</span>+<a name="line-339"></a> <span class='varop'>&&</span>+<a name="line-340"></a> <span class='varid'>n1</span> <span class='varop'>`closesHtmlTag`</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>ns</span><span class='layout'>)</span>+<a name="line-341"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>False</span><span class='layout'>)</span>+<a name="line-342"></a>+<a name="line-343"></a> <span class='varid'>buildCont</span> <span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>+<a name="line-344"></a> <span class='varid'>buildCont</span> <span class='varid'>ns</span>+<a name="line-345"></a> <span class='keyglyph'>=</span> <span class='varid'>cond</span> <span class='varid'>isText</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-346"></a> <span class='varid'>t</span> <span class='keyglyph'><-</span> <span class='varid'>getText</span>+<a name="line-347"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>+<a name="line-348"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varid'>t</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>+<a name="line-349"></a> <span class='layout'>)</span>+<a name="line-350"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isOpn</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-351"></a> <span class='layout'>(</span><span class='varid'>n</span><span class='layout'>,</span><span class='varid'>al</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>getOpn</span>+<a name="line-352"></a> <span class='varid'>openTag</span> <span class='varid'>ns</span> <span class='varid'>n</span> <span class='varid'>al</span>+<a name="line-353"></a> <span class='layout'>)</span>+<a name="line-354"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isCls</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-355"></a> <span class='varid'>n</span> <span class='keyglyph'><-</span> <span class='varid'>getCls</span>+<a name="line-356"></a> <span class='varid'>closeTag</span> <span class='varid'>ns</span> <span class='varid'>n</span>+<a name="line-357"></a> <span class='layout'>)</span>+<a name="line-358"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isCmt</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-359"></a> <span class='varid'>c</span> <span class='keyglyph'><-</span> <span class='varid'>getCmt</span>+<a name="line-360"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>+<a name="line-361"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>cmt</span> <span class='varid'>c</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>+<a name="line-362"></a> <span class='layout'>)</span>+<a name="line-363"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isWarn</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-364"></a> <span class='varid'>w</span> <span class='keyglyph'><-</span> <span class='varid'>getWarn</span>+<a name="line-365"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>ns</span>+<a name="line-366"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='varid'>w</span> <span class='varop'>++</span> <span class='varid'>rl</span><span class='layout'>)</span>+<a name="line-367"></a> <span class='layout'>)</span>+<a name="line-368"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isPos</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-369"></a> <span class='varid'>getPos</span>+<a name="line-370"></a> <span class='varid'>buildCont</span> <span class='varid'>ns</span>+<a name="line-371"></a> <span class='layout'>)</span>+<a name="line-372"></a> <span class='layout'>(</span> <span class='varid'>cond</span> <span class='varid'>isEof</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-373"></a> <span class='varid'>isEof</span>+<a name="line-374"></a> <span class='varid'>closeAll</span> <span class='varid'>ns</span>+<a name="line-375"></a> <span class='layout'>)</span>+<a name="line-376"></a> <span class='layout'>(</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>warn</span> <span class='str'>"parse error in tagsoup tree construction"</span><span class='layout'>)</span>+<a name="line-377"></a> <span class='layout'>)</span>+<a name="line-378"></a> <span class='layout'>)</span>+<a name="line-379"></a> <span class='layout'>)</span>+<a name="line-380"></a> <span class='layout'>)</span>+<a name="line-381"></a> <span class='layout'>)</span>+<a name="line-382"></a> <span class='layout'>)</span>+<a name="line-383"></a> <span class='layout'>)</span>+<a name="line-384"></a> <span class='keyword'>where</span>+<a name="line-385"></a> <span class='varid'>closeTag</span> <span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>+<a name="line-386"></a> <span class='varid'>closeTag</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span>+<a name="line-387"></a> <span class='keyglyph'>|</span> <span class='varid'>n'</span> <span class='varop'>==</span> <span class='varid'>n1</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='conid'>[]</span> <span class='comment'>-- a normal closing tag</span>+<a name="line-388"></a> <span class='comment'>-- all other cases try to repair wrong html</span>+<a name="line-389"></a> <span class='varid'>closeTag</span> <span class='varid'>ns'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span> <span class='comment'>-- n1 closes n implicitly</span>+<a name="line-390"></a> <span class='keyglyph'>|</span> <span class='varid'>n'</span> <span class='varop'>`isInnerElem`</span> <span class='varid'>n1</span> <span class='comment'>-- e.g. <td>...</tr></span>+<a name="line-391"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-392"></a> <span class='varid'>insCls</span> <span class='varid'>n1</span> <span class='comment'>-- pushback </n1></span>+<a name="line-393"></a> <span class='varid'>insCls</span> <span class='varid'>n'</span> <span class='comment'>-- insert a </n'></span>+<a name="line-394"></a> <span class='varid'>buildCont</span> <span class='varid'>ns'</span> <span class='comment'>-- try again</span>+<a name="line-395"></a> <span class='varid'>closeTag</span> <span class='varid'>ns'</span> <span class='varid'>n1</span>+<a name="line-396"></a> <span class='keyglyph'>|</span> <span class='varid'>isEmptyElem</span> <span class='varid'>n1</span> <span class='keyglyph'>=</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span> <span class='comment'>-- ignore a redundant closing tag for empty element</span>+<a name="line-397"></a> <span class='varid'>closeTag</span> <span class='varid'>ns'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n'</span><span class='conop'>:</span><span class='varid'>ns1'</span><span class='layout'>)</span><span class='layout'>,</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>n1</span> <span class='comment'>-- insert a missing closing tag</span>+<a name="line-398"></a> <span class='keyglyph'>|</span> <span class='varid'>n1</span> <span class='varop'>`elem`</span> <span class='varid'>ns1'</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-399"></a> <span class='varid'>insCls</span> <span class='varid'>n1</span>+<a name="line-400"></a> <span class='varid'>insCls</span> <span class='varid'>n'</span>+<a name="line-401"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span>+<a name="line-402"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"closing tag "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n'</span> <span class='varop'>++</span>+<a name="line-403"></a> <span class='str'>" expected, but "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n1</span> <span class='varop'>++</span> <span class='str'>" found"</span><span class='layout'>)</span>+<a name="line-404"></a> <span class='varop'>++</span> <span class='varid'>rl</span>+<a name="line-405"></a> <span class='layout'>)</span>+<a name="line-406"></a> <span class='varid'>closeTag</span> <span class='varid'>ns'</span> <span class='varid'>n1</span> <span class='comment'>-- ignore a wrong closing tag</span>+<a name="line-407"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-408"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>ns'</span>+<a name="line-409"></a> <span class='varid'>return</span> <span class='layout'>(</span> <span class='varid'>warn</span> <span class='layout'>(</span><span class='str'>"no opening tag for closing tag "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>n1</span><span class='layout'>)</span>+<a name="line-410"></a> <span class='varop'>++</span> <span class='varid'>rl</span>+<a name="line-411"></a> <span class='layout'>)</span>+<a name="line-412"></a>+<a name="line-413"></a> <span class='varid'>openTag</span> <span class='keyglyph'>::</span> <span class='conid'>Context</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>+<a name="line-414"></a> <span class='varid'>openTag</span> <span class='varid'>cx'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>ns'</span><span class='layout'>,</span><span class='varid'>env'</span><span class='layout'>)</span> <span class='varid'>n1</span> <span class='varid'>al1</span>+<a name="line-415"></a> <span class='keyglyph'>|</span> <span class='varid'>isPiDT</span> <span class='varid'>n1</span> <span class='keyglyph'>=</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>+<a name="line-416"></a> <span class='keyglyph'>|</span> <span class='varid'>isEmptyElem</span> <span class='varid'>n1</span>+<a name="line-417"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-418"></a> <span class='varid'>qn</span> <span class='keyglyph'><-</span> <span class='varid'>mkElemQN</span> <span class='varid'>nenv</span> <span class='varid'>n1</span>+<a name="line-419"></a> <span class='varid'>al</span> <span class='keyglyph'><-</span> <span class='varid'>mkAttrs</span> <span class='varid'>al1</span>+<a name="line-420"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>+<a name="line-421"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkElement</span> <span class='varid'>qn</span> <span class='varid'>al</span> <span class='conid'>[]</span> <span class='conop'>:</span> <span class='varid'>rl</span><span class='layout'>)</span>+<a name="line-422"></a> <span class='keyglyph'>|</span> <span class='varid'>closesElem</span> <span class='varid'>ns'</span> <span class='varid'>n1</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-423"></a> <span class='varid'>insOpn</span> <span class='varid'>n1</span> <span class='varid'>al1</span>+<a name="line-424"></a> <span class='varid'>insCls</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>ns'</span><span class='layout'>)</span>+<a name="line-425"></a> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>+<a name="line-426"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-427"></a> <span class='varid'>qn</span> <span class='keyglyph'><-</span> <span class='varid'>mkElemQN</span> <span class='varid'>nenv</span> <span class='varid'>n1</span>+<a name="line-428"></a> <span class='varid'>al</span> <span class='keyglyph'><-</span> <span class='varid'>mkAttrs</span> <span class='varid'>al1</span>+<a name="line-429"></a> <span class='varid'>cs</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>n1</span> <span class='conop'>:</span> <span class='varid'>ns'</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>nenv</span><span class='layout'>)</span>+<a name="line-430"></a> <span class='varid'>rl</span> <span class='keyglyph'><-</span> <span class='varid'>buildCont</span> <span class='varid'>cx'</span>+<a name="line-431"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkElement</span> <span class='varid'>qn</span> <span class='varid'>al</span> <span class='varid'>cs</span> <span class='conop'>:</span> <span class='varid'>rl</span><span class='layout'>)</span>+<a name="line-432"></a> <span class='keyword'>where</span>+<a name="line-433"></a> <span class='varid'>nenv</span> <span class='keyglyph'>=</span> <span class='varid'>extendNsEnv</span> <span class='varid'>withNamespaces</span> <span class='varid'>al1</span> <span class='varid'>env'</span>+<a name="line-434"></a> <span class='varid'>mkElemQN</span> <span class='keyglyph'>=</span> <span class='varid'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='conid'>False</span>+<a name="line-435"></a> <span class='varid'>mkAttrQN</span> <span class='keyglyph'>=</span> <span class='varid'>mkQN</span> <span class='varid'>withNamespaces</span> <span class='conid'>True</span>+<a name="line-436"></a> <span class='varid'>isPiDT</span> <span class='layout'>(</span><span class='chr'>'?'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-437"></a> <span class='varid'>isPiDT</span> <span class='layout'>(</span><span class='chr'>'!'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-438"></a> <span class='varid'>isPiDT</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-439"></a> <span class='varid'>mkAttrs</span> <span class='keyglyph'>=</span> <span class='varid'>mapM</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varid'>mkA</span><span class='layout'>)</span>+<a name="line-440"></a> <span class='varid'>mkA</span> <span class='varid'>an</span> <span class='varid'>av</span> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-441"></a> <span class='varid'>qan</span> <span class='keyglyph'><-</span> <span class='varid'>mkAttrQN</span> <span class='varid'>nenv</span> <span class='varid'>an</span>+<a name="line-442"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkAttr</span> <span class='varid'>qan</span> <span class='layout'>(</span><span class='varid'>wrap</span> <span class='varop'>.</span> <span class='varid'>mkText</span> <span class='varop'>$</span> <span class='varid'>av</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-443"></a>+<a name="line-444"></a> <span class='varid'>closeAll</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='conid'>NsEnv</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>Parser</span> <span class='conid'>XmlTrees</span>+<a name="line-445"></a> <span class='varid'>closeAll</span> <span class='layout'>(</span><span class='varid'>ns'</span><span class='layout'>,</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>concatMap</span> <span class='varid'>wrn</span> <span class='varid'>ns'</span><span class='layout'>)</span>+<a name="line-446"></a> <span class='keyword'>where</span>+<a name="line-447"></a> <span class='varid'>wrn</span> <span class='keyglyph'>=</span> <span class='varid'>warn</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='str'>"insert missing closing tag "</span> <span class='varop'>++</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>show</span>+<a name="line-448"></a>+<a name="line-449"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-RelaxNG-Simplification.html view
@@ -97,7 +97,7 @@ <a name="line-89"></a> <span class='layout'>(</span> <span class='varid'>processHref</span> <span class='varop'>$<</span> <span class='varid'>getBaseURI</span> <span class='layout'>)</span> <a name="line-90"></a> <span class='varop'>>>></span> <a name="line-91"></a> <span class='comment'>-- 4.10 QNames</span>-<a name="line-92"></a> <span class='varid'>processWithNsEnv</span> <span class='varid'>processEnvNames</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='str'>"xml"</span><span class='layout'>,</span><span class='varid'>xmlNamespace</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-92"></a> <span class='varid'>processWithNsEnv</span> <span class='varid'>processEnvNames</span> <span class='layout'>(</span><span class='varid'>toNsEnv</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='str'>"xml"</span><span class='layout'>,</span><span class='varid'>xmlNamespace</span><span class='layout'>)</span><span class='keyglyph'>]</span><span class='layout'>)</span> <a name="line-93"></a> <span class='varop'>>>></span> <a name="line-94"></a> <span class='comment'>-- 4.4 For any data or value element that does not have a datatypeLibrary attribute,</span> <a name="line-95"></a> <span class='comment'>-- a datatypeLibrary attribute is added.</span>@@ -237,7 +237,7 @@ <a name="line-229"></a> <span class='layout'>)</span> <a name="line-230"></a> <span class='layout'>)</span> <a name="line-231"></a>-<a name="line-232"></a> <span class='varid'>processEnvNames</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>IOSArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span>+<a name="line-232"></a> <span class='varid'>processEnvNames</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>IOSArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <a name="line-233"></a> <span class='varid'>processEnvNames</span> <span class='varid'>env</span> <a name="line-234"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='layout'>(</span> <span class='layout'>(</span><span class='varid'>replaceQNames</span> <span class='varid'>env</span> <span class='varop'>$<</span> <span class='varid'>getAttrValue</span> <span class='str'>"name"</span><span class='layout'>)</span> <a name="line-235"></a> <span class='varop'>`when`</span>@@ -260,29 +260,29 @@ <a name="line-252"></a> <span class='keyglyph'>=</span> <span class='varid'>setBaseUri</span> <span class='varop'>&&&</span> <span class='varid'>constA</span> <span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>createAttr</span> <span class='varid'>env</span><span class='layout'>)</span> <span class='varop'>>>></span> <span class='varid'>arr2L</span> <span class='layout'>(</span><span class='conop'>:</span><span class='layout'>)</span> <a name="line-253"></a> <span class='keyword'>where</span> <a name="line-254"></a>-<a name="line-255"></a> <span class='varid'>createAttr</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>+<a name="line-255"></a> <span class='varid'>createAttr</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>XName</span><span class='layout'>,</span> <span class='conid'>XName</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <a name="line-256"></a> <span class='varid'>createAttr</span> <span class='layout'>(</span><span class='varid'>pre</span><span class='layout'>,</span> <span class='varid'>uri</span><span class='layout'>)</span>-<a name="line-257"></a> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkAttr</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>nm</span><span class='layout'>)</span> <span class='keyglyph'>[</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='varid'>uri</span><span class='keyglyph'>]</span>+<a name="line-257"></a> <span class='keyglyph'>=</span> <span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkAttr</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>nm</span><span class='layout'>)</span> <span class='keyglyph'>[</span><span class='conid'>XN</span><span class='varop'>.</span><span class='varid'>mkText</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varid'>uri</span><span class='layout'>)</span><span class='keyglyph'>]</span> <a name="line-258"></a> <span class='keyword'>where</span>-<a name="line-259"></a> <span class='varid'>nm</span> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>pre</span> <span class='keyglyph'>=</span> <span class='str'>"RelaxContextDefault"</span>-<a name="line-260"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>contextAttributes</span> <span class='varop'>++</span> <span class='varid'>pre</span>+<a name="line-259"></a> <span class='varid'>nm</span> <span class='keyglyph'>|</span> <span class='varid'>isNullXName</span> <span class='varid'>pre</span> <span class='keyglyph'>=</span> <span class='str'>"RelaxContextDefault"</span>+<a name="line-260"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>contextAttributes</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>pre</span> <a name="line-261"></a> <a name="line-262"></a> <span class='varid'>setBaseUri</span> <span class='keyglyph'>::</span> <span class='conid'>IOSArrow</span> <span class='conid'>String</span> <span class='conid'>XmlTree</span> <a name="line-263"></a> <span class='varid'>setBaseUri</span> <span class='keyglyph'>=</span> <span class='varid'>mkAttr</span> <span class='layout'>(</span><span class='varid'>mkName</span> <span class='varid'>contextBaseAttr</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>txt</span> <span class='varop'>$<</span> <span class='varid'>this</span><span class='layout'>)</span> <a name="line-264"></a>-<a name="line-265"></a> <span class='varid'>replaceQNames</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOSArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> +<a name="line-265"></a> <span class='varid'>replaceQNames</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>IOSArrow</span> <span class='conid'>XmlTree</span> <span class='conid'>XmlTree</span> <a name="line-266"></a> <span class='varid'>replaceQNames</span> <span class='varid'>e</span> <span class='varid'>name</span> <a name="line-267"></a> <span class='keyglyph'>|</span> <span class='varid'>isNothing</span> <span class='varid'>uri</span> <a name="line-268"></a> <span class='keyglyph'>=</span> <span class='varid'>mkRelaxError</span> <span class='str'>""</span> <span class='layout'>(</span> <span class='str'>"No Namespace-Mapping for the prefix "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>pre</span> <span class='varop'>++</span> <a name="line-269"></a> <span class='str'>" in the Context of Element: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <a name="line-270"></a> <span class='layout'>)</span> <a name="line-271"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-272"></a> <span class='keyglyph'>=</span> <span class='varid'>addAttr</span> <span class='str'>"name"</span> <span class='layout'>(</span> <span class='str'>"{"</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varid'>uri</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>"}"</span> <span class='varop'>++</span> <span class='varid'>local</span> <span class='layout'>)</span>+<a name="line-272"></a> <span class='keyglyph'>=</span> <span class='varid'>addAttr</span> <span class='str'>"name"</span> <span class='layout'>(</span> <span class='str'>"{"</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>uri</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>"}"</span> <span class='varop'>++</span> <span class='varid'>local</span> <span class='layout'>)</span> <a name="line-273"></a> <span class='keyword'>where</span> <a name="line-274"></a> <span class='layout'>(</span><span class='varid'>pre</span><span class='layout'>,</span> <span class='varid'>local'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>name</span> <a name="line-275"></a> <span class='varid'>local</span> <span class='keyglyph'>=</span> <span class='varid'>tail</span> <span class='varid'>local'</span>-<a name="line-276"></a> <span class='varid'>uri</span> <span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='conid'>String</span>-<a name="line-277"></a> <span class='varid'>uri</span> <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='varid'>pre</span> <span class='varid'>e</span>+<a name="line-276"></a> <span class='varid'>uri</span> <span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='conid'>XName</span>+<a name="line-277"></a> <span class='varid'>uri</span> <span class='keyglyph'>=</span> <span class='varid'>lookup</span> <span class='layout'>(</span><span class='varid'>newXName</span> <span class='varid'>pre</span><span class='layout'>)</span> <span class='varid'>e</span> <a name="line-278"></a> <a name="line-279"></a> <span class='comment'>-- The value of the added datatypeLibrary attribute is the value of the </span> <a name="line-280"></a> <span class='comment'>-- datatypeLibrary attribute of the nearest ancestor element that </span>
doc/hdoc/src/Text-XML-HXT-RelaxNG-XmlSchema-DataTypeLibW3C.html view
@@ -62,563 +62,559 @@ <a name="line-54"></a> <span class='layout'>)</span> <a name="line-55"></a><span class='keyword'>where</span> <a name="line-56"></a>-<a name="line-57"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>RelaxNG</span><span class='varop'>.</span><span class='conid'>DataTypeLibUtils</span> -<a name="line-58"></a>-<a name="line-59"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span>-<a name="line-60"></a> <span class='layout'>(</span> <span class='varid'>isURIReference</span> <span class='layout'>)</span>-<a name="line-61"></a>-<a name="line-62"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>NamespacePredicates</span>-<a name="line-63"></a> <span class='layout'>(</span> <span class='varid'>isWellformedQualifiedName</span>-<a name="line-64"></a> <span class='layout'>,</span> <span class='varid'>isNCName</span>-<a name="line-65"></a> <span class='layout'>)</span>-<a name="line-66"></a>-<a name="line-67"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>RelaxNG</span><span class='varop'>.</span><span class='conid'>XmlSchema</span><span class='varop'>.</span><span class='conid'>Regex</span>-<a name="line-68"></a> <span class='layout'>(</span> <span class='conid'>Regex</span>-<a name="line-69"></a> <span class='layout'>,</span> <span class='varid'>matchWithRE</span>-<a name="line-70"></a> <span class='layout'>)</span>-<a name="line-71"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>RelaxNG</span><span class='varop'>.</span><span class='conid'>XmlSchema</span><span class='varop'>.</span><span class='conid'>RegexParser</span>-<a name="line-72"></a> <span class='layout'>(</span> <span class='varid'>parseRegex</span> <span class='layout'>)</span>-<a name="line-73"></a>-<a name="line-74"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-75"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Ratio</span>-<a name="line-76"></a> -<a name="line-77"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-78"></a>-<a name="line-79"></a><span class='comment'>-- | Namespace of the W3C XML schema datatype library</span>-<a name="line-80"></a>-<a name="line-81"></a><a name="w3cNS"></a><span class='definition'>w3cNS</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-82"></a><span class='definition'>w3cNS</span> <span class='keyglyph'>=</span> <span class='str'>"http://www.w3.org/2001/XMLSchema-datatypes"</span>-<a name="line-83"></a>-<a name="line-84"></a>-<a name="line-85"></a><a name="xsd_string"></a><span class='definition'>xsd_string</span>-<a name="line-86"></a> <span class='layout'>,</span> <span class='varid'>xsd_normalizedString</span>-<a name="line-87"></a> <span class='layout'>,</span> <span class='varid'>xsd_token</span>-<a name="line-88"></a> <span class='layout'>,</span> <span class='varid'>xsd_language</span>-<a name="line-89"></a> <span class='layout'>,</span> <span class='varid'>xsd_NMTOKEN</span>-<a name="line-90"></a> <span class='layout'>,</span> <span class='varid'>xsd_NMTOKENS</span>-<a name="line-91"></a> <span class='layout'>,</span> <span class='varid'>xsd_Name</span>-<a name="line-92"></a> <span class='layout'>,</span> <span class='varid'>xsd_NCName</span>-<a name="line-93"></a> <span class='layout'>,</span> <span class='varid'>xsd_ID</span>-<a name="line-94"></a> <span class='layout'>,</span> <span class='varid'>xsd_IDREF</span>-<a name="line-95"></a> <span class='layout'>,</span> <span class='varid'>xsd_IDREFS</span>-<a name="line-96"></a> <span class='layout'>,</span> <span class='varid'>xsd_ENTITY</span>-<a name="line-97"></a> <span class='layout'>,</span> <span class='varid'>xsd_ENTITIES</span>-<a name="line-98"></a> <span class='layout'>,</span> <span class='varid'>xsd_anyURI</span>-<a name="line-99"></a> <span class='layout'>,</span> <span class='varid'>xsd_QName</span>-<a name="line-100"></a> <span class='layout'>,</span> <span class='varid'>xsd_NOTATION</span>-<a name="line-101"></a> <span class='layout'>,</span> <span class='varid'>xsd_hexBinary</span>-<a name="line-102"></a> <span class='layout'>,</span> <span class='varid'>xsd_base64Binary</span>-<a name="line-103"></a> <span class='layout'>,</span> <span class='varid'>xsd_decimal</span>-<a name="line-104"></a> <span class='layout'>,</span> <span class='varid'>xsd_integer</span>-<a name="line-105"></a> <span class='layout'>,</span> <span class='varid'>xsd_nonPositiveInteger</span>-<a name="line-106"></a> <span class='layout'>,</span> <span class='varid'>xsd_negativeInteger</span>-<a name="line-107"></a> <span class='layout'>,</span> <span class='varid'>xsd_nonNegativeInteger</span>-<a name="line-108"></a> <span class='layout'>,</span> <span class='varid'>xsd_positiveInteger</span>-<a name="line-109"></a> <span class='layout'>,</span> <span class='varid'>xsd_long</span>-<a name="line-110"></a> <span class='layout'>,</span> <span class='varid'>xsd_int</span>-<a name="line-111"></a> <span class='layout'>,</span> <span class='varid'>xsd_short</span>-<a name="line-112"></a> <span class='layout'>,</span> <span class='varid'>xsd_byte</span>-<a name="line-113"></a> <span class='layout'>,</span> <span class='varid'>xsd_unsignedLong</span>-<a name="line-114"></a> <span class='layout'>,</span> <span class='varid'>xsd_unsignedInt</span>-<a name="line-115"></a> <span class='layout'>,</span> <span class='varid'>xsd_unsignedShort</span>-<a name="line-116"></a> <span class='layout'>,</span> <span class='varid'>xsd_unsignedByte</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-117"></a>-<a name="line-118"></a><span class='definition'>xsd_string</span> <span class='keyglyph'>=</span> <span class='str'>"string"</span>-<a name="line-119"></a><a name="xsd_normalizedString"></a><span class='definition'>xsd_normalizedString</span> <span class='keyglyph'>=</span> <span class='str'>"normalizedString"</span>-<a name="line-120"></a><a name="xsd_token"></a><span class='definition'>xsd_token</span> <span class='keyglyph'>=</span> <span class='str'>"token"</span>-<a name="line-121"></a><a name="xsd_language"></a><span class='definition'>xsd_language</span> <span class='keyglyph'>=</span> <span class='str'>"language"</span>-<a name="line-122"></a><a name="xsd_NMTOKEN"></a><span class='definition'>xsd_NMTOKEN</span> <span class='keyglyph'>=</span> <span class='str'>"NMTOKEN"</span>-<a name="line-123"></a><a name="xsd_NMTOKENS"></a><span class='definition'>xsd_NMTOKENS</span> <span class='keyglyph'>=</span> <span class='str'>"NMTOKENS"</span>-<a name="line-124"></a><a name="xsd_Name"></a><span class='definition'>xsd_Name</span> <span class='keyglyph'>=</span> <span class='str'>"Name"</span>-<a name="line-125"></a><a name="xsd_NCName"></a><span class='definition'>xsd_NCName</span> <span class='keyglyph'>=</span> <span class='str'>"NCName"</span>-<a name="line-126"></a><a name="xsd_ID"></a><span class='definition'>xsd_ID</span> <span class='keyglyph'>=</span> <span class='str'>"ID"</span>-<a name="line-127"></a><a name="xsd_IDREF"></a><span class='definition'>xsd_IDREF</span> <span class='keyglyph'>=</span> <span class='str'>"IDREF"</span>-<a name="line-128"></a><a name="xsd_IDREFS"></a><span class='definition'>xsd_IDREFS</span> <span class='keyglyph'>=</span> <span class='str'>"IDREFS"</span>-<a name="line-129"></a><a name="xsd_ENTITY"></a><span class='definition'>xsd_ENTITY</span> <span class='keyglyph'>=</span> <span class='str'>"ENTITY"</span>-<a name="line-130"></a><a name="xsd_ENTITIES"></a><span class='definition'>xsd_ENTITIES</span> <span class='keyglyph'>=</span> <span class='str'>"ENTITIES"</span>-<a name="line-131"></a><a name="xsd_anyURI"></a><span class='definition'>xsd_anyURI</span> <span class='keyglyph'>=</span> <span class='str'>"anyURI"</span>-<a name="line-132"></a><a name="xsd_QName"></a><span class='definition'>xsd_QName</span> <span class='keyglyph'>=</span> <span class='str'>"QName"</span>-<a name="line-133"></a><a name="xsd_NOTATION"></a><span class='definition'>xsd_NOTATION</span> <span class='keyglyph'>=</span> <span class='str'>"NOTATION"</span>-<a name="line-134"></a><a name="xsd_hexBinary"></a><span class='definition'>xsd_hexBinary</span> <span class='keyglyph'>=</span> <span class='str'>"hexBinary"</span>-<a name="line-135"></a><a name="xsd_base64Binary"></a><span class='definition'>xsd_base64Binary</span> <span class='keyglyph'>=</span> <span class='str'>"base64Binary"</span>-<a name="line-136"></a><a name="xsd_decimal"></a><span class='definition'>xsd_decimal</span> <span class='keyglyph'>=</span> <span class='str'>"decimal"</span>-<a name="line-137"></a><a name="xsd_integer"></a><span class='definition'>xsd_integer</span> <span class='keyglyph'>=</span> <span class='str'>"integer"</span>-<a name="line-138"></a><a name="xsd_nonPositiveInteger"></a><span class='definition'>xsd_nonPositiveInteger</span> <span class='keyglyph'>=</span> <span class='str'>"nonPositiveInteger"</span>-<a name="line-139"></a><a name="xsd_negativeInteger"></a><span class='definition'>xsd_negativeInteger</span> <span class='keyglyph'>=</span> <span class='str'>"negativeInteger"</span>-<a name="line-140"></a><a name="xsd_nonNegativeInteger"></a><span class='definition'>xsd_nonNegativeInteger</span> <span class='keyglyph'>=</span> <span class='str'>"nonNegativeInteger"</span>-<a name="line-141"></a><a name="xsd_positiveInteger"></a><span class='definition'>xsd_positiveInteger</span> <span class='keyglyph'>=</span> <span class='str'>"positiveInteger"</span>-<a name="line-142"></a><a name="xsd_long"></a><span class='definition'>xsd_long</span> <span class='keyglyph'>=</span> <span class='str'>"long"</span>-<a name="line-143"></a><a name="xsd_int"></a><span class='definition'>xsd_int</span> <span class='keyglyph'>=</span> <span class='str'>"int"</span>-<a name="line-144"></a><a name="xsd_short"></a><span class='definition'>xsd_short</span> <span class='keyglyph'>=</span> <span class='str'>"short"</span>-<a name="line-145"></a><a name="xsd_byte"></a><span class='definition'>xsd_byte</span> <span class='keyglyph'>=</span> <span class='str'>"byte"</span>-<a name="line-146"></a><a name="xsd_unsignedLong"></a><span class='definition'>xsd_unsignedLong</span> <span class='keyglyph'>=</span> <span class='str'>"unsignedLong"</span>-<a name="line-147"></a><a name="xsd_unsignedInt"></a><span class='definition'>xsd_unsignedInt</span> <span class='keyglyph'>=</span> <span class='str'>"unsignedInt"</span>-<a name="line-148"></a><a name="xsd_unsignedShort"></a><span class='definition'>xsd_unsignedShort</span> <span class='keyglyph'>=</span> <span class='str'>"unsignedShort"</span>-<a name="line-149"></a><a name="xsd_unsignedByte"></a><span class='definition'>xsd_unsignedByte</span> <span class='keyglyph'>=</span> <span class='str'>"unsignedByte"</span>-<a name="line-150"></a>-<a name="line-151"></a>-<a name="line-152"></a><a name="xsd_length"></a><span class='definition'>xsd_length</span>-<a name="line-153"></a> <span class='layout'>,</span> <span class='varid'>xsd_maxLength</span>-<a name="line-154"></a> <span class='layout'>,</span> <span class='varid'>xsd_minLength</span>-<a name="line-155"></a> <span class='layout'>,</span> <span class='varid'>xsd_maxExclusive</span>-<a name="line-156"></a> <span class='layout'>,</span> <span class='varid'>xsd_minExclusive</span>-<a name="line-157"></a> <span class='layout'>,</span> <span class='varid'>xsd_maxInclusive</span>-<a name="line-158"></a> <span class='layout'>,</span> <span class='varid'>xsd_minInclusive</span>-<a name="line-159"></a> <span class='layout'>,</span> <span class='varid'>xsd_totalDigits</span>-<a name="line-160"></a> <span class='layout'>,</span> <span class='varid'>xsd_fractionDigits</span>-<a name="line-161"></a> <span class='layout'>,</span> <span class='varid'>xsd_pattern</span>-<a name="line-162"></a> <span class='layout'>,</span> <span class='varid'>xsd_enumeration</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-163"></a>-<a name="line-164"></a><span class='definition'>xsd_length</span> <span class='keyglyph'>=</span> <span class='varid'>rng_length</span>-<a name="line-165"></a><a name="xsd_maxLength"></a><span class='definition'>xsd_maxLength</span> <span class='keyglyph'>=</span> <span class='varid'>rng_maxLength</span>-<a name="line-166"></a><a name="xsd_minLength"></a><span class='definition'>xsd_minLength</span> <span class='keyglyph'>=</span> <span class='varid'>rng_minLength</span>-<a name="line-167"></a>-<a name="line-168"></a><a name="xsd_maxExclusive"></a><span class='definition'>xsd_maxExclusive</span> <span class='keyglyph'>=</span> <span class='varid'>rng_maxExclusive</span>-<a name="line-169"></a><a name="xsd_minExclusive"></a><span class='definition'>xsd_minExclusive</span> <span class='keyglyph'>=</span> <span class='varid'>rng_minExclusive</span>-<a name="line-170"></a><a name="xsd_maxInclusive"></a><span class='definition'>xsd_maxInclusive</span> <span class='keyglyph'>=</span> <span class='varid'>rng_maxInclusive</span>-<a name="line-171"></a><a name="xsd_minInclusive"></a><span class='definition'>xsd_minInclusive</span> <span class='keyglyph'>=</span> <span class='varid'>rng_minInclusive</span>-<a name="line-172"></a>-<a name="line-173"></a><a name="xsd_totalDigits"></a><span class='definition'>xsd_totalDigits</span> <span class='keyglyph'>=</span> <span class='str'>"totalDigits"</span>-<a name="line-174"></a><a name="xsd_fractionDigits"></a><span class='definition'>xsd_fractionDigits</span> <span class='keyglyph'>=</span> <span class='str'>"fractionDigits"</span>-<a name="line-175"></a>-<a name="line-176"></a><a name="xsd_pattern"></a><span class='definition'>xsd_pattern</span> <span class='keyglyph'>=</span> <span class='str'>"pattern"</span>-<a name="line-177"></a><a name="xsd_enumeration"></a><span class='definition'>xsd_enumeration</span> <span class='keyglyph'>=</span> <span class='str'>"enumeration"</span>-<a name="line-178"></a>-<a name="line-179"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-180"></a>-<a name="line-181"></a><a name="w3cDatatypeLib"></a><span class='comment'>-- | The main entry point to the W3C XML schema datatype library.</span>-<a name="line-182"></a><span class='comment'>--</span>-<a name="line-183"></a><span class='comment'>-- The 'DTC' constructor exports the list of supported datatypes and params.</span>-<a name="line-184"></a><span class='comment'>-- It also exports the specialized functions to validate a XML instance value with</span>-<a name="line-185"></a><span class='comment'>-- respect to a datatype.</span>-<a name="line-186"></a><span class='definition'>w3cDatatypeLib</span> <span class='keyglyph'>::</span> <span class='conid'>DatatypeLibrary</span>-<a name="line-187"></a><span class='definition'>w3cDatatypeLib</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>w3cNS</span><span class='layout'>,</span> <span class='conid'>DTC</span> <span class='varid'>datatypeAllowsW3C</span> <span class='varid'>datatypeEqualW3C</span> <span class='varid'>w3cDatatypes</span><span class='layout'>)</span>-<a name="line-188"></a>-<a name="line-189"></a>-<a name="line-190"></a><a name="w3cDatatypes"></a><span class='comment'>-- | All supported datatypes of the library</span>-<a name="line-191"></a><span class='definition'>w3cDatatypes</span> <span class='keyglyph'>::</span> <span class='conid'>AllowedDatatypes</span>-<a name="line-192"></a><span class='definition'>w3cDatatypes</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_string</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-193"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_normalizedString</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-194"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_token</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-195"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_language</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-196"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKEN</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-197"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKENS</span><span class='layout'>,</span> <span class='varid'>listParams</span> <span class='layout'>)</span>-<a name="line-198"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_Name</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-199"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NCName</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-200"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ID</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-201"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREF</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-202"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREFS</span><span class='layout'>,</span> <span class='varid'>listParams</span> <span class='layout'>)</span>-<a name="line-203"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITY</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-204"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITIES</span><span class='layout'>,</span> <span class='varid'>listParams</span> <span class='layout'>)</span>-<a name="line-205"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_anyURI</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-206"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_QName</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-207"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NOTATION</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-208"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_hexBinary</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-209"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_base64Binary</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>-<a name="line-210"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_decimal</span><span class='layout'>,</span> <span class='varid'>decimalParams</span><span class='layout'>)</span>-<a name="line-211"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_integer</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-212"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonPositiveInteger</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-213"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_negativeInteger</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-214"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonNegativeInteger</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-215"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_positiveInteger</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-216"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_long</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-217"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_int</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-218"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_short</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-219"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_byte</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-220"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedLong</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-221"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedInt</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-222"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedShort</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-223"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedByte</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>-<a name="line-224"></a> <span class='keyglyph'>]</span>-<a name="line-225"></a>-<a name="line-226"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-227"></a>-<a name="line-228"></a><a name="stringParams"></a><span class='comment'>-- | List of allowed params for the string datatypes</span>-<a name="line-229"></a><span class='definition'>stringParams</span> <span class='keyglyph'>::</span> <span class='conid'>AllowedParams</span>-<a name="line-230"></a><span class='definition'>stringParams</span> <span class='keyglyph'>=</span> <span class='varid'>xsd_pattern</span> <span class='conop'>:</span> <span class='varid'>map</span> <span class='varid'>fst</span> <span class='varid'>fctTableString</span>-<a name="line-231"></a>-<a name="line-232"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-233"></a>-<a name="line-234"></a><a name="patternValid"></a><span class='definition'>patternValid</span> <span class='keyglyph'>::</span> <span class='conid'>ParamList</span> <span class='keyglyph'>-></span> <span class='conid'>CheckString</span>-<a name="line-235"></a><span class='definition'>patternValid</span> <span class='varid'>params</span>-<a name="line-236"></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'>ok</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>paramPatternValid</span> <span class='varop'>$</span> <span class='varid'>params</span>-<a name="line-237"></a> <span class='keyword'>where</span>-<a name="line-238"></a> <span class='varid'>paramPatternValid</span> <span class='layout'>(</span><span class='varid'>pn</span><span class='layout'>,</span> <span class='varid'>pv</span><span class='layout'>)</span>-<a name="line-239"></a> <span class='keyglyph'>|</span> <span class='varid'>pn</span> <span class='varop'>==</span> <span class='varid'>xsd_pattern</span> <span class='keyglyph'>=</span> <span class='varid'>assert</span> <span class='layout'>(</span><span class='varid'>patParamValid</span> <span class='varid'>pv</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>errorMsgParam</span> <span class='varid'>pn</span> <span class='varid'>pv</span><span class='layout'>)</span>-<a name="line-240"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>ok</span>-<a name="line-241"></a>-<a name="line-242"></a><a name="patParamValid"></a><span class='definition'>patParamValid</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'>Bool</span>-<a name="line-243"></a><span class='definition'>patParamValid</span> <span class='varid'>regex</span> <span class='varid'>a</span>-<a name="line-244"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>parseRegex</span> <span class='varid'>regex</span> <span class='keyword'>of</span>-<a name="line-245"></a> <span class='layout'>(</span><span class='conid'>Left</span> <span class='keyword'>_</span> <span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>False</span>-<a name="line-246"></a> <span class='layout'>(</span><span class='conid'>Right</span> <span class='varid'>ex</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>isNothing</span> <span class='varop'>.</span> <span class='varid'>matchWithRE</span> <span class='varid'>ex</span> <span class='varop'>$</span> <span class='varid'>a</span>-<a name="line-247"></a>-<a name="line-248"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-249"></a>-<a name="line-250"></a><span class='comment'>-- | List of allowed params for the decimal datatypes</span>-<a name="line-251"></a>-<a name="line-252"></a><a name="decimalParams"></a><span class='definition'>decimalParams</span> <span class='keyglyph'>::</span> <span class='conid'>AllowedParams</span>-<a name="line-253"></a><span class='definition'>decimalParams</span> <span class='keyglyph'>=</span> <span class='varid'>xsd_pattern</span> <span class='conop'>:</span> <span class='varid'>map</span> <span class='varid'>fst</span> <span class='varid'>fctTableDecimal</span>-<a name="line-254"></a>-<a name="line-255"></a><a name="fctTableDecimal"></a><span class='definition'>fctTableDecimal</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-256"></a><span class='definition'>fctTableDecimal</span>-<a name="line-257"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_maxExclusive</span><span class='layout'>,</span> <span class='varid'>cvd</span> <span class='layout'>(</span><span class='varop'>></span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-258"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_minExclusive</span><span class='layout'>,</span> <span class='varid'>cvd</span> <span class='layout'>(</span><span class='varop'><</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-259"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_maxInclusive</span><span class='layout'>,</span> <span class='varid'>cvd</span> <span class='layout'>(</span><span class='varop'>>=</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-260"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_minInclusive</span><span class='layout'>,</span> <span class='varid'>cvd</span> <span class='layout'>(</span><span class='varop'><=</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-261"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_totalDigits</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>l</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='varid'>totalDigits</span> <span class='varid'>v</span> <span class='varop'>==</span> <span class='varid'>l</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-262"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_fractionDigits</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>l</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='varid'>fractionDigits</span> <span class='varid'>v</span> <span class='varop'>==</span> <span class='varid'>l</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-263"></a> <span class='keyglyph'>]</span>-<a name="line-264"></a> <span class='keyword'>where</span>-<a name="line-265"></a> <span class='varid'>cvd</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>-<a name="line-266"></a> <span class='varid'>cvd</span> <span class='varid'>op</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>-></span> <span class='varid'>isDecimal</span> <span class='varid'>x</span> <span class='varop'>&&</span> <span class='varid'>readDecimal</span> <span class='varid'>x</span> <span class='varop'>`op`</span> <span class='varid'>y</span>-<a name="line-267"></a>-<a name="line-268"></a> <span class='varid'>cvi</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>-<a name="line-269"></a> <span class='varid'>cvi</span> <span class='varid'>op</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>-></span> <span class='varid'>isNumber</span> <span class='varid'>x</span> <span class='varop'>&&</span> <span class='varid'>read</span> <span class='varid'>x</span> <span class='varop'>`op`</span> <span class='varid'>y</span>-<a name="line-270"></a>-<a name="line-271"></a><a name="decimalValid"></a><span class='definition'>decimalValid</span> <span class='keyglyph'>::</span> <span class='conid'>ParamList</span> <span class='keyglyph'>-></span> <span class='conid'>CheckA</span> <span class='conid'>Rational</span> <span class='conid'>Rational</span>-<a name="line-272"></a><span class='definition'>decimalValid</span> <span class='varid'>params</span>-<a name="line-273"></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'>ok</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>paramDecimalValid</span> <span class='varop'>$</span> <span class='varid'>params</span>-<a name="line-274"></a> <span class='keyword'>where</span>-<a name="line-275"></a> <span class='varid'>paramDecimalValid</span> <span class='layout'>(</span><span class='varid'>pn</span><span class='layout'>,</span> <span class='varid'>pv</span><span class='layout'>)</span>-<a name="line-276"></a> <span class='keyglyph'>=</span> <span class='varid'>assert</span>-<a name="line-277"></a> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>.</span> <span class='varid'>const</span> <span class='varop'>$</span> <span class='conid'>True</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>pn</span> <span class='varop'>$</span> <span class='varid'>fctTableDecimal</span><span class='layout'>)</span> <span class='varid'>pv</span><span class='layout'>)</span>-<a name="line-278"></a> <span class='layout'>(</span><span class='varid'>errorMsgParam</span> <span class='varid'>pn</span> <span class='varid'>pv</span> <span class='varop'>.</span> <span class='varid'>showDecimal</span><span class='layout'>)</span>-<a name="line-279"></a>-<a name="line-280"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-281"></a>-<a name="line-282"></a><span class='comment'>-- | List of allowed params for the decimal and integer datatypes</span>-<a name="line-283"></a>-<a name="line-284"></a><a name="integerParams"></a><span class='definition'>integerParams</span> <span class='keyglyph'>::</span> <span class='conid'>AllowedParams</span>-<a name="line-285"></a><span class='definition'>integerParams</span> <span class='keyglyph'>=</span> <span class='varid'>xsd_pattern</span> <span class='conop'>:</span> <span class='varid'>map</span> <span class='varid'>fst</span> <span class='varid'>fctTableInteger</span>-<a name="line-286"></a>-<a name="line-287"></a><a name="fctTableInteger"></a><span class='definition'>fctTableInteger</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Integer</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-288"></a><span class='definition'>fctTableInteger</span>-<a name="line-289"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_maxExclusive</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='varop'>></span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-290"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_minExclusive</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='varop'><</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-291"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_maxInclusive</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='varop'>>=</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-292"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_minInclusive</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='varop'><=</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-293"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_totalDigits</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>l</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='varid'>totalD</span> <span class='varid'>v</span> <span class='varop'>==</span> <span class='varid'>toInteger</span> <span class='varid'>l</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-294"></a> <span class='keyglyph'>]</span>-<a name="line-295"></a> <span class='keyword'>where</span>-<a name="line-296"></a> <span class='varid'>cvi</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Integer</span> <span class='keyglyph'>-></span> <span class='conid'>Integer</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Integer</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>-<a name="line-297"></a> <span class='varid'>cvi</span> <span class='varid'>op</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>-></span> <span class='varid'>isNumber</span> <span class='varid'>x</span> <span class='varop'>&&</span> <span class='varid'>read</span> <span class='varid'>x</span> <span class='varop'>`op`</span> <span class='varid'>y</span>-<a name="line-298"></a>-<a name="line-299"></a> <span class='varid'>totalD</span> <span class='varid'>i</span>-<a name="line-300"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'><</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='varid'>totalD</span> <span class='layout'>(</span><span class='num'>0</span><span class='comment'>-</span><span class='varid'>i</span><span class='layout'>)</span>-<a name="line-301"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>toInteger</span> <span class='varop'>.</span> <span class='varid'>length</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>$</span> <span class='varid'>i</span>-<a name="line-302"></a>-<a name="line-303"></a><a name="integerValid"></a><span class='definition'>integerValid</span> <span class='keyglyph'>::</span> <span class='conid'>DatatypeName</span> <span class='keyglyph'>-></span> <span class='conid'>ParamList</span> <span class='keyglyph'>-></span> <span class='conid'>CheckA</span> <span class='conid'>Integer</span> <span class='conid'>Integer</span>-<a name="line-304"></a><span class='definition'>integerValid</span> <span class='varid'>datatype</span> <span class='varid'>params</span> -<a name="line-305"></a> <span class='keyglyph'>=</span> <span class='varid'>assertInRange</span>-<a name="line-306"></a> <span class='varop'>>>></span>-<a name="line-307"></a> <span class='layout'>(</span><span class='varid'>foldr</span> <span class='layout'>(</span><span class='varop'>>>></span><span class='layout'>)</span> <span class='varid'>ok</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>paramIntegerValid</span> <span class='varop'>$</span> <span class='varid'>params</span><span class='layout'>)</span>-<a name="line-308"></a> <span class='keyword'>where</span>-<a name="line-309"></a> <span class='varid'>assertInRange</span> <span class='keyglyph'>::</span> <span class='conid'>CheckA</span> <span class='conid'>Integer</span> <span class='conid'>Integer</span>-<a name="line-310"></a> <span class='varid'>assertInRange</span>-<a name="line-311"></a> <span class='keyglyph'>=</span> <span class='varid'>assert</span>-<a name="line-312"></a> <span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>True</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>datatype</span> <span class='varop'>$</span> <span class='varid'>integerRangeTable</span><span class='layout'>)</span>-<a name="line-313"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='str'>"Datatype "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>datatype</span> <span class='varop'>++</span>-<a name="line-314"></a> <span class='str'>" with value = "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>v</span> <span class='varop'>++</span>-<a name="line-315"></a> <span class='str'>" not in integer value range"</span>-<a name="line-316"></a> <span class='layout'>)</span>-<a name="line-317"></a> <span class='layout'>)</span>-<a name="line-318"></a> <span class='varid'>paramIntegerValid</span> <span class='layout'>(</span><span class='varid'>pn</span><span class='layout'>,</span> <span class='varid'>pv</span><span class='layout'>)</span>-<a name="line-319"></a> <span class='keyglyph'>=</span> <span class='varid'>assert</span>-<a name="line-320"></a> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>.</span> <span class='varid'>const</span> <span class='varop'>$</span> <span class='conid'>True</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>pn</span> <span class='varop'>$</span> <span class='varid'>fctTableInteger</span><span class='layout'>)</span> <span class='varid'>pv</span><span class='layout'>)</span>-<a name="line-321"></a> <span class='layout'>(</span><span class='varid'>errorMsgParam</span> <span class='varid'>pn</span> <span class='varid'>pv</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>-<a name="line-322"></a>-<a name="line-323"></a><a name="integerRangeTable"></a><span class='definition'>integerRangeTable</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'>Integer</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-324"></a><span class='definition'>integerRangeTable</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_integer</span><span class='layout'>,</span> <span class='varid'>const</span> <span class='conid'>True</span><span class='layout'>)</span>-<a name="line-325"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonPositiveInteger</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varop'><=</span><span class='num'>0</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-326"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_negativeInteger</span><span class='layout'>,</span> <span class='layout'>(</span> <span class='varop'><</span><span class='num'>0</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-327"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonNegativeInteger</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>>=</span><span class='num'>0</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-328"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_positiveInteger</span><span class='layout'>,</span> <span class='layout'>(</span> <span class='varop'>></span><span class='num'>0</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-329"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_long</span><span class='layout'>,</span> <span class='varid'>inR</span> <span class='num'>9223372036854775808</span><span class='layout'>)</span>-<a name="line-330"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_int</span><span class='layout'>,</span> <span class='varid'>inR</span> <span class='num'>2147483648</span><span class='layout'>)</span>-<a name="line-331"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_short</span><span class='layout'>,</span> <span class='varid'>inR</span> <span class='num'>32768</span><span class='layout'>)</span>-<a name="line-332"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_byte</span><span class='layout'>,</span> <span class='varid'>inR</span> <span class='num'>128</span><span class='layout'>)</span>-<a name="line-333"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedLong</span><span class='layout'>,</span> <span class='varid'>inP</span> <span class='num'>18446744073709551616</span><span class='layout'>)</span>-<a name="line-334"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedInt</span><span class='layout'>,</span> <span class='varid'>inP</span> <span class='num'>4294967296</span><span class='layout'>)</span>-<a name="line-335"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedShort</span><span class='layout'>,</span> <span class='varid'>inP</span> <span class='num'>65536</span><span class='layout'>)</span>-<a name="line-336"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedByte</span><span class='layout'>,</span> <span class='varid'>inP</span> <span class='num'>256</span><span class='layout'>)</span>-<a name="line-337"></a> <span class='keyglyph'>]</span>-<a name="line-338"></a> <span class='keyword'>where</span>-<a name="line-339"></a> <span class='varid'>inR</span> <span class='varid'>b</span> <span class='varid'>i</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='num'>0</span> <span class='comment'>-</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='varop'><=</span> <span class='varid'>i</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><</span> <span class='varid'>b</span>-<a name="line-340"></a> <span class='varid'>inP</span> <span class='varid'>b</span> <span class='varid'>i</span> <span class='keyglyph'>=</span> <span class='num'>0</span> <span class='varop'><=</span> <span class='varid'>i</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><</span> <span class='varid'>b</span>-<a name="line-341"></a>-<a name="line-342"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-343"></a>-<a name="line-344"></a><span class='comment'>-- | List of allowed params for the list datatypes</span>-<a name="line-345"></a>-<a name="line-346"></a><a name="listParams"></a><span class='definition'>listParams</span> <span class='keyglyph'>::</span> <span class='conid'>AllowedParams</span>-<a name="line-347"></a><span class='definition'>listParams</span> <span class='keyglyph'>=</span> <span class='varid'>xsd_pattern</span> <span class='conop'>:</span> <span class='varid'>map</span> <span class='varid'>fst</span> <span class='varid'>fctTableList</span>-<a name="line-348"></a>-<a name="line-349"></a><a name="listValid"></a><span class='definition'>listValid</span> <span class='keyglyph'>::</span> <span class='conid'>DatatypeName</span> <span class='keyglyph'>-></span> <span class='conid'>ParamList</span> <span class='keyglyph'>-></span> <span class='conid'>CheckString</span>-<a name="line-350"></a><span class='definition'>listValid</span> <span class='varid'>d</span> <span class='keyglyph'>=</span> <span class='varid'>stringValidFT</span> <span class='varid'>fctTableList</span> <span class='varid'>d</span> <span class='num'>0</span> <span class='layout'>(</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span>-<a name="line-351"></a>-<a name="line-352"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-353"></a>-<a name="line-354"></a><a name="isNameList"></a><span class='definition'>isNameList</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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-355"></a><span class='definition'>isNameList</span> <span class='varid'>p</span> <span class='varid'>w</span>-<a name="line-356"></a> <span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ts</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>all</span> <span class='varid'>p</span> <span class='varid'>ts</span>-<a name="line-357"></a> <span class='keyword'>where</span>-<a name="line-358"></a> <span class='varid'>ts</span> <span class='keyglyph'>=</span> <span class='varid'>words</span> <span class='varid'>w</span>-<a name="line-359"></a>-<a name="line-360"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-361"></a>-<a name="line-362"></a><a name="rex"></a><span class='definition'>rex</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-363"></a><span class='definition'>rex</span> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='varid'>undefined</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>parseRegex</span>-<a name="line-364"></a>-<a name="line-365"></a><a name="isRex"></a><span class='definition'>isRex</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-366"></a><span class='definition'>isRex</span> <span class='varid'>ex</span> <span class='keyglyph'>=</span> <span class='varid'>isNothing</span> <span class='varop'>.</span> <span class='varid'>matchWithRE</span> <span class='varid'>ex</span>-<a name="line-367"></a>-<a name="line-368"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-369"></a>-<a name="line-370"></a><a name="rexLanguage"></a><span class='definition'>rexLanguage</span>-<a name="line-371"></a> <span class='layout'>,</span> <span class='varid'>rexHexBinary</span>-<a name="line-372"></a> <span class='layout'>,</span> <span class='varid'>rexBase64Binary</span>-<a name="line-373"></a> <span class='layout'>,</span> <span class='varid'>rexDecimal</span>-<a name="line-374"></a> <span class='layout'>,</span> <span class='varid'>rexInteger</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span>-<a name="line-375"></a>-<a name="line-376"></a><span class='definition'>rexLanguage</span> <span class='keyglyph'>=</span> <span class='varid'>rex</span> <span class='str'>"[A-Za-z]{1,8}(-[A-Za-z]{1,8})*"</span>-<a name="line-377"></a><a name="rexHexBinary"></a><span class='definition'>rexHexBinary</span> <span class='keyglyph'>=</span> <span class='varid'>rex</span> <span class='str'>"([A-Fa-f0-9]{2})*"</span>-<a name="line-378"></a><a name="rexBase64Binary"></a><span class='definition'>rexBase64Binary</span> <span class='keyglyph'>=</span> <span class='varid'>rex</span> <span class='varop'>$</span>-<a name="line-379"></a> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>b64</span> <span class='varop'>++</span> <span class='str'>"{4})*(("</span> <span class='varop'>++</span> <span class='varid'>b64</span> <span class='varop'>++</span> <span class='str'>"{2}==)|("</span> <span class='varop'>++</span> <span class='varid'>b64</span> <span class='varop'>++</span> <span class='str'>"{3}=)|)"</span>-<a name="line-380"></a> <span class='keyword'>where</span>-<a name="line-381"></a> <span class='varid'>b64</span> <span class='keyglyph'>=</span> <span class='str'>"[A-Za-z0-9+/]"</span>-<a name="line-382"></a><a name="rexDecimal"></a><span class='definition'>rexDecimal</span> <span class='keyglyph'>=</span> <span class='varid'>rex</span> <span class='str'>"(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))"</span>-<a name="line-383"></a><a name="rexInteger"></a><span class='definition'>rexInteger</span> <span class='keyglyph'>=</span> <span class='varid'>rex</span> <span class='str'>"(\\+|-)?[0-9]+"</span>-<a name="line-384"></a>-<a name="line-385"></a><a name="isLanguage"></a><span class='definition'>isLanguage</span>-<a name="line-386"></a> <span class='layout'>,</span> <span class='varid'>isHexBinary</span>-<a name="line-387"></a> <span class='layout'>,</span> <span class='varid'>isBase64Binary</span>-<a name="line-388"></a> <span class='layout'>,</span> <span class='varid'>isDecimal</span>-<a name="line-389"></a> <span class='layout'>,</span> <span class='varid'>isInteger</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-390"></a>-<a name="line-391"></a><span class='definition'>isLanguage</span> <span class='keyglyph'>=</span> <span class='varid'>isRex</span> <span class='varid'>rexLanguage</span>-<a name="line-392"></a><a name="isHexBinary"></a><span class='definition'>isHexBinary</span> <span class='keyglyph'>=</span> <span class='varid'>isRex</span> <span class='varid'>rexHexBinary</span>-<a name="line-393"></a><a name="isBase64Binary"></a><span class='definition'>isBase64Binary</span> <span class='keyglyph'>=</span> <span class='varid'>isRex</span> <span class='varid'>rexBase64Binary</span>-<a name="line-394"></a><a name="isDecimal"></a><span class='definition'>isDecimal</span> <span class='keyglyph'>=</span> <span class='varid'>isRex</span> <span class='varid'>rexDecimal</span>-<a name="line-395"></a><a name="isInteger"></a><span class='definition'>isInteger</span> <span class='keyglyph'>=</span> <span class='varid'>isRex</span> <span class='varid'>rexInteger</span>-<a name="line-396"></a>-<a name="line-397"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-398"></a>-<a name="line-399"></a><a name="normBase64"></a><span class='definition'>normBase64</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-400"></a><span class='definition'>normBase64</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='varid'>isB64</span>-<a name="line-401"></a> <span class='keyword'>where</span>-<a name="line-402"></a> <span class='varid'>isB64</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='chr'>'A'</span> <span class='varop'><=</span> <span class='varid'>c</span> <span class='varop'>&&</span> <span class='varid'>c</span> <span class='varop'><=</span> <span class='chr'>'Z'</span><span class='layout'>)</span>-<a name="line-403"></a> <span class='varop'>||</span>-<a name="line-404"></a> <span class='layout'>(</span> <span class='chr'>'a'</span> <span class='varop'><=</span> <span class='varid'>c</span> <span class='varop'>&&</span> <span class='varid'>c</span> <span class='varop'><=</span> <span class='chr'>'z'</span><span class='layout'>)</span>-<a name="line-405"></a> <span class='varop'>||</span>-<a name="line-406"></a> <span class='layout'>(</span> <span class='chr'>'0'</span> <span class='varop'><=</span> <span class='varid'>c</span> <span class='varop'>&&</span> <span class='varid'>c</span> <span class='varop'><=</span> <span class='chr'>'9'</span><span class='layout'>)</span>-<a name="line-407"></a> <span class='varop'>||</span>-<a name="line-408"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'+'</span>-<a name="line-409"></a> <span class='varop'>||</span>-<a name="line-410"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'/'</span>-<a name="line-411"></a> <span class='varop'>||</span>-<a name="line-412"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'='</span>-<a name="line-413"></a>-<a name="line-414"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-415"></a>-<a name="line-416"></a><a name="readDecimal"></a><span class='definition'>readDecimal</span>-<a name="line-417"></a> <span class='layout'>,</span> <span class='varid'>readDecimal'</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span>-<a name="line-418"></a>-<a name="line-419"></a><span class='definition'>readDecimal</span> <span class='layout'>(</span><span class='chr'>'+'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>readDecimal'</span> <span class='varid'>s</span>-<a name="line-420"></a><span class='definition'>readDecimal</span> <span class='layout'>(</span><span class='chr'>'-'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>negate</span> <span class='layout'>(</span><span class='varid'>readDecimal'</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-421"></a><span class='definition'>readDecimal</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>readDecimal'</span> <span class='varid'>s</span>-<a name="line-422"></a>-<a name="line-423"></a><a name="readDecimal'"></a><span class='definition'>readDecimal'</span> <span class='varid'>s</span>-<a name="line-424"></a> <span class='keyglyph'>|</span> <span class='varid'>f</span> <span class='varop'>==</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span> <span class='varop'>%</span> <span class='num'>1</span><span class='layout'>)</span>-<a name="line-425"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span> <span class='varop'>%</span> <span class='num'>1</span><span class='layout'>)</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varop'>%</span> <span class='layout'>(</span><span class='num'>10</span> <span class='varop'>^</span> <span class='layout'>(</span><span class='varid'>toInteger</span> <span class='layout'>(</span><span class='varid'>length</span> <span class='varid'>fs</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-426"></a> <span class='keyword'>where</span>-<a name="line-427"></a> <span class='layout'>(</span><span class='varid'>ns</span><span class='layout'>,</span> <span class='varid'>fs'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>'.'</span><span class='layout'>)</span> <span class='varid'>s</span>-<a name="line-428"></a> <span class='varid'>fs</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>1</span> <span class='varid'>fs'</span>-<a name="line-429"></a>-<a name="line-430"></a> <span class='varid'>f</span> <span class='keyglyph'>::</span> <span class='conid'>Integer</span>-<a name="line-431"></a> <span class='varid'>f</span> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>fs</span> <span class='keyglyph'>=</span> <span class='num'>0</span>-<a name="line-432"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>read</span> <span class='varid'>fs</span>-<a name="line-433"></a> <span class='varid'>n</span> <span class='keyglyph'>::</span> <span class='conid'>Integer</span>-<a name="line-434"></a> <span class='varid'>n</span> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='num'>0</span>-<a name="line-435"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>read</span> <span class='varid'>ns</span>-<a name="line-436"></a>-<a name="line-437"></a><a name="totalDigits"></a><span class='definition'>totalDigits</span>-<a name="line-438"></a> <span class='layout'>,</span> <span class='varid'>totalDigits'</span>-<a name="line-439"></a> <span class='layout'>,</span> <span class='varid'>fractionDigits</span> <span class='keyglyph'>::</span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span>-<a name="line-440"></a>-<a name="line-441"></a><span class='definition'>totalDigits</span> <span class='varid'>r</span>-<a name="line-442"></a> <span class='keyglyph'>|</span> <span class='varid'>r</span> <span class='varop'>==</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='num'>0</span>-<a name="line-443"></a> <span class='keyglyph'>|</span> <span class='varid'>r</span> <span class='varop'><</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='varid'>totalDigits'</span> <span class='varop'>.</span> <span class='varid'>negate</span> <span class='varop'>$</span> <span class='varid'>r</span>-<a name="line-444"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>totalDigits'</span> <span class='varop'>$</span> <span class='varid'>r</span>-<a name="line-445"></a>-<a name="line-446"></a><a name="totalDigits'"></a><span class='definition'>totalDigits'</span> <span class='varid'>r</span>-<a name="line-447"></a> <span class='keyglyph'>|</span> <span class='varid'>denominator</span> <span class='varid'>r</span> <span class='varop'>==</span> <span class='num'>1</span> <span class='keyglyph'>=</span> <span class='varid'>length</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>numerator</span> <span class='varop'>$</span> <span class='varid'>r</span>-<a name="line-448"></a> <span class='keyglyph'>|</span> <span class='varid'>r</span> <span class='varop'><</span> <span class='layout'>(</span><span class='num'>1</span><span class='varop'>%</span><span class='num'>1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>x</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>totalDigits'</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varop'>+</span> <span class='layout'>(</span><span class='num'>1</span><span class='varop'>%</span><span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>r</span>-<a name="line-449"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>totalDigits'</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varop'>*</span> <span class='layout'>(</span><span class='num'>10</span> <span class='varop'>%</span> <span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>r</span>-<a name="line-450"></a>-<a name="line-451"></a><a name="fractionDigits"></a><span class='definition'>fractionDigits</span> <span class='varid'>r</span>-<a name="line-452"></a> <span class='keyglyph'>|</span> <span class='varid'>denominator</span> <span class='varid'>r</span> <span class='varop'>==</span> <span class='num'>1</span> <span class='keyglyph'>=</span> <span class='num'>0</span>-<a name="line-453"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varop'>+</span><span class='num'>1</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>fractionDigits</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varop'>*</span> <span class='layout'>(</span><span class='num'>10</span> <span class='varop'>%</span> <span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>r</span>-<a name="line-454"></a>-<a name="line-455"></a><a name="showDecimal"></a><span class='definition'>showDecimal</span>-<a name="line-456"></a> <span class='layout'>,</span> <span class='varid'>showDecimal'</span> <span class='keyglyph'>::</span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-457"></a>-<a name="line-458"></a><span class='definition'>showDecimal</span> <span class='varid'>d</span>-<a name="line-459"></a> <span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'><</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='chr'>'-'</span><span class='conop'>:</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>showDecimal'</span> <span class='varop'>.</span> <span class='varid'>negate</span> <span class='varop'>$</span> <span class='varid'>d</span>-<a name="line-460"></a> <span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'><</span> <span class='num'>1</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>1</span> <span class='varop'>.</span> <span class='varid'>showDecimal'</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varop'>+</span> <span class='layout'>(</span><span class='num'>1</span><span class='varop'>%</span><span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>d</span>-<a name="line-461"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>showDecimal'</span> <span class='varop'>$</span> <span class='varid'>d</span>-<a name="line-462"></a>-<a name="line-463"></a><a name="showDecimal'"></a><span class='definition'>showDecimal'</span> <span class='varid'>d</span>-<a name="line-464"></a> <span class='keyglyph'>|</span> <span class='varid'>denominator</span> <span class='varid'>d</span> <span class='varop'>==</span> <span class='num'>1</span> <span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>numerator</span> <span class='varop'>$</span> <span class='varid'>d</span>-<a name="line-465"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>times10</span> <span class='num'>0</span> <span class='varop'>$</span> <span class='varid'>d</span>-<a name="line-466"></a> <span class='keyword'>where</span>-<a name="line-467"></a> <span class='varid'>times10</span> <span class='varid'>i'</span> <span class='varid'>d'</span>-<a name="line-468"></a> <span class='keyglyph'>|</span> <span class='varid'>denominator</span> <span class='varid'>d'</span> <span class='varop'>==</span> <span class='num'>1</span> <span class='keyglyph'>=</span> <span class='keyword'>let</span>-<a name="line-469"></a> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>y</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'>reverse</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>numerator</span> <span class='varop'>$</span> <span class='varid'>d'</span>-<a name="line-470"></a> <span class='keyword'>in</span>-<a name="line-471"></a> <span class='varid'>reverse</span> <span class='varid'>y</span> <span class='varop'>++</span> <span class='str'>"."</span> <span class='varop'>++</span> <span class='varid'>reverse</span> <span class='varid'>x</span>-<a name="line-472"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>times10</span> <span class='layout'>(</span><span class='varid'>i'</span> <span class='varop'>+</span> <span class='num'>1</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>d'</span> <span class='varop'>*</span> <span class='layout'>(</span><span class='num'>10</span> <span class='varop'>%</span> <span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-473"></a> -<a name="line-474"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-475"></a>-<a name="line-476"></a><span class='comment'>-- | Tests whether a XML instance value matches a data-pattern.</span>-<a name="line-477"></a><span class='comment'>-- (see also: 'stringValid')</span>-<a name="line-478"></a>-<a name="line-479"></a><a name="datatypeAllowsW3C"></a><span class='definition'>datatypeAllowsW3C</span> <span class='keyglyph'>::</span> <span class='conid'>DatatypeAllows</span>-<a name="line-480"></a><span class='definition'>datatypeAllowsW3C</span> <span class='varid'>d</span> <span class='varid'>params</span> <span class='varid'>value</span> <span class='keyword'>_</span>-<a name="line-481"></a> <span class='keyglyph'>=</span> <span class='varid'>performCheck</span> <span class='varid'>check</span> <span class='varid'>value</span>-<a name="line-482"></a> <span class='keyword'>where</span>-<a name="line-483"></a> <span class='varid'>validString</span> <span class='varid'>normFct</span>-<a name="line-484"></a> <span class='keyglyph'>=</span> <span class='varid'>validPattern</span>-<a name="line-485"></a> <span class='varop'>>>></span>-<a name="line-486"></a> <span class='varid'>arr</span> <span class='varid'>normFct</span>-<a name="line-487"></a> <span class='varop'>>>></span>-<a name="line-488"></a> <span class='varid'>validLength</span>-<a name="line-489"></a>-<a name="line-490"></a> <span class='varid'>validNormString</span>-<a name="line-491"></a> <span class='keyglyph'>=</span> <span class='varid'>validString</span> <span class='varid'>normalizeWhitespace</span>-<a name="line-492"></a>-<a name="line-493"></a> <span class='varid'>validPattern</span>-<a name="line-494"></a> <span class='keyglyph'>=</span> <span class='varid'>patternValid</span> <span class='varid'>params</span>-<a name="line-495"></a>-<a name="line-496"></a> <span class='varid'>validLength</span>-<a name="line-497"></a> <span class='keyglyph'>=</span> <span class='varid'>stringValid</span> <span class='varid'>d</span> <span class='num'>0</span> <span class='layout'>(</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span> <span class='varid'>params</span>-<a name="line-498"></a>-<a name="line-499"></a> <span class='varid'>validList</span>-<a name="line-500"></a> <span class='keyglyph'>=</span> <span class='varid'>validPattern</span>-<a name="line-501"></a> <span class='varop'>>>></span>-<a name="line-502"></a> <span class='varid'>arr</span> <span class='varid'>normalizeWhitespace</span>-<a name="line-503"></a> <span class='varop'>>>></span>-<a name="line-504"></a> <span class='varid'>validListLength</span>-<a name="line-505"></a>-<a name="line-506"></a> <span class='varid'>validListLength</span>-<a name="line-507"></a> <span class='keyglyph'>=</span> <span class='varid'>listValid</span> <span class='varid'>d</span> <span class='varid'>params</span>-<a name="line-508"></a>-<a name="line-509"></a> <span class='varid'>validName</span> <span class='varid'>isN</span>-<a name="line-510"></a> <span class='keyglyph'>=</span> <span class='varid'>assertW3C</span> <span class='varid'>isN</span>-<a name="line-511"></a>-<a name="line-512"></a> <span class='varid'>validNCName</span>-<a name="line-513"></a> <span class='keyglyph'>=</span> <span class='varid'>validNormString</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='varid'>isNCName</span>-<a name="line-514"></a>-<a name="line-515"></a> <span class='varid'>validQName</span>-<a name="line-516"></a> <span class='keyglyph'>=</span> <span class='varid'>validNormString</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='varid'>isWellformedQualifiedName</span>-<a name="line-517"></a>-<a name="line-518"></a> <span class='varid'>validDecimal</span>-<a name="line-519"></a> <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='varid'>normalizeWhitespace</span>-<a name="line-520"></a> <span class='varop'>>>></span>-<a name="line-521"></a> <span class='varid'>assertW3C</span> <span class='varid'>isDecimal</span>-<a name="line-522"></a> <span class='varop'>>>></span>-<a name="line-523"></a> <span class='varid'>checkWith</span> <span class='varid'>readDecimal</span> <span class='layout'>(</span><span class='varid'>decimalValid</span> <span class='varid'>params</span><span class='layout'>)</span>-<a name="line-524"></a>-<a name="line-525"></a> <span class='varid'>validInteger</span> <span class='varid'>inRange</span>-<a name="line-526"></a> <span class='keyglyph'>=</span> <span class='varid'>validPattern</span>-<a name="line-527"></a> <span class='varop'>>>></span>-<a name="line-528"></a> <span class='varid'>arr</span> <span class='varid'>normalizeWhitespace</span>-<a name="line-529"></a> <span class='varop'>>>></span>-<a name="line-530"></a> <span class='varid'>assertW3C</span> <span class='varid'>isInteger</span>-<a name="line-531"></a> <span class='varop'>>>></span>-<a name="line-532"></a> <span class='varid'>checkWith</span> <span class='varid'>read</span> <span class='layout'>(</span><span class='varid'>integerValid</span> <span class='varid'>inRange</span> <span class='varid'>params</span><span class='layout'>)</span>-<a name="line-533"></a>-<a name="line-534"></a> <span class='varid'>check</span> <span class='keyglyph'>::</span> <span class='conid'>CheckString</span>-<a name="line-535"></a> <span class='varid'>check</span> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='varid'>notFound</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>d</span> <span class='varop'>$</span> <span class='varid'>checks</span>-<a name="line-536"></a>-<a name="line-537"></a> <span class='varid'>notFound</span> <span class='keyglyph'>=</span> <span class='varid'>failure</span> <span class='varop'>$</span> <span class='varid'>errorMsgDataTypeNotAllowed</span> <span class='varid'>w3cNS</span> <span class='varid'>d</span> <span class='varid'>params</span>-<a name="line-538"></a>-<a name="line-539"></a> <span class='varid'>checks</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'>CheckA</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-540"></a> <span class='varid'>checks</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_string</span><span class='layout'>,</span> <span class='varid'>validString</span> <span class='varid'>id</span><span class='layout'>)</span>-<a name="line-541"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_normalizedString</span><span class='layout'>,</span> <span class='varid'>validString</span> <span class='varid'>normalizeBlanks</span><span class='layout'>)</span>-<a name="line-542"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_token</span><span class='layout'>,</span> <span class='varid'>validNormString</span><span class='layout'>)</span>-<a name="line-543"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_language</span><span class='layout'>,</span> <span class='varid'>validNormString</span> <span class='varop'>>>></span> <span class='varid'>assertW3C</span> <span class='varid'>isLanguage</span><span class='layout'>)</span>-<a name="line-544"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKEN</span><span class='layout'>,</span> <span class='varid'>validNormString</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='varid'>isNmtoken</span><span class='layout'>)</span>-<a name="line-545"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKENS</span><span class='layout'>,</span> <span class='varid'>validList</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='layout'>(</span><span class='varid'>isNameList</span> <span class='varid'>isNmtoken</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-546"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_Name</span><span class='layout'>,</span> <span class='varid'>validNormString</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='varid'>isName</span><span class='layout'>)</span>-<a name="line-547"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NCName</span><span class='layout'>,</span> <span class='varid'>validNCName</span><span class='layout'>)</span>-<a name="line-548"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ID</span><span class='layout'>,</span> <span class='varid'>validNCName</span><span class='layout'>)</span>-<a name="line-549"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREF</span><span class='layout'>,</span> <span class='varid'>validNCName</span><span class='layout'>)</span>-<a name="line-550"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREFS</span><span class='layout'>,</span> <span class='varid'>validList</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='layout'>(</span><span class='varid'>isNameList</span> <span class='varid'>isNCName</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-551"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITY</span><span class='layout'>,</span> <span class='varid'>validNCName</span><span class='layout'>)</span>-<a name="line-552"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITIES</span><span class='layout'>,</span> <span class='varid'>validList</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='layout'>(</span><span class='varid'>isNameList</span> <span class='varid'>isNCName</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-553"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_anyURI</span><span class='layout'>,</span> <span class='varid'>validName</span> <span class='varid'>isURIReference</span> <span class='varop'>>>></span> <span class='varid'>validString</span> <span class='varid'>escapeURI</span><span class='layout'>)</span>-<a name="line-554"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_QName</span><span class='layout'>,</span> <span class='varid'>validQName</span><span class='layout'>)</span>-<a name="line-555"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NOTATION</span><span class='layout'>,</span> <span class='varid'>validQName</span><span class='layout'>)</span>-<a name="line-556"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_hexBinary</span><span class='layout'>,</span> <span class='varid'>validString</span> <span class='varid'>id</span> <span class='varop'>>>></span> <span class='varid'>assertW3C</span> <span class='varid'>isHexBinary</span><span class='layout'>)</span>-<a name="line-557"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_base64Binary</span><span class='layout'>,</span> <span class='varid'>validString</span> <span class='varid'>normBase64</span> <span class='varop'>>>></span> <span class='varid'>assertW3C</span> <span class='varid'>isBase64Binary</span><span class='layout'>)</span>-<a name="line-558"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_decimal</span><span class='layout'>,</span> <span class='varid'>validPattern</span> <span class='varop'>>>></span> <span class='varid'>validDecimal</span><span class='layout'>)</span>-<a name="line-559"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_integer</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_integer</span><span class='layout'>)</span>-<a name="line-560"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonPositiveInteger</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_nonPositiveInteger</span><span class='layout'>)</span>-<a name="line-561"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_negativeInteger</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_negativeInteger</span><span class='layout'>)</span>-<a name="line-562"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonNegativeInteger</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_nonNegativeInteger</span><span class='layout'>)</span>-<a name="line-563"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_positiveInteger</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_positiveInteger</span><span class='layout'>)</span>-<a name="line-564"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_long</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_long</span><span class='layout'>)</span>-<a name="line-565"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_int</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_int</span><span class='layout'>)</span>-<a name="line-566"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_short</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_short</span><span class='layout'>)</span>-<a name="line-567"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_byte</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_byte</span><span class='layout'>)</span>-<a name="line-568"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedLong</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_unsignedLong</span><span class='layout'>)</span>-<a name="line-569"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedInt</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_unsignedInt</span><span class='layout'>)</span>-<a name="line-570"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedShort</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_unsignedShort</span><span class='layout'>)</span>-<a name="line-571"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedByte</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_unsignedByte</span><span class='layout'>)</span>-<a name="line-572"></a> <span class='keyglyph'>]</span>-<a name="line-573"></a> <span class='varid'>assertW3C</span> <span class='varid'>p</span> <span class='keyglyph'>=</span> <span class='varid'>assert</span> <span class='varid'>p</span> <span class='varid'>errW3C</span>-<a name="line-574"></a> <span class='varid'>errW3C</span> <span class='keyglyph'>=</span> <span class='varid'>errorMsgDataLibQName</span> <span class='varid'>w3cNS</span> <span class='varid'>d</span>-<a name="line-575"></a>-<a name="line-576"></a><span class='comment'>-- ----------------------------------------</span>-<a name="line-577"></a>-<a name="line-578"></a><span class='comment'>-- | Tests whether a XML instance value matches a value-pattern.</span>-<a name="line-579"></a>-<a name="line-580"></a><a name="datatypeEqualW3C"></a><span class='definition'>datatypeEqualW3C</span> <span class='keyglyph'>::</span> <span class='conid'>DatatypeEqual</span>-<a name="line-581"></a><span class='definition'>datatypeEqualW3C</span> <span class='varid'>d</span> <span class='varid'>s1</span> <span class='keyword'>_</span> <span class='varid'>s2</span> <span class='keyword'>_</span>-<a name="line-582"></a> <span class='keyglyph'>=</span> <span class='varid'>performCheck</span> <span class='varid'>check</span> <span class='layout'>(</span><span class='varid'>s1</span><span class='layout'>,</span> <span class='varid'>s2</span><span class='layout'>)</span>-<a name="line-583"></a> <span class='keyword'>where</span>-<a name="line-584"></a> <span class='varid'>check</span> <span class='keyglyph'>::</span> <span class='conid'>CheckA</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='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-585"></a> <span class='varid'>check</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>notFound</span> <span class='varid'>found</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>d</span> <span class='varop'>$</span> <span class='varid'>norm</span>-<a name="line-586"></a>-<a name="line-587"></a> <span class='varid'>notFound</span> <span class='keyglyph'>=</span> <span class='varid'>failure</span> <span class='varop'>$</span> <span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>errorMsgDataTypeNotAllowed0</span> <span class='varid'>w3cNS</span> <span class='varid'>d</span><span class='layout'>)</span>-<a name="line-588"></a>-<a name="line-589"></a> <span class='varid'>found</span> <span class='varid'>nf</span> <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x1</span><span class='layout'>,</span> <span class='varid'>x2</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>nf</span> <span class='varid'>x1</span><span class='layout'>,</span> <span class='varid'>nf</span> <span class='varid'>x2</span><span class='layout'>)</span><span class='layout'>)</span> <span class='comment'>-- normalize both values</span>-<a name="line-590"></a> <span class='varop'>>>></span>-<a name="line-591"></a> <span class='varid'>assert</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='layout'>(</span><span class='varop'>==</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varop'>$</span> <span class='varid'>errorMsgEqual</span> <span class='varid'>d</span><span class='layout'>)</span> <span class='comment'>-- and check on (==)</span>-<a name="line-592"></a>-<a name="line-593"></a> <span class='varid'>norm</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_string</span><span class='layout'>,</span> <span class='varid'>id</span> <span class='layout'>)</span>-<a name="line-594"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_normalizedString</span><span class='layout'>,</span> <span class='varid'>normalizeBlanks</span> <span class='layout'>)</span>-<a name="line-595"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_token</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-596"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_language</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-597"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKEN</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-598"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKENS</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-599"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_Name</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-600"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NCName</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-601"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ID</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-602"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREF</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-603"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREFS</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-604"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITY</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-605"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITIES</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-606"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_anyURI</span><span class='layout'>,</span> <span class='varid'>escapeURI</span> <span class='varop'>.</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-607"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_QName</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-608"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NOTATION</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-609"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_hexBinary</span><span class='layout'>,</span> <span class='varid'>id</span> <span class='layout'>)</span>-<a name="line-610"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_base64Binary</span><span class='layout'>,</span> <span class='varid'>normBase64</span> <span class='layout'>)</span>-<a name="line-611"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_decimal</span><span class='layout'>,</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>readDecimal</span> <span class='varop'>.</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>-<a name="line-612"></a> <span class='keyglyph'>]</span>-<a name="line-613"></a>-<a name="line-614"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-57"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-58"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Ratio</span>+<a name="line-59"></a>+<a name="line-60"></a><span class='keyword'>import</span> <span class='conid'>Network</span><span class='varop'>.</span><span class='conid'>URI</span> <span class='layout'>(</span> <span class='varid'>isURIReference</span> <span class='layout'>)</span>+<a name="line-61"></a>+<a name="line-62"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>QualifiedName</span> <span class='layout'>(</span> <span class='varid'>isWellformedQualifiedName</span>+<a name="line-63"></a> <span class='layout'>,</span> <span class='varid'>isNCName</span>+<a name="line-64"></a> <span class='layout'>)</span>+<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'>RelaxNG</span><span class='varop'>.</span><span class='conid'>DataTypeLibUtils</span>+<a name="line-66"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>RelaxNG</span><span class='varop'>.</span><span class='conid'>XmlSchema</span><span class='varop'>.</span><span class='conid'>Regex</span> <span class='layout'>(</span> <span class='conid'>Regex</span>+<a name="line-67"></a> <span class='layout'>,</span> <span class='varid'>matchWithRE</span>+<a name="line-68"></a> <span class='layout'>)</span>+<a name="line-69"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>RelaxNG</span><span class='varop'>.</span><span class='conid'>XmlSchema</span><span class='varop'>.</span><span class='conid'>RegexParser</span>+<a name="line-70"></a> <span class='layout'>(</span> <span class='varid'>parseRegex</span>+<a name="line-71"></a> <span class='layout'>)</span>+<a name="line-72"></a> +<a name="line-73"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-74"></a>+<a name="line-75"></a><span class='comment'>-- | Namespace of the W3C XML schema datatype library</span>+<a name="line-76"></a>+<a name="line-77"></a><a name="w3cNS"></a><span class='definition'>w3cNS</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-78"></a><span class='definition'>w3cNS</span> <span class='keyglyph'>=</span> <span class='str'>"http://www.w3.org/2001/XMLSchema-datatypes"</span>+<a name="line-79"></a>+<a name="line-80"></a>+<a name="line-81"></a><a name="xsd_string"></a><span class='definition'>xsd_string</span>+<a name="line-82"></a> <span class='layout'>,</span> <span class='varid'>xsd_normalizedString</span>+<a name="line-83"></a> <span class='layout'>,</span> <span class='varid'>xsd_token</span>+<a name="line-84"></a> <span class='layout'>,</span> <span class='varid'>xsd_language</span>+<a name="line-85"></a> <span class='layout'>,</span> <span class='varid'>xsd_NMTOKEN</span>+<a name="line-86"></a> <span class='layout'>,</span> <span class='varid'>xsd_NMTOKENS</span>+<a name="line-87"></a> <span class='layout'>,</span> <span class='varid'>xsd_Name</span>+<a name="line-88"></a> <span class='layout'>,</span> <span class='varid'>xsd_NCName</span>+<a name="line-89"></a> <span class='layout'>,</span> <span class='varid'>xsd_ID</span>+<a name="line-90"></a> <span class='layout'>,</span> <span class='varid'>xsd_IDREF</span>+<a name="line-91"></a> <span class='layout'>,</span> <span class='varid'>xsd_IDREFS</span>+<a name="line-92"></a> <span class='layout'>,</span> <span class='varid'>xsd_ENTITY</span>+<a name="line-93"></a> <span class='layout'>,</span> <span class='varid'>xsd_ENTITIES</span>+<a name="line-94"></a> <span class='layout'>,</span> <span class='varid'>xsd_anyURI</span>+<a name="line-95"></a> <span class='layout'>,</span> <span class='varid'>xsd_QName</span>+<a name="line-96"></a> <span class='layout'>,</span> <span class='varid'>xsd_NOTATION</span>+<a name="line-97"></a> <span class='layout'>,</span> <span class='varid'>xsd_hexBinary</span>+<a name="line-98"></a> <span class='layout'>,</span> <span class='varid'>xsd_base64Binary</span>+<a name="line-99"></a> <span class='layout'>,</span> <span class='varid'>xsd_decimal</span>+<a name="line-100"></a> <span class='layout'>,</span> <span class='varid'>xsd_integer</span>+<a name="line-101"></a> <span class='layout'>,</span> <span class='varid'>xsd_nonPositiveInteger</span>+<a name="line-102"></a> <span class='layout'>,</span> <span class='varid'>xsd_negativeInteger</span>+<a name="line-103"></a> <span class='layout'>,</span> <span class='varid'>xsd_nonNegativeInteger</span>+<a name="line-104"></a> <span class='layout'>,</span> <span class='varid'>xsd_positiveInteger</span>+<a name="line-105"></a> <span class='layout'>,</span> <span class='varid'>xsd_long</span>+<a name="line-106"></a> <span class='layout'>,</span> <span class='varid'>xsd_int</span>+<a name="line-107"></a> <span class='layout'>,</span> <span class='varid'>xsd_short</span>+<a name="line-108"></a> <span class='layout'>,</span> <span class='varid'>xsd_byte</span>+<a name="line-109"></a> <span class='layout'>,</span> <span class='varid'>xsd_unsignedLong</span>+<a name="line-110"></a> <span class='layout'>,</span> <span class='varid'>xsd_unsignedInt</span>+<a name="line-111"></a> <span class='layout'>,</span> <span class='varid'>xsd_unsignedShort</span>+<a name="line-112"></a> <span class='layout'>,</span> <span class='varid'>xsd_unsignedByte</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-113"></a>+<a name="line-114"></a><span class='definition'>xsd_string</span> <span class='keyglyph'>=</span> <span class='str'>"string"</span>+<a name="line-115"></a><a name="xsd_normalizedString"></a><span class='definition'>xsd_normalizedString</span> <span class='keyglyph'>=</span> <span class='str'>"normalizedString"</span>+<a name="line-116"></a><a name="xsd_token"></a><span class='definition'>xsd_token</span> <span class='keyglyph'>=</span> <span class='str'>"token"</span>+<a name="line-117"></a><a name="xsd_language"></a><span class='definition'>xsd_language</span> <span class='keyglyph'>=</span> <span class='str'>"language"</span>+<a name="line-118"></a><a name="xsd_NMTOKEN"></a><span class='definition'>xsd_NMTOKEN</span> <span class='keyglyph'>=</span> <span class='str'>"NMTOKEN"</span>+<a name="line-119"></a><a name="xsd_NMTOKENS"></a><span class='definition'>xsd_NMTOKENS</span> <span class='keyglyph'>=</span> <span class='str'>"NMTOKENS"</span>+<a name="line-120"></a><a name="xsd_Name"></a><span class='definition'>xsd_Name</span> <span class='keyglyph'>=</span> <span class='str'>"Name"</span>+<a name="line-121"></a><a name="xsd_NCName"></a><span class='definition'>xsd_NCName</span> <span class='keyglyph'>=</span> <span class='str'>"NCName"</span>+<a name="line-122"></a><a name="xsd_ID"></a><span class='definition'>xsd_ID</span> <span class='keyglyph'>=</span> <span class='str'>"ID"</span>+<a name="line-123"></a><a name="xsd_IDREF"></a><span class='definition'>xsd_IDREF</span> <span class='keyglyph'>=</span> <span class='str'>"IDREF"</span>+<a name="line-124"></a><a name="xsd_IDREFS"></a><span class='definition'>xsd_IDREFS</span> <span class='keyglyph'>=</span> <span class='str'>"IDREFS"</span>+<a name="line-125"></a><a name="xsd_ENTITY"></a><span class='definition'>xsd_ENTITY</span> <span class='keyglyph'>=</span> <span class='str'>"ENTITY"</span>+<a name="line-126"></a><a name="xsd_ENTITIES"></a><span class='definition'>xsd_ENTITIES</span> <span class='keyglyph'>=</span> <span class='str'>"ENTITIES"</span>+<a name="line-127"></a><a name="xsd_anyURI"></a><span class='definition'>xsd_anyURI</span> <span class='keyglyph'>=</span> <span class='str'>"anyURI"</span>+<a name="line-128"></a><a name="xsd_QName"></a><span class='definition'>xsd_QName</span> <span class='keyglyph'>=</span> <span class='str'>"QName"</span>+<a name="line-129"></a><a name="xsd_NOTATION"></a><span class='definition'>xsd_NOTATION</span> <span class='keyglyph'>=</span> <span class='str'>"NOTATION"</span>+<a name="line-130"></a><a name="xsd_hexBinary"></a><span class='definition'>xsd_hexBinary</span> <span class='keyglyph'>=</span> <span class='str'>"hexBinary"</span>+<a name="line-131"></a><a name="xsd_base64Binary"></a><span class='definition'>xsd_base64Binary</span> <span class='keyglyph'>=</span> <span class='str'>"base64Binary"</span>+<a name="line-132"></a><a name="xsd_decimal"></a><span class='definition'>xsd_decimal</span> <span class='keyglyph'>=</span> <span class='str'>"decimal"</span>+<a name="line-133"></a><a name="xsd_integer"></a><span class='definition'>xsd_integer</span> <span class='keyglyph'>=</span> <span class='str'>"integer"</span>+<a name="line-134"></a><a name="xsd_nonPositiveInteger"></a><span class='definition'>xsd_nonPositiveInteger</span> <span class='keyglyph'>=</span> <span class='str'>"nonPositiveInteger"</span>+<a name="line-135"></a><a name="xsd_negativeInteger"></a><span class='definition'>xsd_negativeInteger</span> <span class='keyglyph'>=</span> <span class='str'>"negativeInteger"</span>+<a name="line-136"></a><a name="xsd_nonNegativeInteger"></a><span class='definition'>xsd_nonNegativeInteger</span> <span class='keyglyph'>=</span> <span class='str'>"nonNegativeInteger"</span>+<a name="line-137"></a><a name="xsd_positiveInteger"></a><span class='definition'>xsd_positiveInteger</span> <span class='keyglyph'>=</span> <span class='str'>"positiveInteger"</span>+<a name="line-138"></a><a name="xsd_long"></a><span class='definition'>xsd_long</span> <span class='keyglyph'>=</span> <span class='str'>"long"</span>+<a name="line-139"></a><a name="xsd_int"></a><span class='definition'>xsd_int</span> <span class='keyglyph'>=</span> <span class='str'>"int"</span>+<a name="line-140"></a><a name="xsd_short"></a><span class='definition'>xsd_short</span> <span class='keyglyph'>=</span> <span class='str'>"short"</span>+<a name="line-141"></a><a name="xsd_byte"></a><span class='definition'>xsd_byte</span> <span class='keyglyph'>=</span> <span class='str'>"byte"</span>+<a name="line-142"></a><a name="xsd_unsignedLong"></a><span class='definition'>xsd_unsignedLong</span> <span class='keyglyph'>=</span> <span class='str'>"unsignedLong"</span>+<a name="line-143"></a><a name="xsd_unsignedInt"></a><span class='definition'>xsd_unsignedInt</span> <span class='keyglyph'>=</span> <span class='str'>"unsignedInt"</span>+<a name="line-144"></a><a name="xsd_unsignedShort"></a><span class='definition'>xsd_unsignedShort</span> <span class='keyglyph'>=</span> <span class='str'>"unsignedShort"</span>+<a name="line-145"></a><a name="xsd_unsignedByte"></a><span class='definition'>xsd_unsignedByte</span> <span class='keyglyph'>=</span> <span class='str'>"unsignedByte"</span>+<a name="line-146"></a>+<a name="line-147"></a>+<a name="line-148"></a><a name="xsd_length"></a><span class='definition'>xsd_length</span>+<a name="line-149"></a> <span class='layout'>,</span> <span class='varid'>xsd_maxLength</span>+<a name="line-150"></a> <span class='layout'>,</span> <span class='varid'>xsd_minLength</span>+<a name="line-151"></a> <span class='layout'>,</span> <span class='varid'>xsd_maxExclusive</span>+<a name="line-152"></a> <span class='layout'>,</span> <span class='varid'>xsd_minExclusive</span>+<a name="line-153"></a> <span class='layout'>,</span> <span class='varid'>xsd_maxInclusive</span>+<a name="line-154"></a> <span class='layout'>,</span> <span class='varid'>xsd_minInclusive</span>+<a name="line-155"></a> <span class='layout'>,</span> <span class='varid'>xsd_totalDigits</span>+<a name="line-156"></a> <span class='layout'>,</span> <span class='varid'>xsd_fractionDigits</span>+<a name="line-157"></a> <span class='layout'>,</span> <span class='varid'>xsd_pattern</span>+<a name="line-158"></a> <span class='layout'>,</span> <span class='varid'>xsd_enumeration</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>+<a name="line-159"></a>+<a name="line-160"></a><span class='definition'>xsd_length</span> <span class='keyglyph'>=</span> <span class='varid'>rng_length</span>+<a name="line-161"></a><a name="xsd_maxLength"></a><span class='definition'>xsd_maxLength</span> <span class='keyglyph'>=</span> <span class='varid'>rng_maxLength</span>+<a name="line-162"></a><a name="xsd_minLength"></a><span class='definition'>xsd_minLength</span> <span class='keyglyph'>=</span> <span class='varid'>rng_minLength</span>+<a name="line-163"></a>+<a name="line-164"></a><a name="xsd_maxExclusive"></a><span class='definition'>xsd_maxExclusive</span> <span class='keyglyph'>=</span> <span class='varid'>rng_maxExclusive</span>+<a name="line-165"></a><a name="xsd_minExclusive"></a><span class='definition'>xsd_minExclusive</span> <span class='keyglyph'>=</span> <span class='varid'>rng_minExclusive</span>+<a name="line-166"></a><a name="xsd_maxInclusive"></a><span class='definition'>xsd_maxInclusive</span> <span class='keyglyph'>=</span> <span class='varid'>rng_maxInclusive</span>+<a name="line-167"></a><a name="xsd_minInclusive"></a><span class='definition'>xsd_minInclusive</span> <span class='keyglyph'>=</span> <span class='varid'>rng_minInclusive</span>+<a name="line-168"></a>+<a name="line-169"></a><a name="xsd_totalDigits"></a><span class='definition'>xsd_totalDigits</span> <span class='keyglyph'>=</span> <span class='str'>"totalDigits"</span>+<a name="line-170"></a><a name="xsd_fractionDigits"></a><span class='definition'>xsd_fractionDigits</span> <span class='keyglyph'>=</span> <span class='str'>"fractionDigits"</span>+<a name="line-171"></a>+<a name="line-172"></a><a name="xsd_pattern"></a><span class='definition'>xsd_pattern</span> <span class='keyglyph'>=</span> <span class='str'>"pattern"</span>+<a name="line-173"></a><a name="xsd_enumeration"></a><span class='definition'>xsd_enumeration</span> <span class='keyglyph'>=</span> <span class='str'>"enumeration"</span>+<a name="line-174"></a>+<a name="line-175"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-176"></a>+<a name="line-177"></a><a name="w3cDatatypeLib"></a><span class='comment'>-- | The main entry point to the W3C XML schema datatype library.</span>+<a name="line-178"></a><span class='comment'>--</span>+<a name="line-179"></a><span class='comment'>-- The 'DTC' constructor exports the list of supported datatypes and params.</span>+<a name="line-180"></a><span class='comment'>-- It also exports the specialized functions to validate a XML instance value with</span>+<a name="line-181"></a><span class='comment'>-- respect to a datatype.</span>+<a name="line-182"></a><span class='definition'>w3cDatatypeLib</span> <span class='keyglyph'>::</span> <span class='conid'>DatatypeLibrary</span>+<a name="line-183"></a><span class='definition'>w3cDatatypeLib</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>w3cNS</span><span class='layout'>,</span> <span class='conid'>DTC</span> <span class='varid'>datatypeAllowsW3C</span> <span class='varid'>datatypeEqualW3C</span> <span class='varid'>w3cDatatypes</span><span class='layout'>)</span>+<a name="line-184"></a>+<a name="line-185"></a>+<a name="line-186"></a><a name="w3cDatatypes"></a><span class='comment'>-- | All supported datatypes of the library</span>+<a name="line-187"></a><span class='definition'>w3cDatatypes</span> <span class='keyglyph'>::</span> <span class='conid'>AllowedDatatypes</span>+<a name="line-188"></a><span class='definition'>w3cDatatypes</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_string</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-189"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_normalizedString</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-190"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_token</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-191"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_language</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-192"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKEN</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-193"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKENS</span><span class='layout'>,</span> <span class='varid'>listParams</span> <span class='layout'>)</span>+<a name="line-194"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_Name</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-195"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NCName</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-196"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ID</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-197"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREF</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-198"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREFS</span><span class='layout'>,</span> <span class='varid'>listParams</span> <span class='layout'>)</span>+<a name="line-199"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITY</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-200"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITIES</span><span class='layout'>,</span> <span class='varid'>listParams</span> <span class='layout'>)</span>+<a name="line-201"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_anyURI</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-202"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_QName</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-203"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NOTATION</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-204"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_hexBinary</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-205"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_base64Binary</span><span class='layout'>,</span> <span class='varid'>stringParams</span><span class='layout'>)</span>+<a name="line-206"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_decimal</span><span class='layout'>,</span> <span class='varid'>decimalParams</span><span class='layout'>)</span>+<a name="line-207"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_integer</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-208"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonPositiveInteger</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-209"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_negativeInteger</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-210"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonNegativeInteger</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-211"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_positiveInteger</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-212"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_long</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-213"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_int</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-214"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_short</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-215"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_byte</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-216"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedLong</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-217"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedInt</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-218"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedShort</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-219"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedByte</span><span class='layout'>,</span> <span class='varid'>integerParams</span><span class='layout'>)</span>+<a name="line-220"></a> <span class='keyglyph'>]</span>+<a name="line-221"></a>+<a name="line-222"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-223"></a>+<a name="line-224"></a><a name="stringParams"></a><span class='comment'>-- | List of allowed params for the string datatypes</span>+<a name="line-225"></a><span class='definition'>stringParams</span> <span class='keyglyph'>::</span> <span class='conid'>AllowedParams</span>+<a name="line-226"></a><span class='definition'>stringParams</span> <span class='keyglyph'>=</span> <span class='varid'>xsd_pattern</span> <span class='conop'>:</span> <span class='varid'>map</span> <span class='varid'>fst</span> <span class='varid'>fctTableString</span>+<a name="line-227"></a>+<a name="line-228"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-229"></a>+<a name="line-230"></a><a name="patternValid"></a><span class='definition'>patternValid</span> <span class='keyglyph'>::</span> <span class='conid'>ParamList</span> <span class='keyglyph'>-></span> <span class='conid'>CheckString</span>+<a name="line-231"></a><span class='definition'>patternValid</span> <span class='varid'>params</span>+<a name="line-232"></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'>ok</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>paramPatternValid</span> <span class='varop'>$</span> <span class='varid'>params</span>+<a name="line-233"></a> <span class='keyword'>where</span>+<a name="line-234"></a> <span class='varid'>paramPatternValid</span> <span class='layout'>(</span><span class='varid'>pn</span><span class='layout'>,</span> <span class='varid'>pv</span><span class='layout'>)</span>+<a name="line-235"></a> <span class='keyglyph'>|</span> <span class='varid'>pn</span> <span class='varop'>==</span> <span class='varid'>xsd_pattern</span> <span class='keyglyph'>=</span> <span class='varid'>assert</span> <span class='layout'>(</span><span class='varid'>patParamValid</span> <span class='varid'>pv</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>errorMsgParam</span> <span class='varid'>pn</span> <span class='varid'>pv</span><span class='layout'>)</span>+<a name="line-236"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>ok</span>+<a name="line-237"></a>+<a name="line-238"></a><a name="patParamValid"></a><span class='definition'>patParamValid</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'>Bool</span>+<a name="line-239"></a><span class='definition'>patParamValid</span> <span class='varid'>regex</span> <span class='varid'>a</span>+<a name="line-240"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='varid'>parseRegex</span> <span class='varid'>regex</span> <span class='keyword'>of</span>+<a name="line-241"></a> <span class='layout'>(</span><span class='conid'>Left</span> <span class='keyword'>_</span> <span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>False</span>+<a name="line-242"></a> <span class='layout'>(</span><span class='conid'>Right</span> <span class='varid'>ex</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>isNothing</span> <span class='varop'>.</span> <span class='varid'>matchWithRE</span> <span class='varid'>ex</span> <span class='varop'>$</span> <span class='varid'>a</span>+<a name="line-243"></a>+<a name="line-244"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-245"></a>+<a name="line-246"></a><span class='comment'>-- | List of allowed params for the decimal datatypes</span>+<a name="line-247"></a>+<a name="line-248"></a><a name="decimalParams"></a><span class='definition'>decimalParams</span> <span class='keyglyph'>::</span> <span class='conid'>AllowedParams</span>+<a name="line-249"></a><span class='definition'>decimalParams</span> <span class='keyglyph'>=</span> <span class='varid'>xsd_pattern</span> <span class='conop'>:</span> <span class='varid'>map</span> <span class='varid'>fst</span> <span class='varid'>fctTableDecimal</span>+<a name="line-250"></a>+<a name="line-251"></a><a name="fctTableDecimal"></a><span class='definition'>fctTableDecimal</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-252"></a><span class='definition'>fctTableDecimal</span>+<a name="line-253"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_maxExclusive</span><span class='layout'>,</span> <span class='varid'>cvd</span> <span class='layout'>(</span><span class='varop'>></span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-254"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_minExclusive</span><span class='layout'>,</span> <span class='varid'>cvd</span> <span class='layout'>(</span><span class='varop'><</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-255"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_maxInclusive</span><span class='layout'>,</span> <span class='varid'>cvd</span> <span class='layout'>(</span><span class='varop'>>=</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-256"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_minInclusive</span><span class='layout'>,</span> <span class='varid'>cvd</span> <span class='layout'>(</span><span class='varop'><=</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-257"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_totalDigits</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>l</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='varid'>totalDigits</span> <span class='varid'>v</span> <span class='varop'>==</span> <span class='varid'>l</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-258"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_fractionDigits</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>l</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='varid'>fractionDigits</span> <span class='varid'>v</span> <span class='varop'>==</span> <span class='varid'>l</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-259"></a> <span class='keyglyph'>]</span>+<a name="line-260"></a> <span class='keyword'>where</span>+<a name="line-261"></a> <span class='varid'>cvd</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>+<a name="line-262"></a> <span class='varid'>cvd</span> <span class='varid'>op</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>-></span> <span class='varid'>isDecimal</span> <span class='varid'>x</span> <span class='varop'>&&</span> <span class='varid'>readDecimal</span> <span class='varid'>x</span> <span class='varop'>`op`</span> <span class='varid'>y</span>+<a name="line-263"></a>+<a name="line-264"></a> <span class='varid'>cvi</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>+<a name="line-265"></a> <span class='varid'>cvi</span> <span class='varid'>op</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>-></span> <span class='varid'>isNumber</span> <span class='varid'>x</span> <span class='varop'>&&</span> <span class='varid'>read</span> <span class='varid'>x</span> <span class='varop'>`op`</span> <span class='varid'>y</span>+<a name="line-266"></a>+<a name="line-267"></a><a name="decimalValid"></a><span class='definition'>decimalValid</span> <span class='keyglyph'>::</span> <span class='conid'>ParamList</span> <span class='keyglyph'>-></span> <span class='conid'>CheckA</span> <span class='conid'>Rational</span> <span class='conid'>Rational</span>+<a name="line-268"></a><span class='definition'>decimalValid</span> <span class='varid'>params</span>+<a name="line-269"></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'>ok</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>paramDecimalValid</span> <span class='varop'>$</span> <span class='varid'>params</span>+<a name="line-270"></a> <span class='keyword'>where</span>+<a name="line-271"></a> <span class='varid'>paramDecimalValid</span> <span class='layout'>(</span><span class='varid'>pn</span><span class='layout'>,</span> <span class='varid'>pv</span><span class='layout'>)</span>+<a name="line-272"></a> <span class='keyglyph'>=</span> <span class='varid'>assert</span>+<a name="line-273"></a> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>.</span> <span class='varid'>const</span> <span class='varop'>$</span> <span class='conid'>True</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>pn</span> <span class='varop'>$</span> <span class='varid'>fctTableDecimal</span><span class='layout'>)</span> <span class='varid'>pv</span><span class='layout'>)</span>+<a name="line-274"></a> <span class='layout'>(</span><span class='varid'>errorMsgParam</span> <span class='varid'>pn</span> <span class='varid'>pv</span> <span class='varop'>.</span> <span class='varid'>showDecimal</span><span class='layout'>)</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'>-- | List of allowed params for the decimal and integer datatypes</span>+<a name="line-279"></a>+<a name="line-280"></a><a name="integerParams"></a><span class='definition'>integerParams</span> <span class='keyglyph'>::</span> <span class='conid'>AllowedParams</span>+<a name="line-281"></a><span class='definition'>integerParams</span> <span class='keyglyph'>=</span> <span class='varid'>xsd_pattern</span> <span class='conop'>:</span> <span class='varid'>map</span> <span class='varid'>fst</span> <span class='varid'>fctTableInteger</span>+<a name="line-282"></a>+<a name="line-283"></a><a name="fctTableInteger"></a><span class='definition'>fctTableInteger</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Integer</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-284"></a><span class='definition'>fctTableInteger</span>+<a name="line-285"></a> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_maxExclusive</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='varop'>></span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-286"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_minExclusive</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='varop'><</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-287"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_maxInclusive</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='varop'>>=</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-288"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_minInclusive</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='varop'><=</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-289"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_totalDigits</span><span class='layout'>,</span> <span class='varid'>cvi</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>l</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='varid'>totalD</span> <span class='varid'>v</span> <span class='varop'>==</span> <span class='varid'>toInteger</span> <span class='varid'>l</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-290"></a> <span class='keyglyph'>]</span>+<a name="line-291"></a> <span class='keyword'>where</span>+<a name="line-292"></a> <span class='varid'>cvi</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Integer</span> <span class='keyglyph'>-></span> <span class='conid'>Integer</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Integer</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>+<a name="line-293"></a> <span class='varid'>cvi</span> <span class='varid'>op</span> <span class='keyglyph'>=</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>-></span> <span class='varid'>isNumber</span> <span class='varid'>x</span> <span class='varop'>&&</span> <span class='varid'>read</span> <span class='varid'>x</span> <span class='varop'>`op`</span> <span class='varid'>y</span>+<a name="line-294"></a>+<a name="line-295"></a> <span class='varid'>totalD</span> <span class='varid'>i</span>+<a name="line-296"></a> <span class='keyglyph'>|</span> <span class='varid'>i</span> <span class='varop'><</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='varid'>totalD</span> <span class='layout'>(</span><span class='num'>0</span><span class='comment'>-</span><span class='varid'>i</span><span class='layout'>)</span>+<a name="line-297"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>toInteger</span> <span class='varop'>.</span> <span class='varid'>length</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>$</span> <span class='varid'>i</span>+<a name="line-298"></a>+<a name="line-299"></a><a name="integerValid"></a><span class='definition'>integerValid</span> <span class='keyglyph'>::</span> <span class='conid'>DatatypeName</span> <span class='keyglyph'>-></span> <span class='conid'>ParamList</span> <span class='keyglyph'>-></span> <span class='conid'>CheckA</span> <span class='conid'>Integer</span> <span class='conid'>Integer</span>+<a name="line-300"></a><span class='definition'>integerValid</span> <span class='varid'>datatype</span> <span class='varid'>params</span> +<a name="line-301"></a> <span class='keyglyph'>=</span> <span class='varid'>assertInRange</span>+<a name="line-302"></a> <span class='varop'>>>></span>+<a name="line-303"></a> <span class='layout'>(</span><span class='varid'>foldr</span> <span class='layout'>(</span><span class='varop'>>>></span><span class='layout'>)</span> <span class='varid'>ok</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>paramIntegerValid</span> <span class='varop'>$</span> <span class='varid'>params</span><span class='layout'>)</span>+<a name="line-304"></a> <span class='keyword'>where</span>+<a name="line-305"></a> <span class='varid'>assertInRange</span> <span class='keyglyph'>::</span> <span class='conid'>CheckA</span> <span class='conid'>Integer</span> <span class='conid'>Integer</span>+<a name="line-306"></a> <span class='varid'>assertInRange</span>+<a name="line-307"></a> <span class='keyglyph'>=</span> <span class='varid'>assert</span>+<a name="line-308"></a> <span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>True</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>datatype</span> <span class='varop'>$</span> <span class='varid'>integerRangeTable</span><span class='layout'>)</span>+<a name="line-309"></a> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>v</span> <span class='keyglyph'>-></span> <span class='layout'>(</span> <span class='str'>"Datatype "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>datatype</span> <span class='varop'>++</span>+<a name="line-310"></a> <span class='str'>" with value = "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>v</span> <span class='varop'>++</span>+<a name="line-311"></a> <span class='str'>" not in integer value range"</span>+<a name="line-312"></a> <span class='layout'>)</span>+<a name="line-313"></a> <span class='layout'>)</span>+<a name="line-314"></a> <span class='varid'>paramIntegerValid</span> <span class='layout'>(</span><span class='varid'>pn</span><span class='layout'>,</span> <span class='varid'>pv</span><span class='layout'>)</span>+<a name="line-315"></a> <span class='keyglyph'>=</span> <span class='varid'>assert</span>+<a name="line-316"></a> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varop'>.</span> <span class='varid'>const</span> <span class='varop'>$</span> <span class='conid'>True</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>pn</span> <span class='varop'>$</span> <span class='varid'>fctTableInteger</span><span class='layout'>)</span> <span class='varid'>pv</span><span class='layout'>)</span>+<a name="line-317"></a> <span class='layout'>(</span><span class='varid'>errorMsgParam</span> <span class='varid'>pn</span> <span class='varid'>pv</span> <span class='varop'>.</span> <span class='varid'>show</span><span class='layout'>)</span>+<a name="line-318"></a>+<a name="line-319"></a><a name="integerRangeTable"></a><span class='definition'>integerRangeTable</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'>Integer</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-320"></a><span class='definition'>integerRangeTable</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_integer</span><span class='layout'>,</span> <span class='varid'>const</span> <span class='conid'>True</span><span class='layout'>)</span>+<a name="line-321"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonPositiveInteger</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varop'><=</span><span class='num'>0</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-322"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_negativeInteger</span><span class='layout'>,</span> <span class='layout'>(</span> <span class='varop'><</span><span class='num'>0</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-323"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonNegativeInteger</span><span class='layout'>,</span> <span class='layout'>(</span><span class='varop'>>=</span><span class='num'>0</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-324"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_positiveInteger</span><span class='layout'>,</span> <span class='layout'>(</span> <span class='varop'>></span><span class='num'>0</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-325"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_long</span><span class='layout'>,</span> <span class='varid'>inR</span> <span class='num'>9223372036854775808</span><span class='layout'>)</span>+<a name="line-326"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_int</span><span class='layout'>,</span> <span class='varid'>inR</span> <span class='num'>2147483648</span><span class='layout'>)</span>+<a name="line-327"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_short</span><span class='layout'>,</span> <span class='varid'>inR</span> <span class='num'>32768</span><span class='layout'>)</span>+<a name="line-328"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_byte</span><span class='layout'>,</span> <span class='varid'>inR</span> <span class='num'>128</span><span class='layout'>)</span>+<a name="line-329"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedLong</span><span class='layout'>,</span> <span class='varid'>inP</span> <span class='num'>18446744073709551616</span><span class='layout'>)</span>+<a name="line-330"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedInt</span><span class='layout'>,</span> <span class='varid'>inP</span> <span class='num'>4294967296</span><span class='layout'>)</span>+<a name="line-331"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedShort</span><span class='layout'>,</span> <span class='varid'>inP</span> <span class='num'>65536</span><span class='layout'>)</span>+<a name="line-332"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedByte</span><span class='layout'>,</span> <span class='varid'>inP</span> <span class='num'>256</span><span class='layout'>)</span>+<a name="line-333"></a> <span class='keyglyph'>]</span>+<a name="line-334"></a> <span class='keyword'>where</span>+<a name="line-335"></a> <span class='varid'>inR</span> <span class='varid'>b</span> <span class='varid'>i</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='num'>0</span> <span class='comment'>-</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='varop'><=</span> <span class='varid'>i</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><</span> <span class='varid'>b</span>+<a name="line-336"></a> <span class='varid'>inP</span> <span class='varid'>b</span> <span class='varid'>i</span> <span class='keyglyph'>=</span> <span class='num'>0</span> <span class='varop'><=</span> <span class='varid'>i</span> <span class='varop'>&&</span> <span class='varid'>i</span> <span class='varop'><</span> <span class='varid'>b</span>+<a name="line-337"></a>+<a name="line-338"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-339"></a>+<a name="line-340"></a><span class='comment'>-- | List of allowed params for the list datatypes</span>+<a name="line-341"></a>+<a name="line-342"></a><a name="listParams"></a><span class='definition'>listParams</span> <span class='keyglyph'>::</span> <span class='conid'>AllowedParams</span>+<a name="line-343"></a><span class='definition'>listParams</span> <span class='keyglyph'>=</span> <span class='varid'>xsd_pattern</span> <span class='conop'>:</span> <span class='varid'>map</span> <span class='varid'>fst</span> <span class='varid'>fctTableList</span>+<a name="line-344"></a>+<a name="line-345"></a><a name="listValid"></a><span class='definition'>listValid</span> <span class='keyglyph'>::</span> <span class='conid'>DatatypeName</span> <span class='keyglyph'>-></span> <span class='conid'>ParamList</span> <span class='keyglyph'>-></span> <span class='conid'>CheckString</span>+<a name="line-346"></a><span class='definition'>listValid</span> <span class='varid'>d</span> <span class='keyglyph'>=</span> <span class='varid'>stringValidFT</span> <span class='varid'>fctTableList</span> <span class='varid'>d</span> <span class='num'>0</span> <span class='layout'>(</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span>+<a name="line-347"></a>+<a name="line-348"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-349"></a>+<a name="line-350"></a><a name="isNameList"></a><span class='definition'>isNameList</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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-351"></a><span class='definition'>isNameList</span> <span class='varid'>p</span> <span class='varid'>w</span>+<a name="line-352"></a> <span class='keyglyph'>=</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>ts</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>all</span> <span class='varid'>p</span> <span class='varid'>ts</span>+<a name="line-353"></a> <span class='keyword'>where</span>+<a name="line-354"></a> <span class='varid'>ts</span> <span class='keyglyph'>=</span> <span class='varid'>words</span> <span class='varid'>w</span>+<a name="line-355"></a>+<a name="line-356"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-357"></a>+<a name="line-358"></a><a name="rex"></a><span class='definition'>rex</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-359"></a><span class='definition'>rex</span> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='varid'>undefined</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>parseRegex</span>+<a name="line-360"></a>+<a name="line-361"></a><a name="isRex"></a><span class='definition'>isRex</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-362"></a><span class='definition'>isRex</span> <span class='varid'>ex</span> <span class='keyglyph'>=</span> <span class='varid'>isNothing</span> <span class='varop'>.</span> <span class='varid'>matchWithRE</span> <span class='varid'>ex</span>+<a name="line-363"></a>+<a name="line-364"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-365"></a>+<a name="line-366"></a><a name="rexLanguage"></a><span class='definition'>rexLanguage</span>+<a name="line-367"></a> <span class='layout'>,</span> <span class='varid'>rexHexBinary</span>+<a name="line-368"></a> <span class='layout'>,</span> <span class='varid'>rexBase64Binary</span>+<a name="line-369"></a> <span class='layout'>,</span> <span class='varid'>rexDecimal</span>+<a name="line-370"></a> <span class='layout'>,</span> <span class='varid'>rexInteger</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span>+<a name="line-371"></a>+<a name="line-372"></a><span class='definition'>rexLanguage</span> <span class='keyglyph'>=</span> <span class='varid'>rex</span> <span class='str'>"[A-Za-z]{1,8}(-[A-Za-z]{1,8})*"</span>+<a name="line-373"></a><a name="rexHexBinary"></a><span class='definition'>rexHexBinary</span> <span class='keyglyph'>=</span> <span class='varid'>rex</span> <span class='str'>"([A-Fa-f0-9]{2})*"</span>+<a name="line-374"></a><a name="rexBase64Binary"></a><span class='definition'>rexBase64Binary</span> <span class='keyglyph'>=</span> <span class='varid'>rex</span> <span class='varop'>$</span>+<a name="line-375"></a> <span class='str'>"("</span> <span class='varop'>++</span> <span class='varid'>b64</span> <span class='varop'>++</span> <span class='str'>"{4})*(("</span> <span class='varop'>++</span> <span class='varid'>b64</span> <span class='varop'>++</span> <span class='str'>"{2}==)|("</span> <span class='varop'>++</span> <span class='varid'>b64</span> <span class='varop'>++</span> <span class='str'>"{3}=)|)"</span>+<a name="line-376"></a> <span class='keyword'>where</span>+<a name="line-377"></a> <span class='varid'>b64</span> <span class='keyglyph'>=</span> <span class='str'>"[A-Za-z0-9+/]"</span>+<a name="line-378"></a><a name="rexDecimal"></a><span class='definition'>rexDecimal</span> <span class='keyglyph'>=</span> <span class='varid'>rex</span> <span class='str'>"(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))"</span>+<a name="line-379"></a><a name="rexInteger"></a><span class='definition'>rexInteger</span> <span class='keyglyph'>=</span> <span class='varid'>rex</span> <span class='str'>"(\\+|-)?[0-9]+"</span>+<a name="line-380"></a>+<a name="line-381"></a><a name="isLanguage"></a><span class='definition'>isLanguage</span>+<a name="line-382"></a> <span class='layout'>,</span> <span class='varid'>isHexBinary</span>+<a name="line-383"></a> <span class='layout'>,</span> <span class='varid'>isBase64Binary</span>+<a name="line-384"></a> <span class='layout'>,</span> <span class='varid'>isDecimal</span>+<a name="line-385"></a> <span class='layout'>,</span> <span class='varid'>isInteger</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-386"></a>+<a name="line-387"></a><span class='definition'>isLanguage</span> <span class='keyglyph'>=</span> <span class='varid'>isRex</span> <span class='varid'>rexLanguage</span>+<a name="line-388"></a><a name="isHexBinary"></a><span class='definition'>isHexBinary</span> <span class='keyglyph'>=</span> <span class='varid'>isRex</span> <span class='varid'>rexHexBinary</span>+<a name="line-389"></a><a name="isBase64Binary"></a><span class='definition'>isBase64Binary</span> <span class='keyglyph'>=</span> <span class='varid'>isRex</span> <span class='varid'>rexBase64Binary</span>+<a name="line-390"></a><a name="isDecimal"></a><span class='definition'>isDecimal</span> <span class='keyglyph'>=</span> <span class='varid'>isRex</span> <span class='varid'>rexDecimal</span>+<a name="line-391"></a><a name="isInteger"></a><span class='definition'>isInteger</span> <span class='keyglyph'>=</span> <span class='varid'>isRex</span> <span class='varid'>rexInteger</span>+<a name="line-392"></a>+<a name="line-393"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-394"></a>+<a name="line-395"></a><a name="normBase64"></a><span class='definition'>normBase64</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-396"></a><span class='definition'>normBase64</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='varid'>isB64</span>+<a name="line-397"></a> <span class='keyword'>where</span>+<a name="line-398"></a> <span class='varid'>isB64</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='layout'>(</span> <span class='chr'>'A'</span> <span class='varop'><=</span> <span class='varid'>c</span> <span class='varop'>&&</span> <span class='varid'>c</span> <span class='varop'><=</span> <span class='chr'>'Z'</span><span class='layout'>)</span>+<a name="line-399"></a> <span class='varop'>||</span>+<a name="line-400"></a> <span class='layout'>(</span> <span class='chr'>'a'</span> <span class='varop'><=</span> <span class='varid'>c</span> <span class='varop'>&&</span> <span class='varid'>c</span> <span class='varop'><=</span> <span class='chr'>'z'</span><span class='layout'>)</span>+<a name="line-401"></a> <span class='varop'>||</span>+<a name="line-402"></a> <span class='layout'>(</span> <span class='chr'>'0'</span> <span class='varop'><=</span> <span class='varid'>c</span> <span class='varop'>&&</span> <span class='varid'>c</span> <span class='varop'><=</span> <span class='chr'>'9'</span><span class='layout'>)</span>+<a name="line-403"></a> <span class='varop'>||</span>+<a name="line-404"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'+'</span>+<a name="line-405"></a> <span class='varop'>||</span>+<a name="line-406"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'/'</span>+<a name="line-407"></a> <span class='varop'>||</span>+<a name="line-408"></a> <span class='varid'>c</span> <span class='varop'>==</span> <span class='chr'>'='</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="readDecimal"></a><span class='definition'>readDecimal</span>+<a name="line-413"></a> <span class='layout'>,</span> <span class='varid'>readDecimal'</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Rational</span>+<a name="line-414"></a>+<a name="line-415"></a><span class='definition'>readDecimal</span> <span class='layout'>(</span><span class='chr'>'+'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>readDecimal'</span> <span class='varid'>s</span>+<a name="line-416"></a><span class='definition'>readDecimal</span> <span class='layout'>(</span><span class='chr'>'-'</span><span class='conop'>:</span><span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>negate</span> <span class='layout'>(</span><span class='varid'>readDecimal'</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-417"></a><span class='definition'>readDecimal</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>readDecimal'</span> <span class='varid'>s</span>+<a name="line-418"></a>+<a name="line-419"></a><a name="readDecimal'"></a><span class='definition'>readDecimal'</span> <span class='varid'>s</span>+<a name="line-420"></a> <span class='keyglyph'>|</span> <span class='varid'>f</span> <span class='varop'>==</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span> <span class='varop'>%</span> <span class='num'>1</span><span class='layout'>)</span>+<a name="line-421"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>n</span> <span class='varop'>%</span> <span class='num'>1</span><span class='layout'>)</span> <span class='varop'>+</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='varop'>%</span> <span class='layout'>(</span><span class='num'>10</span> <span class='varop'>^</span> <span class='layout'>(</span><span class='varid'>toInteger</span> <span class='layout'>(</span><span class='varid'>length</span> <span class='varid'>fs</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-422"></a> <span class='keyword'>where</span>+<a name="line-423"></a> <span class='layout'>(</span><span class='varid'>ns</span><span class='layout'>,</span> <span class='varid'>fs'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>'.'</span><span class='layout'>)</span> <span class='varid'>s</span>+<a name="line-424"></a> <span class='varid'>fs</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>1</span> <span class='varid'>fs'</span>+<a name="line-425"></a>+<a name="line-426"></a> <span class='varid'>f</span> <span class='keyglyph'>::</span> <span class='conid'>Integer</span>+<a name="line-427"></a> <span class='varid'>f</span> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>fs</span> <span class='keyglyph'>=</span> <span class='num'>0</span>+<a name="line-428"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>read</span> <span class='varid'>fs</span>+<a name="line-429"></a> <span class='varid'>n</span> <span class='keyglyph'>::</span> <span class='conid'>Integer</span>+<a name="line-430"></a> <span class='varid'>n</span> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>ns</span> <span class='keyglyph'>=</span> <span class='num'>0</span>+<a name="line-431"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>read</span> <span class='varid'>ns</span>+<a name="line-432"></a>+<a name="line-433"></a><a name="totalDigits"></a><span class='definition'>totalDigits</span>+<a name="line-434"></a> <span class='layout'>,</span> <span class='varid'>totalDigits'</span>+<a name="line-435"></a> <span class='layout'>,</span> <span class='varid'>fractionDigits</span> <span class='keyglyph'>::</span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>Int</span>+<a name="line-436"></a>+<a name="line-437"></a><span class='definition'>totalDigits</span> <span class='varid'>r</span>+<a name="line-438"></a> <span class='keyglyph'>|</span> <span class='varid'>r</span> <span class='varop'>==</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='num'>0</span>+<a name="line-439"></a> <span class='keyglyph'>|</span> <span class='varid'>r</span> <span class='varop'><</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='varid'>totalDigits'</span> <span class='varop'>.</span> <span class='varid'>negate</span> <span class='varop'>$</span> <span class='varid'>r</span>+<a name="line-440"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>totalDigits'</span> <span class='varop'>$</span> <span class='varid'>r</span>+<a name="line-441"></a>+<a name="line-442"></a><a name="totalDigits'"></a><span class='definition'>totalDigits'</span> <span class='varid'>r</span>+<a name="line-443"></a> <span class='keyglyph'>|</span> <span class='varid'>denominator</span> <span class='varid'>r</span> <span class='varop'>==</span> <span class='num'>1</span> <span class='keyglyph'>=</span> <span class='varid'>length</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>numerator</span> <span class='varop'>$</span> <span class='varid'>r</span>+<a name="line-444"></a> <span class='keyglyph'>|</span> <span class='varid'>r</span> <span class='varop'><</span> <span class='layout'>(</span><span class='num'>1</span><span class='varop'>%</span><span class='num'>1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>x</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>totalDigits'</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varop'>+</span> <span class='layout'>(</span><span class='num'>1</span><span class='varop'>%</span><span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>r</span>+<a name="line-445"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>totalDigits'</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varop'>*</span> <span class='layout'>(</span><span class='num'>10</span> <span class='varop'>%</span> <span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>r</span>+<a name="line-446"></a>+<a name="line-447"></a><a name="fractionDigits"></a><span class='definition'>fractionDigits</span> <span class='varid'>r</span>+<a name="line-448"></a> <span class='keyglyph'>|</span> <span class='varid'>denominator</span> <span class='varid'>r</span> <span class='varop'>==</span> <span class='num'>1</span> <span class='keyglyph'>=</span> <span class='num'>0</span>+<a name="line-449"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varop'>+</span><span class='num'>1</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>fractionDigits</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varop'>*</span> <span class='layout'>(</span><span class='num'>10</span> <span class='varop'>%</span> <span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>r</span>+<a name="line-450"></a>+<a name="line-451"></a><a name="showDecimal"></a><span class='definition'>showDecimal</span>+<a name="line-452"></a> <span class='layout'>,</span> <span class='varid'>showDecimal'</span> <span class='keyglyph'>::</span> <span class='conid'>Rational</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-453"></a>+<a name="line-454"></a><span class='definition'>showDecimal</span> <span class='varid'>d</span>+<a name="line-455"></a> <span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'><</span> <span class='num'>0</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='chr'>'-'</span><span class='conop'>:</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>showDecimal'</span> <span class='varop'>.</span> <span class='varid'>negate</span> <span class='varop'>$</span> <span class='varid'>d</span>+<a name="line-456"></a> <span class='keyglyph'>|</span> <span class='varid'>d</span> <span class='varop'><</span> <span class='num'>1</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>1</span> <span class='varop'>.</span> <span class='varid'>showDecimal'</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varop'>+</span> <span class='layout'>(</span><span class='num'>1</span><span class='varop'>%</span><span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>d</span>+<a name="line-457"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>showDecimal'</span> <span class='varop'>$</span> <span class='varid'>d</span>+<a name="line-458"></a>+<a name="line-459"></a><a name="showDecimal'"></a><span class='definition'>showDecimal'</span> <span class='varid'>d</span>+<a name="line-460"></a> <span class='keyglyph'>|</span> <span class='varid'>denominator</span> <span class='varid'>d</span> <span class='varop'>==</span> <span class='num'>1</span> <span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>numerator</span> <span class='varop'>$</span> <span class='varid'>d</span>+<a name="line-461"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>times10</span> <span class='num'>0</span> <span class='varop'>$</span> <span class='varid'>d</span>+<a name="line-462"></a> <span class='keyword'>where</span>+<a name="line-463"></a> <span class='varid'>times10</span> <span class='varid'>i'</span> <span class='varid'>d'</span>+<a name="line-464"></a> <span class='keyglyph'>|</span> <span class='varid'>denominator</span> <span class='varid'>d'</span> <span class='varop'>==</span> <span class='num'>1</span> <span class='keyglyph'>=</span> <span class='keyword'>let</span>+<a name="line-465"></a> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>y</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'>reverse</span> <span class='varop'>.</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>numerator</span> <span class='varop'>$</span> <span class='varid'>d'</span>+<a name="line-466"></a> <span class='keyword'>in</span>+<a name="line-467"></a> <span class='varid'>reverse</span> <span class='varid'>y</span> <span class='varop'>++</span> <span class='str'>"."</span> <span class='varop'>++</span> <span class='varid'>reverse</span> <span class='varid'>x</span>+<a name="line-468"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>times10</span> <span class='layout'>(</span><span class='varid'>i'</span> <span class='varop'>+</span> <span class='num'>1</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>d'</span> <span class='varop'>*</span> <span class='layout'>(</span><span class='num'>10</span> <span class='varop'>%</span> <span class='num'>1</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-469"></a> +<a name="line-470"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-471"></a>+<a name="line-472"></a><span class='comment'>-- | Tests whether a XML instance value matches a data-pattern.</span>+<a name="line-473"></a><span class='comment'>-- (see also: 'stringValid')</span>+<a name="line-474"></a>+<a name="line-475"></a><a name="datatypeAllowsW3C"></a><span class='definition'>datatypeAllowsW3C</span> <span class='keyglyph'>::</span> <span class='conid'>DatatypeAllows</span>+<a name="line-476"></a><span class='definition'>datatypeAllowsW3C</span> <span class='varid'>d</span> <span class='varid'>params</span> <span class='varid'>value</span> <span class='keyword'>_</span>+<a name="line-477"></a> <span class='keyglyph'>=</span> <span class='varid'>performCheck</span> <span class='varid'>check</span> <span class='varid'>value</span>+<a name="line-478"></a> <span class='keyword'>where</span>+<a name="line-479"></a> <span class='varid'>validString</span> <span class='varid'>normFct</span>+<a name="line-480"></a> <span class='keyglyph'>=</span> <span class='varid'>validPattern</span>+<a name="line-481"></a> <span class='varop'>>>></span>+<a name="line-482"></a> <span class='varid'>arr</span> <span class='varid'>normFct</span>+<a name="line-483"></a> <span class='varop'>>>></span>+<a name="line-484"></a> <span class='varid'>validLength</span>+<a name="line-485"></a>+<a name="line-486"></a> <span class='varid'>validNormString</span>+<a name="line-487"></a> <span class='keyglyph'>=</span> <span class='varid'>validString</span> <span class='varid'>normalizeWhitespace</span>+<a name="line-488"></a>+<a name="line-489"></a> <span class='varid'>validPattern</span>+<a name="line-490"></a> <span class='keyglyph'>=</span> <span class='varid'>patternValid</span> <span class='varid'>params</span>+<a name="line-491"></a>+<a name="line-492"></a> <span class='varid'>validLength</span>+<a name="line-493"></a> <span class='keyglyph'>=</span> <span class='varid'>stringValid</span> <span class='varid'>d</span> <span class='num'>0</span> <span class='layout'>(</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span> <span class='varid'>params</span>+<a name="line-494"></a>+<a name="line-495"></a> <span class='varid'>validList</span>+<a name="line-496"></a> <span class='keyglyph'>=</span> <span class='varid'>validPattern</span>+<a name="line-497"></a> <span class='varop'>>>></span>+<a name="line-498"></a> <span class='varid'>arr</span> <span class='varid'>normalizeWhitespace</span>+<a name="line-499"></a> <span class='varop'>>>></span>+<a name="line-500"></a> <span class='varid'>validListLength</span>+<a name="line-501"></a>+<a name="line-502"></a> <span class='varid'>validListLength</span>+<a name="line-503"></a> <span class='keyglyph'>=</span> <span class='varid'>listValid</span> <span class='varid'>d</span> <span class='varid'>params</span>+<a name="line-504"></a>+<a name="line-505"></a> <span class='varid'>validName</span> <span class='varid'>isN</span>+<a name="line-506"></a> <span class='keyglyph'>=</span> <span class='varid'>assertW3C</span> <span class='varid'>isN</span>+<a name="line-507"></a>+<a name="line-508"></a> <span class='varid'>validNCName</span>+<a name="line-509"></a> <span class='keyglyph'>=</span> <span class='varid'>validNormString</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='varid'>isNCName</span>+<a name="line-510"></a>+<a name="line-511"></a> <span class='varid'>validQName</span>+<a name="line-512"></a> <span class='keyglyph'>=</span> <span class='varid'>validNormString</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='varid'>isWellformedQualifiedName</span>+<a name="line-513"></a>+<a name="line-514"></a> <span class='varid'>validDecimal</span>+<a name="line-515"></a> <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='varid'>normalizeWhitespace</span>+<a name="line-516"></a> <span class='varop'>>>></span>+<a name="line-517"></a> <span class='varid'>assertW3C</span> <span class='varid'>isDecimal</span>+<a name="line-518"></a> <span class='varop'>>>></span>+<a name="line-519"></a> <span class='varid'>checkWith</span> <span class='varid'>readDecimal</span> <span class='layout'>(</span><span class='varid'>decimalValid</span> <span class='varid'>params</span><span class='layout'>)</span>+<a name="line-520"></a>+<a name="line-521"></a> <span class='varid'>validInteger</span> <span class='varid'>inRange</span>+<a name="line-522"></a> <span class='keyglyph'>=</span> <span class='varid'>validPattern</span>+<a name="line-523"></a> <span class='varop'>>>></span>+<a name="line-524"></a> <span class='varid'>arr</span> <span class='varid'>normalizeWhitespace</span>+<a name="line-525"></a> <span class='varop'>>>></span>+<a name="line-526"></a> <span class='varid'>assertW3C</span> <span class='varid'>isInteger</span>+<a name="line-527"></a> <span class='varop'>>>></span>+<a name="line-528"></a> <span class='varid'>checkWith</span> <span class='varid'>read</span> <span class='layout'>(</span><span class='varid'>integerValid</span> <span class='varid'>inRange</span> <span class='varid'>params</span><span class='layout'>)</span>+<a name="line-529"></a>+<a name="line-530"></a> <span class='varid'>check</span> <span class='keyglyph'>::</span> <span class='conid'>CheckString</span>+<a name="line-531"></a> <span class='varid'>check</span> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='varid'>notFound</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>d</span> <span class='varop'>$</span> <span class='varid'>checks</span>+<a name="line-532"></a>+<a name="line-533"></a> <span class='varid'>notFound</span> <span class='keyglyph'>=</span> <span class='varid'>failure</span> <span class='varop'>$</span> <span class='varid'>errorMsgDataTypeNotAllowed</span> <span class='varid'>w3cNS</span> <span class='varid'>d</span> <span class='varid'>params</span>+<a name="line-534"></a>+<a name="line-535"></a> <span class='varid'>checks</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'>CheckA</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-536"></a> <span class='varid'>checks</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_string</span><span class='layout'>,</span> <span class='varid'>validString</span> <span class='varid'>id</span><span class='layout'>)</span>+<a name="line-537"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_normalizedString</span><span class='layout'>,</span> <span class='varid'>validString</span> <span class='varid'>normalizeBlanks</span><span class='layout'>)</span>+<a name="line-538"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_token</span><span class='layout'>,</span> <span class='varid'>validNormString</span><span class='layout'>)</span>+<a name="line-539"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_language</span><span class='layout'>,</span> <span class='varid'>validNormString</span> <span class='varop'>>>></span> <span class='varid'>assertW3C</span> <span class='varid'>isLanguage</span><span class='layout'>)</span>+<a name="line-540"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKEN</span><span class='layout'>,</span> <span class='varid'>validNormString</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='varid'>isNmtoken</span><span class='layout'>)</span>+<a name="line-541"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKENS</span><span class='layout'>,</span> <span class='varid'>validList</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='layout'>(</span><span class='varid'>isNameList</span> <span class='varid'>isNmtoken</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-542"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_Name</span><span class='layout'>,</span> <span class='varid'>validNormString</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='varid'>isName</span><span class='layout'>)</span>+<a name="line-543"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NCName</span><span class='layout'>,</span> <span class='varid'>validNCName</span><span class='layout'>)</span>+<a name="line-544"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ID</span><span class='layout'>,</span> <span class='varid'>validNCName</span><span class='layout'>)</span>+<a name="line-545"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREF</span><span class='layout'>,</span> <span class='varid'>validNCName</span><span class='layout'>)</span>+<a name="line-546"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREFS</span><span class='layout'>,</span> <span class='varid'>validList</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='layout'>(</span><span class='varid'>isNameList</span> <span class='varid'>isNCName</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-547"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITY</span><span class='layout'>,</span> <span class='varid'>validNCName</span><span class='layout'>)</span>+<a name="line-548"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITIES</span><span class='layout'>,</span> <span class='varid'>validList</span> <span class='varop'>>>></span> <span class='varid'>validName</span> <span class='layout'>(</span><span class='varid'>isNameList</span> <span class='varid'>isNCName</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-549"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_anyURI</span><span class='layout'>,</span> <span class='varid'>validName</span> <span class='varid'>isURIReference</span> <span class='varop'>>>></span> <span class='varid'>validString</span> <span class='varid'>escapeURI</span><span class='layout'>)</span>+<a name="line-550"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_QName</span><span class='layout'>,</span> <span class='varid'>validQName</span><span class='layout'>)</span>+<a name="line-551"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NOTATION</span><span class='layout'>,</span> <span class='varid'>validQName</span><span class='layout'>)</span>+<a name="line-552"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_hexBinary</span><span class='layout'>,</span> <span class='varid'>validString</span> <span class='varid'>id</span> <span class='varop'>>>></span> <span class='varid'>assertW3C</span> <span class='varid'>isHexBinary</span><span class='layout'>)</span>+<a name="line-553"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_base64Binary</span><span class='layout'>,</span> <span class='varid'>validString</span> <span class='varid'>normBase64</span> <span class='varop'>>>></span> <span class='varid'>assertW3C</span> <span class='varid'>isBase64Binary</span><span class='layout'>)</span>+<a name="line-554"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_decimal</span><span class='layout'>,</span> <span class='varid'>validPattern</span> <span class='varop'>>>></span> <span class='varid'>validDecimal</span><span class='layout'>)</span>+<a name="line-555"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_integer</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_integer</span><span class='layout'>)</span>+<a name="line-556"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonPositiveInteger</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_nonPositiveInteger</span><span class='layout'>)</span>+<a name="line-557"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_negativeInteger</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_negativeInteger</span><span class='layout'>)</span>+<a name="line-558"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_nonNegativeInteger</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_nonNegativeInteger</span><span class='layout'>)</span>+<a name="line-559"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_positiveInteger</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_positiveInteger</span><span class='layout'>)</span>+<a name="line-560"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_long</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_long</span><span class='layout'>)</span>+<a name="line-561"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_int</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_int</span><span class='layout'>)</span>+<a name="line-562"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_short</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_short</span><span class='layout'>)</span>+<a name="line-563"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_byte</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_byte</span><span class='layout'>)</span>+<a name="line-564"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedLong</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_unsignedLong</span><span class='layout'>)</span>+<a name="line-565"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedInt</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_unsignedInt</span><span class='layout'>)</span>+<a name="line-566"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedShort</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_unsignedShort</span><span class='layout'>)</span>+<a name="line-567"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_unsignedByte</span><span class='layout'>,</span> <span class='varid'>validInteger</span> <span class='varid'>xsd_unsignedByte</span><span class='layout'>)</span>+<a name="line-568"></a> <span class='keyglyph'>]</span>+<a name="line-569"></a> <span class='varid'>assertW3C</span> <span class='varid'>p</span> <span class='keyglyph'>=</span> <span class='varid'>assert</span> <span class='varid'>p</span> <span class='varid'>errW3C</span>+<a name="line-570"></a> <span class='varid'>errW3C</span> <span class='keyglyph'>=</span> <span class='varid'>errorMsgDataLibQName</span> <span class='varid'>w3cNS</span> <span class='varid'>d</span>+<a name="line-571"></a>+<a name="line-572"></a><span class='comment'>-- ----------------------------------------</span>+<a name="line-573"></a>+<a name="line-574"></a><span class='comment'>-- | Tests whether a XML instance value matches a value-pattern.</span>+<a name="line-575"></a>+<a name="line-576"></a><a name="datatypeEqualW3C"></a><span class='definition'>datatypeEqualW3C</span> <span class='keyglyph'>::</span> <span class='conid'>DatatypeEqual</span>+<a name="line-577"></a><span class='definition'>datatypeEqualW3C</span> <span class='varid'>d</span> <span class='varid'>s1</span> <span class='keyword'>_</span> <span class='varid'>s2</span> <span class='keyword'>_</span>+<a name="line-578"></a> <span class='keyglyph'>=</span> <span class='varid'>performCheck</span> <span class='varid'>check</span> <span class='layout'>(</span><span class='varid'>s1</span><span class='layout'>,</span> <span class='varid'>s2</span><span class='layout'>)</span>+<a name="line-579"></a> <span class='keyword'>where</span>+<a name="line-580"></a> <span class='varid'>check</span> <span class='keyglyph'>::</span> <span class='conid'>CheckA</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='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-581"></a> <span class='varid'>check</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>notFound</span> <span class='varid'>found</span> <span class='varop'>.</span> <span class='varid'>lookup</span> <span class='varid'>d</span> <span class='varop'>$</span> <span class='varid'>norm</span>+<a name="line-582"></a>+<a name="line-583"></a> <span class='varid'>notFound</span> <span class='keyglyph'>=</span> <span class='varid'>failure</span> <span class='varop'>$</span> <span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>errorMsgDataTypeNotAllowed0</span> <span class='varid'>w3cNS</span> <span class='varid'>d</span><span class='layout'>)</span>+<a name="line-584"></a>+<a name="line-585"></a> <span class='varid'>found</span> <span class='varid'>nf</span> <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='layout'>(</span><span class='varid'>x1</span><span class='layout'>,</span> <span class='varid'>x2</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>nf</span> <span class='varid'>x1</span><span class='layout'>,</span> <span class='varid'>nf</span> <span class='varid'>x2</span><span class='layout'>)</span><span class='layout'>)</span> <span class='comment'>-- normalize both values</span>+<a name="line-586"></a> <span class='varop'>>>></span>+<a name="line-587"></a> <span class='varid'>assert</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='layout'>(</span><span class='varop'>==</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>uncurry</span> <span class='varop'>$</span> <span class='varid'>errorMsgEqual</span> <span class='varid'>d</span><span class='layout'>)</span> <span class='comment'>-- and check on (==)</span>+<a name="line-588"></a>+<a name="line-589"></a> <span class='varid'>norm</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span> <span class='layout'>(</span><span class='varid'>xsd_string</span><span class='layout'>,</span> <span class='varid'>id</span> <span class='layout'>)</span>+<a name="line-590"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_normalizedString</span><span class='layout'>,</span> <span class='varid'>normalizeBlanks</span> <span class='layout'>)</span>+<a name="line-591"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_token</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-592"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_language</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-593"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKEN</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-594"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NMTOKENS</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-595"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_Name</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-596"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NCName</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-597"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ID</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-598"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREF</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-599"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_IDREFS</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-600"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITY</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-601"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_ENTITIES</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-602"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_anyURI</span><span class='layout'>,</span> <span class='varid'>escapeURI</span> <span class='varop'>.</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-603"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_QName</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-604"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_NOTATION</span><span class='layout'>,</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-605"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_hexBinary</span><span class='layout'>,</span> <span class='varid'>id</span> <span class='layout'>)</span>+<a name="line-606"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_base64Binary</span><span class='layout'>,</span> <span class='varid'>normBase64</span> <span class='layout'>)</span>+<a name="line-607"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varid'>xsd_decimal</span><span class='layout'>,</span> <span class='varid'>show</span> <span class='varop'>.</span> <span class='varid'>readDecimal</span> <span class='varop'>.</span> <span class='varid'>normalizeWhitespace</span> <span class='layout'>)</span>+<a name="line-608"></a> <span class='keyglyph'>]</span>+<a name="line-609"></a>+<a name="line-610"></a><span class='comment'>-- ----------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-RelaxNG-XmlSchema-Regex.html view
@@ -47,259 +47,281 @@ <a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>nullable</span> <a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>delta</span> <a name="line-41"></a> <span class='layout'>,</span> <span class='varid'>matchWithRE</span>-<a name="line-42"></a> <span class='layout'>)</span>-<a name="line-43"></a><span class='keyword'>where</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'>Maybe</span>+<a name="line-42"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'><&&></span><span class='layout'>)</span>+<a name="line-43"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='varop'><||></span><span class='layout'>)</span>+<a name="line-44"></a> <span class='layout'>)</span>+<a name="line-45"></a><span class='keyword'>where</span> <a name="line-46"></a>-<a name="line-47"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-47"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span> <a name="line-48"></a>-<a name="line-49"></a><a name="Regex"></a><span class='keyword'>data</span> <span class='conid'>Regex</span> <span class='keyglyph'>=</span> <span class='conid'>Zero</span> <span class='conid'>String</span>-<a name="line-50"></a> <span class='keyglyph'>|</span> <span class='conid'>Unit</span>-<a name="line-51"></a> <span class='keyglyph'>|</span> <span class='conid'>Sym</span> <span class='layout'>(</span><span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>-<a name="line-52"></a> <span class='keyglyph'>|</span> <span class='conid'>Dot</span>-<a name="line-53"></a> <span class='keyglyph'>|</span> <span class='conid'>Star</span> <span class='conid'>Regex</span>-<a name="line-54"></a> <span class='keyglyph'>|</span> <span class='conid'>Alt</span> <span class='conid'>Regex</span> <span class='conid'>Regex</span>-<a name="line-55"></a> <span class='keyglyph'>|</span> <span class='conid'>Seq</span> <span class='conid'>Regex</span> <span class='conid'>Regex</span>-<a name="line-56"></a> <span class='keyglyph'>|</span> <span class='conid'>Rep</span> <span class='conid'>Int</span> <span class='conid'>Regex</span> <span class='comment'>-- 1 or more repetitions</span>-<a name="line-57"></a> <span class='keyglyph'>|</span> <span class='conid'>Rng</span> <span class='conid'>Int</span> <span class='conid'>Int</span> <span class='conid'>Regex</span> <span class='comment'>-- n..m repetitions</span>-<a name="line-58"></a> <span class='keyglyph'>|</span> <span class='conid'>Dif</span> <span class='conid'>Regex</span> <span class='conid'>Regex</span> <span class='comment'>-- r1 - r2</span>-<a name="line-59"></a>-<a name="line-60"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-49"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-50"></a>+<a name="line-51"></a><a name="Regex"></a><span class='keyword'>data</span> <span class='conid'>Regex</span> <span class='keyglyph'>=</span> <span class='conid'>Zero</span> <span class='conid'>String</span>+<a name="line-52"></a> <span class='keyglyph'>|</span> <span class='conid'>Unit</span>+<a name="line-53"></a> <span class='keyglyph'>|</span> <span class='conid'>Sym</span> <span class='layout'>(</span><span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>+<a name="line-54"></a> <span class='keyglyph'>|</span> <span class='conid'>Dot</span>+<a name="line-55"></a> <span class='keyglyph'>|</span> <span class='conid'>Star</span> <span class='conid'>Regex</span>+<a name="line-56"></a> <span class='keyglyph'>|</span> <span class='conid'>Alt</span> <span class='conid'>Regex</span> <span class='conid'>Regex</span>+<a name="line-57"></a> <span class='keyglyph'>|</span> <span class='conid'>Seq</span> <span class='conid'>Regex</span> <span class='conid'>Regex</span>+<a name="line-58"></a> <span class='keyglyph'>|</span> <span class='conid'>Rep</span> <span class='conid'>Int</span> <span class='conid'>Regex</span> <span class='comment'>-- 1 or more repetitions</span>+<a name="line-59"></a> <span class='keyglyph'>|</span> <span class='conid'>Rng</span> <span class='conid'>Int</span> <span class='conid'>Int</span> <span class='conid'>Regex</span> <span class='comment'>-- n..m repetitions</span>+<a name="line-60"></a> <span class='keyglyph'>|</span> <span class='conid'>Dif</span> <span class='conid'>Regex</span> <span class='conid'>Regex</span> <span class='comment'>-- r1 - r2</span> <a name="line-61"></a>-<a name="line-62"></a><span class='comment'>{- just for documentation+<a name="line-62"></a><span class='comment'>-- ------------------------------------------------------------</span> <a name="line-63"></a>-<a name="line-64"></a>class Inv a where-<a name="line-65"></a> inv :: a -> Bool-<a name="line-66"></a>-<a name="line-67"></a>instance Inv Regex where-<a name="line-68"></a> inv (Zero _) = True-<a name="line-69"></a> inv Unit = True-<a name="line-70"></a> inv (Sym p) = not . null . chars $ p-<a name="line-71"></a> inv Dot = True-<a name="line-72"></a> inv (Star e) = inv e-<a name="line-73"></a> inv (Alt e1 e2) = inv e1 &&-<a name="line-74"></a> inv e2-<a name="line-75"></a> inv (Seq e1 e2) = inv e1 &&+<a name="line-64"></a><span class='comment'>{- just for documentation+<a name="line-65"></a>+<a name="line-66"></a>class Inv a where+<a name="line-67"></a> inv :: a -> Bool+<a name="line-68"></a>+<a name="line-69"></a>instance Inv Regex where+<a name="line-70"></a> inv (Zero _) = True+<a name="line-71"></a> inv Unit = True+<a name="line-72"></a> inv (Sym p) = not . null . chars $ p+<a name="line-73"></a> inv Dot = True+<a name="line-74"></a> inv (Star e) = inv e+<a name="line-75"></a> inv (Alt e1 e2) = inv e1 && <a name="line-76"></a> inv e2-<a name="line-77"></a> inv (Rep i e) = i > 0 && inv e-<a name="line-78"></a> inv (Rng i j e) = (i < j || (i == j && i > 1)) &&-<a name="line-79"></a> inv e-<a name="line-80"></a> inv (Dif e1 e2) = inv e1 &&-<a name="line-81"></a> inv e2-<a name="line-82"></a>-}</span>-<a name="line-83"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-84"></a><span class='comment'>--</span>-<a name="line-85"></a><span class='comment'>-- smart constructors</span>-<a name="line-86"></a>+<a name="line-77"></a> inv (Seq e1 e2) = inv e1 &&+<a name="line-78"></a> inv e2+<a name="line-79"></a> inv (Rep i e) = i > 0 && inv e+<a name="line-80"></a> inv (Rng i j e) = (i < j || (i == j && i > 1)) &&+<a name="line-81"></a> inv e+<a name="line-82"></a> inv (Dif e1 e2) = inv e1 &&+<a name="line-83"></a> inv e2+<a name="line-84"></a>-}</span>+<a name="line-85"></a>+<a name="line-86"></a><span class='comment'>-- ------------------------------------------------------------</span> <a name="line-87"></a><span class='comment'>-- | enumerate all chars specified by a predicate</span> <a name="line-88"></a><span class='comment'>--</span> <a name="line-89"></a><span class='comment'>-- this function is expensive, it should only be used for testing</span> <a name="line-90"></a>-<a name="line-91"></a><a name="chars"></a><span class='definition'>chars</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='keyglyph'>[</span><span class='conid'>Char</span><span class='keyglyph'>]</span>-<a name="line-92"></a><span class='definition'>chars</span> <span class='varid'>p</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='varid'>p</span> <span class='varop'>$</span> <span class='keyglyph'>[</span><span class='varid'>minBound</span> <span class='keyglyph'>..</span> <span class='varid'>maxBound</span><span class='keyglyph'>]</span>+<a name="line-91"></a><a name="chars"></a><span class='definition'>chars</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='keyglyph'>[</span><span class='conid'>Char</span><span class='keyglyph'>]</span>+<a name="line-92"></a><span class='definition'>chars</span> <span class='varid'>p</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='varid'>p</span> <span class='varop'>$</span> <span class='keyglyph'>[</span><span class='varid'>minBound</span> <span class='keyglyph'>..</span> <span class='varid'>maxBound</span><span class='keyglyph'>]</span> <a name="line-93"></a>-<a name="line-94"></a><a name="charRngs"></a><span class='definition'>charRngs</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Char</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Char</span><span class='layout'>,</span> <span class='conid'>Char</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-95"></a><span class='definition'>charRngs</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-96"></a><span class='definition'>charRngs</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'>charRng</span> <span class='varid'>x</span> <span class='varid'>xs</span>-<a name="line-97"></a> <span class='keyword'>where</span>-<a name="line-98"></a> <span class='varid'>charRng</span> <span class='varid'>y</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span><span class='varid'>y</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='conid'>[]</span>-<a name="line-99"></a> <span class='varid'>charRng</span> <span class='varid'>y</span> <span class='varid'>xs'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>x1</span><span class='conop'>:</span><span class='varid'>xs1</span><span class='layout'>)</span>-<a name="line-100"></a> <span class='keyglyph'>|</span> <span class='varid'>x1</span> <span class='varop'>==</span> <span class='varid'>succ</span> <span class='varid'>y</span> <span class='keyglyph'>=</span> <span class='varid'>charRng</span> <span class='varid'>x1</span> <span class='varid'>xs1</span>-<a name="line-101"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span><span class='varid'>y</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>charRngs</span> <span class='varid'>xs'</span>+<a name="line-94"></a><a name="charRngs"></a><span class='definition'>charRngs</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Char</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Char</span><span class='layout'>,</span> <span class='conid'>Char</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-95"></a><span class='definition'>charRngs</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-96"></a><span class='definition'>charRngs</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'>charRng</span> <span class='varid'>x</span> <span class='varid'>xs</span>+<a name="line-97"></a> <span class='keyword'>where</span>+<a name="line-98"></a> <span class='varid'>charRng</span> <span class='varid'>y</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span><span class='varid'>y</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='conid'>[]</span>+<a name="line-99"></a> <span class='varid'>charRng</span> <span class='varid'>y</span> <span class='varid'>xs'</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>x1</span><span class='conop'>:</span><span class='varid'>xs1</span><span class='layout'>)</span>+<a name="line-100"></a> <span class='keyglyph'>|</span> <span class='varid'>x1</span> <span class='varop'>==</span> <span class='varid'>succ</span> <span class='varid'>y</span> <span class='keyglyph'>=</span> <span class='varid'>charRng</span> <span class='varid'>x1</span> <span class='varid'>xs1</span>+<a name="line-101"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span><span class='varid'>y</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>charRngs</span> <span class='varid'>xs'</span> <a name="line-102"></a>-<a name="line-103"></a><a name="mkZero"></a><span class='definition'>mkZero</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-104"></a><span class='definition'>mkZero</span> <span class='keyglyph'>=</span> <span class='conid'>Zero</span>-<a name="line-105"></a>-<a name="line-106"></a><a name="mkUnit"></a><span class='definition'>mkUnit</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span>-<a name="line-107"></a><span class='definition'>mkUnit</span> <span class='keyglyph'>=</span> <span class='conid'>Unit</span>-<a name="line-108"></a>-<a name="line-109"></a><a name="mkSym"></a><span class='definition'>mkSym</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'>Regex</span>-<a name="line-110"></a><span class='definition'>mkSym</span> <span class='keyglyph'>=</span> <span class='conid'>Sym</span>-<a name="line-111"></a>-<a name="line-112"></a><a name="mkSym1"></a><span class='definition'>mkSym1</span> <span class='keyglyph'>::</span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-113"></a><span class='definition'>mkSym1</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkSym</span> <span class='layout'>(</span><span class='varop'>==</span><span class='varid'>c</span><span class='layout'>)</span>+<a name="line-103"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-104"></a><span class='comment'>--</span>+<a name="line-105"></a><span class='comment'>-- smart constructors</span>+<a name="line-106"></a>+<a name="line-107"></a><a name="mkZero"></a><span class='definition'>mkZero</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-108"></a><span class='definition'>mkZero</span> <span class='keyglyph'>=</span> <span class='conid'>Zero</span>+<a name="line-109"></a><span class='comment'>{-# INLINE mkZero #-}</span>+<a name="line-110"></a>+<a name="line-111"></a><a name="mkUnit"></a><span class='definition'>mkUnit</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span>+<a name="line-112"></a><span class='definition'>mkUnit</span> <span class='keyglyph'>=</span> <span class='conid'>Unit</span>+<a name="line-113"></a><span class='comment'>{-# INLINE mkUnit #-}</span> <a name="line-114"></a>-<a name="line-115"></a><a name="mkSymRng"></a><span class='definition'>mkSymRng</span> <span class='keyglyph'>::</span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-116"></a><span class='definition'>mkSymRng</span> <span class='varid'>c1</span> <span class='varid'>c2</span>-<a name="line-117"></a> <span class='keyglyph'>|</span> <span class='varid'>c1</span> <span class='varop'>==</span> <span class='varid'>minBound</span> <span class='varop'>&&</span>-<a name="line-118"></a> <span class='varid'>c2</span> <span class='varop'>==</span> <span class='varid'>maxBound</span> <span class='keyglyph'>=</span> <span class='varid'>mkDot</span>-<a name="line-119"></a> <span class='keyglyph'>|</span> <span class='varid'>c1</span> <span class='varop'><=</span> <span class='varid'>c2</span> <span class='keyglyph'>=</span> <span class='varid'>mkSym</span> <span class='varop'>$</span> <span class='layout'>(</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>x</span> <span class='varop'>>=</span> <span class='varid'>c1</span> <span class='varop'>&&</span> <span class='varid'>x</span><span class='varop'><=</span> <span class='varid'>c2</span> <span class='layout'>)</span>-<a name="line-120"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='varop'>$</span> <span class='str'>"empty char range"</span>+<a name="line-115"></a><a name="mkSym"></a><span class='definition'>mkSym</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'>Regex</span>+<a name="line-116"></a><span class='definition'>mkSym</span> <span class='keyglyph'>=</span> <span class='conid'>Sym</span>+<a name="line-117"></a><span class='comment'>{-# INLINE mkSym #-}</span>+<a name="line-118"></a>+<a name="line-119"></a><a name="mkSym1"></a><span class='definition'>mkSym1</span> <span class='keyglyph'>::</span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-120"></a><span class='definition'>mkSym1</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkSym</span> <span class='layout'>(</span><span class='varop'>==</span><span class='varid'>c</span><span class='layout'>)</span> <a name="line-121"></a>-<a name="line-122"></a><a name="mkDot"></a><span class='definition'>mkDot</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span>-<a name="line-123"></a><span class='definition'>mkDot</span> <span class='keyglyph'>=</span> <span class='conid'>Dot</span>-<a name="line-124"></a>-<a name="line-125"></a><a name="mkStar"></a><span class='definition'>mkStar</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-126"></a><span class='definition'>mkStar</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkUnit</span> <span class='comment'>-- {}* == ()</span>-<a name="line-127"></a><span class='definition'>mkStar</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='varid'>e</span> <span class='comment'>-- ()* == ()</span>-<a name="line-128"></a><span class='definition'>mkStar</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Star</span> <span class='sel'>_e1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e</span> <span class='comment'>-- (r*)* == r*</span>-<a name="line-129"></a><span class='definition'>mkStar</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='num'>1</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkStar</span> <span class='varid'>e1</span> <span class='comment'>-- (r+)* == r*</span>-<a name="line-130"></a><span class='definition'>mkStar</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Alt</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>Star</span> <span class='layout'>(</span><span class='varid'>rmStar</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='comment'>-- (a*|b)* == (a|b)*</span>-<a name="line-131"></a><span class='definition'>mkStar</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='conid'>Star</span> <span class='varid'>e</span>+<a name="line-122"></a><a name="mkSymRng"></a><span class='definition'>mkSymRng</span> <span class='keyglyph'>::</span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-123"></a><span class='definition'>mkSymRng</span> <span class='varid'>c1</span> <span class='varid'>c2</span>+<a name="line-124"></a> <span class='keyglyph'>|</span> <span class='varid'>c1</span> <span class='varop'>==</span> <span class='varid'>minBound</span> <span class='varop'>&&</span>+<a name="line-125"></a> <span class='varid'>c2</span> <span class='varop'>==</span> <span class='varid'>maxBound</span> <span class='keyglyph'>=</span> <span class='varid'>mkDot</span>+<a name="line-126"></a> <span class='keyglyph'>|</span> <span class='varid'>c1</span> <span class='varop'><=</span> <span class='varid'>c2</span> <span class='keyglyph'>=</span> <span class='varid'>mkSym</span> <span class='varop'>$</span> <span class='layout'>(</span><span class='varop'>>=</span> <span class='varid'>c1</span><span class='layout'>)</span> <span class='varop'><&&></span> <span class='layout'>(</span><span class='varop'><=</span> <span class='varid'>c2</span><span class='layout'>)</span>+<a name="line-127"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='varop'>$</span> <span class='str'>"empty char range"</span>+<a name="line-128"></a>+<a name="line-129"></a><a name="mkDot"></a><span class='definition'>mkDot</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span>+<a name="line-130"></a><span class='definition'>mkDot</span> <span class='keyglyph'>=</span> <span class='conid'>Dot</span>+<a name="line-131"></a><span class='comment'>{-# INLINE mkDot #-}</span> <a name="line-132"></a>-<a name="line-133"></a><a name="rmStar"></a><span class='definition'>rmStar</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-134"></a><span class='definition'>rmStar</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='layout'>(</span><span class='varid'>rmStar</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>rmStar</span> <span class='varid'>e2</span><span class='layout'>)</span>-<a name="line-135"></a><span class='definition'>rmStar</span> <span class='layout'>(</span><span class='conid'>Star</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rmStar</span> <span class='varid'>e1</span>-<a name="line-136"></a><span class='definition'>rmStar</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='num'>1</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rmStar</span> <span class='varid'>e1</span>-<a name="line-137"></a><span class='definition'>rmStar</span> <span class='varid'>e1</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>-<a name="line-138"></a>-<a name="line-139"></a><a name="mkAlt"></a><span class='definition'>mkAlt</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-140"></a><span class='definition'>mkAlt</span> <span class='varid'>e1</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span> <span class='comment'>-- e1 u {} = e1</span>-<a name="line-141"></a><span class='definition'>mkAlt</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='varid'>e2</span> <span class='comment'>-- {} u e2 = e2</span>-<a name="line-142"></a><span class='definition'>mkAlt</span> <span class='varid'>e1</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Star</span> <span class='conid'>Dot</span><span class='layout'>)</span> <span class='sel'>_e2</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span> <span class='comment'>-- A* u e1 = A*</span>-<a name="line-143"></a><span class='definition'>mkAlt</span> <span class='sel'>_e1</span> <span class='varid'>e2</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Star</span> <span class='conid'>Dot</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e2</span> <span class='comment'>-- e1 u A* = A*</span>-<a name="line-144"></a><span class='definition'>mkAlt</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p1</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkSym</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>p1</span> <span class='varid'>x</span> <span class='varop'>||</span> <span class='varid'>p2</span> <span class='varid'>x</span> <span class='comment'>-- melting of predicates</span>-<a name="line-145"></a><span class='definition'>mkAlt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Sym</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='varid'>e2</span> <span class='varid'>e1</span> <span class='comment'>-- symmetry: predicates always first</span>-<a name="line-146"></a><span class='definition'>mkAlt</span> <span class='varid'>e1</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Sym</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e2</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Sym</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>e3</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='layout'>(</span><span class='varid'>mkAlt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>e3</span> <span class='comment'>-- prepare melting of predicates</span>-<a name="line-147"></a><span class='definition'>mkAlt</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>e3</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='varid'>e1</span> <span class='layout'>(</span><span class='varid'>mkAlt</span> <span class='varid'>e2</span> <span class='varid'>e3</span><span class='layout'>)</span> <span class='comment'>-- associativity</span>-<a name="line-148"></a><span class='definition'>mkAlt</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</span>-<a name="line-149"></a>-<a name="line-150"></a><a name="mkSeq"></a><span class='definition'>mkSeq</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-151"></a><span class='definition'>mkSeq</span> <span class='varid'>e1</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='sel'>_e2</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>-<a name="line-152"></a><span class='definition'>mkSeq</span> <span class='sel'>_e1</span> <span class='varid'>e2</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e2</span>-<a name="line-153"></a><span class='definition'>mkSeq</span> <span class='conid'>Unit</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='varid'>e2</span>-<a name="line-154"></a><span class='definition'>mkSeq</span> <span class='varid'>e1</span> <span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>-<a name="line-155"></a><span class='definition'>mkSeq</span> <span class='layout'>(</span><span class='conid'>Seq</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>e3</span> <span class='keyglyph'>=</span> <span class='varid'>mkSeq</span> <span class='varid'>e1</span> <span class='layout'>(</span><span class='varid'>mkSeq</span> <span class='varid'>e2</span> <span class='varid'>e3</span><span class='layout'>)</span>-<a name="line-156"></a><span class='definition'>mkSeq</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='conid'>Seq</span> <span class='varid'>e1</span> <span class='varid'>e2</span>+<a name="line-133"></a><a name="mkStar"></a><span class='definition'>mkStar</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-134"></a><span class='definition'>mkStar</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkUnit</span> <span class='comment'>-- {}* == ()</span>+<a name="line-135"></a><span class='definition'>mkStar</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='varid'>e</span> <span class='comment'>-- ()* == ()</span>+<a name="line-136"></a><span class='definition'>mkStar</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Star</span> <span class='sel'>_e1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e</span> <span class='comment'>-- (r*)* == r*</span>+<a name="line-137"></a><span class='definition'>mkStar</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='num'>1</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkStar</span> <span class='varid'>e1</span> <span class='comment'>-- (r+)* == r*</span>+<a name="line-138"></a><span class='definition'>mkStar</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Alt</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>Star</span> <span class='layout'>(</span><span class='varid'>rmStar</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='comment'>-- (a*|b)* == (a|b)*</span>+<a name="line-139"></a><span class='definition'>mkStar</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='conid'>Star</span> <span class='varid'>e</span>+<a name="line-140"></a>+<a name="line-141"></a><a name="rmStar"></a><span class='definition'>rmStar</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-142"></a><span class='definition'>rmStar</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='layout'>(</span><span class='varid'>rmStar</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>rmStar</span> <span class='varid'>e2</span><span class='layout'>)</span>+<a name="line-143"></a><span class='definition'>rmStar</span> <span class='layout'>(</span><span class='conid'>Star</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rmStar</span> <span class='varid'>e1</span>+<a name="line-144"></a><span class='definition'>rmStar</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='num'>1</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>rmStar</span> <span class='varid'>e1</span>+<a name="line-145"></a><span class='definition'>rmStar</span> <span class='varid'>e1</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>+<a name="line-146"></a>+<a name="line-147"></a><a name="mkAlt"></a><span class='definition'>mkAlt</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-148"></a><span class='definition'>mkAlt</span> <span class='varid'>e1</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span> <span class='comment'>-- e1 u {} = e1</span>+<a name="line-149"></a><span class='definition'>mkAlt</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='varid'>e2</span> <span class='comment'>-- {} u e2 = e2</span>+<a name="line-150"></a><span class='definition'>mkAlt</span> <span class='varid'>e1</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Star</span> <span class='conid'>Dot</span><span class='layout'>)</span> <span class='sel'>_e2</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span> <span class='comment'>-- A* u e1 = A*</span>+<a name="line-151"></a><span class='definition'>mkAlt</span> <span class='sel'>_e1</span> <span class='varid'>e2</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Star</span> <span class='conid'>Dot</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e2</span> <span class='comment'>-- e1 u A* = A*</span>+<a name="line-152"></a><span class='definition'>mkAlt</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p1</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkSym</span> <span class='varop'>$</span> <span class='varid'>p1</span> <span class='varop'><||></span> <span class='varid'>p2</span> <span class='comment'>-- melting of predicates</span>+<a name="line-153"></a><span class='definition'>mkAlt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Sym</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='varid'>e2</span> <span class='varid'>e1</span> <span class='comment'>-- symmetry: predicates always first</span>+<a name="line-154"></a><span class='definition'>mkAlt</span> <span class='varid'>e1</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Sym</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e2</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Sym</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='varid'>e3</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='layout'>(</span><span class='varid'>mkAlt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>e3</span> <span class='comment'>-- prepare melting of predicates</span>+<a name="line-155"></a><span class='definition'>mkAlt</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>e3</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='varid'>e1</span> <span class='layout'>(</span><span class='varid'>mkAlt</span> <span class='varid'>e2</span> <span class='varid'>e3</span><span class='layout'>)</span> <span class='comment'>-- associativity</span>+<a name="line-156"></a><span class='definition'>mkAlt</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <a name="line-157"></a>-<a name="line-158"></a><a name="mkRep"></a><span class='definition'>mkRep</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-159"></a><span class='definition'>mkRep</span> <span class='num'>0</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='varid'>mkStar</span> <span class='varid'>e</span>-<a name="line-160"></a><span class='definition'>mkRep</span> <span class='keyword'>_</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>-<a name="line-161"></a><span class='definition'>mkRep</span> <span class='keyword'>_</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>-<a name="line-162"></a><span class='definition'>mkRep</span> <span class='varid'>i</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='conid'>Rep</span> <span class='varid'>i</span> <span class='varid'>e</span>-<a name="line-163"></a>-<a name="line-164"></a><a name="mkRng"></a><span class='definition'>mkRng</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'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-165"></a><span class='definition'>mkRng</span> <span class='num'>0</span> <span class='num'>0</span> <span class='sel'>_e</span> <span class='keyglyph'>=</span> <span class='varid'>mkUnit</span>-<a name="line-166"></a><span class='definition'>mkRng</span> <span class='num'>1</span> <span class='num'>1</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>-<a name="line-167"></a><span class='definition'>mkRng</span> <span class='varid'>lb</span> <span class='varid'>ub</span> <span class='sel'>_e</span>-<a name="line-168"></a> <span class='keyglyph'>|</span> <span class='varid'>lb</span> <span class='varop'>></span> <span class='varid'>ub</span> <span class='keyglyph'>=</span> <span class='conid'>Zero</span> <span class='varop'>$</span>-<a name="line-169"></a> <span class='str'>"illegal range "</span> <span class='varop'>++</span>-<a name="line-170"></a> <span class='varid'>show</span> <span class='varid'>lb</span> <span class='varop'>++</span> <span class='str'>".."</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>ub</span>-<a name="line-171"></a><span class='definition'>mkRng</span> <span class='sel'>_l</span> <span class='sel'>_u</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>-<a name="line-172"></a><span class='definition'>mkRng</span> <span class='sel'>_l</span> <span class='sel'>_u</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>-<a name="line-173"></a><span class='definition'>mkRng</span> <span class='varid'>lb</span> <span class='varid'>ub</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='conid'>Rng</span> <span class='varid'>lb</span> <span class='varid'>ub</span> <span class='varid'>e</span>-<a name="line-174"></a>-<a name="line-175"></a><a name="mkOpt"></a><span class='definition'>mkOpt</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-176"></a><span class='definition'>mkOpt</span> <span class='keyglyph'>=</span> <span class='varid'>mkRng</span> <span class='num'>0</span> <span class='num'>1</span>-<a name="line-177"></a>-<a name="line-178"></a><a name="mkDif"></a><span class='definition'>mkDif</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-179"></a><span class='definition'>mkDif</span> <span class='varid'>e1</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='sel'>_e2</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>-<a name="line-180"></a><span class='definition'>mkDif</span> <span class='varid'>e1</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>-<a name="line-181"></a><span class='definition'>mkDif</span> <span class='sel'>_e1</span> <span class='layout'>(</span><span class='conid'>Star</span> <span class='conid'>Dot</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='str'>"empty set in difference expr"</span>-<a name="line-182"></a><span class='definition'>mkDif</span> <span class='conid'>Dot</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkSym</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>p</span><span class='layout'>)</span>-<a name="line-183"></a><span class='definition'>mkDif</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='conid'>Dot</span> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='str'>"empty set of chars in difference expr"</span>-<a name="line-184"></a><span class='definition'>mkDif</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p1</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p2</span><span class='layout'>)</span>-<a name="line-185"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>chars</span> <span class='varop'>$</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>p1</span> <span class='varid'>x</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>p2</span> <span class='varid'>x</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-186"></a> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='str'>"empty set of chars in difference expr"</span>-<a name="line-187"></a><span class='definition'>mkDif</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='conid'>Dif</span> <span class='varid'>e1</span> <span class='varid'>e2</span>-<a name="line-188"></a>-<a name="line-189"></a><a name="mkCompl"></a><span class='definition'>mkCompl</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-190"></a><span class='definition'>mkCompl</span> <span class='keyglyph'>=</span> <span class='varid'>mkDif</span> <span class='varid'>mkDot</span>-<a name="line-191"></a>-<a name="line-192"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-193"></a>-<a name="line-194"></a><span class='keyword'>instance</span> <span class='conid'>Show</span> <span class='conid'>Regex</span> <span class='keyword'>where</span>-<a name="line-195"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"{err:"</span> <span class='varop'>++</span> <span class='varid'>s</span> <span class='varop'>++</span> <span class='str'>"}"</span>-<a name="line-196"></a> <span class='varid'>show</span> <span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='str'>"()"</span>-<a name="line-197"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p</span><span class='layout'>)</span>-<a name="line-198"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='varop'>&&</span>-<a name="line-199"></a> <span class='varid'>rng1</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cs</span><span class='layout'>)</span>-<a name="line-200"></a> <span class='keyglyph'>=</span> <span class='varid'>escRng</span> <span class='varop'>.</span> <span class='varid'>head</span> <span class='varop'>$</span> <span class='varid'>cs</span>-<a name="line-201"></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'>concat</span> <span class='varid'>cs'</span> <span class='varop'>++</span> <span class='str'>"]"</span>-<a name="line-202"></a> <span class='keyword'>where</span>-<a name="line-203"></a> <span class='varid'>rng1</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span><span class='varid'>y</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>y</span>-<a name="line-204"></a> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>charRngs</span> <span class='varop'>.</span> <span class='varid'>chars</span> <span class='varop'>$</span> <span class='varid'>p</span>-<a name="line-205"></a> <span class='varid'>cs'</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>escRng</span> <span class='varid'>cs</span>-<a name="line-206"></a> <span class='varid'>escRng</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>y</span><span class='layout'>)</span>-<a name="line-207"></a> <span class='keyglyph'>|</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>y</span> <span class='keyglyph'>=</span> <span class='varid'>esc</span> <span class='varid'>x</span>-<a name="line-208"></a> <span class='keyglyph'>|</span> <span class='varid'>succ</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>y</span>-<a name="line-209"></a> <span class='keyglyph'>=</span> <span class='varid'>esc</span> <span class='varid'>x</span> <span class='varop'>++</span> <span class='varid'>esc</span> <span class='varid'>y</span>-<a name="line-210"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-211"></a> <span class='keyglyph'>=</span> <span class='varid'>esc</span> <span class='varid'>x</span> <span class='varop'>++</span> <span class='str'>"-"</span> <span class='varop'>++</span> <span class='varid'>esc</span> <span class='varid'>y</span>-<a name="line-212"></a> <span class='varid'>esc</span> <span class='varid'>x</span>-<a name="line-213"></a> <span class='keyglyph'>|</span> <span class='varid'>x</span> <span class='varop'>`elem`</span> <span class='str'>"\\-[]{}()*+?.^"</span>-<a name="line-214"></a> <span class='keyglyph'>=</span> <span class='chr'>'\\'</span><span class='conop'>:</span><span class='varid'>x</span><span class='conop'>:</span><span class='str'>""</span>-<a name="line-215"></a> <span class='keyglyph'>|</span> <span class='varid'>x</span> <span class='varop'>>=</span> <span class='chr'>' '</span> <span class='varop'>&&</span> <span class='varid'>x</span> <span class='varop'><=</span> <span class='chr'>'~'</span>-<a name="line-216"></a> <span class='keyglyph'>=</span> <span class='varid'>x</span><span class='conop'>:</span><span class='str'>""</span>-<a name="line-217"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>-<a name="line-218"></a> <span class='keyglyph'>=</span> <span class='str'>"&#"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>fromEnum</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>";"</span>-<a name="line-219"></a> <span class='varid'>show</span> <span class='conid'>Dot</span> <span class='keyglyph'>=</span> <span class='str'>"."</span>-<a name="line-220"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Star</span> <span class='varid'>e</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'>e</span> <span class='varop'>++</span> <span class='str'>")*"</span>-<a name="line-221"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</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'>e1</span> <span class='varop'>++</span> <span class='str'>"|"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>e2</span> <span class='varop'>++</span> <span class='str'>")"</span>-<a name="line-222"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Seq</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varid'>e1</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>e2</span>-<a name="line-223"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='num'>1</span> <span class='varid'>e</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'>e</span> <span class='varop'>++</span> <span class='str'>")+"</span>-<a name="line-224"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='varid'>i</span> <span class='varid'>e</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'>e</span> <span class='varop'>++</span> <span class='str'>"){"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>i</span> <span class='varop'>++</span> <span class='str'>",}"</span>-<a name="line-225"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Rng</span> <span class='num'>0</span> <span class='num'>1</span> <span class='varid'>e</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'>e</span> <span class='varop'>++</span> <span class='str'>")?"</span>-<a name="line-226"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Rng</span> <span class='varid'>i</span> <span class='varid'>j</span> <span class='varid'>e</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'>e</span> <span class='varop'>++</span> <span class='str'>"){"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>i</span> <span class='varop'>++</span> <span class='str'>","</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>j</span> <span class='varop'>++</span> <span class='str'>"}"</span>-<a name="line-227"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Dif</span> <span class='varid'>e1</span> <span class='varid'>e2</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'>e1</span> <span class='varop'>++</span> <span class='str'>"-"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>e2</span> <span class='varop'>++</span> <span class='str'>")"</span>-<a name="line-228"></a>-<a name="line-229"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-230"></a>-<a name="line-231"></a><a name="isZero"></a><span class='definition'>isZero</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-232"></a><span class='definition'>isZero</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-233"></a><span class='definition'>isZero</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-234"></a>-<a name="line-235"></a><a name="nullable"></a><span class='definition'>nullable</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-236"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-237"></a><span class='definition'>nullable</span> <span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-238"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='sel'>_p</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>False</span> <span class='comment'>-- assumption: p holds for at least one char</span>-<a name="line-239"></a><span class='definition'>nullable</span> <span class='conid'>Dot</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-240"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Star</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-241"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e1</span> <span class='varop'>||</span>-<a name="line-242"></a> <span class='varid'>nullable</span> <span class='varid'>e2</span>-<a name="line-243"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Seq</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e1</span> <span class='varop'>&&</span>-<a name="line-244"></a> <span class='varid'>nullable</span> <span class='varid'>e2</span>-<a name="line-245"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='sel'>_i</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-246"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Rng</span> <span class='varid'>i</span> <span class='keyword'>_</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>i</span> <span class='varop'>==</span> <span class='num'>0</span> <span class='varop'>||</span>-<a name="line-247"></a> <span class='varid'>nullable</span> <span class='varid'>e</span>-<a name="line-248"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Dif</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e1</span> <span class='varop'>&&</span>-<a name="line-249"></a> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>nullable</span> <span class='varid'>e2</span><span class='layout'>)</span>-<a name="line-250"></a>-<a name="line-251"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-252"></a>-<a name="line-253"></a><a name="delta"></a><span class='definition'>delta</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-254"></a><span class='definition'>delta</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>-<a name="line-255"></a><span class='definition'>delta</span> <span class='conid'>Unit</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='varop'>$</span>-<a name="line-256"></a> <span class='str'>"unexpected char "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>c</span>-<a name="line-257"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='varid'>c</span>-<a name="line-258"></a> <span class='keyglyph'>|</span> <span class='varid'>p</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkUnit</span>-<a name="line-259"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='varop'>$</span>-<a name="line-260"></a> <span class='str'>"unexpected char "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>c</span> <span class='varop'>++</span> <span class='str'>", expected: "</span> <span class='varop'>++</span> <span class='varid'>oneof</span> <span class='varop'>++</span> <span class='varid'>chars'</span>-<a name="line-261"></a> <span class='keyword'>where</span>-<a name="line-262"></a> <span class='layout'>(</span><span class='varid'>cs</span><span class='layout'>,</span> <span class='varid'>ds</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>splitAt</span> <span class='num'>40</span> <span class='layout'>(</span><span class='varid'>chars</span> <span class='varid'>p</span><span class='layout'>)</span>-<a name="line-263"></a> <span class='varid'>oneof</span>-<a name="line-264"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>""</span>-<a name="line-265"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='str'>"one of "</span>-<a name="line-266"></a> <span class='varid'>chars'</span>-<a name="line-267"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"'"</span> <span class='varop'>++</span> <span class='varid'>cs</span> <span class='varop'>++</span> <span class='str'>"'"</span>-<a name="line-268"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>ds</span> <span class='keyglyph'>=</span> <span class='str'>"["</span> <span class='varop'>++</span> <span class='varid'>cs</span> <span class='varop'>++</span> <span class='str'>"]"</span>-<a name="line-269"></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'>cs</span> <span class='varop'>++</span> <span class='str'>"...]"</span>-<a name="line-270"></a>-<a name="line-271"></a><span class='definition'>delta</span> <span class='conid'>Dot</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>mkUnit</span>-<a name="line-272"></a><span class='definition'>delta</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Star</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkSeq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e1</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='varid'>e</span>-<a name="line-273"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e1</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e2</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-274"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Seq</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>c</span>-<a name="line-275"></a> <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>e1</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='layout'>(</span><span class='varid'>mkSeq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e1</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e2</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-276"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>mkSeq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e1</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='varid'>e2</span>-<a name="line-277"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='varid'>i</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkSeq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>mkRep</span> <span class='layout'>(</span><span class='varid'>i</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span> <span class='varid'>e</span><span class='layout'>)</span>-<a name="line-278"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Rng</span> <span class='varid'>i</span> <span class='varid'>j</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkSeq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>mkRng</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>i</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span> <span class='varop'>`max`</span> <span class='num'>0</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>j</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span> <span class='varid'>e</span><span class='layout'>)</span>-<a name="line-279"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Dif</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkDif</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e1</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e2</span> <span class='varid'>c</span><span class='layout'>)</span>-<a name="line-280"></a>-<a name="line-281"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-282"></a>-<a name="line-283"></a><a name="delta'"></a><span class='definition'>delta'</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>-<a name="line-284"></a><span class='definition'>delta'</span> <span class='keyglyph'>=</span> <span class='varid'>foldl</span> <span class='varid'>delta</span>-<a name="line-285"></a>-<a name="line-286"></a><a name="matchWithRE"></a><span class='definition'>matchWithRE</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>String</span>-<a name="line-287"></a><span class='definition'>matchWithRE</span> <span class='varid'>e</span>-<a name="line-288"></a> <span class='keyglyph'>=</span> <span class='varid'>res</span> <span class='varop'>.</span> <span class='varid'>delta'</span> <span class='varid'>e</span>-<a name="line-289"></a> <span class='keyword'>where</span>-<a name="line-290"></a> <span class='varid'>res</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='varid'>err</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varid'>err</span>-<a name="line-291"></a> <span class='varid'>res</span> <span class='varid'>re</span>-<a name="line-292"></a> <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span> <span class='comment'>-- o.k.</span>-<a name="line-293"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varop'>$</span> <span class='str'>"input does not match "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>e</span>+<a name="line-158"></a><a name="mkSeq"></a><span class='definition'>mkSeq</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-159"></a><span class='definition'>mkSeq</span> <span class='varid'>e1</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='sel'>_e2</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>+<a name="line-160"></a><span class='definition'>mkSeq</span> <span class='sel'>_e1</span> <span class='varid'>e2</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e2</span>+<a name="line-161"></a><span class='definition'>mkSeq</span> <span class='conid'>Unit</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='varid'>e2</span>+<a name="line-162"></a><span class='definition'>mkSeq</span> <span class='varid'>e1</span> <span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>+<a name="line-163"></a><span class='definition'>mkSeq</span> <span class='layout'>(</span><span class='conid'>Seq</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>e3</span> <span class='keyglyph'>=</span> <span class='varid'>mkSeq</span> <span class='varid'>e1</span> <span class='layout'>(</span><span class='varid'>mkSeq</span> <span class='varid'>e2</span> <span class='varid'>e3</span><span class='layout'>)</span>+<a name="line-164"></a><span class='definition'>mkSeq</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='conid'>Seq</span> <span class='varid'>e1</span> <span class='varid'>e2</span>+<a name="line-165"></a>+<a name="line-166"></a><a name="mkRep"></a><span class='definition'>mkRep</span> <span class='keyglyph'>::</span> <span class='conid'>Int</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-167"></a><span class='definition'>mkRep</span> <span class='num'>0</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='varid'>mkStar</span> <span class='varid'>e</span>+<a name="line-168"></a><span class='definition'>mkRep</span> <span class='keyword'>_</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>+<a name="line-169"></a><span class='definition'>mkRep</span> <span class='keyword'>_</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>+<a name="line-170"></a><span class='definition'>mkRep</span> <span class='varid'>i</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='conid'>Rep</span> <span class='varid'>i</span> <span class='varid'>e</span>+<a name="line-171"></a>+<a name="line-172"></a><a name="mkRng"></a><span class='definition'>mkRng</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'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-173"></a><span class='definition'>mkRng</span> <span class='num'>0</span> <span class='num'>0</span> <span class='sel'>_e</span> <span class='keyglyph'>=</span> <span class='varid'>mkUnit</span>+<a name="line-174"></a><span class='definition'>mkRng</span> <span class='num'>1</span> <span class='num'>1</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>+<a name="line-175"></a><span class='definition'>mkRng</span> <span class='varid'>lb</span> <span class='varid'>ub</span> <span class='sel'>_e</span>+<a name="line-176"></a> <span class='keyglyph'>|</span> <span class='varid'>lb</span> <span class='varop'>></span> <span class='varid'>ub</span> <span class='keyglyph'>=</span> <span class='conid'>Zero</span> <span class='varop'>$</span>+<a name="line-177"></a> <span class='str'>"illegal range "</span> <span class='varop'>++</span>+<a name="line-178"></a> <span class='varid'>show</span> <span class='varid'>lb</span> <span class='varop'>++</span> <span class='str'>".."</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>ub</span>+<a name="line-179"></a><span class='definition'>mkRng</span> <span class='sel'>_l</span> <span class='sel'>_u</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>+<a name="line-180"></a><span class='definition'>mkRng</span> <span class='sel'>_l</span> <span class='sel'>_u</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>+<a name="line-181"></a><span class='definition'>mkRng</span> <span class='varid'>lb</span> <span class='varid'>ub</span> <span class='varid'>e</span> <span class='keyglyph'>=</span> <span class='conid'>Rng</span> <span class='varid'>lb</span> <span class='varid'>ub</span> <span class='varid'>e</span>+<a name="line-182"></a>+<a name="line-183"></a><a name="mkOpt"></a><span class='definition'>mkOpt</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-184"></a><span class='definition'>mkOpt</span> <span class='keyglyph'>=</span> <span class='varid'>mkRng</span> <span class='num'>0</span> <span class='num'>1</span>+<a name="line-185"></a>+<a name="line-186"></a><a name="mkDif"></a><span class='definition'>mkDif</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-187"></a><span class='definition'>mkDif</span> <span class='varid'>e1</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='sel'>_e2</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>+<a name="line-188"></a><span class='definition'>mkDif</span> <span class='varid'>e1</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>+<a name="line-189"></a><span class='definition'>mkDif</span> <span class='sel'>_e1</span> <span class='layout'>(</span><span class='conid'>Star</span> <span class='conid'>Dot</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='str'>"empty set in difference expr"</span>+<a name="line-190"></a><span class='definition'>mkDif</span> <span class='conid'>Dot</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>mkSym</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>p</span><span class='layout'>)</span>+<a name="line-191"></a><span class='definition'>mkDif</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='conid'>Dot</span> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='str'>"empty set of chars in difference expr"</span>+<a name="line-192"></a><span class='definition'>mkDif</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p1</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p2</span><span class='layout'>)</span>+<a name="line-193"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varop'>.</span> <span class='varid'>chars</span> <span class='varop'>$</span> <span class='layout'>(</span><span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>p1</span> <span class='varid'>x</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>p2</span> <span class='varid'>x</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-194"></a> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='str'>"empty set of chars in difference expr"</span>+<a name="line-195"></a><span class='definition'>mkDif</span> <span class='varid'>e1</span> <span class='varid'>e2</span> <span class='keyglyph'>=</span> <span class='conid'>Dif</span> <span class='varid'>e1</span> <span class='varid'>e2</span>+<a name="line-196"></a>+<a name="line-197"></a><a name="mkCompl"></a><span class='definition'>mkCompl</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-198"></a><span class='definition'>mkCompl</span> <span class='keyglyph'>=</span> <span class='varid'>mkDif</span> <span class='varid'>mkDot</span>+<a name="line-199"></a>+<a name="line-200"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-201"></a>+<a name="line-202"></a><span class='keyword'>instance</span> <span class='conid'>Show</span> <span class='conid'>Regex</span> <span class='keyword'>where</span>+<a name="line-203"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"{err:"</span> <span class='varop'>++</span> <span class='varid'>s</span> <span class='varop'>++</span> <span class='str'>"}"</span>+<a name="line-204"></a> <span class='varid'>show</span> <span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='str'>"()"</span>+<a name="line-205"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p</span><span class='layout'>)</span>+<a name="line-206"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='varop'>&&</span>+<a name="line-207"></a> <span class='varid'>rng1</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>cs</span><span class='layout'>)</span>+<a name="line-208"></a> <span class='keyglyph'>=</span> <span class='varid'>escRng</span> <span class='varop'>.</span> <span class='varid'>head</span> <span class='varop'>$</span> <span class='varid'>cs</span>+<a name="line-209"></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'>concat</span> <span class='varid'>cs'</span> <span class='varop'>++</span> <span class='str'>"]"</span>+<a name="line-210"></a> <span class='keyword'>where</span>+<a name="line-211"></a> <span class='varid'>rng1</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span><span class='varid'>y</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>y</span>+<a name="line-212"></a> <span class='varid'>cs</span> <span class='keyglyph'>=</span> <span class='varid'>charRngs</span> <span class='varop'>.</span> <span class='varid'>chars</span> <span class='varop'>$</span> <span class='varid'>p</span>+<a name="line-213"></a> <span class='varid'>cs'</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>escRng</span> <span class='varid'>cs</span>+<a name="line-214"></a> <span class='varid'>escRng</span> <span class='layout'>(</span><span class='varid'>x</span><span class='layout'>,</span> <span class='varid'>y</span><span class='layout'>)</span>+<a name="line-215"></a> <span class='keyglyph'>|</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>y</span> <span class='keyglyph'>=</span> <span class='varid'>esc</span> <span class='varid'>x</span>+<a name="line-216"></a> <span class='keyglyph'>|</span> <span class='varid'>succ</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>y</span>+<a name="line-217"></a> <span class='keyglyph'>=</span> <span class='varid'>esc</span> <span class='varid'>x</span> <span class='varop'>++</span> <span class='varid'>esc</span> <span class='varid'>y</span>+<a name="line-218"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-219"></a> <span class='keyglyph'>=</span> <span class='varid'>esc</span> <span class='varid'>x</span> <span class='varop'>++</span> <span class='str'>"-"</span> <span class='varop'>++</span> <span class='varid'>esc</span> <span class='varid'>y</span>+<a name="line-220"></a> <span class='varid'>esc</span> <span class='varid'>x</span>+<a name="line-221"></a> <span class='keyglyph'>|</span> <span class='varid'>x</span> <span class='varop'>`elem`</span> <span class='str'>"\\-[]{}()*+?.^"</span>+<a name="line-222"></a> <span class='keyglyph'>=</span> <span class='chr'>'\\'</span><span class='conop'>:</span><span class='varid'>x</span><span class='conop'>:</span><span class='str'>""</span>+<a name="line-223"></a> <span class='keyglyph'>|</span> <span class='varid'>x</span> <span class='varop'>>=</span> <span class='chr'>' '</span> <span class='varop'>&&</span> <span class='varid'>x</span> <span class='varop'><=</span> <span class='chr'>'~'</span>+<a name="line-224"></a> <span class='keyglyph'>=</span> <span class='varid'>x</span><span class='conop'>:</span><span class='str'>""</span>+<a name="line-225"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span>+<a name="line-226"></a> <span class='keyglyph'>=</span> <span class='str'>"&#"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>fromEnum</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>";"</span>+<a name="line-227"></a> <span class='varid'>show</span> <span class='conid'>Dot</span> <span class='keyglyph'>=</span> <span class='str'>"."</span>+<a name="line-228"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Star</span> <span class='varid'>e</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'>e</span> <span class='varop'>++</span> <span class='str'>")*"</span>+<a name="line-229"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</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'>e1</span> <span class='varop'>++</span> <span class='str'>"|"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>e2</span> <span class='varop'>++</span> <span class='str'>")"</span>+<a name="line-230"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Seq</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>show</span> <span class='varid'>e1</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>e2</span>+<a name="line-231"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='num'>1</span> <span class='varid'>e</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'>e</span> <span class='varop'>++</span> <span class='str'>")+"</span>+<a name="line-232"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='varid'>i</span> <span class='varid'>e</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'>e</span> <span class='varop'>++</span> <span class='str'>"){"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>i</span> <span class='varop'>++</span> <span class='str'>",}"</span>+<a name="line-233"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Rng</span> <span class='num'>0</span> <span class='num'>1</span> <span class='varid'>e</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'>e</span> <span class='varop'>++</span> <span class='str'>")?"</span>+<a name="line-234"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Rng</span> <span class='varid'>i</span> <span class='varid'>j</span> <span class='varid'>e</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'>e</span> <span class='varop'>++</span> <span class='str'>"){"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>i</span> <span class='varop'>++</span> <span class='str'>","</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>j</span> <span class='varop'>++</span> <span class='str'>"}"</span>+<a name="line-235"></a> <span class='varid'>show</span> <span class='layout'>(</span><span class='conid'>Dif</span> <span class='varid'>e1</span> <span class='varid'>e2</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'>e1</span> <span class='varop'>++</span> <span class='str'>"-"</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>e2</span> <span class='varop'>++</span> <span class='str'>")"</span>+<a name="line-236"></a>+<a name="line-237"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-238"></a>+<a name="line-239"></a><a name="isZero"></a><span class='definition'>isZero</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-240"></a><span class='definition'>isZero</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-241"></a><span class='definition'>isZero</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-242"></a><span class='comment'>{-# INLINE isZero #-}</span>+<a name="line-243"></a>+<a name="line-244"></a><a name="nullable"></a><span class='definition'>nullable</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-245"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-246"></a><span class='definition'>nullable</span> <span class='conid'>Unit</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-247"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='sel'>_p</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>False</span> <span class='comment'>-- assumption: p holds for at least one char</span>+<a name="line-248"></a><span class='definition'>nullable</span> <span class='conid'>Dot</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>+<a name="line-249"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Star</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-250"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e1</span> <span class='varop'>||</span>+<a name="line-251"></a> <span class='varid'>nullable</span> <span class='varid'>e2</span>+<a name="line-252"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Seq</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e1</span> <span class='varop'>&&</span>+<a name="line-253"></a> <span class='varid'>nullable</span> <span class='varid'>e2</span>+<a name="line-254"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='sel'>_i</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-255"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Rng</span> <span class='varid'>i</span> <span class='keyword'>_</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>i</span> <span class='varop'>==</span> <span class='num'>0</span> <span class='varop'>||</span>+<a name="line-256"></a> <span class='varid'>nullable</span> <span class='varid'>e</span>+<a name="line-257"></a><span class='definition'>nullable</span> <span class='layout'>(</span><span class='conid'>Dif</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>nullable</span> <span class='varid'>e1</span> <span class='varop'>&&</span>+<a name="line-258"></a> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>nullable</span> <span class='varid'>e2</span><span class='layout'>)</span>+<a name="line-259"></a>+<a name="line-260"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-261"></a>+<a name="line-262"></a><a name="delta"></a><span class='definition'>delta</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-263"></a><span class='definition'>delta</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Zero</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>+<a name="line-264"></a><span class='definition'>delta</span> <span class='conid'>Unit</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='varop'>$</span>+<a name="line-265"></a> <span class='str'>"unexpected char "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>c</span>+<a name="line-266"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Sym</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='varid'>c</span>+<a name="line-267"></a> <span class='keyglyph'>|</span> <span class='varid'>p</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkUnit</span>+<a name="line-268"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>mkZero</span> <span class='varop'>$</span>+<a name="line-269"></a> <span class='str'>"unexpected char "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>c</span> <span class='varop'>++</span> <span class='str'>", expected: "</span> <span class='varop'>++</span> <span class='varid'>oneof</span> <span class='varop'>++</span> <span class='varid'>chars'</span>+<a name="line-270"></a> <span class='keyword'>where</span>+<a name="line-271"></a> <span class='layout'>(</span><span class='varid'>cs</span><span class='layout'>,</span> <span class='varid'>ds</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>splitAt</span> <span class='num'>40</span> <span class='layout'>(</span><span class='varid'>chars</span> <span class='varid'>p</span><span class='layout'>)</span>+<a name="line-272"></a> <span class='varid'>oneof</span>+<a name="line-273"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>""</span>+<a name="line-274"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='str'>"one of "</span>+<a name="line-275"></a> <span class='varid'>chars'</span>+<a name="line-276"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>cs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='str'>"'"</span> <span class='varop'>++</span> <span class='varid'>cs</span> <span class='varop'>++</span> <span class='str'>"'"</span>+<a name="line-277"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>ds</span> <span class='keyglyph'>=</span> <span class='str'>"["</span> <span class='varop'>++</span> <span class='varid'>cs</span> <span class='varop'>++</span> <span class='str'>"]"</span>+<a name="line-278"></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'>cs</span> <span class='varop'>++</span> <span class='str'>"...]"</span>+<a name="line-279"></a>+<a name="line-280"></a><span class='definition'>delta</span> <span class='conid'>Dot</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>mkUnit</span>+<a name="line-281"></a><span class='definition'>delta</span> <span class='varid'>e</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>Star</span> <span class='varid'>e1</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkSeq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e1</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='varid'>e</span>+<a name="line-282"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Alt</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e1</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e2</span> <span class='varid'>c</span><span class='layout'>)</span>+<a name="line-283"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Seq</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>c</span>+<a name="line-284"></a> <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>e1</span> <span class='keyglyph'>=</span> <span class='varid'>mkAlt</span> <span class='layout'>(</span><span class='varid'>mkSeq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e1</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e2</span> <span class='varid'>c</span><span class='layout'>)</span>+<a name="line-285"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>mkSeq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e1</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='varid'>e2</span>+<a name="line-286"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Rep</span> <span class='varid'>i</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkSeq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>mkRep</span> <span class='layout'>(</span><span class='varid'>i</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span> <span class='varid'>e</span><span class='layout'>)</span>+<a name="line-287"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Rng</span> <span class='varid'>i</span> <span class='varid'>j</span> <span class='varid'>e</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkSeq</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>mkRng</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>i</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span> <span class='varop'>`max`</span> <span class='num'>0</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>j</span><span class='comment'>-</span><span class='num'>1</span><span class='layout'>)</span> <span class='varid'>e</span><span class='layout'>)</span>+<a name="line-288"></a><span class='definition'>delta</span> <span class='layout'>(</span><span class='conid'>Dif</span> <span class='varid'>e1</span> <span class='varid'>e2</span><span class='layout'>)</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='varid'>mkDif</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e1</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>e2</span> <span class='varid'>c</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><a name="delta'"></a><span class='definition'>delta'</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Regex</span>+<a name="line-293"></a><span class='definition'>delta'</span> <span class='keyglyph'>=</span> <span class='varid'>foldl</span> <span class='varid'>delta</span> <a name="line-294"></a>-<a name="line-295"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-295"></a><a name="matchWithRE"></a><span class='definition'>matchWithRE</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>String</span>+<a name="line-296"></a><span class='definition'>matchWithRE</span> <span class='varid'>e</span>+<a name="line-297"></a> <span class='keyglyph'>=</span> <span class='varid'>res</span> <span class='varop'>.</span> <span class='varid'>delta'</span> <span class='varid'>e</span>+<a name="line-298"></a> <span class='keyword'>where</span>+<a name="line-299"></a> <span class='varid'>res</span> <span class='layout'>(</span><span class='conid'>Zero</span> <span class='varid'>err</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varid'>err</span>+<a name="line-300"></a> <span class='varid'>res</span> <span class='varid'>re</span>+<a name="line-301"></a> <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span> <span class='comment'>-- o.k.</span>+<a name="line-302"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='varop'>$</span> <span class='str'>"input does not match "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>e</span>+<a name="line-303"></a>+<a name="line-304"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-305"></a>+<a name="line-306"></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='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</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='layout'>(</span><span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>+<a name="line-307"></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='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>f</span> <span class='varid'>x</span> <span class='varop'>&&</span> <span class='varid'>g</span> <span class='varid'>x</span> <span class='comment'>-- liftA2 (&&)</span>+<a name="line-308"></a>+<a name="line-309"></a><span class='comment'>{-# INLINE (<&&>) #-}</span>+<a name="line-310"></a>+<a name="line-311"></a>+<a name="line-312"></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='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</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='layout'>(</span><span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>+<a name="line-313"></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'>x</span> <span class='keyglyph'>-></span> <span class='varid'>f</span> <span class='varid'>x</span> <span class='varop'>||</span> <span class='varid'>g</span> <span class='varid'>x</span> <span class='comment'>-- liftA2 (||)</span>+<a name="line-314"></a>+<a name="line-315"></a><span class='comment'>{-# INLINE (<||>) #-}</span>+<a name="line-316"></a>+<a name="line-317"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-RelaxNG-XmlSchema-RegexMatch.html view
@@ -45,198 +45,204 @@ <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'>RelaxNG</span><span class='varop'>.</span><span class='conid'>XmlSchema</span><span class='varop'>.</span><span class='conid'>Regex</span> <a name="line-38"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>RelaxNG</span><span class='varop'>.</span><span class='conid'>XmlSchema</span><span class='varop'>.</span><span class='conid'>RegexParser</span> <a name="line-39"></a>-<a name="line-40"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-41"></a>-<a name="line-42"></a>-<a name="line-43"></a><a name="splitRegex"></a><span class='definition'>splitRegex</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-44"></a><span class='definition'>splitRegex</span> <span class='varid'>re</span> <span class='str'>""</span>-<a name="line-45"></a> <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='str'>""</span><span class='layout'>)</span>-<a name="line-46"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>-<a name="line-47"></a>-<a name="line-48"></a><span class='definition'>splitRegex</span> <span class='varid'>re</span> <span class='varid'>inp</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>c</span> <span class='conop'>:</span> <span class='varid'>inp'</span><span class='layout'>)</span>-<a name="line-49"></a> <span class='keyglyph'>|</span> <span class='varid'>isZero</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>-<a name="line-50"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>evalRes</span> <span class='varop'>.</span> <span class='varid'>splitRegex</span> <span class='layout'>(</span><span class='varid'>delta</span> <span class='varid'>re</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>inp'</span>-<a name="line-51"></a> <span class='keyword'>where</span>-<a name="line-52"></a> <span class='varid'>evalRes</span> <span class='conid'>Nothing</span>-<a name="line-53"></a> <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='varid'>inp</span><span class='layout'>)</span>-<a name="line-54"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>-<a name="line-55"></a>-<a name="line-56"></a> <span class='varid'>evalRes</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='varid'>tok</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-57"></a> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='layout'>(</span><span class='varid'>c</span> <span class='conop'>:</span> <span class='varid'>tok</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span>-<a name="line-58"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-40"></a><span class='comment'>{-+<a name="line-41"></a>import qualified Debug.Trace as T+<a name="line-42"></a>-}</span>+<a name="line-43"></a>+<a name="line-44"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-45"></a>+<a name="line-46"></a><a name="splitRegex"></a><span class='definition'>splitRegex</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-47"></a><span class='definition'>splitRegex</span> <span class='varid'>re</span> <span class='str'>""</span>+<a name="line-48"></a> <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='str'>""</span><span class='layout'>)</span>+<a name="line-49"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>+<a name="line-50"></a>+<a name="line-51"></a><span class='definition'>splitRegex</span> <span class='varid'>re</span> <span class='varid'>inp</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>c</span> <span class='conop'>:</span> <span class='varid'>inp'</span><span class='layout'>)</span>+<a name="line-52"></a> <span class='keyglyph'>|</span> <span class='varid'>isZero</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span>+<a name="line-53"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>evalRes</span> <span class='varop'>.</span> <span class='varid'>splitRegex</span> <span class='comment'>{- (T.trace (show re') re') -}</span> <span class='varid'>re'</span> <span class='varop'>$</span> <span class='varid'>inp'</span>+<a name="line-54"></a> <span class='keyword'>where</span>+<a name="line-55"></a> <span class='varid'>re'</span> <span class='keyglyph'>=</span> <span class='varid'>delta</span> <span class='varid'>re</span> <span class='varid'>c</span>+<a name="line-56"></a> <span class='varid'>evalRes</span> <span class='conid'>Nothing</span>+<a name="line-57"></a> <span class='keyglyph'>|</span> <span class='varid'>nullable</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='varid'>inp</span><span class='layout'>)</span>+<a name="line-58"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span> <a name="line-59"></a>-<a name="line-60"></a><span class='comment'>-- | split a string by taking the longest prefix matching a regular expression</span>-<a name="line-61"></a><span class='comment'>--</span>-<a name="line-62"></a><span class='comment'>-- @Nothing@ is returned in case of a syntactically wrong regex string</span>-<a name="line-63"></a><span class='comment'>-- or in case there is no matching prefix, else the pair of prefix and rest is returned</span>-<a name="line-64"></a><span class='comment'>--</span>-<a name="line-65"></a><span class='comment'>-- examples:</span>+<a name="line-60"></a> <span class='varid'>evalRes</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='varid'>tok</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-61"></a> <span class='keyglyph'>=</span> <span class='conid'>Just</span> <span class='layout'>(</span><span class='varid'>c</span> <span class='conop'>:</span> <span class='varid'>tok</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span>+<a name="line-62"></a>+<a name="line-63"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-64"></a>+<a name="line-65"></a><span class='comment'>-- | split a string by taking the longest prefix matching a regular expression</span> <a name="line-66"></a><span class='comment'>--</span>-<a name="line-67"></a><span class='comment'>-- > splitRE "a*b" "abc" = Just ("ab","c")</span>-<a name="line-68"></a><span class='comment'>-- > splitRE "a*" "bc" = Just ("", "bc)</span>-<a name="line-69"></a><span class='comment'>-- > splitRE "[" "abc" = Nothing</span>-<a name="line-70"></a>-<a name="line-71"></a><a name="splitRE"></a><span class='definition'>splitRE</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'>Maybe</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-72"></a><span class='definition'>splitRE</span> <span class='varid'>re</span> <span class='varid'>input</span>-<a name="line-73"></a> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>flip</span> <span class='varid'>splitRegex</span> <span class='varid'>input</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>parseRegex</span> <span class='varop'>$</span> <span class='varid'>re</span>-<a name="line-74"></a>-<a name="line-75"></a><span class='comment'>-- | convenient function for splitRE</span>-<a name="line-76"></a><span class='comment'>--</span>-<a name="line-77"></a><span class='comment'>-- syntax errors in R.E. are interpreted as no matching prefix found</span>-<a name="line-78"></a>-<a name="line-79"></a><a name="split"></a><span class='definition'>split</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='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-80"></a><span class='definition'>split</span> <span class='varid'>re</span> <span class='varid'>input</span>-<a name="line-81"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='varid'>input</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>splitRE</span> <span class='varid'>re</span> <span class='varop'>$</span> <span class='varid'>input</span>-<a name="line-82"></a>-<a name="line-83"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-67"></a><span class='comment'>-- @Nothing@ is returned in case of a syntactically wrong regex string</span>+<a name="line-68"></a><span class='comment'>-- or in case there is no matching prefix, else the pair of prefix and rest is returned</span>+<a name="line-69"></a><span class='comment'>--</span>+<a name="line-70"></a><span class='comment'>-- examples:</span>+<a name="line-71"></a><span class='comment'>--</span>+<a name="line-72"></a><span class='comment'>-- > splitRE "a*b" "abc" = Just ("ab","c")</span>+<a name="line-73"></a><span class='comment'>-- > splitRE "a*" "bc" = Just ("", "bc")</span>+<a name="line-74"></a><span class='comment'>-- > splitRE "a+" "bc" = Nothing</span>+<a name="line-75"></a><span class='comment'>-- > splitRE "[" "abc" = Nothing</span>+<a name="line-76"></a>+<a name="line-77"></a><a name="splitRE"></a><span class='definition'>splitRE</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'>Maybe</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-78"></a><span class='definition'>splitRE</span> <span class='varid'>re</span> <span class='varid'>input</span>+<a name="line-79"></a> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>flip</span> <span class='varid'>splitRegex</span> <span class='varid'>input</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>parseRegex</span> <span class='varop'>$</span> <span class='varid'>re</span>+<a name="line-80"></a>+<a name="line-81"></a><span class='comment'>-- | convenient function for splitRE</span>+<a name="line-82"></a><span class='comment'>--</span>+<a name="line-83"></a><span class='comment'>-- syntax errors in R.E. are interpreted as no matching prefix found</span> <a name="line-84"></a>-<a name="line-85"></a><span class='comment'>-- | split a string into tokens (words) by giving a regular expression</span>-<a name="line-86"></a><span class='comment'>-- which all tokens must match</span>-<a name="line-87"></a><span class='comment'>--</span>-<a name="line-88"></a><span class='comment'>-- This can be used for simple tokenizers.</span>-<a name="line-89"></a><span class='comment'>-- The words in the result list contain at least one char.</span>-<a name="line-90"></a><span class='comment'>-- All none matching chars are discarded. If the given regex contains syntax errors,</span>-<a name="line-91"></a><span class='comment'>-- @Nothing@ is returned</span>-<a name="line-92"></a><span class='comment'>--</span>-<a name="line-93"></a><span class='comment'>-- examples:</span>-<a name="line-94"></a><span class='comment'>--</span>-<a name="line-95"></a><span class='comment'>-- > tokenizeRE "a*b" "" = Just []</span>-<a name="line-96"></a><span class='comment'>-- > tokenizeRE "a*b" "abc" = Just ["ab"]</span>-<a name="line-97"></a><span class='comment'>-- > tokenizeRE "a*b" "abaab ab" = Just ["ab","aab","ab"]</span>-<a name="line-98"></a><span class='comment'>-- ></span>-<a name="line-99"></a><span class='comment'>-- > tokenizeRE "[a-z]{2,}|[0-9]{2,}|[0-9]+[.][0-9]+" "ab123 456.7abc"</span>-<a name="line-100"></a><span class='comment'>-- > = Just ["ab","123","456.7","abc"]</span>-<a name="line-101"></a><span class='comment'>-- ></span>-<a name="line-102"></a><span class='comment'>-- > tokenizeRE "[a-z]*|[0-9]{2,}|[0-9]+[.][0-9]+" "cab123 456.7abc"</span>-<a name="line-103"></a><span class='comment'>-- > = Just ["cab","123","456.7","abc"]</span>+<a name="line-85"></a><a name="split"></a><span class='definition'>split</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='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-86"></a><span class='definition'>split</span> <span class='varid'>re</span> <span class='varid'>input</span>+<a name="line-87"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='layout'>(</span><span class='str'>""</span><span class='layout'>,</span> <span class='varid'>input</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>splitRE</span> <span class='varid'>re</span> <span class='varop'>$</span> <span class='varid'>input</span>+<a name="line-88"></a>+<a name="line-89"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-90"></a>+<a name="line-91"></a><span class='comment'>-- | split a string into tokens (words) by giving a regular expression</span>+<a name="line-92"></a><span class='comment'>-- which all tokens must match</span>+<a name="line-93"></a><span class='comment'>--</span>+<a name="line-94"></a><span class='comment'>-- This can be used for simple tokenizers.</span>+<a name="line-95"></a><span class='comment'>-- The words in the result list contain at least one char.</span>+<a name="line-96"></a><span class='comment'>-- All none matching chars are discarded. If the given regex contains syntax errors,</span>+<a name="line-97"></a><span class='comment'>-- @Nothing@ is returned</span>+<a name="line-98"></a><span class='comment'>--</span>+<a name="line-99"></a><span class='comment'>-- examples:</span>+<a name="line-100"></a><span class='comment'>--</span>+<a name="line-101"></a><span class='comment'>-- > tokenizeRE "a*b" "" = Just []</span>+<a name="line-102"></a><span class='comment'>-- > tokenizeRE "a*b" "abc" = Just ["ab"]</span>+<a name="line-103"></a><span class='comment'>-- > tokenizeRE "a*b" "abaab ab" = Just ["ab","aab","ab"]</span> <a name="line-104"></a><span class='comment'>-- ></span>-<a name="line-105"></a><span class='comment'>-- > tokenizeRE "[^ \t\n\r]*" "abc def\t\n\rxyz"</span>-<a name="line-106"></a><span class='comment'>-- > = Just ["abc","def","xyz"]</span>+<a name="line-105"></a><span class='comment'>-- > tokenizeRE "[a-z]{2,}|[0-9]{2,}|[0-9]+[.][0-9]+" "ab123 456.7abc"</span>+<a name="line-106"></a><span class='comment'>-- > = Just ["ab","123","456.7","abc"]</span> <a name="line-107"></a><span class='comment'>-- ></span>-<a name="line-108"></a><span class='comment'>-- > tokenizeRE "[^ \t\n\r]*" = words</span>-<a name="line-109"></a>-<a name="line-110"></a><a name="tokenizeRE"></a><span class='definition'>tokenizeRE</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'>Maybe</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-111"></a><span class='definition'>tokenizeRE</span> <span class='varid'>regex</span> <span class='varid'>input</span>-<a name="line-112"></a> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varop'>.</span> <span class='varid'>flip</span> <span class='varid'>token'</span> <span class='varid'>input</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>parseRegex</span> <span class='varid'>regex</span>-<a name="line-113"></a> <span class='keyword'>where</span>-<a name="line-114"></a> <span class='varid'>token'</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</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>-<a name="line-115"></a> <span class='varid'>token'</span> <span class='varid'>re</span> <span class='varid'>inp</span>-<a name="line-116"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>inp</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-117"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>evalRes</span> <span class='varop'>.</span> <span class='varid'>splitRegex</span> <span class='varid'>re</span> <span class='varop'>$</span> <span class='varid'>inp</span>-<a name="line-118"></a> <span class='keyword'>where</span>-<a name="line-119"></a> <span class='varid'>evalRes</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>token'</span> <span class='varid'>re</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>inp</span><span class='layout'>)</span> <span class='comment'>-- re does not match any prefix</span>-<a name="line-120"></a> <span class='varid'>evalRes</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='varid'>tok</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-121"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>tok</span> <span class='keyglyph'>=</span> <span class='varid'>token'</span> <span class='varid'>re</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='comment'>-- re is nullable and only the empty prefix matches</span>-<a name="line-122"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>tok</span> <span class='conop'>:</span> <span class='varid'>token'</span> <span class='varid'>re</span> <span class='varid'>rest</span> <span class='comment'>-- token found, tokenize the rest</span>-<a name="line-123"></a>-<a name="line-124"></a><span class='comment'>-- | convenient function for tokenizeRE a string</span>-<a name="line-125"></a><span class='comment'>--</span>-<a name="line-126"></a><span class='comment'>-- syntax errors in R.E. result in an empty list</span>-<a name="line-127"></a>-<a name="line-128"></a><a name="tokenize"></a><span class='definition'>tokenize</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='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-129"></a><span class='definition'>tokenize</span> <span class='varid'>re</span>-<a name="line-130"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='conid'>[]</span> <span class='varop'>.</span> <span class='varid'>tokenizeRE</span> <span class='varid'>re</span>-<a name="line-131"></a>-<a name="line-132"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-133"></a>-<a name="line-134"></a><span class='comment'>-- | split a string into tokens and delimierter by giving a regular expression</span>-<a name="line-135"></a><span class='comment'>-- wich all tokens must match</span>-<a name="line-136"></a><span class='comment'>--</span>-<a name="line-137"></a><span class='comment'>-- This is a generalisation of the above 'tokenizeRE' functions.</span>-<a name="line-138"></a><span class='comment'>-- The none matching char sequences are marked with @Left@, the matching ones are marked with @Right@</span>-<a name="line-139"></a><span class='comment'>--</span>-<a name="line-140"></a><span class='comment'>-- If the regular expression contains syntax errors @Nothing@ is returned</span>-<a name="line-141"></a><span class='comment'>--</span>-<a name="line-142"></a><span class='comment'>-- The following Law holds:</span>+<a name="line-108"></a><span class='comment'>-- > tokenizeRE "[a-z]*|[0-9]{2,}|[0-9]+[.][0-9]+" "cab123 456.7abc"</span>+<a name="line-109"></a><span class='comment'>-- > = Just ["cab","123","456.7","abc"]</span>+<a name="line-110"></a><span class='comment'>-- ></span>+<a name="line-111"></a><span class='comment'>-- > tokenizeRE "[^ \t\n\r]*" "abc def\t\n\rxyz"</span>+<a name="line-112"></a><span class='comment'>-- > = Just ["abc","def","xyz"]</span>+<a name="line-113"></a><span class='comment'>-- ></span>+<a name="line-114"></a><span class='comment'>-- > tokenizeRE "[^ \t\n\r]*" = words</span>+<a name="line-115"></a>+<a name="line-116"></a><a name="tokenizeRE"></a><span class='definition'>tokenizeRE</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'>Maybe</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>+<a name="line-117"></a><span class='definition'>tokenizeRE</span> <span class='varid'>regex</span> <span class='varid'>input</span>+<a name="line-118"></a> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varop'>.</span> <span class='varid'>flip</span> <span class='varid'>token'</span> <span class='varid'>input</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>parseRegex</span> <span class='varid'>regex</span>+<a name="line-119"></a> <span class='keyword'>where</span>+<a name="line-120"></a> <span class='varid'>token'</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</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>+<a name="line-121"></a> <span class='varid'>token'</span> <span class='varid'>re</span> <span class='varid'>inp</span>+<a name="line-122"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>inp</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-123"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>evalRes</span> <span class='varop'>.</span> <span class='varid'>splitRegex</span> <span class='varid'>re</span> <span class='varop'>$</span> <span class='varid'>inp</span>+<a name="line-124"></a> <span class='keyword'>where</span>+<a name="line-125"></a> <span class='varid'>token''</span> <span class='keyglyph'>=</span> <span class='varid'>token'</span> <span class='varid'>re</span>+<a name="line-126"></a> <span class='varid'>evalRes</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>token''</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>inp</span><span class='layout'>)</span> <span class='comment'>-- re does not match any prefix</span>+<a name="line-127"></a> <span class='varid'>evalRes</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='varid'>tok</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-128"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>tok</span> <span class='keyglyph'>=</span> <span class='varid'>token''</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='comment'>-- re is nullable and only the empty prefix matches</span>+<a name="line-129"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>tok</span> <span class='conop'>:</span> <span class='varid'>token''</span> <span class='varid'>rest</span> <span class='comment'>-- token found, tokenize the rest</span>+<a name="line-130"></a>+<a name="line-131"></a><span class='comment'>-- | convenient function for tokenizeRE a string</span>+<a name="line-132"></a><span class='comment'>--</span>+<a name="line-133"></a><span class='comment'>-- syntax errors in R.E. result in an empty list</span>+<a name="line-134"></a>+<a name="line-135"></a><a name="tokenize"></a><span class='definition'>tokenize</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='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span>+<a name="line-136"></a><span class='definition'>tokenize</span> <span class='varid'>re</span>+<a name="line-137"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='conid'>[]</span> <span class='varop'>.</span> <span class='varid'>tokenizeRE</span> <span class='varid'>re</span>+<a name="line-138"></a>+<a name="line-139"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-140"></a>+<a name="line-141"></a><span class='comment'>-- | split a string into tokens and delimierter by giving a regular expression</span>+<a name="line-142"></a><span class='comment'>-- wich all tokens must match</span> <a name="line-143"></a><span class='comment'>--</span>-<a name="line-144"></a><span class='comment'>-- > concat . map (either id id) . fromJust . tokenizeRE' re == id</span>-<a name="line-145"></a>-<a name="line-146"></a><a name="tokenizeRE'"></a><span class='definition'>tokenizeRE'</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'>Maybe</span> <span class='keyglyph'>[</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-147"></a><span class='definition'>tokenizeRE'</span> <span class='varid'>regex</span> <span class='varid'>input</span>-<a name="line-148"></a> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varop'>.</span> <span class='varid'>flip</span> <span class='varid'>token'</span> <span class='varid'>input</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>parseRegex</span> <span class='varid'>regex</span>-<a name="line-149"></a> <span class='keyword'>where</span>-<a name="line-150"></a> <span class='varid'>token'</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-151"></a> <span class='varid'>token'</span> <span class='varid'>re</span>-<a name="line-152"></a> <span class='keyglyph'>=</span> <span class='varid'>tok2</span> <span class='str'>""</span>-<a name="line-153"></a> <span class='keyword'>where</span>-<a name="line-154"></a> <span class='varid'>tok2</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='keyglyph'>[</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-155"></a> <span class='varid'>tok2</span> <span class='varid'>noMatchPrefix</span> <span class='varid'>inp</span>-<a name="line-156"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>inp</span> <span class='keyglyph'>=</span> <span class='varid'>addNoMatch</span> <span class='conid'>[]</span>-<a name="line-157"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>evalRes</span> <span class='varop'>.</span> <span class='varid'>splitRegex</span> <span class='varid'>re</span> <span class='varop'>$</span> <span class='varid'>inp</span>-<a name="line-158"></a> <span class='keyword'>where</span>-<a name="line-159"></a> <span class='varid'>addNoMatch</span> <span class='varid'>res</span>-<a name="line-160"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>noMatchPrefix</span> <span class='keyglyph'>=</span> <span class='varid'>res</span>-<a name="line-161"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conid'>Left</span> <span class='varop'>.</span> <span class='varid'>reverse</span> <span class='varop'>$</span> <span class='varid'>noMatchPrefix</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>res</span>-<a name="line-162"></a>-<a name="line-163"></a> <span class='varid'>evalRes</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>tok2</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>inp</span> <span class='conop'>:</span> <span class='varid'>noMatchPrefix</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>inp</span><span class='layout'>)</span> <span class='comment'>-- re does not match any prefix</span>-<a name="line-164"></a> <span class='varid'>evalRes</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='varid'>tok</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-165"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>tok</span> <span class='keyglyph'>=</span> <span class='varid'>tok2</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>rest</span> <span class='conop'>:</span> <span class='varid'>noMatchPrefix</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='comment'>-- re is nullable and only the empty prefix matches</span>-<a name="line-166"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>addNoMatch</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='conid'>Right</span> <span class='varid'>tok</span> <span class='conop'>:</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>tok2</span> <span class='str'>""</span> <span class='varop'>$</span> <span class='varid'>rest</span> <span class='comment'>-- token found, tokenize the rest</span>-<a name="line-167"></a>-<a name="line-168"></a><span class='comment'>-- | convenient function for tokenizeRE'</span>-<a name="line-169"></a><span class='comment'>--</span>-<a name="line-170"></a><span class='comment'>-- When the regular expression contains errors @[Left input]@ is returned, that means tokens are found</span>-<a name="line-171"></a>-<a name="line-172"></a><a name="tokenize'"></a><span class='definition'>tokenize'</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='keyglyph'>[</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='keyglyph'>]</span>-<a name="line-173"></a><span class='definition'>tokenize'</span> <span class='varid'>regex</span> <span class='varid'>input</span>-<a name="line-174"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='keyglyph'>[</span><span class='conid'>Left</span> <span class='varid'>input</span><span class='keyglyph'>]</span> <span class='varop'>.</span> <span class='varid'>tokenizeRE'</span> <span class='varid'>regex</span> <span class='varop'>$</span> <span class='varid'>input</span>-<a name="line-175"></a>-<a name="line-176"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-177"></a>-<a name="line-178"></a><span class='comment'>-- | sed like editing function</span>-<a name="line-179"></a><span class='comment'>--</span>-<a name="line-180"></a><span class='comment'>-- All matching tokens are edited by the 1. argument, the editing function,</span>-<a name="line-181"></a><span class='comment'>-- all other chars remain as they are</span>-<a name="line-182"></a><span class='comment'>--</span>-<a name="line-183"></a><span class='comment'>-- examples:</span>-<a name="line-184"></a><span class='comment'>--</span>-<a name="line-185"></a><span class='comment'>-- > sedRE (const "b") "a" "xaxax" = Just "xbxbx"</span>-<a name="line-186"></a><span class='comment'>-- > sedRE (\ x -> x ++ x) "a" "xax" = Just "xaax"</span>-<a name="line-187"></a><span class='comment'>-- > sedRE undefined "[" undefined = Nothing</span>-<a name="line-188"></a>-<a name="line-189"></a><a name="sedRE"></a><span class='definition'>sedRE</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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>String</span>-<a name="line-190"></a><span class='definition'>sedRE</span> <span class='varid'>edit</span> <span class='varid'>regex</span> <span class='varid'>input</span>-<a name="line-191"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varop'>.</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>either</span> <span class='varid'>id</span> <span class='varid'>edit</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tokenizeRE'</span> <span class='varid'>regex</span> <span class='varid'>input</span>-<a name="line-192"></a>-<a name="line-193"></a><span class='comment'>-- | convenient function for sedRE</span>-<a name="line-194"></a><span class='comment'>--</span>-<a name="line-195"></a><span class='comment'>-- When the regular expression contains errors, sed is the identity, else</span>-<a name="line-196"></a><span class='comment'>-- the funtionality is like 'sedRE'</span>-<a name="line-197"></a><span class='comment'>--</span>-<a name="line-198"></a><span class='comment'>-- > sed undefined "[" == id</span>+<a name="line-144"></a><span class='comment'>-- This is a generalisation of the above 'tokenizeRE' functions.</span>+<a name="line-145"></a><span class='comment'>-- The none matching char sequences are marked with @Left@, the matching ones are marked with @Right@</span>+<a name="line-146"></a><span class='comment'>--</span>+<a name="line-147"></a><span class='comment'>-- If the regular expression contains syntax errors @Nothing@ is returned</span>+<a name="line-148"></a><span class='comment'>--</span>+<a name="line-149"></a><span class='comment'>-- The following Law holds:</span>+<a name="line-150"></a><span class='comment'>--</span>+<a name="line-151"></a><span class='comment'>-- > concat . map (either id id) . fromJust . tokenizeRE' re == id</span>+<a name="line-152"></a>+<a name="line-153"></a><a name="tokenizeRE'"></a><span class='definition'>tokenizeRE'</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'>Maybe</span> <span class='keyglyph'>[</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='keyglyph'>]</span>+<a name="line-154"></a><span class='definition'>tokenizeRE'</span> <span class='varid'>regex</span> <span class='varid'>input</span>+<a name="line-155"></a> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varop'>.</span> <span class='varid'>flip</span> <span class='varid'>token'</span> <span class='varid'>input</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>parseRegex</span> <span class='varid'>regex</span>+<a name="line-156"></a> <span class='keyword'>where</span>+<a name="line-157"></a> <span class='varid'>token'</span> <span class='keyglyph'>::</span> <span class='conid'>Regex</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='keyglyph'>]</span>+<a name="line-158"></a> <span class='varid'>token'</span> <span class='varid'>re</span>+<a name="line-159"></a> <span class='keyglyph'>=</span> <span class='varid'>tok2</span> <span class='str'>""</span>+<a name="line-160"></a> <span class='keyword'>where</span>+<a name="line-161"></a> <span class='varid'>tok2</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='keyglyph'>[</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='keyglyph'>]</span>+<a name="line-162"></a> <span class='varid'>tok2</span> <span class='varid'>noMatchPrefix</span> <span class='varid'>inp</span>+<a name="line-163"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>inp</span> <span class='keyglyph'>=</span> <span class='varid'>addNoMatch</span> <span class='conid'>[]</span>+<a name="line-164"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>evalRes</span> <span class='varop'>.</span> <span class='varid'>splitRegex</span> <span class='varid'>re</span> <span class='varop'>$</span> <span class='varid'>inp</span>+<a name="line-165"></a> <span class='keyword'>where</span>+<a name="line-166"></a> <span class='varid'>addNoMatch</span> <span class='varid'>res</span>+<a name="line-167"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>noMatchPrefix</span> <span class='keyglyph'>=</span> <span class='varid'>res</span>+<a name="line-168"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conid'>Left</span> <span class='varop'>.</span> <span class='varid'>reverse</span> <span class='varop'>$</span> <span class='varid'>noMatchPrefix</span><span class='layout'>)</span> <span class='conop'>:</span> <span class='varid'>res</span>+<a name="line-169"></a>+<a name="line-170"></a> <span class='varid'>evalRes</span> <span class='conid'>Nothing</span> <span class='keyglyph'>=</span> <span class='varid'>tok2</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>inp</span> <span class='conop'>:</span> <span class='varid'>noMatchPrefix</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>inp</span><span class='layout'>)</span> <span class='comment'>-- re does not match any prefix</span>+<a name="line-171"></a> <span class='varid'>evalRes</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='varid'>tok</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-172"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='varid'>tok</span> <span class='keyglyph'>=</span> <span class='varid'>tok2</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varid'>rest</span> <span class='conop'>:</span> <span class='varid'>noMatchPrefix</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='comment'>-- re is nullable and only the empty prefix matches</span>+<a name="line-173"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>addNoMatch</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='conid'>Right</span> <span class='varid'>tok</span> <span class='conop'>:</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>tok2</span> <span class='str'>""</span> <span class='varop'>$</span> <span class='varid'>rest</span> <span class='comment'>-- token found, tokenize the rest</span>+<a name="line-174"></a>+<a name="line-175"></a><span class='comment'>-- | convenient function for tokenizeRE'</span>+<a name="line-176"></a><span class='comment'>--</span>+<a name="line-177"></a><span class='comment'>-- When the regular expression contains errors @[Left input]@ is returned, that means tokens are found</span>+<a name="line-178"></a>+<a name="line-179"></a><a name="tokenize'"></a><span class='definition'>tokenize'</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='keyglyph'>[</span><span class='conid'>Either</span> <span class='conid'>String</span> <span class='conid'>String</span><span class='keyglyph'>]</span>+<a name="line-180"></a><span class='definition'>tokenize'</span> <span class='varid'>regex</span> <span class='varid'>input</span>+<a name="line-181"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='keyglyph'>[</span><span class='conid'>Left</span> <span class='varid'>input</span><span class='keyglyph'>]</span> <span class='varop'>.</span> <span class='varid'>tokenizeRE'</span> <span class='varid'>regex</span> <span class='varop'>$</span> <span class='varid'>input</span>+<a name="line-182"></a>+<a name="line-183"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-184"></a>+<a name="line-185"></a><span class='comment'>-- | sed like editing function</span>+<a name="line-186"></a><span class='comment'>--</span>+<a name="line-187"></a><span class='comment'>-- All matching tokens are edited by the 1. argument, the editing function,</span>+<a name="line-188"></a><span class='comment'>-- all other chars remain as they are</span>+<a name="line-189"></a><span class='comment'>--</span>+<a name="line-190"></a><span class='comment'>-- examples:</span>+<a name="line-191"></a><span class='comment'>--</span>+<a name="line-192"></a><span class='comment'>-- > sedRE (const "b") "a" "xaxax" = Just "xbxbx"</span>+<a name="line-193"></a><span class='comment'>-- > sedRE (\ x -> x ++ x) "a" "xax" = Just "xaax"</span>+<a name="line-194"></a><span class='comment'>-- > sedRE undefined "[" undefined = Nothing</span>+<a name="line-195"></a>+<a name="line-196"></a><a name="sedRE"></a><span class='definition'>sedRE</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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>String</span>+<a name="line-197"></a><span class='definition'>sedRE</span> <span class='varid'>edit</span> <span class='varid'>regex</span> <span class='varid'>input</span>+<a name="line-198"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varop'>.</span> <span class='varid'>concatMap</span> <span class='layout'>(</span><span class='varid'>either</span> <span class='varid'>id</span> <span class='varid'>edit</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tokenizeRE'</span> <span class='varid'>regex</span> <span class='varid'>input</span> <a name="line-199"></a>-<a name="line-200"></a><a name="sed"></a><span class='definition'>sed</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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-201"></a><span class='definition'>sed</span> <span class='varid'>edit</span> <span class='varid'>regex</span> <span class='varid'>input</span>-<a name="line-202"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='varid'>input</span> <span class='varop'>.</span> <span class='varid'>sedRE</span> <span class='varid'>edit</span> <span class='varid'>regex</span> <span class='varop'>$</span> <span class='varid'>input</span>-<a name="line-203"></a>-<a name="line-204"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-205"></a>-<a name="line-206"></a><span class='comment'>-- | match a string with a regular expression</span>-<a name="line-207"></a><span class='comment'>--</span>-<a name="line-208"></a><span class='comment'>-- First argument is the regex, second the input string,</span>-<a name="line-209"></a><span class='comment'>-- if the regex is not well formed, @Nothing@ is returned,</span>-<a name="line-210"></a><span class='comment'>-- else @Just@ the match result</span>-<a name="line-211"></a><span class='comment'>--</span>-<a name="line-212"></a><span class='comment'>-- Examples:</span>-<a name="line-213"></a><span class='comment'>--</span>-<a name="line-214"></a><span class='comment'>-- > matchRE "x*" "xxx" = Just True</span>-<a name="line-215"></a><span class='comment'>-- > matchRE "x" "xxx" = Just False</span>-<a name="line-216"></a><span class='comment'>-- > matchRE "[" "xxx" = Nothing</span>-<a name="line-217"></a>-<a name="line-218"></a><a name="matchRE"></a><span class='definition'>matchRE</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'>Maybe</span> <span class='conid'>Bool</span>-<a name="line-219"></a><span class='definition'>matchRE</span> <span class='varid'>regex</span> <span class='varid'>input</span>-<a name="line-220"></a> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varop'>.</span> <span class='varid'>isNothing</span> <span class='varop'>.</span> <span class='varid'>flip</span> <span class='varid'>matchWithRE</span> <span class='varid'>input</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>parseRegex</span> <span class='varid'>regex</span>-<a name="line-221"></a>-<a name="line-222"></a>-<a name="line-223"></a><span class='comment'>-- | convenient function for matchRE</span>-<a name="line-224"></a><span class='comment'>--</span>-<a name="line-225"></a><span class='comment'>-- syntax errors in R.E. are interpreted as no match found</span>-<a name="line-226"></a>-<a name="line-227"></a><a name="match"></a><span class='definition'>match</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'>Bool</span>-<a name="line-228"></a><span class='definition'>match</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='conid'>False</span> <span class='varop'>.</span> <span class='varid'>matchRE</span> <span class='varid'>re</span>+<a name="line-200"></a><span class='comment'>-- | convenient function for sedRE</span>+<a name="line-201"></a><span class='comment'>--</span>+<a name="line-202"></a><span class='comment'>-- When the regular expression contains errors, sed is the identity, else</span>+<a name="line-203"></a><span class='comment'>-- the funtionality is like 'sedRE'</span>+<a name="line-204"></a><span class='comment'>--</span>+<a name="line-205"></a><span class='comment'>-- > sed undefined "[" == id</span>+<a name="line-206"></a>+<a name="line-207"></a><a name="sed"></a><span class='definition'>sed</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'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-208"></a><span class='definition'>sed</span> <span class='varid'>edit</span> <span class='varid'>regex</span> <span class='varid'>input</span>+<a name="line-209"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='varid'>input</span> <span class='varop'>.</span> <span class='varid'>sedRE</span> <span class='varid'>edit</span> <span class='varid'>regex</span> <span class='varop'>$</span> <span class='varid'>input</span>+<a name="line-210"></a>+<a name="line-211"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-212"></a>+<a name="line-213"></a><span class='comment'>-- | match a string with a regular expression</span>+<a name="line-214"></a><span class='comment'>--</span>+<a name="line-215"></a><span class='comment'>-- First argument is the regex, second the input string,</span>+<a name="line-216"></a><span class='comment'>-- if the regex is not well formed, @Nothing@ is returned,</span>+<a name="line-217"></a><span class='comment'>-- else @Just@ the match result</span>+<a name="line-218"></a><span class='comment'>--</span>+<a name="line-219"></a><span class='comment'>-- Examples:</span>+<a name="line-220"></a><span class='comment'>--</span>+<a name="line-221"></a><span class='comment'>-- > matchRE "x*" "xxx" = Just True</span>+<a name="line-222"></a><span class='comment'>-- > matchRE "x" "xxx" = Just False</span>+<a name="line-223"></a><span class='comment'>-- > matchRE "[" "xxx" = Nothing</span>+<a name="line-224"></a>+<a name="line-225"></a><a name="matchRE"></a><span class='definition'>matchRE</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'>Maybe</span> <span class='conid'>Bool</span>+<a name="line-226"></a><span class='definition'>matchRE</span> <span class='varid'>regex</span> <span class='varid'>input</span>+<a name="line-227"></a> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='conid'>Nothing</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varop'>.</span> <span class='varid'>isNothing</span> <span class='varop'>.</span> <span class='varid'>flip</span> <span class='varid'>matchWithRE</span> <span class='varid'>input</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>parseRegex</span> <span class='varid'>regex</span>+<a name="line-228"></a> <a name="line-229"></a>-<a name="line-230"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-231"></a>-<a name="line-232"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-230"></a><span class='comment'>-- | convenient function for matchRE</span>+<a name="line-231"></a><span class='comment'>--</span>+<a name="line-232"></a><span class='comment'>-- syntax errors in R.E. are interpreted as no match found</span>+<a name="line-233"></a>+<a name="line-234"></a><a name="match"></a><span class='definition'>match</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'>Bool</span>+<a name="line-235"></a><span class='definition'>match</span> <span class='varid'>re</span> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='conid'>False</span> <span class='varop'>.</span> <span class='varid'>matchRE</span> <span class='varid'>re</span>+<a name="line-236"></a>+<a name="line-237"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-238"></a> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-RelaxNG-XmlSchema-RegexParser.html view
@@ -30,8 +30,8 @@ <a name="line-22"></a> <span class='layout'>(</span> <span class='varid'>parseRegex</span> <span class='layout'>)</span> <a name="line-23"></a><span class='keyword'>where</span> <a name="line-24"></a>-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Applicative</span> <span class='layout'>(</span> <span class='varid'>liftA2</span> <span class='layout'>)</span>-<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-26"></a> <a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</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'>Unicode</span>@@ -184,9 +184,9 @@ <a name="line-176"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'w'</span><span class='layout'>,</span> <span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isNotWord</span> <span class='layout'>)</span> <a name="line-177"></a> <span class='layout'>,</span> <span class='layout'>(</span><span class='chr'>'W'</span><span class='layout'>,</span> <span class='varid'>isNotWord</span> <span class='layout'>)</span> <a name="line-178"></a> <span class='keyglyph'>]</span>-<a name="line-179"></a> <span class='varid'>isDigit</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='chr'>'0'</span> <span class='varop'><=</span><span class='layout'>)</span> <span class='varop'>&&&</span> <span class='layout'>(</span><span class='varop'><=</span> <span class='chr'>'9'</span><span class='layout'>)</span>-<a name="line-180"></a> <span class='varid'>isNotWord</span> <span class='keyglyph'>=</span> <span class='varid'>isUnicodeP</span> <span class='varop'>|||</span>-<a name="line-181"></a> <span class='varid'>isUnicodeZ</span> <span class='varop'>|||</span>+<a name="line-179"></a> <span class='varid'>isDigit</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='chr'>'0'</span> <span class='varop'><=</span><span class='layout'>)</span> <span class='varop'><&&></span> <span class='layout'>(</span><span class='varop'><=</span> <span class='chr'>'9'</span><span class='layout'>)</span>+<a name="line-180"></a> <span class='varid'>isNotWord</span> <span class='keyglyph'>=</span> <span class='varid'>isUnicodeP</span> <span class='varop'><||></span>+<a name="line-181"></a> <span class='varid'>isUnicodeZ</span> <span class='varop'><||></span> <a name="line-182"></a> <span class='varid'>isUnicodeC</span> <a name="line-183"></a> <a name="line-184"></a><a name="catEsc"></a><span class='definition'>catEsc</span> <span class='keyglyph'>::</span> <span class='conid'>Parser</span> <span class='conid'>Regex</span>@@ -212,7 +212,7 @@ <a name="line-204"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='keyword'>let</span> <a name="line-205"></a> <span class='layout'>(</span><span class='varid'>lb</span><span class='layout'>,</span> <span class='varid'>ub</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varid'>b</span> <a name="line-206"></a> <span class='keyword'>in</span>-<a name="line-207"></a> <span class='layout'>(</span><span class='varid'>lb</span> <span class='varop'><=</span><span class='layout'>)</span> <span class='varop'>&&&</span> <span class='layout'>(</span><span class='varop'><=</span> <span class='varid'>ub</span><span class='layout'>)</span>+<a name="line-207"></a> <span class='layout'>(</span><span class='varid'>lb</span> <span class='varop'><=</span><span class='layout'>)</span> <span class='varop'><&&></span> <span class='layout'>(</span><span class='varop'><=</span> <span class='varid'>ub</span><span class='layout'>)</span> <a name="line-208"></a> <span class='keyword'>else</span> <span class='varid'>fail</span> <span class='varop'>$</span> <span class='str'>"unknown Unicode code block "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span> <a name="line-209"></a> <span class='keyword'>where</span> <a name="line-210"></a> <span class='varid'>legalChar</span> <span class='varid'>c</span> <span class='keyglyph'>=</span> <span class='chr'>'A'</span> <span class='varop'><=</span> <span class='varid'>c</span> <span class='varop'>&&</span> <span class='varid'>c</span> <span class='varop'><=</span> <span class='chr'>'Z'</span> <span class='varop'>||</span>@@ -360,13 +360,5 @@ <a name="line-352"></a> <a name="line-353"></a> <a name="line-354"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-355"></a>-<a name="line-356"></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='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</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='layout'>(</span><span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>-<a name="line-357"></a><span class='layout'>(</span><span class='varop'>&&&</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>liftA2</span> <span class='layout'>(</span><span class='varop'>&&</span><span class='layout'>)</span>-<a name="line-358"></a>-<a name="line-359"></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='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</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='layout'>(</span><span class='conid'>Char</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span><span class='layout'>)</span>-<a name="line-360"></a><span class='layout'>(</span><span class='varop'>|||</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>liftA2</span> <span class='layout'>(</span><span class='varop'>||</span><span class='layout'>)</span>-<a name="line-361"></a>-<a name="line-362"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-Version.html view
@@ -9,6 +9,6 @@ <pre><a name="line-1"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Version</span> <a name="line-2"></a><span class='keyword'>where</span> <a name="line-3"></a><a name="hxt_version"></a><span class='definition'>hxt_version</span> <span class='keyglyph'>::</span> <span class='conid'>String</span>-<a name="line-4"></a><span class='definition'>hxt_version</span> <span class='keyglyph'>=</span> <span class='str'>"8.2.0"</span>+<a name="line-4"></a><span class='definition'>hxt_version</span> <span class='keyglyph'>=</span> <span class='str'>"8.3.0"</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-XPath-XPathEval.html view
@@ -103,10 +103,10 @@ <a name="line-95"></a><span class='comment'>-- Works like 'getXPath' but the prefix:localpart names in the XPath expression</span> <a name="line-96"></a><span class='comment'>-- are interpreted with respect to the given namespace environment</span> <a name="line-97"></a>-<a name="line-98"></a><a name="getXPathWithNsEnv"></a><span class='definition'>getXPathWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</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'>XmlTrees</span>+<a name="line-98"></a><a name="getXPathWithNsEnv"></a><span class='definition'>getXPathWithNsEnv</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'>XmlTrees</span> <a name="line-99"></a><span class='definition'>getXPathWithNsEnv</span> <span class='varid'>env</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>runLA</span> <span class='layout'>(</span> <span class='varid'>canonicalizeForXPath</span> <a name="line-100"></a> <span class='varop'>>>></span>-<a name="line-101"></a> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>getXPathValues</span> <span class='varid'>xPValue2XmlTrees</span> <span class='varid'>xPathErr</span> <span class='varid'>env</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-101"></a> <span class='varid'>arrL</span> <span class='layout'>(</span><span class='varid'>getXPathValues</span> <span class='varid'>xPValue2XmlTrees</span> <span class='varid'>xPathErr</span> <span class='layout'>(</span><span class='varid'>toNsEnv</span> <span class='varid'>env</span><span class='layout'>)</span> <span class='varid'>s</span><span class='layout'>)</span> <a name="line-102"></a> <span class='layout'>)</span> <a name="line-103"></a> <a name="line-104"></a><span class='comment'>-- |</span>@@ -127,9 +127,9 @@ <a name="line-119"></a> <a name="line-120"></a><span class='comment'>-- | Same as 'getXPathSubTrees' but with namespace aware XPath expression</span> <a name="line-121"></a>-<a name="line-122"></a><a name="getXPathSubTreesWithNsEnv"></a><span class='definition'>getXPathSubTreesWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</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'>XmlTrees</span>+<a name="line-122"></a><a name="getXPathSubTreesWithNsEnv"></a><span class='definition'>getXPathSubTreesWithNsEnv</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'>XmlTrees</span> <a name="line-123"></a><span class='definition'>getXPathSubTreesWithNsEnv</span> <span class='varid'>nsEnv</span> <span class='varid'>xpStr</span>-<a name="line-124"></a> <span class='keyglyph'>=</span> <span class='varid'>getXPathValues</span> <span class='varid'>xPValue2XmlTrees</span> <span class='varid'>xPathErr</span> <span class='varid'>nsEnv</span> <span class='varid'>xpStr</span>+<a name="line-124"></a> <span class='keyglyph'>=</span> <span class='varid'>getXPathValues</span> <span class='varid'>xPValue2XmlTrees</span> <span class='varid'>xPathErr</span> <span class='layout'>(</span><span class='varid'>toNsEnv</span> <span class='varid'>nsEnv</span><span class='layout'>)</span> <span class='varid'>xpStr</span> <a name="line-125"></a> <a name="line-126"></a><span class='comment'>-- | compute the node set of an XPath query</span> <a name="line-127"></a>@@ -138,9 +138,9 @@ <a name="line-130"></a> <a name="line-131"></a><span class='comment'>-- | compute the node set of a namespace aware XPath query</span> <a name="line-132"></a>-<a name="line-133"></a><a name="getXPathNodeSetWithNsEnv"></a><span class='definition'>getXPathNodeSetWithNsEnv</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</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'>XmlNodeSet</span>+<a name="line-133"></a><a name="getXPathNodeSetWithNsEnv"></a><span class='definition'>getXPathNodeSetWithNsEnv</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'>XmlNodeSet</span> <a name="line-134"></a><span class='definition'>getXPathNodeSetWithNsEnv</span> <span class='varid'>nsEnv</span> <span class='varid'>xpStr</span>-<a name="line-135"></a> <span class='keyglyph'>=</span> <span class='varid'>getXPathValues</span> <span class='varid'>xPValue2NodeSet</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>emptyNodeSet</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>nsEnv</span> <span class='varid'>xpStr</span>+<a name="line-135"></a> <span class='keyglyph'>=</span> <span class='varid'>getXPathValues</span> <span class='varid'>xPValue2NodeSet</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='layout'>(</span><span class='varid'>const</span> <span class='varid'>emptyNodeSet</span><span class='layout'>)</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>toNsEnv</span> <span class='varid'>nsEnv</span><span class='layout'>)</span> <span class='varid'>xpStr</span> <a name="line-136"></a> <a name="line-137"></a><span class='comment'>-- | parse xpath, evaluate xpath expr and prepare results</span> <a name="line-138"></a>
doc/hdoc/src/Text-XML-HXT-XPath-XPathParser.html view
@@ -10,653 +10,653 @@ <a name="line-2"></a> <a name="line-3"></a><span class='comment'>{- | <a name="line-4"></a> Module : Text.XML.HXT.XPath.XPathParser-<a name="line-5"></a> Copyright : Copyright (C) 2006 Uwe Schmidt-<a name="line-6"></a> License : MIT-<a name="line-7"></a>-<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de)-<a name="line-9"></a> Stability : experimental-<a name="line-10"></a> Portability: portable-<a name="line-11"></a> Version : $Id: XPathParser.hs,v 1.6 2006/10/12 11:51:29 hxml Exp $-<a name="line-12"></a>-<a name="line-13"></a> the XPath Parser-<a name="line-14"></a>-<a name="line-15"></a>-}</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathParser</span>-<a name="line-20"></a> <span class='layout'>(</span> <span class='varid'>parseNumber</span>-<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>parseXPath</span>-<a name="line-22"></a> <span class='layout'>)</span>-<a name="line-23"></a><span class='keyword'>where</span>-<a name="line-24"></a>-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-26"></a>-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</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'>TypeDefs</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'>XPath</span><span class='varop'>.</span><span class='conid'>XPathKeywords</span>-<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathDataTypes</span>-<a name="line-33"></a>-<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Parser</span><span class='varop'>.</span><span class='conid'>XmlTokenParser</span>-<a name="line-35"></a> <span class='layout'>(</span> <span class='varid'>separator</span>-<a name="line-36"></a> <span class='layout'>,</span> <span class='varid'>systemLiteral</span>-<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>skipS0</span>-<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>ncName</span>-<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>qName</span>-<a name="line-40"></a> <span class='layout'>)</span>-<a name="line-41"></a>-<a name="line-42"></a><a name="lookupNs"></a><span class='definition'>lookupNs</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-43"></a><span class='definition'>lookupNs</span> <span class='varid'>uris</span> <span class='varid'>prefix</span>-<a name="line-44"></a> <span class='comment'>-- downwards compatibility: if namespace env is not supported</span>-<a name="line-45"></a> <span class='comment'>-- no error is raised, but the uri remains empty</span>-<a name="line-46"></a> <span class='comment'>-- not conformant to XPath spec: If namespaces are used, an complete env must be supported,</span>-<a name="line-47"></a> <span class='comment'>-- but we don't care about this</span>-<a name="line-48"></a>-<a name="line-49"></a> <span class='keyglyph'>=</span> <span class='varid'>lookup1</span> <span class='varid'>prefix</span> <span class='varid'>uris</span>-<a name="line-50"></a>-<a name="line-51"></a><a name="enhanceAttrQName"></a><span class='definition'>enhanceAttrQName</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>-<a name="line-52"></a><span class='definition'>enhanceAttrQName</span> <span class='varid'>uris</span> <span class='varid'>qn</span>-<a name="line-53"></a> <span class='keyglyph'>|</span> <span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>namePrefix</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>qn</span>-<a name="line-54"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>enhanceQName</span> <span class='varid'>uris</span> <span class='varid'>qn</span>-<a name="line-55"></a>-<a name="line-56"></a><a name="enhanceQName"></a><span class='definition'>enhanceQName</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>-<a name="line-57"></a><span class='definition'>enhanceQName</span> <span class='varid'>uris</span> <span class='varid'>qn</span>-<a name="line-58"></a> <span class='keyglyph'>=</span> <span class='varid'>qn</span> <span class='layout'>{</span><span class='varid'>namespaceUri</span> <span class='keyglyph'>=</span> <span class='varid'>lookupNs</span> <span class='varid'>uris</span> <span class='layout'>(</span><span class='varid'>namePrefix</span> <span class='varid'>qn</span><span class='layout'>)</span><span class='layout'>}</span>-<a name="line-59"></a>-<a name="line-60"></a><a name="enhanceQN"></a><span class='definition'>enhanceQN</span> <span class='keyglyph'>::</span> <span class='conid'>AxisSpec</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>-<a name="line-61"></a><span class='definition'>enhanceQN</span> <span class='conid'>Attribute</span> <span class='keyglyph'>=</span> <span class='varid'>enhanceAttrQName</span>-<a name="line-62"></a><span class='definition'>enhanceQN</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>enhanceQName</span>-<a name="line-63"></a>-<a name="line-64"></a><a name="XParser"></a><span class='keyword'>type</span> <span class='conid'>XParser</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='conid'>GenParser</span> <span class='conid'>Char</span> <span class='conid'>NsEnv</span> <span class='varid'>a</span>-<a name="line-65"></a>-<a name="line-66"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-67"></a><span class='comment'>-- parse functions which are used in the XPathFct module</span>-<a name="line-68"></a>-<a name="line-69"></a><a name="parseNumber"></a><span class='comment'>-- |</span>-<a name="line-70"></a><span class='comment'>-- parsing a number, parseNumber is used in "XPathFct"</span>-<a name="line-71"></a><span class='comment'>-- by the number function</span>-<a name="line-72"></a><span class='comment'>--</span>-<a name="line-73"></a><span class='comment'>-- - returns : the parsed number as 'XPNumber' float</span>-<a name="line-74"></a><span class='comment'>-- or 'XPVNumber' 'NaN' in case of error</span>-<a name="line-75"></a><span class='definition'>parseNumber</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XPathValue</span>-<a name="line-76"></a><span class='definition'>parseNumber</span> <span class='varid'>s</span>-<a name="line-77"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>runParser</span> <span class='varid'>parseNumber'</span> <span class='conid'>[]</span> <span class='comment'>{- Map.empty -}</span> <span class='str'>""</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyword'>of</span>-<a name="line-78"></a> <span class='conid'>Left</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='conid'>XPVNumber</span> <span class='conid'>NaN</span>-<a name="line-79"></a> <span class='conid'>Right</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>read</span> <span class='varid'>x</span> <span class='keyglyph'>::</span> <span class='conid'>Float</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='num'>0</span>-<a name="line-80"></a> <span class='keyword'>then</span> <span class='layout'>(</span><span class='conid'>XPVNumber</span> <span class='conid'>Pos0</span><span class='layout'>)</span>-<a name="line-81"></a> <span class='keyword'>else</span> <span class='conid'>XPVNumber</span> <span class='layout'>(</span><span class='conid'>Float</span> <span class='layout'>(</span><span class='varid'>read</span> <span class='varid'>x</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-82"></a>-<a name="line-83"></a><a name="parseNumber'"></a><span class='definition'>parseNumber'</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span>-<a name="line-84"></a><span class='definition'>parseNumber'</span>-<a name="line-85"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-86"></a> <span class='varid'>skipS0</span>-<a name="line-87"></a> <span class='varid'>m</span> <span class='keyglyph'><-</span> <span class='varid'>option</span> <span class='str'>""</span> <span class='layout'>(</span><span class='varid'>string</span> <span class='str'>"-"</span><span class='layout'>)</span>-<a name="line-88"></a> <span class='varid'>n</span> <span class='keyglyph'><-</span> <span class='varid'>number</span>-<a name="line-89"></a> <span class='varid'>skipS0</span>-<a name="line-90"></a> <span class='varid'>eof</span>-<a name="line-91"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>m</span> <span class='varop'>++</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-92"></a>-<a name="line-93"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-94"></a>-<a name="line-95"></a>-<a name="line-96"></a><span class='comment'>-- |</span>-<a name="line-97"></a><span class='comment'>-- the main entry point:</span>-<a name="line-98"></a><span class='comment'>-- parsing a XPath expression</span>-<a name="line-99"></a>-<a name="line-100"></a><a name="parseXPath"></a><span class='definition'>parseXPath</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-101"></a><span class='definition'>parseXPath</span>-<a name="line-102"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-103"></a> <span class='varid'>skipS0</span>-<a name="line-104"></a> <span class='varid'>xPathExpr</span> <span class='keyglyph'><-</span> <span class='varid'>expr</span>-<a name="line-105"></a> <span class='varid'>skipS0</span>-<a name="line-106"></a> <span class='varid'>eof</span>-<a name="line-107"></a> <span class='varid'>return</span> <span class='varid'>xPathExpr</span>-<a name="line-108"></a>-<a name="line-109"></a>-<a name="line-110"></a><a name="lpar"></a><span class='comment'>-- some useful token and symbol parser</span>-<a name="line-111"></a><span class='definition'>lpar</span><span class='layout'>,</span> <span class='varid'>rpar</span><span class='layout'>,</span> <span class='varid'>lbra</span><span class='layout'>,</span> <span class='varid'>rbra</span><span class='layout'>,</span> <span class='varid'>slash</span><span class='layout'>,</span> <span class='varid'>dslash</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>()</span>-<a name="line-112"></a>-<a name="line-113"></a><span class='definition'>lpar</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"("</span><span class='layout'>)</span>-<a name="line-114"></a><a name="rpar"></a><span class='definition'>rpar</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>")"</span><span class='layout'>)</span>-<a name="line-115"></a><a name="lbra"></a><span class='definition'>lbra</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"["</span><span class='layout'>)</span>-<a name="line-116"></a><a name="rbra"></a><span class='definition'>rbra</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"]"</span><span class='layout'>)</span>-<a name="line-117"></a><a name="slash"></a><span class='definition'>slash</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"/"</span><span class='layout'>)</span>-<a name="line-118"></a><a name="dslash"></a><span class='definition'>dslash</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"//"</span><span class='layout'>)</span>-<a name="line-119"></a>-<a name="line-120"></a>-<a name="line-121"></a><a name="tokenParser"></a><span class='definition'>tokenParser</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='conid'>()</span>-<a name="line-122"></a><span class='definition'>tokenParser</span> <span class='varid'>p</span>-<a name="line-123"></a> <span class='keyglyph'>=</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-124"></a> <span class='varid'>skipS0</span>-<a name="line-125"></a> <span class='varid'>p</span>-<a name="line-126"></a> <span class='varid'>skipS0</span>-<a name="line-127"></a> <span class='layout'>)</span>-<a name="line-128"></a>-<a name="line-129"></a>-<a name="line-130"></a><a name="symbolParser"></a><span class='definition'>symbolParser</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='varid'>a</span>-<a name="line-131"></a><span class='definition'>symbolParser</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span><span class='varid'>a</span><span class='layout'>)</span>-<a name="line-132"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-133"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-134"></a> <span class='varid'>return</span> <span class='varid'>a</span>-<a name="line-135"></a>-<a name="line-136"></a>-<a name="line-137"></a><a name="symbol"></a><span class='definition'>symbol</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='conid'>String</span>-<a name="line-138"></a><span class='definition'>symbol</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>try</span> <span class='layout'>(</span><span class='varid'>string</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-139"></a>-<a name="line-140"></a>-<a name="line-141"></a>-<a name="line-142"></a><a name="orOp"></a><span class='comment'>-- operation parser</span>-<a name="line-143"></a><span class='definition'>orOp</span><span class='layout'>,</span> <span class='varid'>andOp</span><span class='layout'>,</span> <span class='varid'>eqOp</span><span class='layout'>,</span> <span class='varid'>relOp</span><span class='layout'>,</span> <span class='varid'>addOp</span><span class='layout'>,</span> <span class='varid'>multiOp</span><span class='layout'>,</span> <span class='varid'>unionOp</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Op</span>-<a name="line-144"></a>-<a name="line-145"></a><span class='definition'>orOp</span> <span class='keyglyph'>=</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"or"</span><span class='layout'>,</span> <span class='conid'>Or</span><span class='layout'>)</span>-<a name="line-146"></a><a name="andOp"></a><span class='definition'>andOp</span> <span class='keyglyph'>=</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"and"</span><span class='layout'>,</span> <span class='conid'>And</span><span class='layout'>)</span>-<a name="line-147"></a>-<a name="line-148"></a><a name="eqOp"></a><span class='definition'>eqOp</span>-<a name="line-149"></a> <span class='keyglyph'>=</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"="</span><span class='layout'>,</span> <span class='conid'>Eq</span><span class='layout'>)</span>-<a name="line-150"></a> <span class='varop'><|></span> -<a name="line-151"></a> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"!="</span><span class='layout'>,</span> <span class='conid'>NEq</span><span class='layout'>)</span>-<a name="line-152"></a>-<a name="line-153"></a><a name="relOp"></a><span class='definition'>relOp</span>-<a name="line-154"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"<="</span><span class='layout'>,</span> <span class='conid'>LessEq</span><span class='layout'>)</span>-<a name="line-155"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>">="</span><span class='layout'>,</span> <span class='conid'>GreaterEq</span><span class='layout'>)</span>-<a name="line-156"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"<"</span><span class='layout'>,</span> <span class='conid'>Less</span><span class='layout'>)</span>-<a name="line-157"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>">"</span><span class='layout'>,</span> <span class='conid'>Greater</span><span class='layout'>)</span>-<a name="line-158"></a> <span class='keyglyph'>]</span>-<a name="line-159"></a>-<a name="line-160"></a><a name="addOp"></a><span class='definition'>addOp</span>-<a name="line-161"></a> <span class='keyglyph'>=</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"+"</span><span class='layout'>,</span> <span class='conid'>Plus</span><span class='layout'>)</span>-<a name="line-162"></a> <span class='varop'><|></span> -<a name="line-163"></a> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"-"</span><span class='layout'>,</span> <span class='conid'>Minus</span><span class='layout'>)</span>-<a name="line-164"></a>-<a name="line-165"></a>-<a name="line-166"></a><a name="multiOp"></a><span class='definition'>multiOp</span>-<a name="line-167"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"*"</span><span class='layout'>,</span> <span class='conid'>Mult</span><span class='layout'>)</span>-<a name="line-168"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"mod"</span><span class='layout'>,</span> <span class='conid'>Mod</span><span class='layout'>)</span>-<a name="line-169"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"div"</span><span class='layout'>,</span> <span class='conid'>Div</span><span class='layout'>)</span>-<a name="line-170"></a> <span class='keyglyph'>]</span>-<a name="line-171"></a>-<a name="line-172"></a>-<a name="line-173"></a><a name="unionOp"></a><span class='definition'>unionOp</span> <span class='keyglyph'>=</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"|"</span><span class='layout'>,</span> <span class='conid'>Union</span><span class='layout'>)</span>-<a name="line-174"></a>-<a name="line-175"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-176"></a>-<a name="line-177"></a><a name="mkExprNode"></a><span class='definition'>mkExprNode</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Op</span><span class='layout'>,</span> <span class='conid'>Expr</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>-<a name="line-178"></a><span class='definition'>mkExprNode</span> <span class='varid'>e1</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>-<a name="line-179"></a><span class='definition'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>l</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='layout'>(</span><span class='varid'>op</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> <span class='keyglyph'>=</span> -<a name="line-180"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>rest</span>-<a name="line-181"></a> <span class='keyword'>then</span> <span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='layout'>(</span><span class='varid'>e1</span><span class='conop'>:</span><span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>snd</span> <span class='varid'>l</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-182"></a> <span class='keyword'>else</span> <span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='varop'>$</span> <span class='layout'>(</span><span class='varid'>e1</span><span class='conop'>:</span><span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>snd</span> <span class='varop'>$</span> <span class='varid'>init</span> <span class='varid'>same</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='keyglyph'>[</span><span class='varid'>mkExprNode</span> <span class='layout'>(</span><span class='varid'>snd</span> <span class='varop'>$</span> <span class='varid'>last</span> <span class='varid'>same</span><span class='layout'>)</span> <span class='varid'>rest</span><span class='keyglyph'>]</span>-<a name="line-183"></a> <span class='keyword'>where</span> -<a name="line-184"></a> <span class='layout'>(</span><span class='varid'>same</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span><span class='varid'>op</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>fst</span><span class='layout'>)</span> <span class='varid'>l</span>-<a name="line-185"></a> -<a name="line-186"></a><span class='comment'>-- Tim Walkenhorst, original expr. below:</span>-<a name="line-187"></a><span class='comment'>-- It seems mkExprNode is called only with operators of the same precedence, that should make it fixable</span>-<a name="line-188"></a><span class='comment'>-- FIXED, see above!</span>-<a name="line-189"></a><span class='comment'>--mkExprNode e1 l@((op, _): _) = GenExpr op (e1:(map snd l)) -- Less than ideal: 1+1-1 = 3 ???</span>-<a name="line-190"></a>-<a name="line-191"></a>-<a name="line-192"></a><span class='comment'>--GenExpr op (e1:(map snd l))</span>-<a name="line-193"></a>-<a name="line-194"></a>-<a name="line-195"></a><a name="exprRest"></a><span class='definition'>exprRest</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Op</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='layout'>(</span><span class='conid'>Op</span><span class='layout'>,</span> <span class='conid'>Expr</span><span class='layout'>)</span>-<a name="line-196"></a><span class='definition'>exprRest</span> <span class='varid'>parserOp</span> <span class='varid'>parserExpr</span>-<a name="line-197"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-198"></a> <span class='varid'>op</span> <span class='keyglyph'><-</span> <span class='varid'>parserOp</span>-<a name="line-199"></a> <span class='varid'>e2</span> <span class='keyglyph'><-</span> <span class='varid'>parserExpr</span>-<a name="line-200"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>op</span><span class='layout'>,</span> <span class='varid'>e2</span><span class='layout'>)</span>-<a name="line-201"></a>-<a name="line-202"></a>-<a name="line-203"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-204"></a>-<a name="line-205"></a><a name="descOrSelfStep"></a><span class='comment'>-- abbreviation of "//"</span>-<a name="line-206"></a><span class='definition'>descOrSelfStep</span> <span class='keyglyph'>::</span> <span class='conid'>XStep</span> -<a name="line-207"></a><span class='definition'>descOrSelfStep</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>DescendantOrSelf</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPNode</span><span class='layout'>)</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-208"></a>-<a name="line-209"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-210"></a><span class='comment'>-- Location Paths (2)</span>-<a name="line-211"></a>-<a name="line-212"></a>-<a name="line-213"></a><a name="locPath"></a><span class='comment'>-- [1] LocationPath </span>-<a name="line-214"></a><span class='definition'>locPath</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>LocationPath</span>-<a name="line-215"></a><span class='definition'>locPath</span>-<a name="line-216"></a> <span class='keyglyph'>=</span> <span class='varid'>absLocPath</span>-<a name="line-217"></a> <span class='varop'><|></span> -<a name="line-218"></a> <span class='varid'>relLocPath'</span>-<a name="line-219"></a>-<a name="line-220"></a>-<a name="line-221"></a><a name="absLocPath"></a><span class='comment'>-- [2] AbsoluteLocationPath</span>-<a name="line-222"></a><span class='definition'>absLocPath</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>LocationPath</span>-<a name="line-223"></a><span class='definition'>absLocPath</span>-<a name="line-224"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span> <span class='comment'>-- [10]</span>-<a name="line-225"></a> <span class='varid'>dslash</span>-<a name="line-226"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>relLocPath</span>-<a name="line-227"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Abs</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='varid'>descOrSelfStep</span><span class='keyglyph'>]</span> <span class='varop'>++</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-228"></a> <span class='varop'><|></span> -<a name="line-229"></a> <span class='keyword'>do</span>-<a name="line-230"></a> <span class='varid'>slash</span>-<a name="line-231"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>option</span> <span class='conid'>[]</span> <span class='varid'>relLocPath</span>-<a name="line-232"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Abs</span> <span class='varid'>s</span><span class='layout'>)</span>-<a name="line-233"></a> <span class='varop'><?></span> <span class='str'>"absLocPath"</span>-<a name="line-234"></a>-<a name="line-235"></a>-<a name="line-236"></a><a name="relLocPath'"></a><span class='comment'>-- [3] RelativeLocationPath</span>-<a name="line-237"></a><span class='definition'>relLocPath'</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>LocationPath</span>-<a name="line-238"></a><span class='definition'>relLocPath'</span>-<a name="line-239"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-240"></a> <span class='varid'>rel</span> <span class='keyglyph'><-</span> <span class='varid'>relLocPath</span>-<a name="line-241"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Rel</span> <span class='varid'>rel</span><span class='layout'>)</span>-<a name="line-242"></a>-<a name="line-243"></a><a name="relLocPath"></a><span class='definition'>relLocPath</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='keyglyph'>[</span><span class='conid'>XStep</span><span class='keyglyph'>]</span>-<a name="line-244"></a><span class='definition'>relLocPath</span>-<a name="line-245"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-246"></a> <span class='varid'>s1</span> <span class='keyglyph'><-</span> <span class='varid'>step</span>-<a name="line-247"></a> <span class='varid'>s2</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>step'</span><span class='layout'>)</span>-<a name="line-248"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='varid'>s1</span><span class='keyglyph'>]</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>concat</span> <span class='varid'>s2</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-249"></a> <span class='varop'><?></span> <span class='str'>"relLocPath"</span>-<a name="line-250"></a>-<a name="line-251"></a>-<a name="line-252"></a><a name="step'"></a><span class='comment'>-- Location Steps (2.1)</span>-<a name="line-253"></a><span class='comment'>--</span>-<a name="line-254"></a><span class='comment'>-- [4] Step</span>-<a name="line-255"></a><span class='definition'>step'</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='keyglyph'>[</span><span class='conid'>XStep</span><span class='keyglyph'>]</span>-<a name="line-256"></a><span class='definition'>step'</span>-<a name="line-257"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span> <span class='comment'>-- [11]</span>-<a name="line-258"></a> <span class='varid'>dslash</span>-<a name="line-259"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>step</span>-<a name="line-260"></a> <span class='varid'>return</span> <span class='keyglyph'>[</span><span class='varid'>descOrSelfStep</span><span class='layout'>,</span><span class='varid'>s</span><span class='keyglyph'>]</span>-<a name="line-261"></a> <span class='varop'><|></span>-<a name="line-262"></a> <span class='keyword'>do</span>-<a name="line-263"></a> <span class='varid'>slash</span>-<a name="line-264"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>step</span>-<a name="line-265"></a> <span class='varid'>return</span> <span class='keyglyph'>[</span><span class='varid'>s</span><span class='keyglyph'>]</span>-<a name="line-266"></a> <span class='varop'><?></span> <span class='str'>"step'"</span>-<a name="line-267"></a>-<a name="line-268"></a><a name="step"></a><span class='definition'>step</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>XStep</span>-<a name="line-269"></a><span class='definition'>step</span>-<a name="line-270"></a> <span class='keyglyph'>=</span> <span class='varid'>abbrStep</span>-<a name="line-271"></a> <span class='varop'><|></span>-<a name="line-272"></a> <span class='keyword'>do</span>-<a name="line-273"></a> <span class='keyword'>as</span> <span class='keyglyph'><-</span> <span class='varid'>axisSpecifier'</span>-<a name="line-274"></a> <span class='varid'>nt</span> <span class='keyglyph'><-</span> <span class='varid'>nodeTest</span> <span class='keyword'>as</span>-<a name="line-275"></a> <span class='varid'>pr</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='varid'>predicate</span>-<a name="line-276"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='keyword'>as</span> <span class='varid'>nt</span> <span class='varid'>pr</span><span class='layout'>)</span>-<a name="line-277"></a> <span class='varop'><?></span> <span class='str'>"step"</span>-<a name="line-278"></a>-<a name="line-279"></a>-<a name="line-280"></a><a name="axisSpecifier'"></a><span class='comment'>-- [5] AxisSpecifier</span>-<a name="line-281"></a><span class='definition'>axisSpecifier'</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>AxisSpec</span>-<a name="line-282"></a><span class='definition'>axisSpecifier'</span>-<a name="line-283"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span> <span class='comment'>-- [13]</span>-<a name="line-284"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"@"</span><span class='layout'>)</span>-<a name="line-285"></a> <span class='varid'>return</span> <span class='conid'>Attribute</span>-<a name="line-286"></a> <span class='varop'><|></span>-<a name="line-287"></a> <span class='keyword'>do</span>-<a name="line-288"></a> <span class='keyword'>as</span> <span class='keyglyph'><-</span> <span class='varid'>option</span> <span class='conid'>Child</span> <span class='layout'>(</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>do</span> <span class='comment'>-- child-axis is default-axis</span>-<a name="line-289"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>axisSpecifier</span>-<a name="line-290"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"::"</span><span class='layout'>)</span>-<a name="line-291"></a> <span class='varid'>return</span> <span class='varid'>a</span>-<a name="line-292"></a> <span class='layout'>)</span>-<a name="line-293"></a> <span class='layout'>)</span>-<a name="line-294"></a> <span class='varid'>return</span> <span class='keyword'>as</span>-<a name="line-295"></a> <span class='varop'><?></span> <span class='str'>"axisSpecifier'"</span>-<a name="line-296"></a>-<a name="line-297"></a>-<a name="line-298"></a><a name="axisSpecifier"></a><span class='comment'>-- Axes (2.2)</span>-<a name="line-299"></a><span class='comment'>--</span>-<a name="line-300"></a><span class='comment'>-- [6] AxisName</span>-<a name="line-301"></a><span class='definition'>axisSpecifier</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>AxisSpec</span>-<a name="line-302"></a><span class='definition'>axisSpecifier</span>-<a name="line-303"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_ancestor_or_self</span><span class='layout'>,</span> <span class='conid'>AncestorOrSelf</span><span class='layout'>)</span>-<a name="line-304"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_ancestor</span><span class='layout'>,</span> <span class='conid'>Ancestor</span><span class='layout'>)</span>-<a name="line-305"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_attribute</span><span class='layout'>,</span> <span class='conid'>Attribute</span><span class='layout'>)</span>-<a name="line-306"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_child</span><span class='layout'>,</span> <span class='conid'>Child</span><span class='layout'>)</span>-<a name="line-307"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_descendant_or_self</span><span class='layout'>,</span> <span class='conid'>DescendantOrSelf</span><span class='layout'>)</span>-<a name="line-308"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_descendant</span><span class='layout'>,</span> <span class='conid'>Descendant</span><span class='layout'>)</span>-<a name="line-309"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_following_sibling</span><span class='layout'>,</span> <span class='conid'>FollowingSibling</span><span class='layout'>)</span>-<a name="line-310"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_following</span><span class='layout'>,</span> <span class='conid'>Following</span><span class='layout'>)</span>-<a name="line-311"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_namespace</span><span class='layout'>,</span> <span class='conid'>Namespace</span><span class='layout'>)</span>-<a name="line-312"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_parent</span><span class='layout'>,</span> <span class='conid'>Parent</span><span class='layout'>)</span>-<a name="line-313"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_preceding_sibling</span><span class='layout'>,</span> <span class='conid'>PrecedingSibling</span><span class='layout'>)</span>-<a name="line-314"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_preceding</span><span class='layout'>,</span> <span class='conid'>Preceding</span><span class='layout'>)</span>-<a name="line-315"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_self</span><span class='layout'>,</span> <span class='conid'>Self</span><span class='layout'>)</span>-<a name="line-316"></a> <span class='keyglyph'>]</span>-<a name="line-317"></a> <span class='varop'><?></span> <span class='str'>"axisSpecifier"</span>-<a name="line-318"></a>-<a name="line-319"></a>-<a name="line-320"></a><a name="nodeTest"></a><span class='comment'>-- Node Tests (2.3)</span>-<a name="line-321"></a><span class='comment'>--</span>-<a name="line-322"></a><span class='comment'>-- [7] NodeTest</span>-<a name="line-323"></a><span class='definition'>nodeTest</span> <span class='keyglyph'>::</span> <span class='conid'>AxisSpec</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='conid'>NodeTest</span>-<a name="line-324"></a><span class='definition'>nodeTest</span> <span class='keyword'>as</span>-<a name="line-325"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-326"></a> <span class='varid'>nt</span> <span class='keyglyph'><-</span> <span class='varid'>try</span> <span class='varid'>nodeType'</span>-<a name="line-327"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='varid'>nt</span><span class='layout'>)</span>-<a name="line-328"></a> <span class='varop'><|></span>-<a name="line-329"></a> <span class='keyword'>do</span>-<a name="line-330"></a> <span class='varid'>processInst</span> <span class='keyglyph'><-</span> <span class='varid'>pI</span>-<a name="line-331"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>PI</span> <span class='varid'>processInst</span><span class='layout'>)</span>-<a name="line-332"></a> <span class='varop'><|></span>-<a name="line-333"></a> <span class='keyword'>do</span>-<a name="line-334"></a> <span class='varid'>nt</span> <span class='keyglyph'><-</span> <span class='varid'>nameTest</span> <span class='keyword'>as</span>-<a name="line-335"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>NameTest</span> <span class='varid'>nt</span><span class='layout'>)</span>-<a name="line-336"></a> <span class='varop'><?></span> <span class='str'>"nodeTest"</span>-<a name="line-337"></a>-<a name="line-338"></a><a name="pI"></a><span class='definition'>pI</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span>-<a name="line-339"></a><span class='definition'>pI</span>-<a name="line-340"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-341"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='varid'>n_processing_instruction</span><span class='layout'>)</span>-<a name="line-342"></a> <span class='varid'>li</span> <span class='keyglyph'><-</span> <span class='varid'>between</span> <span class='varid'>lpar</span> <span class='varid'>rpar</span> <span class='varid'>literal</span>-<a name="line-343"></a> <span class='varid'>return</span> <span class='varid'>li</span>-<a name="line-344"></a> <span class='varop'><?></span> <span class='str'>"Processing-Instruction"</span>-<a name="line-345"></a>-<a name="line-346"></a>-<a name="line-347"></a><a name="predicate"></a><span class='comment'>-- Predicates (2.4)</span>-<a name="line-348"></a><span class='comment'>--</span>-<a name="line-349"></a><span class='comment'>-- [8] Predicate</span>-<a name="line-350"></a><span class='comment'>-- [9] PredicateExpr</span>-<a name="line-351"></a><span class='definition'>predicate</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-352"></a><span class='definition'>predicate</span> -<a name="line-353"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-354"></a> <span class='varid'>ex</span> <span class='keyglyph'><-</span> <span class='varid'>between</span> <span class='varid'>lbra</span> <span class='varid'>rbra</span> <span class='varid'>expr</span>-<a name="line-355"></a> <span class='varid'>return</span> <span class='varid'>ex</span>-<a name="line-356"></a>-<a name="line-357"></a>-<a name="line-358"></a><span class='comment'>-- Abbreviated Syntax (2.5)</span>-<a name="line-359"></a><span class='comment'>--</span>-<a name="line-360"></a><span class='comment'>-- [10] AbbreviatedAbsoluteLocationPath: q.v. [2]</span>-<a name="line-361"></a><span class='comment'>-- [11] AbbreviatedRelativeLocationPath: q.v. [4]</span>-<a name="line-362"></a>-<a name="line-363"></a><a name="abbrStep"></a><span class='comment'>-- [12] AbbreviatedStep</span>-<a name="line-364"></a><span class='definition'>abbrStep</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>XStep</span>-<a name="line-365"></a><span class='definition'>abbrStep</span> -<a name="line-366"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-367"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>".."</span><span class='layout'>)</span>-<a name="line-368"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Parent</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPNode</span><span class='layout'>)</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-369"></a> <span class='varop'><|></span>-<a name="line-370"></a> <span class='keyword'>do</span>-<a name="line-371"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"."</span><span class='layout'>)</span>-<a name="line-372"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Self</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPNode</span><span class='layout'>)</span> <span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-373"></a> <span class='varop'><?></span> <span class='str'>"abbrStep"</span>-<a name="line-374"></a>-<a name="line-375"></a><span class='comment'>-- [13] AbbreviatedAxisSpecifier: q.v. [5]</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'>-- Expressions (3)</span>-<a name="line-380"></a>-<a name="line-381"></a>-<a name="line-382"></a><a name="expr"></a><span class='comment'>-- Basics (3.1)</span>-<a name="line-383"></a><span class='comment'>--</span>-<a name="line-384"></a><span class='comment'>-- [14] Expr</span>-<a name="line-385"></a><span class='definition'>expr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-386"></a><span class='definition'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>orExpr</span>-<a name="line-387"></a>-<a name="line-388"></a>-<a name="line-389"></a><a name="primaryExpr"></a><span class='comment'>-- [15] PrimaryExpr</span>-<a name="line-390"></a><span class='definition'>primaryExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-391"></a><span class='definition'>primaryExpr</span>-<a name="line-392"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-393"></a> <span class='varid'>vr</span> <span class='keyglyph'><-</span> <span class='varid'>variableReference</span>-<a name="line-394"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>VarExpr</span> <span class='varid'>vr</span><span class='layout'>)</span>-<a name="line-395"></a> <span class='varop'><|></span>-<a name="line-396"></a> <span class='keyword'>do</span>-<a name="line-397"></a> <span class='varid'>ex</span> <span class='keyglyph'><-</span> <span class='varid'>between</span> <span class='varid'>lpar</span> <span class='varid'>rpar</span> <span class='varid'>expr</span>-<a name="line-398"></a> <span class='varid'>return</span> <span class='varid'>ex</span>-<a name="line-399"></a> <span class='varop'><|></span>-<a name="line-400"></a> <span class='keyword'>do</span>-<a name="line-401"></a> <span class='varid'>li</span> <span class='keyglyph'><-</span> <span class='varid'>literal</span>-<a name="line-402"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>LiteralExpr</span> <span class='varid'>li</span><span class='layout'>)</span>-<a name="line-403"></a> <span class='varop'><|></span> -<a name="line-404"></a> <span class='keyword'>do</span>-<a name="line-405"></a> <span class='varid'>num</span> <span class='keyglyph'><-</span> <span class='varid'>number</span>-<a name="line-406"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>NumberExpr</span> <span class='layout'>(</span><span class='conid'>Float</span> <span class='varop'>$</span> <span class='varid'>read</span> <span class='varid'>num</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-407"></a> <span class='varop'><|></span>-<a name="line-408"></a> <span class='keyword'>do</span>-<a name="line-409"></a> <span class='varid'>fc</span> <span class='keyglyph'><-</span> <span class='varid'>functionCall</span>-<a name="line-410"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>fc</span><span class='layout'>)</span>-<a name="line-411"></a> <span class='varop'><?></span> <span class='str'>"primaryExpr"</span>-<a name="line-412"></a>-<a name="line-413"></a>-<a name="line-414"></a><a name="functionCall"></a><span class='comment'>-- Function Calls (3.2)</span>-<a name="line-415"></a><span class='comment'>--</span>-<a name="line-416"></a><span class='comment'>-- [16] FunctionCall</span>-<a name="line-417"></a><span class='comment'>-- [17] Argument</span>-<a name="line-418"></a><span class='definition'>functionCall</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-419"></a><span class='definition'>functionCall</span>-<a name="line-420"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-421"></a> <span class='varid'>fn</span> <span class='keyglyph'><-</span> <span class='varid'>functionName</span>-<a name="line-422"></a> <span class='varid'>arg</span> <span class='keyglyph'><-</span> <span class='varid'>between</span> <span class='varid'>lpar</span> <span class='varid'>rpar</span> <span class='layout'>(</span> <span class='varid'>sepBy</span> <span class='varid'>expr</span> <span class='layout'>(</span><span class='varid'>separator</span> <span class='chr'>','</span><span class='layout'>)</span> <span class='layout'>)</span>-<a name="line-423"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='varid'>fn</span> <span class='varid'>arg</span><span class='layout'>)</span>-<a name="line-424"></a> <span class='varop'><?></span> <span class='str'>"functionCall"</span>-<a name="line-425"></a>-<a name="line-426"></a>-<a name="line-427"></a><a name="unionExpr"></a><span class='comment'>-- Node-sets (3.3)</span>-<a name="line-428"></a><span class='comment'>--</span>-<a name="line-429"></a><span class='comment'>-- [18] UnionExpr</span>-<a name="line-430"></a><span class='definition'>unionExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-431"></a><span class='definition'>unionExpr</span>-<a name="line-432"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-433"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>pathExpr</span>-<a name="line-434"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>unionOp</span> <span class='varid'>pathExpr</span><span class='layout'>)</span>-<a name="line-435"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>-<a name="line-436"></a>-<a name="line-437"></a>-<a name="line-438"></a><a name="pathExpr"></a><span class='comment'>-- [19] PathExpr</span>-<a name="line-439"></a><span class='definition'>pathExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-440"></a><span class='definition'>pathExpr</span>-<a name="line-441"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-442"></a> <span class='varid'>fe</span> <span class='keyglyph'><-</span> <span class='varid'>try</span> <span class='varid'>filterExpr</span>-<a name="line-443"></a> <span class='varid'>path</span> <span class='keyglyph'><-</span> <span class='keyword'>do</span>-<a name="line-444"></a> <span class='varid'>dslash</span>-<a name="line-445"></a> <span class='conid'>LocPath</span> <span class='varid'>t1</span> <span class='varid'>t2</span> <span class='keyglyph'><-</span> <span class='varid'>relLocPath'</span>-<a name="line-446"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>fe</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='varid'>t1</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='varid'>descOrSelfStep</span><span class='keyglyph'>]</span> <span class='varop'>++</span> <span class='varid'>t2</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-447"></a> <span class='varop'><|></span>-<a name="line-448"></a> <span class='keyword'>do</span>-<a name="line-449"></a> <span class='varid'>slash</span>-<a name="line-450"></a> <span class='varid'>relPath</span> <span class='keyglyph'><-</span> <span class='varid'>relLocPath'</span>-<a name="line-451"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>fe</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>relPath</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-452"></a> <span class='varop'><|></span>-<a name="line-453"></a> <span class='varid'>return</span> <span class='varid'>fe</span>-<a name="line-454"></a> <span class='varid'>return</span> <span class='varid'>path</span>-<a name="line-455"></a> <span class='varop'><|></span>-<a name="line-456"></a> <span class='keyword'>do</span>-<a name="line-457"></a> <span class='varid'>lp</span> <span class='keyglyph'><-</span> <span class='varid'>locPath</span>-<a name="line-458"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-459"></a> <span class='varop'><?></span> <span class='str'>"pathExpr"</span>-<a name="line-460"></a>-<a name="line-461"></a>-<a name="line-462"></a><a name="filterExpr"></a><span class='comment'>-- [20] FilterExpr</span>-<a name="line-463"></a><span class='definition'>filterExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-464"></a><span class='definition'>filterExpr</span>-<a name="line-465"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-466"></a> <span class='varid'>prim</span> <span class='keyglyph'><-</span> <span class='varid'>primaryExpr</span>-<a name="line-467"></a> <span class='varid'>predicates</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='varid'>predicate</span>-<a name="line-468"></a> <span class='keyword'>if</span> <span class='varid'>length</span> <span class='varid'>predicates</span> <span class='varop'>></span> <span class='num'>0</span>-<a name="line-469"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>FilterExpr</span> <span class='layout'>(</span><span class='varid'>prim</span> <span class='conop'>:</span> <span class='varid'>predicates</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-470"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varid'>prim</span>-<a name="line-471"></a> <span class='varop'><?></span> <span class='str'>"filterExpr"</span>-<a name="line-472"></a>-<a name="line-473"></a>-<a name="line-474"></a><a name="orExpr"></a><span class='comment'>-- Booleans (3.4)</span>-<a name="line-475"></a><span class='comment'>--</span>-<a name="line-476"></a><span class='comment'>-- [21] OrExpr</span>-<a name="line-477"></a><span class='definition'>orExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-478"></a><span class='definition'>orExpr</span>-<a name="line-479"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-480"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>andExpr</span>-<a name="line-481"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>orOp</span> <span class='varid'>andExpr</span><span class='layout'>)</span>-<a name="line-482"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>-<a name="line-483"></a> <span class='varop'><?></span> <span class='str'>"orExpr"</span>-<a name="line-484"></a>-<a name="line-485"></a>-<a name="line-486"></a><a name="andExpr"></a><span class='comment'>-- [22] AndExpr</span>-<a name="line-487"></a><span class='definition'>andExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-488"></a><span class='definition'>andExpr</span>-<a name="line-489"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-490"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>equalityExpr</span>-<a name="line-491"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>andOp</span> <span class='varid'>equalityExpr</span><span class='layout'>)</span>-<a name="line-492"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>-<a name="line-493"></a> <span class='varop'><?></span> <span class='str'>"andExpr"</span>-<a name="line-494"></a>-<a name="line-495"></a>-<a name="line-496"></a><a name="equalityExpr"></a><span class='comment'>-- [23] EqualityExpr</span>-<a name="line-497"></a><span class='definition'>equalityExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-498"></a><span class='definition'>equalityExpr</span>-<a name="line-499"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-500"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>relationalExpr</span>-<a name="line-501"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>eqOp</span> <span class='varid'>relationalExpr</span><span class='layout'>)</span>-<a name="line-502"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>-<a name="line-503"></a> <span class='varop'><?></span> <span class='str'>"equalityExpr"</span>-<a name="line-504"></a>-<a name="line-505"></a>-<a name="line-506"></a><a name="relationalExpr"></a><span class='comment'>-- [24] RelationalExpr</span>-<a name="line-507"></a><span class='definition'>relationalExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-508"></a><span class='definition'>relationalExpr</span>-<a name="line-509"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-510"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>additiveExpr</span>-<a name="line-511"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>relOp</span> <span class='varid'>additiveExpr</span><span class='layout'>)</span>-<a name="line-512"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>-<a name="line-513"></a> <span class='varop'><?></span> <span class='str'>"relationalExpr"</span>-<a name="line-514"></a>-<a name="line-515"></a>-<a name="line-516"></a><a name="additiveExpr"></a><span class='comment'>-- Numbers (3.5)</span>-<a name="line-517"></a><span class='comment'>--</span>-<a name="line-518"></a><span class='comment'>-- [25] AdditiveExpr</span>-<a name="line-519"></a><span class='definition'>additiveExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-520"></a><span class='definition'>additiveExpr</span>-<a name="line-521"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-522"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>multiplicativeExpr</span>-<a name="line-523"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>addOp</span> <span class='varid'>multiplicativeExpr</span><span class='layout'>)</span>-<a name="line-524"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>-<a name="line-525"></a> <span class='varop'><?></span> <span class='str'>"additiveExpr"</span>-<a name="line-526"></a>-<a name="line-527"></a>-<a name="line-528"></a><a name="multiplicativeExpr"></a><span class='comment'>-- [26] MultiplicativeExpr</span>-<a name="line-529"></a><span class='definition'>multiplicativeExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-530"></a><span class='definition'>multiplicativeExpr</span>-<a name="line-531"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-532"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>unaryExpr</span>-<a name="line-533"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>multiOp</span> <span class='varid'>unaryExpr</span><span class='layout'>)</span>-<a name="line-534"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>-<a name="line-535"></a> <span class='varop'><?></span> <span class='str'>"multiplicativeExpr"</span>-<a name="line-536"></a>-<a name="line-537"></a>-<a name="line-538"></a><a name="unaryExpr"></a><span class='comment'>-- [27] UnaryExpr</span>-<a name="line-539"></a><span class='definition'>unaryExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>-<a name="line-540"></a><span class='definition'>unaryExpr</span>-<a name="line-541"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-542"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"-"</span><span class='layout'>)</span>-<a name="line-543"></a> <span class='varid'>u</span> <span class='keyglyph'><-</span> <span class='varid'>unaryExpr</span>-<a name="line-544"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='conid'>Unary</span> <span class='keyglyph'>[</span><span class='varid'>u</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-545"></a> <span class='varop'><|></span>-<a name="line-546"></a> <span class='keyword'>do</span>-<a name="line-547"></a> <span class='varid'>u</span> <span class='keyglyph'><-</span> <span class='varid'>unionExpr</span>-<a name="line-548"></a> <span class='varid'>return</span> <span class='varid'>u</span>-<a name="line-549"></a> <span class='varop'><?></span> <span class='str'>"unaryExpr"</span>-<a name="line-550"></a>-<a name="line-551"></a>-<a name="line-552"></a><a name="literal"></a><span class='comment'>-- Lexical Structure (3.7)</span>-<a name="line-553"></a><span class='comment'>--</span>-<a name="line-554"></a><span class='comment'>-- [29] Literal</span>-<a name="line-555"></a><span class='comment'>-- systemLiteral from XmlParser is used</span>-<a name="line-556"></a><span class='definition'>literal</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span>-<a name="line-557"></a><span class='definition'>literal</span> <span class='keyglyph'>=</span> <span class='varid'>systemLiteral</span>-<a name="line-558"></a>-<a name="line-559"></a>-<a name="line-560"></a><a name="number"></a><span class='comment'>-- [30] Number</span>-<a name="line-561"></a><span class='definition'>number</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span>-<a name="line-562"></a><span class='definition'>number</span>-<a name="line-563"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-564"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"."</span><span class='layout'>)</span>-<a name="line-565"></a> <span class='varid'>d</span> <span class='keyglyph'><-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>-<a name="line-566"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='str'>"0."</span> <span class='varop'>++</span> <span class='varid'>d</span><span class='layout'>)</span>-<a name="line-567"></a> <span class='varop'><|></span>-<a name="line-568"></a> <span class='keyword'>do</span>-<a name="line-569"></a> <span class='varid'>d</span> <span class='keyglyph'><-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>-<a name="line-570"></a> <span class='varid'>d1</span> <span class='keyglyph'><-</span> <span class='varid'>option</span> <span class='str'>""</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-571"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"."</span><span class='layout'>)</span>-<a name="line-572"></a> <span class='varid'>d2</span> <span class='keyglyph'><-</span> <span class='varid'>option</span> <span class='str'>"0"</span> <span class='layout'>(</span><span class='varid'>many1</span> <span class='varid'>digit</span><span class='layout'>)</span>-<a name="line-573"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='str'>"."</span> <span class='varop'>++</span> <span class='varid'>d2</span><span class='layout'>)</span>-<a name="line-574"></a> <span class='layout'>)</span>-<a name="line-575"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>d</span> <span class='varop'>++</span> <span class='varid'>d1</span><span class='layout'>)</span>-<a name="line-576"></a> <span class='varop'><?></span> <span class='str'>"number"</span>-<a name="line-577"></a>-<a name="line-578"></a>-<a name="line-579"></a><span class='comment'>-- [35] FunctionName</span>-<a name="line-580"></a><span class='comment'>-- no nodetype name is allowed as a function name</span>-<a name="line-581"></a><span class='comment'>-- Tim Walkenhorst:</span>-<a name="line-582"></a><span class='comment'>-- Change in String encoding for function name</span>-<a name="line-583"></a><span class='comment'>--</span>-<a name="line-584"></a><span class='comment'>-- previoulsy: new:</span>-<a name="line-585"></a><span class='comment'>-- </span>-<a name="line-586"></a><span class='comment'>-- name name</span>-<a name="line-587"></a><span class='comment'>-- pref:name {<a href="http://uri-for-pref">http://uri-for-pref</a>}name</span>-<a name="line-588"></a>-<a name="line-589"></a><a name="functionName"></a><span class='definition'>functionName</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span>-<a name="line-590"></a><span class='definition'>functionName</span>-<a name="line-591"></a> <span class='keyglyph'>=</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>do</span> -<a name="line-592"></a> <span class='layout'>(</span><span class='varid'>p</span><span class='layout'>,</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>qName</span>-<a name="line-593"></a> <span class='varid'>uris</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>-<a name="line-594"></a> <span class='varid'>u</span> <span class='keyglyph'><-</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>p</span> <span class='keyword'>then</span> <span class='str'>""</span> <span class='keyword'>else</span> <span class='chr'>'{'</span> <span class='conop'>:</span> <span class='varid'>lookupNs</span> <span class='varid'>uris</span> <span class='varid'>p</span> <span class='varop'>++</span> <span class='str'>"}"</span>-<a name="line-595"></a> <span class='keyword'>let</span> <span class='varid'>fn</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>u</span> <span class='varop'>++</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyword'>in</span>-<a name="line-596"></a> <span class='keyword'>if</span> <span class='varid'>fn</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"processing-instruction"</span><span class='layout'>,</span> <span class='str'>"comment"</span><span class='layout'>,</span> <span class='str'>"text"</span><span class='layout'>,</span> <span class='str'>"node"</span><span class='keyglyph'>]</span>-<a name="line-597"></a> <span class='keyword'>then</span> <span class='varid'>fail</span> <span class='layout'>(</span><span class='str'>"function name: "</span> <span class='varop'>++</span> <span class='varid'>fn</span> <span class='varop'>++</span> <span class='str'>"not allowed"</span><span class='layout'>)</span>-<a name="line-598"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varid'>fn</span>-<a name="line-599"></a> <span class='layout'>)</span>-<a name="line-600"></a> <span class='varop'><?></span> <span class='str'>"functionName"</span>-<a name="line-601"></a>-<a name="line-602"></a>-<a name="line-603"></a><a name="variableReference"></a><span class='comment'>-- [36] VariableReference</span>-<a name="line-604"></a><span class='definition'>variableReference</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-605"></a><span class='definition'>variableReference</span>-<a name="line-606"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-607"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"$"</span><span class='layout'>)</span>-<a name="line-608"></a> <span class='layout'>(</span><span class='varid'>p</span><span class='layout'>,</span><span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>qName</span>-<a name="line-609"></a> <span class='varid'>uris</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>-<a name="line-610"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>lookupNs</span> <span class='varid'>uris</span> <span class='varid'>p</span><span class='layout'>,</span> <span class='varid'>n</span><span class='layout'>)</span>-<a name="line-611"></a> <span class='varop'><?></span> <span class='str'>"variableReference"</span>-<a name="line-612"></a>-<a name="line-613"></a>-<a name="line-614"></a><a name="nameTest"></a><span class='comment'>-- [37] NameTest</span>-<a name="line-615"></a><span class='definition'>nameTest</span> <span class='keyglyph'>::</span> <span class='conid'>AxisSpec</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='conid'>QName</span>-<a name="line-616"></a><span class='definition'>nameTest</span> <span class='keyword'>as</span>-<a name="line-617"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-618"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"*"</span><span class='layout'>)</span>-<a name="line-619"></a> <span class='varid'>uris</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>-<a name="line-620"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>enhanceQN</span> <span class='keyword'>as</span> <span class='varid'>uris</span> <span class='varop'>$</span> <span class='varid'>mkName</span> <span class='str'>"*"</span><span class='layout'>)</span>-<a name="line-621"></a> <span class='varop'><|></span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>do</span>-<a name="line-622"></a> <span class='varid'>pre</span> <span class='keyglyph'><-</span> <span class='varid'>ncName</span>-<a name="line-623"></a> <span class='varid'>symbol</span> <span class='str'>":*"</span>-<a name="line-624"></a> <span class='varid'>uris</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>-<a name="line-625"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>enhanceQN</span> <span class='keyword'>as</span> <span class='varid'>uris</span> <span class='varop'>$</span> <span class='varid'>mkNsName</span> <span class='layout'>(</span><span class='varid'>pre</span> <span class='varop'>++</span> <span class='str'>":*"</span><span class='layout'>)</span> <span class='str'>""</span><span class='layout'>)</span> -<a name="line-626"></a> <span class='layout'>)</span>-<a name="line-627"></a> <span class='varop'><|></span>-<a name="line-628"></a> <span class='keyword'>do</span>-<a name="line-629"></a> <span class='layout'>(</span><span class='varid'>pre</span><span class='layout'>,</span><span class='varid'>local</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>qName</span> -<a name="line-630"></a> <span class='varid'>uris</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>-<a name="line-631"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>enhanceQN</span> <span class='keyword'>as</span> <span class='varid'>uris</span> <span class='varop'>$</span> <span class='varid'>mkNsName</span> <span class='layout'>(</span><span class='varid'>pre</span> <span class='varop'>++</span> <span class='str'>":"</span> <span class='varop'>++</span> <span class='varid'>local</span><span class='layout'>)</span> <span class='str'>""</span><span class='layout'>)</span>-<a name="line-632"></a> <span class='varop'><?></span> <span class='str'>"nameTest"</span> -<a name="line-633"></a>-<a name="line-634"></a> -<a name="line-635"></a><a name="nodeType'"></a><span class='comment'>-- [38] NodeType</span>-<a name="line-636"></a><span class='definition'>nodeType'</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>XPathNode</span>-<a name="line-637"></a><span class='definition'>nodeType'</span> -<a name="line-638"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>-<a name="line-639"></a> <span class='varid'>nt</span> <span class='keyglyph'><-</span> <span class='varid'>nodeType</span>-<a name="line-640"></a> <span class='varid'>lpar</span>-<a name="line-641"></a> <span class='varid'>rpar</span>-<a name="line-642"></a> <span class='varid'>return</span> <span class='varid'>nt</span>-<a name="line-643"></a> <span class='varop'><?></span> <span class='str'>"nodeType'"</span>-<a name="line-644"></a> -<a name="line-645"></a><a name="nodeType"></a><span class='definition'>nodeType</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>XPathNode</span>-<a name="line-646"></a><span class='definition'>nodeType</span> -<a name="line-647"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>n_comment</span><span class='layout'>,</span> <span class='conid'>XPCommentNode</span><span class='layout'>)</span>-<a name="line-648"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>n_text</span><span class='layout'>,</span> <span class='conid'>XPTextNode</span><span class='layout'>)</span>-<a name="line-649"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>n_processing_instruction</span><span class='layout'>,</span> <span class='conid'>XPPINode</span><span class='layout'>)</span>-<a name="line-650"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>n_node</span><span class='layout'>,</span> <span class='conid'>XPNode</span><span class='layout'>)</span>-<a name="line-651"></a> <span class='keyglyph'>]</span>-<a name="line-652"></a> <span class='varop'><?></span> <span class='str'>"nodeType"</span>+<a name="line-5"></a> Copyright : Copyright (C) 2006-2008 Uwe Schmidt+<a name="line-6"></a> License : MIT+<a name="line-7"></a>+<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe@fh-wedel.de)+<a name="line-9"></a> Stability : experimental+<a name="line-10"></a> Portability: portable+<a name="line-11"></a>+<a name="line-12"></a> the XPath Parser+<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'>XPath</span><span class='varop'>.</span><span class='conid'>XPathParser</span>+<a name="line-19"></a> <span class='layout'>(</span> <span class='varid'>parseNumber</span>+<a name="line-20"></a> <span class='layout'>,</span> <span class='varid'>parseXPath</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'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</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'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</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'>TypeDefs</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'>XPath</span><span class='varop'>.</span><span class='conid'>XPathKeywords</span>+<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathDataTypes</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'>Parser</span><span class='varop'>.</span><span class='conid'>XmlTokenParser</span>+<a name="line-34"></a> <span class='layout'>(</span> <span class='varid'>separator</span>+<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>systemLiteral</span>+<a name="line-36"></a> <span class='layout'>,</span> <span class='varid'>skipS0</span>+<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>ncName</span>+<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>qName</span>+<a name="line-39"></a> <span class='layout'>)</span>+<a name="line-40"></a>+<a name="line-41"></a><a name="lookupNs"></a><span class='definition'>lookupNs</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>XName</span> <span class='keyglyph'>-></span> <span class='conid'>XName</span>+<a name="line-42"></a><span class='definition'>lookupNs</span> <span class='varid'>uris</span> <span class='varid'>prefix</span>+<a name="line-43"></a> <span class='comment'>-- downwards compatibility: if namespace env is not supported</span>+<a name="line-44"></a> <span class='comment'>-- no error is raised, but the uri remains empty</span>+<a name="line-45"></a> <span class='comment'>-- not conformant to XPath spec:</span>+<a name="line-46"></a> <span class='comment'>-- If namespaces are used, a complete env must be supported,</span>+<a name="line-47"></a> <span class='comment'>-- but we don't care about this</span>+<a name="line-48"></a> <span class='keyglyph'>=</span> <span class='varid'>fromMaybe</span> <span class='varid'>nullXName</span> <span class='varop'>$</span> <span class='varid'>lookup</span> <span class='varid'>prefix</span> <span class='varid'>uris</span>+<a name="line-49"></a>+<a name="line-50"></a><a name="enhanceAttrQName"></a><span class='definition'>enhanceAttrQName</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-51"></a><span class='definition'>enhanceAttrQName</span> <span class='varid'>uris</span> <span class='varid'>qn</span>+<a name="line-52"></a> <span class='keyglyph'>|</span> <span class='varid'>isNullXName</span> <span class='layout'>(</span><span class='varid'>namePrefix'</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>qn</span>+<a name="line-53"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>enhanceQName</span> <span class='varid'>uris</span> <span class='varid'>qn</span>+<a name="line-54"></a>+<a name="line-55"></a><a name="enhanceQName"></a><span class='definition'>enhanceQName</span> <span class='keyglyph'>::</span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-56"></a><span class='definition'>enhanceQName</span> <span class='varid'>uris</span> <span class='varid'>qn</span> <span class='keyglyph'>=</span> <span class='varid'>setNamespaceUri'</span> <span class='layout'>(</span> <span class='varid'>lookupNs</span> <span class='varid'>uris</span> <span class='layout'>(</span><span class='varid'>namePrefix'</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='layout'>)</span> <span class='varid'>qn</span>+<a name="line-57"></a>+<a name="line-58"></a><a name="enhanceQN"></a><span class='definition'>enhanceQN</span> <span class='keyglyph'>::</span> <span class='conid'>AxisSpec</span> <span class='keyglyph'>-></span> <span class='conid'>NsEnv</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span>+<a name="line-59"></a><span class='definition'>enhanceQN</span> <span class='conid'>Attribute</span> <span class='keyglyph'>=</span> <span class='varid'>enhanceAttrQName</span>+<a name="line-60"></a><span class='definition'>enhanceQN</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>enhanceQName</span>+<a name="line-61"></a>+<a name="line-62"></a><a name="XParser"></a><span class='keyword'>type</span> <span class='conid'>XParser</span> <span class='varid'>a</span> <span class='keyglyph'>=</span> <span class='conid'>GenParser</span> <span class='conid'>Char</span> <span class='conid'>NsEnv</span> <span class='varid'>a</span>+<a name="line-63"></a>+<a name="line-64"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-65"></a><span class='comment'>-- parse functions which are used in the XPathFct module</span>+<a name="line-66"></a>+<a name="line-67"></a><a name="parseNumber"></a><span class='comment'>-- |</span>+<a name="line-68"></a><span class='comment'>-- parsing a number, parseNumber is used in "XPathFct"</span>+<a name="line-69"></a><span class='comment'>-- by the number function</span>+<a name="line-70"></a><span class='comment'>--</span>+<a name="line-71"></a><span class='comment'>-- - returns : the parsed number as 'XPNumber' float</span>+<a name="line-72"></a><span class='comment'>-- or 'XPVNumber' 'NaN' in case of error</span>+<a name="line-73"></a><span class='definition'>parseNumber</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XPathValue</span>+<a name="line-74"></a><span class='definition'>parseNumber</span> <span class='varid'>s</span>+<a name="line-75"></a> <span class='keyglyph'>=</span> <span class='keyword'>case</span> <span class='layout'>(</span><span class='varid'>runParser</span> <span class='varid'>parseNumber'</span> <span class='conid'>[]</span> <span class='comment'>{- Map.empty -}</span> <span class='str'>""</span> <span class='varid'>s</span><span class='layout'>)</span> <span class='keyword'>of</span>+<a name="line-76"></a> <span class='conid'>Left</span> <span class='keyword'>_</span> <span class='keyglyph'>-></span> <span class='conid'>XPVNumber</span> <span class='conid'>NaN</span>+<a name="line-77"></a> <span class='conid'>Right</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>read</span> <span class='varid'>x</span> <span class='keyglyph'>::</span> <span class='conid'>Float</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='num'>0</span>+<a name="line-78"></a> <span class='keyword'>then</span> <span class='layout'>(</span><span class='conid'>XPVNumber</span> <span class='conid'>Pos0</span><span class='layout'>)</span>+<a name="line-79"></a> <span class='keyword'>else</span> <span class='conid'>XPVNumber</span> <span class='layout'>(</span><span class='conid'>Float</span> <span class='layout'>(</span><span class='varid'>read</span> <span class='varid'>x</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-80"></a>+<a name="line-81"></a><a name="parseNumber'"></a><span class='definition'>parseNumber'</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span>+<a name="line-82"></a><span class='definition'>parseNumber'</span>+<a name="line-83"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-84"></a> <span class='varid'>skipS0</span>+<a name="line-85"></a> <span class='varid'>m</span> <span class='keyglyph'><-</span> <span class='varid'>option</span> <span class='str'>""</span> <span class='layout'>(</span><span class='varid'>string</span> <span class='str'>"-"</span><span class='layout'>)</span>+<a name="line-86"></a> <span class='varid'>n</span> <span class='keyglyph'><-</span> <span class='varid'>number</span>+<a name="line-87"></a> <span class='varid'>skipS0</span>+<a name="line-88"></a> <span class='varid'>eof</span>+<a name="line-89"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>m</span> <span class='varop'>++</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-90"></a>+<a name="line-91"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-92"></a>+<a name="line-93"></a>+<a name="line-94"></a><span class='comment'>-- |</span>+<a name="line-95"></a><span class='comment'>-- the main entry point:</span>+<a name="line-96"></a><span class='comment'>-- parsing a XPath expression</span>+<a name="line-97"></a>+<a name="line-98"></a><a name="parseXPath"></a><span class='definition'>parseXPath</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-99"></a><span class='definition'>parseXPath</span>+<a name="line-100"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-101"></a> <span class='varid'>skipS0</span>+<a name="line-102"></a> <span class='varid'>xPathExpr</span> <span class='keyglyph'><-</span> <span class='varid'>expr</span>+<a name="line-103"></a> <span class='varid'>skipS0</span>+<a name="line-104"></a> <span class='varid'>eof</span>+<a name="line-105"></a> <span class='varid'>return</span> <span class='varid'>xPathExpr</span>+<a name="line-106"></a>+<a name="line-107"></a>+<a name="line-108"></a><a name="lpar"></a><span class='comment'>-- some useful token and symbol parser</span>+<a name="line-109"></a><span class='definition'>lpar</span><span class='layout'>,</span> <span class='varid'>rpar</span><span class='layout'>,</span> <span class='varid'>lbra</span><span class='layout'>,</span> <span class='varid'>rbra</span><span class='layout'>,</span> <span class='varid'>slash</span><span class='layout'>,</span> <span class='varid'>dslash</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>()</span>+<a name="line-110"></a>+<a name="line-111"></a><span class='definition'>lpar</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"("</span><span class='layout'>)</span>+<a name="line-112"></a><a name="rpar"></a><span class='definition'>rpar</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>")"</span><span class='layout'>)</span>+<a name="line-113"></a><a name="lbra"></a><span class='definition'>lbra</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"["</span><span class='layout'>)</span>+<a name="line-114"></a><a name="rbra"></a><span class='definition'>rbra</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"]"</span><span class='layout'>)</span>+<a name="line-115"></a><a name="slash"></a><span class='definition'>slash</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"/"</span><span class='layout'>)</span>+<a name="line-116"></a><a name="dslash"></a><span class='definition'>dslash</span> <span class='keyglyph'>=</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"//"</span><span class='layout'>)</span>+<a name="line-117"></a>+<a name="line-118"></a>+<a name="line-119"></a><a name="tokenParser"></a><span class='definition'>tokenParser</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='conid'>()</span>+<a name="line-120"></a><span class='definition'>tokenParser</span> <span class='varid'>p</span>+<a name="line-121"></a> <span class='keyglyph'>=</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-122"></a> <span class='varid'>skipS0</span>+<a name="line-123"></a> <span class='varid'>p</span>+<a name="line-124"></a> <span class='varid'>skipS0</span>+<a name="line-125"></a> <span class='layout'>)</span>+<a name="line-126"></a>+<a name="line-127"></a>+<a name="line-128"></a><a name="symbolParser"></a><span class='definition'>symbolParser</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='varid'>a</span>+<a name="line-129"></a><span class='definition'>symbolParser</span> <span class='layout'>(</span><span class='varid'>s</span><span class='layout'>,</span><span class='varid'>a</span><span class='layout'>)</span>+<a name="line-130"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-131"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-132"></a> <span class='varid'>return</span> <span class='varid'>a</span>+<a name="line-133"></a>+<a name="line-134"></a>+<a name="line-135"></a><a name="symbol"></a><span class='definition'>symbol</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='conid'>String</span>+<a name="line-136"></a><span class='definition'>symbol</span> <span class='varid'>s</span> <span class='keyglyph'>=</span> <span class='varid'>try</span> <span class='layout'>(</span><span class='varid'>string</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-137"></a>+<a name="line-138"></a>+<a name="line-139"></a>+<a name="line-140"></a><a name="orOp"></a><span class='comment'>-- operation parser</span>+<a name="line-141"></a><span class='definition'>orOp</span><span class='layout'>,</span> <span class='varid'>andOp</span><span class='layout'>,</span> <span class='varid'>eqOp</span><span class='layout'>,</span> <span class='varid'>relOp</span><span class='layout'>,</span> <span class='varid'>addOp</span><span class='layout'>,</span> <span class='varid'>multiOp</span><span class='layout'>,</span> <span class='varid'>unionOp</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Op</span>+<a name="line-142"></a>+<a name="line-143"></a><span class='definition'>orOp</span> <span class='keyglyph'>=</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"or"</span><span class='layout'>,</span> <span class='conid'>Or</span><span class='layout'>)</span>+<a name="line-144"></a><a name="andOp"></a><span class='definition'>andOp</span> <span class='keyglyph'>=</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"and"</span><span class='layout'>,</span> <span class='conid'>And</span><span class='layout'>)</span>+<a name="line-145"></a>+<a name="line-146"></a><a name="eqOp"></a><span class='definition'>eqOp</span>+<a name="line-147"></a> <span class='keyglyph'>=</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"="</span><span class='layout'>,</span> <span class='conid'>Eq</span><span class='layout'>)</span>+<a name="line-148"></a> <span class='varop'><|></span> +<a name="line-149"></a> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"!="</span><span class='layout'>,</span> <span class='conid'>NEq</span><span class='layout'>)</span>+<a name="line-150"></a>+<a name="line-151"></a><a name="relOp"></a><span class='definition'>relOp</span>+<a name="line-152"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"<="</span><span class='layout'>,</span> <span class='conid'>LessEq</span><span class='layout'>)</span>+<a name="line-153"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>">="</span><span class='layout'>,</span> <span class='conid'>GreaterEq</span><span class='layout'>)</span>+<a name="line-154"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"<"</span><span class='layout'>,</span> <span class='conid'>Less</span><span class='layout'>)</span>+<a name="line-155"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>">"</span><span class='layout'>,</span> <span class='conid'>Greater</span><span class='layout'>)</span>+<a name="line-156"></a> <span class='keyglyph'>]</span>+<a name="line-157"></a>+<a name="line-158"></a><a name="addOp"></a><span class='definition'>addOp</span>+<a name="line-159"></a> <span class='keyglyph'>=</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"+"</span><span class='layout'>,</span> <span class='conid'>Plus</span><span class='layout'>)</span>+<a name="line-160"></a> <span class='varop'><|></span> +<a name="line-161"></a> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"-"</span><span class='layout'>,</span> <span class='conid'>Minus</span><span class='layout'>)</span>+<a name="line-162"></a>+<a name="line-163"></a>+<a name="line-164"></a><a name="multiOp"></a><span class='definition'>multiOp</span>+<a name="line-165"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"*"</span><span class='layout'>,</span> <span class='conid'>Mult</span><span class='layout'>)</span>+<a name="line-166"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"mod"</span><span class='layout'>,</span> <span class='conid'>Mod</span><span class='layout'>)</span>+<a name="line-167"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"div"</span><span class='layout'>,</span> <span class='conid'>Div</span><span class='layout'>)</span>+<a name="line-168"></a> <span class='keyglyph'>]</span>+<a name="line-169"></a>+<a name="line-170"></a>+<a name="line-171"></a><a name="unionOp"></a><span class='definition'>unionOp</span> <span class='keyglyph'>=</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='str'>"|"</span><span class='layout'>,</span> <span class='conid'>Union</span><span class='layout'>)</span>+<a name="line-172"></a>+<a name="line-173"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-174"></a>+<a name="line-175"></a><a name="mkExprNode"></a><span class='definition'>mkExprNode</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Op</span><span class='layout'>,</span> <span class='conid'>Expr</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>+<a name="line-176"></a><span class='definition'>mkExprNode</span> <span class='varid'>e1</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='varid'>e1</span>+<a name="line-177"></a><span class='definition'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>l</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='layout'>(</span><span class='varid'>op</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> <span class='keyglyph'>=</span> +<a name="line-178"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>rest</span>+<a name="line-179"></a> <span class='keyword'>then</span> <span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='layout'>(</span><span class='varid'>e1</span><span class='conop'>:</span><span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>snd</span> <span class='varid'>l</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-180"></a> <span class='keyword'>else</span> <span class='conid'>GenExpr</span> <span class='varid'>op</span> <span class='varop'>$</span> <span class='layout'>(</span><span class='varid'>e1</span><span class='conop'>:</span><span class='layout'>(</span><span class='varid'>map</span> <span class='varid'>snd</span> <span class='varop'>$</span> <span class='varid'>init</span> <span class='varid'>same</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='keyglyph'>[</span><span class='varid'>mkExprNode</span> <span class='layout'>(</span><span class='varid'>snd</span> <span class='varop'>$</span> <span class='varid'>last</span> <span class='varid'>same</span><span class='layout'>)</span> <span class='varid'>rest</span><span class='keyglyph'>]</span>+<a name="line-181"></a> <span class='keyword'>where</span> +<a name="line-182"></a> <span class='layout'>(</span><span class='varid'>same</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span><span class='varid'>op</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>fst</span><span class='layout'>)</span> <span class='varid'>l</span>+<a name="line-183"></a> +<a name="line-184"></a><span class='comment'>-- Tim Walkenhorst, original expr. below:</span>+<a name="line-185"></a><span class='comment'>-- It seems mkExprNode is called only with operators of the same precedence, that should make it fixable</span>+<a name="line-186"></a><span class='comment'>-- FIXED, see above!</span>+<a name="line-187"></a><span class='comment'>--mkExprNode e1 l@((op, _): _) = GenExpr op (e1:(map snd l)) -- Less than ideal: 1+1-1 = 3 ???</span>+<a name="line-188"></a>+<a name="line-189"></a>+<a name="line-190"></a><span class='comment'>--GenExpr op (e1:(map snd l))</span>+<a name="line-191"></a>+<a name="line-192"></a>+<a name="line-193"></a><a name="exprRest"></a><span class='definition'>exprRest</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Op</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='layout'>(</span><span class='conid'>Op</span><span class='layout'>,</span> <span class='conid'>Expr</span><span class='layout'>)</span>+<a name="line-194"></a><span class='definition'>exprRest</span> <span class='varid'>parserOp</span> <span class='varid'>parserExpr</span>+<a name="line-195"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-196"></a> <span class='varid'>op</span> <span class='keyglyph'><-</span> <span class='varid'>parserOp</span>+<a name="line-197"></a> <span class='varid'>e2</span> <span class='keyglyph'><-</span> <span class='varid'>parserExpr</span>+<a name="line-198"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>op</span><span class='layout'>,</span> <span class='varid'>e2</span><span class='layout'>)</span>+<a name="line-199"></a>+<a name="line-200"></a>+<a name="line-201"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-202"></a>+<a name="line-203"></a><a name="descOrSelfStep"></a><span class='comment'>-- abbreviation of "//"</span>+<a name="line-204"></a><span class='definition'>descOrSelfStep</span> <span class='keyglyph'>::</span> <span class='conid'>XStep</span> +<a name="line-205"></a><span class='definition'>descOrSelfStep</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>DescendantOrSelf</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPNode</span><span class='layout'>)</span> <span class='conid'>[]</span><span class='layout'>)</span>+<a name="line-206"></a>+<a name="line-207"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-208"></a><span class='comment'>-- Location Paths (2)</span>+<a name="line-209"></a>+<a name="line-210"></a>+<a name="line-211"></a><a name="locPath"></a><span class='comment'>-- [1] LocationPath </span>+<a name="line-212"></a><span class='definition'>locPath</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>LocationPath</span>+<a name="line-213"></a><span class='definition'>locPath</span>+<a name="line-214"></a> <span class='keyglyph'>=</span> <span class='varid'>absLocPath</span>+<a name="line-215"></a> <span class='varop'><|></span> +<a name="line-216"></a> <span class='varid'>relLocPath'</span>+<a name="line-217"></a>+<a name="line-218"></a>+<a name="line-219"></a><a name="absLocPath"></a><span class='comment'>-- [2] AbsoluteLocationPath</span>+<a name="line-220"></a><span class='definition'>absLocPath</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>LocationPath</span>+<a name="line-221"></a><span class='definition'>absLocPath</span>+<a name="line-222"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span> <span class='comment'>-- [10]</span>+<a name="line-223"></a> <span class='varid'>dslash</span>+<a name="line-224"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>relLocPath</span>+<a name="line-225"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Abs</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='varid'>descOrSelfStep</span><span class='keyglyph'>]</span> <span class='varop'>++</span> <span class='varid'>s</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-226"></a> <span class='varop'><|></span> +<a name="line-227"></a> <span class='keyword'>do</span>+<a name="line-228"></a> <span class='varid'>slash</span>+<a name="line-229"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>option</span> <span class='conid'>[]</span> <span class='varid'>relLocPath</span>+<a name="line-230"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Abs</span> <span class='varid'>s</span><span class='layout'>)</span>+<a name="line-231"></a> <span class='varop'><?></span> <span class='str'>"absLocPath"</span>+<a name="line-232"></a>+<a name="line-233"></a>+<a name="line-234"></a><a name="relLocPath'"></a><span class='comment'>-- [3] RelativeLocationPath</span>+<a name="line-235"></a><span class='definition'>relLocPath'</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>LocationPath</span>+<a name="line-236"></a><span class='definition'>relLocPath'</span>+<a name="line-237"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-238"></a> <span class='varid'>rel</span> <span class='keyglyph'><-</span> <span class='varid'>relLocPath</span>+<a name="line-239"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Rel</span> <span class='varid'>rel</span><span class='layout'>)</span>+<a name="line-240"></a>+<a name="line-241"></a><a name="relLocPath"></a><span class='definition'>relLocPath</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='keyglyph'>[</span><span class='conid'>XStep</span><span class='keyglyph'>]</span>+<a name="line-242"></a><span class='definition'>relLocPath</span>+<a name="line-243"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-244"></a> <span class='varid'>s1</span> <span class='keyglyph'><-</span> <span class='varid'>step</span>+<a name="line-245"></a> <span class='varid'>s2</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>step'</span><span class='layout'>)</span>+<a name="line-246"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='varid'>s1</span><span class='keyglyph'>]</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>concat</span> <span class='varid'>s2</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-247"></a> <span class='varop'><?></span> <span class='str'>"relLocPath"</span>+<a name="line-248"></a>+<a name="line-249"></a>+<a name="line-250"></a><a name="step'"></a><span class='comment'>-- Location Steps (2.1)</span>+<a name="line-251"></a><span class='comment'>--</span>+<a name="line-252"></a><span class='comment'>-- [4] Step</span>+<a name="line-253"></a><span class='definition'>step'</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='keyglyph'>[</span><span class='conid'>XStep</span><span class='keyglyph'>]</span>+<a name="line-254"></a><span class='definition'>step'</span>+<a name="line-255"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span> <span class='comment'>-- [11]</span>+<a name="line-256"></a> <span class='varid'>dslash</span>+<a name="line-257"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>step</span>+<a name="line-258"></a> <span class='varid'>return</span> <span class='keyglyph'>[</span><span class='varid'>descOrSelfStep</span><span class='layout'>,</span><span class='varid'>s</span><span class='keyglyph'>]</span>+<a name="line-259"></a> <span class='varop'><|></span>+<a name="line-260"></a> <span class='keyword'>do</span>+<a name="line-261"></a> <span class='varid'>slash</span>+<a name="line-262"></a> <span class='varid'>s</span> <span class='keyglyph'><-</span> <span class='varid'>step</span>+<a name="line-263"></a> <span class='varid'>return</span> <span class='keyglyph'>[</span><span class='varid'>s</span><span class='keyglyph'>]</span>+<a name="line-264"></a> <span class='varop'><?></span> <span class='str'>"step'"</span>+<a name="line-265"></a>+<a name="line-266"></a><a name="step"></a><span class='definition'>step</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>XStep</span>+<a name="line-267"></a><span class='definition'>step</span>+<a name="line-268"></a> <span class='keyglyph'>=</span> <span class='varid'>abbrStep</span>+<a name="line-269"></a> <span class='varop'><|></span>+<a name="line-270"></a> <span class='keyword'>do</span>+<a name="line-271"></a> <span class='keyword'>as</span> <span class='keyglyph'><-</span> <span class='varid'>axisSpecifier'</span>+<a name="line-272"></a> <span class='varid'>nt</span> <span class='keyglyph'><-</span> <span class='varid'>nodeTest</span> <span class='keyword'>as</span>+<a name="line-273"></a> <span class='varid'>pr</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='varid'>predicate</span>+<a name="line-274"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='keyword'>as</span> <span class='varid'>nt</span> <span class='varid'>pr</span><span class='layout'>)</span>+<a name="line-275"></a> <span class='varop'><?></span> <span class='str'>"step"</span>+<a name="line-276"></a>+<a name="line-277"></a>+<a name="line-278"></a><a name="axisSpecifier'"></a><span class='comment'>-- [5] AxisSpecifier</span>+<a name="line-279"></a><span class='definition'>axisSpecifier'</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>AxisSpec</span>+<a name="line-280"></a><span class='definition'>axisSpecifier'</span>+<a name="line-281"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span> <span class='comment'>-- [13]</span>+<a name="line-282"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"@"</span><span class='layout'>)</span>+<a name="line-283"></a> <span class='varid'>return</span> <span class='conid'>Attribute</span>+<a name="line-284"></a> <span class='varop'><|></span>+<a name="line-285"></a> <span class='keyword'>do</span>+<a name="line-286"></a> <span class='keyword'>as</span> <span class='keyglyph'><-</span> <span class='varid'>option</span> <span class='conid'>Child</span> <span class='layout'>(</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>do</span> <span class='comment'>-- child-axis is default-axis</span>+<a name="line-287"></a> <span class='varid'>a</span> <span class='keyglyph'><-</span> <span class='varid'>axisSpecifier</span>+<a name="line-288"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"::"</span><span class='layout'>)</span>+<a name="line-289"></a> <span class='varid'>return</span> <span class='varid'>a</span>+<a name="line-290"></a> <span class='layout'>)</span>+<a name="line-291"></a> <span class='layout'>)</span>+<a name="line-292"></a> <span class='varid'>return</span> <span class='keyword'>as</span>+<a name="line-293"></a> <span class='varop'><?></span> <span class='str'>"axisSpecifier'"</span>+<a name="line-294"></a>+<a name="line-295"></a>+<a name="line-296"></a><a name="axisSpecifier"></a><span class='comment'>-- Axes (2.2)</span>+<a name="line-297"></a><span class='comment'>--</span>+<a name="line-298"></a><span class='comment'>-- [6] AxisName</span>+<a name="line-299"></a><span class='definition'>axisSpecifier</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>AxisSpec</span>+<a name="line-300"></a><span class='definition'>axisSpecifier</span>+<a name="line-301"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_ancestor_or_self</span><span class='layout'>,</span> <span class='conid'>AncestorOrSelf</span><span class='layout'>)</span>+<a name="line-302"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_ancestor</span><span class='layout'>,</span> <span class='conid'>Ancestor</span><span class='layout'>)</span>+<a name="line-303"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_attribute</span><span class='layout'>,</span> <span class='conid'>Attribute</span><span class='layout'>)</span>+<a name="line-304"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_child</span><span class='layout'>,</span> <span class='conid'>Child</span><span class='layout'>)</span>+<a name="line-305"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_descendant_or_self</span><span class='layout'>,</span> <span class='conid'>DescendantOrSelf</span><span class='layout'>)</span>+<a name="line-306"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_descendant</span><span class='layout'>,</span> <span class='conid'>Descendant</span><span class='layout'>)</span>+<a name="line-307"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_following_sibling</span><span class='layout'>,</span> <span class='conid'>FollowingSibling</span><span class='layout'>)</span>+<a name="line-308"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_following</span><span class='layout'>,</span> <span class='conid'>Following</span><span class='layout'>)</span>+<a name="line-309"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_namespace</span><span class='layout'>,</span> <span class='conid'>Namespace</span><span class='layout'>)</span>+<a name="line-310"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_parent</span><span class='layout'>,</span> <span class='conid'>Parent</span><span class='layout'>)</span>+<a name="line-311"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_preceding_sibling</span><span class='layout'>,</span> <span class='conid'>PrecedingSibling</span><span class='layout'>)</span>+<a name="line-312"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_preceding</span><span class='layout'>,</span> <span class='conid'>Preceding</span><span class='layout'>)</span>+<a name="line-313"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>a_self</span><span class='layout'>,</span> <span class='conid'>Self</span><span class='layout'>)</span>+<a name="line-314"></a> <span class='keyglyph'>]</span>+<a name="line-315"></a> <span class='varop'><?></span> <span class='str'>"axisSpecifier"</span>+<a name="line-316"></a>+<a name="line-317"></a>+<a name="line-318"></a><a name="nodeTest"></a><span class='comment'>-- Node Tests (2.3)</span>+<a name="line-319"></a><span class='comment'>--</span>+<a name="line-320"></a><span class='comment'>-- [7] NodeTest</span>+<a name="line-321"></a><span class='definition'>nodeTest</span> <span class='keyglyph'>::</span> <span class='conid'>AxisSpec</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='conid'>NodeTest</span>+<a name="line-322"></a><span class='definition'>nodeTest</span> <span class='keyword'>as</span>+<a name="line-323"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-324"></a> <span class='varid'>nt</span> <span class='keyglyph'><-</span> <span class='varid'>try</span> <span class='varid'>nodeType'</span>+<a name="line-325"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='varid'>nt</span><span class='layout'>)</span>+<a name="line-326"></a> <span class='varop'><|></span>+<a name="line-327"></a> <span class='keyword'>do</span>+<a name="line-328"></a> <span class='varid'>processInst</span> <span class='keyglyph'><-</span> <span class='varid'>pI</span>+<a name="line-329"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>PI</span> <span class='varid'>processInst</span><span class='layout'>)</span>+<a name="line-330"></a> <span class='varop'><|></span>+<a name="line-331"></a> <span class='keyword'>do</span>+<a name="line-332"></a> <span class='varid'>nt</span> <span class='keyglyph'><-</span> <span class='varid'>nameTest</span> <span class='keyword'>as</span>+<a name="line-333"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>NameTest</span> <span class='varid'>nt</span><span class='layout'>)</span>+<a name="line-334"></a> <span class='varop'><?></span> <span class='str'>"nodeTest"</span>+<a name="line-335"></a>+<a name="line-336"></a><a name="pI"></a><span class='definition'>pI</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span>+<a name="line-337"></a><span class='definition'>pI</span>+<a name="line-338"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-339"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='varid'>n_processing_instruction</span><span class='layout'>)</span>+<a name="line-340"></a> <span class='varid'>li</span> <span class='keyglyph'><-</span> <span class='varid'>between</span> <span class='varid'>lpar</span> <span class='varid'>rpar</span> <span class='varid'>literal</span>+<a name="line-341"></a> <span class='varid'>return</span> <span class='varid'>li</span>+<a name="line-342"></a> <span class='varop'><?></span> <span class='str'>"Processing-Instruction"</span>+<a name="line-343"></a>+<a name="line-344"></a>+<a name="line-345"></a><a name="predicate"></a><span class='comment'>-- Predicates (2.4)</span>+<a name="line-346"></a><span class='comment'>--</span>+<a name="line-347"></a><span class='comment'>-- [8] Predicate</span>+<a name="line-348"></a><span class='comment'>-- [9] PredicateExpr</span>+<a name="line-349"></a><span class='definition'>predicate</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-350"></a><span class='definition'>predicate</span> +<a name="line-351"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-352"></a> <span class='varid'>ex</span> <span class='keyglyph'><-</span> <span class='varid'>between</span> <span class='varid'>lbra</span> <span class='varid'>rbra</span> <span class='varid'>expr</span>+<a name="line-353"></a> <span class='varid'>return</span> <span class='varid'>ex</span>+<a name="line-354"></a>+<a name="line-355"></a>+<a name="line-356"></a><span class='comment'>-- Abbreviated Syntax (2.5)</span>+<a name="line-357"></a><span class='comment'>--</span>+<a name="line-358"></a><span class='comment'>-- [10] AbbreviatedAbsoluteLocationPath: q.v. [2]</span>+<a name="line-359"></a><span class='comment'>-- [11] AbbreviatedRelativeLocationPath: q.v. [4]</span>+<a name="line-360"></a>+<a name="line-361"></a><a name="abbrStep"></a><span class='comment'>-- [12] AbbreviatedStep</span>+<a name="line-362"></a><span class='definition'>abbrStep</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>XStep</span>+<a name="line-363"></a><span class='definition'>abbrStep</span> +<a name="line-364"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-365"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>".."</span><span class='layout'>)</span>+<a name="line-366"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Parent</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPNode</span><span class='layout'>)</span> <span class='conid'>[]</span><span class='layout'>)</span>+<a name="line-367"></a> <span class='varop'><|></span>+<a name="line-368"></a> <span class='keyword'>do</span>+<a name="line-369"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"."</span><span class='layout'>)</span>+<a name="line-370"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>Step</span> <span class='conid'>Self</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='conid'>XPNode</span><span class='layout'>)</span> <span class='conid'>[]</span><span class='layout'>)</span>+<a name="line-371"></a> <span class='varop'><?></span> <span class='str'>"abbrStep"</span>+<a name="line-372"></a>+<a name="line-373"></a><span class='comment'>-- [13] AbbreviatedAxisSpecifier: q.v. [5]</span>+<a name="line-374"></a>+<a name="line-375"></a>+<a name="line-376"></a><span class='comment'>-- ------------------------------------------------------------</span>+<a name="line-377"></a><span class='comment'>-- Expressions (3)</span>+<a name="line-378"></a>+<a name="line-379"></a>+<a name="line-380"></a><a name="expr"></a><span class='comment'>-- Basics (3.1)</span>+<a name="line-381"></a><span class='comment'>--</span>+<a name="line-382"></a><span class='comment'>-- [14] Expr</span>+<a name="line-383"></a><span class='definition'>expr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-384"></a><span class='definition'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>orExpr</span>+<a name="line-385"></a>+<a name="line-386"></a>+<a name="line-387"></a><a name="primaryExpr"></a><span class='comment'>-- [15] PrimaryExpr</span>+<a name="line-388"></a><span class='definition'>primaryExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-389"></a><span class='definition'>primaryExpr</span>+<a name="line-390"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-391"></a> <span class='varid'>vr</span> <span class='keyglyph'><-</span> <span class='varid'>variableReference</span>+<a name="line-392"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>VarExpr</span> <span class='varid'>vr</span><span class='layout'>)</span>+<a name="line-393"></a> <span class='varop'><|></span>+<a name="line-394"></a> <span class='keyword'>do</span>+<a name="line-395"></a> <span class='varid'>ex</span> <span class='keyglyph'><-</span> <span class='varid'>between</span> <span class='varid'>lpar</span> <span class='varid'>rpar</span> <span class='varid'>expr</span>+<a name="line-396"></a> <span class='varid'>return</span> <span class='varid'>ex</span>+<a name="line-397"></a> <span class='varop'><|></span>+<a name="line-398"></a> <span class='keyword'>do</span>+<a name="line-399"></a> <span class='varid'>li</span> <span class='keyglyph'><-</span> <span class='varid'>literal</span>+<a name="line-400"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>LiteralExpr</span> <span class='varid'>li</span><span class='layout'>)</span>+<a name="line-401"></a> <span class='varop'><|></span> +<a name="line-402"></a> <span class='keyword'>do</span>+<a name="line-403"></a> <span class='varid'>num</span> <span class='keyglyph'><-</span> <span class='varid'>number</span>+<a name="line-404"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>NumberExpr</span> <span class='layout'>(</span><span class='conid'>Float</span> <span class='varop'>$</span> <span class='varid'>read</span> <span class='varid'>num</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-405"></a> <span class='varop'><|></span>+<a name="line-406"></a> <span class='keyword'>do</span>+<a name="line-407"></a> <span class='varid'>fc</span> <span class='keyglyph'><-</span> <span class='varid'>functionCall</span>+<a name="line-408"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>fc</span><span class='layout'>)</span>+<a name="line-409"></a> <span class='varop'><?></span> <span class='str'>"primaryExpr"</span>+<a name="line-410"></a>+<a name="line-411"></a>+<a name="line-412"></a><a name="functionCall"></a><span class='comment'>-- Function Calls (3.2)</span>+<a name="line-413"></a><span class='comment'>--</span>+<a name="line-414"></a><span class='comment'>-- [16] FunctionCall</span>+<a name="line-415"></a><span class='comment'>-- [17] Argument</span>+<a name="line-416"></a><span class='definition'>functionCall</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-417"></a><span class='definition'>functionCall</span>+<a name="line-418"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-419"></a> <span class='varid'>fn</span> <span class='keyglyph'><-</span> <span class='varid'>functionName</span>+<a name="line-420"></a> <span class='varid'>arg</span> <span class='keyglyph'><-</span> <span class='varid'>between</span> <span class='varid'>lpar</span> <span class='varid'>rpar</span> <span class='layout'>(</span> <span class='varid'>sepBy</span> <span class='varid'>expr</span> <span class='layout'>(</span><span class='varid'>separator</span> <span class='chr'>','</span><span class='layout'>)</span> <span class='layout'>)</span>+<a name="line-421"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='varid'>fn</span> <span class='varid'>arg</span><span class='layout'>)</span>+<a name="line-422"></a> <span class='varop'><?></span> <span class='str'>"functionCall"</span>+<a name="line-423"></a>+<a name="line-424"></a>+<a name="line-425"></a><a name="unionExpr"></a><span class='comment'>-- Node-sets (3.3)</span>+<a name="line-426"></a><span class='comment'>--</span>+<a name="line-427"></a><span class='comment'>-- [18] UnionExpr</span>+<a name="line-428"></a><span class='definition'>unionExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-429"></a><span class='definition'>unionExpr</span>+<a name="line-430"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-431"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>pathExpr</span>+<a name="line-432"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>unionOp</span> <span class='varid'>pathExpr</span><span class='layout'>)</span>+<a name="line-433"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>+<a name="line-434"></a>+<a name="line-435"></a>+<a name="line-436"></a><a name="pathExpr"></a><span class='comment'>-- [19] PathExpr</span>+<a name="line-437"></a><span class='definition'>pathExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-438"></a><span class='definition'>pathExpr</span>+<a name="line-439"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-440"></a> <span class='varid'>fe</span> <span class='keyglyph'><-</span> <span class='varid'>try</span> <span class='varid'>filterExpr</span>+<a name="line-441"></a> <span class='varid'>path</span> <span class='keyglyph'><-</span> <span class='keyword'>do</span>+<a name="line-442"></a> <span class='varid'>dslash</span>+<a name="line-443"></a> <span class='conid'>LocPath</span> <span class='varid'>t1</span> <span class='varid'>t2</span> <span class='keyglyph'><-</span> <span class='varid'>relLocPath'</span>+<a name="line-444"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>fe</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='varid'>t1</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='varid'>descOrSelfStep</span><span class='keyglyph'>]</span> <span class='varop'>++</span> <span class='varid'>t2</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-445"></a> <span class='varop'><|></span>+<a name="line-446"></a> <span class='keyword'>do</span>+<a name="line-447"></a> <span class='varid'>slash</span>+<a name="line-448"></a> <span class='varid'>relPath</span> <span class='keyglyph'><-</span> <span class='varid'>relLocPath'</span>+<a name="line-449"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>fe</span><span class='layout'>)</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>relPath</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-450"></a> <span class='varop'><|></span>+<a name="line-451"></a> <span class='varid'>return</span> <span class='varid'>fe</span>+<a name="line-452"></a> <span class='varid'>return</span> <span class='varid'>path</span>+<a name="line-453"></a> <span class='varop'><|></span>+<a name="line-454"></a> <span class='keyword'>do</span>+<a name="line-455"></a> <span class='varid'>lp</span> <span class='keyglyph'><-</span> <span class='varid'>locPath</span>+<a name="line-456"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='varid'>lp</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-457"></a> <span class='varop'><?></span> <span class='str'>"pathExpr"</span>+<a name="line-458"></a>+<a name="line-459"></a>+<a name="line-460"></a><a name="filterExpr"></a><span class='comment'>-- [20] FilterExpr</span>+<a name="line-461"></a><span class='definition'>filterExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-462"></a><span class='definition'>filterExpr</span>+<a name="line-463"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-464"></a> <span class='varid'>prim</span> <span class='keyglyph'><-</span> <span class='varid'>primaryExpr</span>+<a name="line-465"></a> <span class='varid'>predicates</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='varid'>predicate</span>+<a name="line-466"></a> <span class='keyword'>if</span> <span class='varid'>length</span> <span class='varid'>predicates</span> <span class='varop'>></span> <span class='num'>0</span>+<a name="line-467"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>FilterExpr</span> <span class='layout'>(</span><span class='varid'>prim</span> <span class='conop'>:</span> <span class='varid'>predicates</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-468"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varid'>prim</span>+<a name="line-469"></a> <span class='varop'><?></span> <span class='str'>"filterExpr"</span>+<a name="line-470"></a>+<a name="line-471"></a>+<a name="line-472"></a><a name="orExpr"></a><span class='comment'>-- Booleans (3.4)</span>+<a name="line-473"></a><span class='comment'>--</span>+<a name="line-474"></a><span class='comment'>-- [21] OrExpr</span>+<a name="line-475"></a><span class='definition'>orExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-476"></a><span class='definition'>orExpr</span>+<a name="line-477"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-478"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>andExpr</span>+<a name="line-479"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>orOp</span> <span class='varid'>andExpr</span><span class='layout'>)</span>+<a name="line-480"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>+<a name="line-481"></a> <span class='varop'><?></span> <span class='str'>"orExpr"</span>+<a name="line-482"></a>+<a name="line-483"></a>+<a name="line-484"></a><a name="andExpr"></a><span class='comment'>-- [22] AndExpr</span>+<a name="line-485"></a><span class='definition'>andExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-486"></a><span class='definition'>andExpr</span>+<a name="line-487"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-488"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>equalityExpr</span>+<a name="line-489"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>andOp</span> <span class='varid'>equalityExpr</span><span class='layout'>)</span>+<a name="line-490"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>+<a name="line-491"></a> <span class='varop'><?></span> <span class='str'>"andExpr"</span>+<a name="line-492"></a>+<a name="line-493"></a>+<a name="line-494"></a><a name="equalityExpr"></a><span class='comment'>-- [23] EqualityExpr</span>+<a name="line-495"></a><span class='definition'>equalityExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-496"></a><span class='definition'>equalityExpr</span>+<a name="line-497"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-498"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>relationalExpr</span>+<a name="line-499"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>eqOp</span> <span class='varid'>relationalExpr</span><span class='layout'>)</span>+<a name="line-500"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>+<a name="line-501"></a> <span class='varop'><?></span> <span class='str'>"equalityExpr"</span>+<a name="line-502"></a>+<a name="line-503"></a>+<a name="line-504"></a><a name="relationalExpr"></a><span class='comment'>-- [24] RelationalExpr</span>+<a name="line-505"></a><span class='definition'>relationalExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-506"></a><span class='definition'>relationalExpr</span>+<a name="line-507"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-508"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>additiveExpr</span>+<a name="line-509"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>relOp</span> <span class='varid'>additiveExpr</span><span class='layout'>)</span>+<a name="line-510"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>+<a name="line-511"></a> <span class='varop'><?></span> <span class='str'>"relationalExpr"</span>+<a name="line-512"></a>+<a name="line-513"></a>+<a name="line-514"></a><a name="additiveExpr"></a><span class='comment'>-- Numbers (3.5)</span>+<a name="line-515"></a><span class='comment'>--</span>+<a name="line-516"></a><span class='comment'>-- [25] AdditiveExpr</span>+<a name="line-517"></a><span class='definition'>additiveExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-518"></a><span class='definition'>additiveExpr</span>+<a name="line-519"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-520"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>multiplicativeExpr</span>+<a name="line-521"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>addOp</span> <span class='varid'>multiplicativeExpr</span><span class='layout'>)</span>+<a name="line-522"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>+<a name="line-523"></a> <span class='varop'><?></span> <span class='str'>"additiveExpr"</span>+<a name="line-524"></a>+<a name="line-525"></a>+<a name="line-526"></a><a name="multiplicativeExpr"></a><span class='comment'>-- [26] MultiplicativeExpr</span>+<a name="line-527"></a><span class='definition'>multiplicativeExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-528"></a><span class='definition'>multiplicativeExpr</span>+<a name="line-529"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-530"></a> <span class='varid'>e1</span> <span class='keyglyph'><-</span> <span class='varid'>unaryExpr</span>+<a name="line-531"></a> <span class='varid'>eRest</span> <span class='keyglyph'><-</span> <span class='varid'>many</span> <span class='layout'>(</span><span class='varid'>exprRest</span> <span class='varid'>multiOp</span> <span class='varid'>unaryExpr</span><span class='layout'>)</span>+<a name="line-532"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>mkExprNode</span> <span class='varid'>e1</span> <span class='varid'>eRest</span><span class='layout'>)</span>+<a name="line-533"></a> <span class='varop'><?></span> <span class='str'>"multiplicativeExpr"</span>+<a name="line-534"></a>+<a name="line-535"></a>+<a name="line-536"></a><a name="unaryExpr"></a><span class='comment'>-- [27] UnaryExpr</span>+<a name="line-537"></a><span class='definition'>unaryExpr</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>Expr</span>+<a name="line-538"></a><span class='definition'>unaryExpr</span>+<a name="line-539"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-540"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"-"</span><span class='layout'>)</span>+<a name="line-541"></a> <span class='varid'>u</span> <span class='keyglyph'><-</span> <span class='varid'>unaryExpr</span>+<a name="line-542"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='conid'>Unary</span> <span class='keyglyph'>[</span><span class='varid'>u</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-543"></a> <span class='varop'><|></span>+<a name="line-544"></a> <span class='keyword'>do</span>+<a name="line-545"></a> <span class='varid'>u</span> <span class='keyglyph'><-</span> <span class='varid'>unionExpr</span>+<a name="line-546"></a> <span class='varid'>return</span> <span class='varid'>u</span>+<a name="line-547"></a> <span class='varop'><?></span> <span class='str'>"unaryExpr"</span>+<a name="line-548"></a>+<a name="line-549"></a>+<a name="line-550"></a><a name="literal"></a><span class='comment'>-- Lexical Structure (3.7)</span>+<a name="line-551"></a><span class='comment'>--</span>+<a name="line-552"></a><span class='comment'>-- [29] Literal</span>+<a name="line-553"></a><span class='comment'>-- systemLiteral from XmlParser is used</span>+<a name="line-554"></a><span class='definition'>literal</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span>+<a name="line-555"></a><span class='definition'>literal</span> <span class='keyglyph'>=</span> <span class='varid'>systemLiteral</span>+<a name="line-556"></a>+<a name="line-557"></a>+<a name="line-558"></a><a name="number"></a><span class='comment'>-- [30] Number</span>+<a name="line-559"></a><span class='definition'>number</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span>+<a name="line-560"></a><span class='definition'>number</span>+<a name="line-561"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-562"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"."</span><span class='layout'>)</span>+<a name="line-563"></a> <span class='varid'>d</span> <span class='keyglyph'><-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>+<a name="line-564"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='str'>"0."</span> <span class='varop'>++</span> <span class='varid'>d</span><span class='layout'>)</span>+<a name="line-565"></a> <span class='varop'><|></span>+<a name="line-566"></a> <span class='keyword'>do</span>+<a name="line-567"></a> <span class='varid'>d</span> <span class='keyglyph'><-</span> <span class='varid'>many1</span> <span class='varid'>digit</span>+<a name="line-568"></a> <span class='varid'>d1</span> <span class='keyglyph'><-</span> <span class='varid'>option</span> <span class='str'>""</span> <span class='layout'>(</span> <span class='keyword'>do</span>+<a name="line-569"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"."</span><span class='layout'>)</span>+<a name="line-570"></a> <span class='varid'>d2</span> <span class='keyglyph'><-</span> <span class='varid'>option</span> <span class='str'>"0"</span> <span class='layout'>(</span><span class='varid'>many1</span> <span class='varid'>digit</span><span class='layout'>)</span>+<a name="line-571"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='str'>"."</span> <span class='varop'>++</span> <span class='varid'>d2</span><span class='layout'>)</span>+<a name="line-572"></a> <span class='layout'>)</span>+<a name="line-573"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>d</span> <span class='varop'>++</span> <span class='varid'>d1</span><span class='layout'>)</span>+<a name="line-574"></a> <span class='varop'><?></span> <span class='str'>"number"</span>+<a name="line-575"></a>+<a name="line-576"></a>+<a name="line-577"></a><span class='comment'>-- [35] FunctionName</span>+<a name="line-578"></a><span class='comment'>-- no nodetype name is allowed as a function name</span>+<a name="line-579"></a><span class='comment'>-- Tim Walkenhorst:</span>+<a name="line-580"></a><span class='comment'>-- Change in String encoding for function name</span>+<a name="line-581"></a><span class='comment'>--</span>+<a name="line-582"></a><span class='comment'>-- previoulsy: new:</span>+<a name="line-583"></a><span class='comment'>-- </span>+<a name="line-584"></a><span class='comment'>-- name name</span>+<a name="line-585"></a><span class='comment'>-- pref:name {<a href="http://uri-for-pref">http://uri-for-pref</a>}name</span>+<a name="line-586"></a>+<a name="line-587"></a><a name="functionName"></a><span class='definition'>functionName</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>String</span>+<a name="line-588"></a><span class='definition'>functionName</span>+<a name="line-589"></a> <span class='keyglyph'>=</span> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>do</span> +<a name="line-590"></a> <span class='layout'>(</span><span class='varid'>p</span><span class='layout'>,</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>qName</span>+<a name="line-591"></a> <span class='varid'>uris</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>+<a name="line-592"></a> <span class='varid'>u</span> <span class='keyglyph'><-</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>p</span>+<a name="line-593"></a> <span class='keyword'>then</span> <span class='str'>""</span>+<a name="line-594"></a> <span class='keyword'>else</span> <span class='chr'>'{'</span> <span class='conop'>:</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>lookupNs</span> <span class='varid'>uris</span> <span class='layout'>(</span><span class='varid'>newXName</span> <span class='varid'>p</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>"}"</span>+<a name="line-595"></a> <span class='keyword'>let</span> <span class='varid'>fn</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>u</span> <span class='varop'>++</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyword'>in</span>+<a name="line-596"></a> <span class='keyword'>if</span> <span class='varid'>fn</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='str'>"processing-instruction"</span><span class='layout'>,</span> <span class='str'>"comment"</span><span class='layout'>,</span> <span class='str'>"text"</span><span class='layout'>,</span> <span class='str'>"node"</span><span class='keyglyph'>]</span>+<a name="line-597"></a> <span class='keyword'>then</span> <span class='varid'>fail</span> <span class='layout'>(</span><span class='str'>"function name: "</span> <span class='varop'>++</span> <span class='varid'>fn</span> <span class='varop'>++</span> <span class='str'>"not allowed"</span><span class='layout'>)</span>+<a name="line-598"></a> <span class='keyword'>else</span> <span class='varid'>return</span> <span class='varid'>fn</span>+<a name="line-599"></a> <span class='layout'>)</span>+<a name="line-600"></a> <span class='varop'><?></span> <span class='str'>"functionName"</span>+<a name="line-601"></a>+<a name="line-602"></a>+<a name="line-603"></a><a name="variableReference"></a><span class='comment'>-- [36] VariableReference</span>+<a name="line-604"></a><span class='definition'>variableReference</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-605"></a><span class='definition'>variableReference</span>+<a name="line-606"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-607"></a> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"$"</span><span class='layout'>)</span>+<a name="line-608"></a> <span class='layout'>(</span><span class='varid'>p</span><span class='layout'>,</span><span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>qName</span>+<a name="line-609"></a> <span class='varid'>uris</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>+<a name="line-610"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>lookupNs</span> <span class='varid'>uris</span> <span class='layout'>(</span><span class='varid'>newXName</span> <span class='varid'>p</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>n</span><span class='layout'>)</span>+<a name="line-611"></a> <span class='varop'><?></span> <span class='str'>"variableReference"</span>+<a name="line-612"></a>+<a name="line-613"></a>+<a name="line-614"></a><a name="nameTest"></a><span class='comment'>-- [37] NameTest</span>+<a name="line-615"></a><span class='definition'>nameTest</span> <span class='keyglyph'>::</span> <span class='conid'>AxisSpec</span> <span class='keyglyph'>-></span> <span class='conid'>XParser</span> <span class='conid'>QName</span>+<a name="line-616"></a><span class='definition'>nameTest</span> <span class='keyword'>as</span>+<a name="line-617"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span> <span class='varid'>tokenParser</span> <span class='layout'>(</span><span class='varid'>symbol</span> <span class='str'>"*"</span><span class='layout'>)</span>+<a name="line-618"></a> <span class='varid'>uris</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>+<a name="line-619"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>enhanceQN</span> <span class='keyword'>as</span> <span class='varid'>uris</span> <span class='varop'>$</span> <span class='varid'>mkPrefixLocalPart</span> <span class='str'>""</span> <span class='str'>"*"</span><span class='layout'>)</span>+<a name="line-620"></a> <span class='varop'><|></span>+<a name="line-621"></a> <span class='varid'>try</span> <span class='layout'>(</span> <span class='keyword'>do</span> <span class='varid'>pre</span> <span class='keyglyph'><-</span> <span class='varid'>ncName</span>+<a name="line-622"></a> <span class='varid'>symbol</span> <span class='str'>":*"</span>+<a name="line-623"></a> <span class='varid'>uris</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>+<a name="line-624"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>enhanceQN</span> <span class='keyword'>as</span> <span class='varid'>uris</span> <span class='varop'>$</span> <span class='varid'>mkPrefixLocalPart</span> <span class='varid'>pre</span> <span class='str'>"*"</span><span class='layout'>)</span>+<a name="line-625"></a> <span class='layout'>)</span>+<a name="line-626"></a> <span class='varop'><|></span>+<a name="line-627"></a> <span class='keyword'>do</span> <span class='layout'>(</span><span class='varid'>pre</span><span class='layout'>,</span><span class='varid'>local</span><span class='layout'>)</span> <span class='keyglyph'><-</span> <span class='varid'>qName</span>+<a name="line-628"></a> <span class='varid'>uris</span> <span class='keyglyph'><-</span> <span class='varid'>getState</span>+<a name="line-629"></a> <span class='varid'>return</span> <span class='layout'>(</span><span class='varid'>enhanceQN</span> <span class='keyword'>as</span> <span class='varid'>uris</span> <span class='varop'>$</span> <span class='varid'>mkPrefixLocalPart</span> <span class='varid'>pre</span> <span class='varid'>local</span><span class='layout'>)</span>+<a name="line-630"></a> <span class='varop'><?></span> <span class='str'>"nameTest"</span>+<a name="line-631"></a>+<a name="line-632"></a> +<a name="line-633"></a><a name="nodeType'"></a><span class='comment'>-- [38] NodeType</span>+<a name="line-634"></a><span class='definition'>nodeType'</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>XPathNode</span>+<a name="line-635"></a><span class='definition'>nodeType'</span> +<a name="line-636"></a> <span class='keyglyph'>=</span> <span class='keyword'>do</span>+<a name="line-637"></a> <span class='varid'>nt</span> <span class='keyglyph'><-</span> <span class='varid'>nodeType</span>+<a name="line-638"></a> <span class='varid'>lpar</span>+<a name="line-639"></a> <span class='varid'>rpar</span>+<a name="line-640"></a> <span class='varid'>return</span> <span class='varid'>nt</span>+<a name="line-641"></a> <span class='varop'><?></span> <span class='str'>"nodeType'"</span>+<a name="line-642"></a> +<a name="line-643"></a><a name="nodeType"></a><span class='definition'>nodeType</span> <span class='keyglyph'>::</span> <span class='conid'>XParser</span> <span class='conid'>XPathNode</span>+<a name="line-644"></a><span class='definition'>nodeType</span> +<a name="line-645"></a> <span class='keyglyph'>=</span> <span class='varid'>choice</span> <span class='keyglyph'>[</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>n_comment</span><span class='layout'>,</span> <span class='conid'>XPCommentNode</span><span class='layout'>)</span>+<a name="line-646"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>n_text</span><span class='layout'>,</span> <span class='conid'>XPTextNode</span><span class='layout'>)</span>+<a name="line-647"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>n_processing_instruction</span><span class='layout'>,</span> <span class='conid'>XPPINode</span><span class='layout'>)</span>+<a name="line-648"></a> <span class='layout'>,</span> <span class='varid'>symbolParser</span> <span class='layout'>(</span><span class='varid'>n_node</span><span class='layout'>,</span> <span class='conid'>XPNode</span><span class='layout'>)</span>+<a name="line-649"></a> <span class='keyglyph'>]</span>+<a name="line-650"></a> <span class='varop'><?></span> <span class='str'>"nodeType"</span>+<a name="line-651"></a>+<a name="line-652"></a><span class='comment'>-- ------------------------------------------------------------</span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-XSLT-Common.html view
@@ -10,404 +10,407 @@ <a name="line-2"></a> <a name="line-3"></a><span class='comment'>{- | <a name="line-4"></a> Module : Text.XML.HXT.XSLT.Application-<a name="line-5"></a> Copyright : Copyright (C) 2006 Tim Walkenhorst, Uwe Schmidt+<a name="line-5"></a> Copyright : Copyright (C) 2006-2008 Tim Walkenhorst, Uwe Schmidt <a name="line-6"></a> License : MIT <a name="line-7"></a> <a name="line-8"></a> Maintainer : Uwe Schmidt (uwe\@fh-wedel.de) <a name="line-9"></a> Stability : experimental <a name="line-10"></a> Portability: portable-<a name="line-11"></a> Version : $Id: Common.hs,v 1.5 2007/05/02 06:41:05 hxml Exp $-<a name="line-12"></a>-<a name="line-13"></a> Common imports and functions for HXSLT-<a name="line-14"></a>-<a name="line-15"></a>-}</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XSLT</span><span class='varop'>.</span><span class='conid'>Common</span>-<a name="line-20"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span>-<a name="line-21"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span>-<a name="line-22"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>-<a name="line-23"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>-<a name="line-24"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>FormatXmlTree</span>-<a name="line-25"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathDataTypes</span>-<a name="line-26"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathParser</span>-<a name="line-27"></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'>XPath</span><span class='varop'>.</span><span class='conid'>XPathEval</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'>XPath</span><span class='varop'>.</span><span class='conid'>XPathFct</span>-<a name="line-29"></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'>XPath</span><span class='varop'>.</span><span class='conid'>XPathToString</span>-<a name="line-30"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>NavTree</span>-<a name="line-31"></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'>Class</span>-<a name="line-32"></a>-<a name="line-33"></a> <span class='comment'>-- Tree Functions</span>-<a name="line-34"></a> <span class='layout'>,</span> <span class='varid'>filterTree</span> <span class='comment'>-- Tree t => (a -> Bool) -> t a -> Maybe (t a)</span>-<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>mapTreeCtx</span> <span class='comment'>-- Tree t => (c -> a -> (c, b)) -> c -> t a -> t b</span>-<a name="line-36"></a> <span class='layout'>,</span> <span class='varid'>filterTreeCtx</span> <span class='comment'>-- Tree t => (c -> a -> (c, Bool)) -> c -> t a -> Maybe (t a)</span>-<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>zipTreeWith</span> <span class='comment'>-- Tree t => (a -> b -> c) -> t a -> t b -> t c</span>-<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>zipTree</span> <span class='comment'>-- Tree t => t a -> t b -> t (a,b) (zipTreeWith (,))</span>-<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>unzipTree</span> <span class='comment'>-- Tree t => t (a,b) -> (t a, t b) (mapTree fst &&& mapTree snd)</span>-<a name="line-40"></a> <span class='layout'>,</span> <span class='varid'>showTrees</span>-<a name="line-41"></a>-<a name="line-42"></a> <span class='comment'>-- XML functions</span>-<a name="line-43"></a> <span class='layout'>,</span> <span class='varid'>isElemType</span> <span class='comment'>-- XmlNode n => QName -> n -> Bool</span>-<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>isAttrType</span> <span class='comment'>-- XmlNode n => QName -> n -> Bool</span>-<a name="line-45"></a> <span class='layout'>,</span> <span class='varid'>isWhitespaceNode</span> <span class='comment'>-- XmlTree -> Bool</span>-<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>collectTextnodes</span> <span class='comment'>-- [XmlTree] -> String</span>-<a name="line-47"></a> <span class='layout'>,</span> <span class='varid'>tryFetchAttribute</span> <span class='comment'>-- XmlNode n => n -> QName -> Maybe String</span>-<a name="line-48"></a> <span class='layout'>,</span> <span class='varid'>fetchAttributeWDefault</span> <span class='comment'>-- XmlNode n => n -> QName -> String -> String</span>-<a name="line-49"></a> <span class='layout'>,</span> <span class='varid'>fetchAttribute</span> <span class='comment'>-- XmlNode n => n -> QName -> String</span>-<a name="line-50"></a> <span class='layout'>,</span> <span class='varid'>hasAttribute</span> <span class='comment'>-- XmlNode n => n -> QName -> Bool</span>-<a name="line-51"></a> <span class='layout'>,</span> <span class='varid'>setAttribute</span> <span class='comment'>-- XmlNode n => QName -> String -> n -> n</span>-<a name="line-52"></a>-<a name="line-53"></a> <span class='comment'>-- Namespace functions</span>-<a name="line-54"></a> <span class='layout'>,</span> <span class='conid'>ExName</span><span class='layout'>(</span><span class='conid'>ExName</span><span class='layout'>)</span> <span class='comment'>-- String (local) -> String (uri) -> ExName</span>-<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>mkExName</span> <span class='comment'>-- QName -> ExName</span>-<a name="line-56"></a> <span class='layout'>,</span> <span class='varid'>exLocal</span> <span class='comment'>-- ExName -> String</span>-<a name="line-57"></a> <span class='layout'>,</span> <span class='varid'>exUri</span> <span class='comment'>-- ExName -> String</span>-<a name="line-58"></a> <span class='layout'>,</span> <span class='varid'>parseExName</span> <span class='comment'>-- UriMapping -> String -> ExName</span>-<a name="line-59"></a> <span class='layout'>,</span> <span class='conid'>UriMapping</span> <span class='comment'>-- Map String String</span>-<a name="line-60"></a> <span class='layout'>,</span> <span class='varid'>getUriMap</span> <span class='comment'>-- XmlNode n => n -> UriMapping (extract an Ns-Uri Map from an Element node)</span>-<a name="line-61"></a> <span class='layout'>,</span> <span class='varid'>setUriMap</span> <span class='comment'>-- XmlNode n => UriMap -> n -> n</span>-<a name="line-62"></a> <span class='layout'>,</span> <span class='varid'>uriMap2Attrs</span> <span class='comment'>-- UriMapping -> [XmlTree] (create xmlns:* Attribute nodes for Uri-Mapping)</span>-<a name="line-63"></a> <span class='layout'>,</span> <span class='varid'>expandNSDecls</span> <span class='comment'>-- XmlTree -> XmlTree</span>-<a name="line-64"></a> <span class='layout'>,</span> <span class='varid'>lookupPrefix</span> <span class='comment'>-- UriMapping -> String -> String</span>-<a name="line-65"></a> <span class='layout'>,</span> <span class='varid'>isNsAttr</span> <span class='comment'>-- XmlTree -> Bool</span>-<a name="line-66"></a>-<a name="line-67"></a> <span class='comment'>-- additions to XPATH:</span>-<a name="line-68"></a> <span class='layout'>,</span> <span class='varid'>mkLiteralExpr</span> <span class='comment'>-- String -> Expr</span>-<a name="line-69"></a> <span class='layout'>,</span> <span class='varid'>mkStringExpr</span> <span class='comment'>-- Expr -> Expr</span>-<a name="line-70"></a> <span class='layout'>,</span> <span class='varid'>mkBoolExpr</span> <span class='comment'>-- Expr -> Expr</span>-<a name="line-71"></a> <span class='layout'>,</span> <span class='varid'>mkTrueExpr</span> <span class='comment'>-- Expr</span>-<a name="line-72"></a> <span class='layout'>,</span> <span class='varid'>concatExpr</span> <span class='comment'>-- [Expr] -> Expr</span>-<a name="line-73"></a> <span class='layout'>,</span> <span class='varid'>splitExpr</span> <span class='comment'>-- Expr -> [Expr]</span>-<a name="line-74"></a> <span class='layout'>,</span> <span class='varid'>unionExpr</span> <span class='comment'>-- [Expr] -> Expr</span>-<a name="line-75"></a> <span class='layout'>,</span> <span class='varid'>splitMatchByPrio</span> <span class='comment'>-- Expr -> [(Float, Expr)]</span>-<a name="line-76"></a> <span class='layout'>,</span> <span class='varid'>computePriority</span> <span class='comment'>-- Expr -> Float</span>-<a name="line-77"></a> <span class='layout'>,</span> <span class='varid'>computeNTestPriority</span> <span class='comment'>-- NodeTest -> Float</span>-<a name="line-78"></a> <span class='layout'>,</span> <span class='varid'>isMatchExpr</span> <span class='comment'>-- Expr -> Bool</span>-<a name="line-79"></a>-<a name="line-80"></a> <span class='comment'>-- Misc.:</span>-<a name="line-81"></a> <span class='layout'>,</span> <span class='varid'>fromJustErr</span> <span class='comment'>-- String -> Maybe a -> a, fromJust with error message</span>-<a name="line-82"></a> <span class='layout'>,</span> <span class='varid'>readWDefault</span> <span class='comment'>-- Read a => a -> String -> a</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>-<a name="line-86"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span>-<a name="line-87"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrow</span>-<a name="line-88"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>-<a name="line-89"></a>-<a name="line-90"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span>-<a name="line-91"></a> <span class='layout'>(</span> <span class='varid'>xshow</span>-<a name="line-92"></a> <span class='layout'>)</span>-<a name="line-93"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span>-<a name="line-94"></a> <span class='layout'>(</span> <span class='conid'>XmlNode</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>-<a name="line-95"></a> <span class='layout'>,</span> <span class='varid'>mkElement</span>-<a name="line-96"></a> <span class='layout'>,</span> <span class='varid'>mkRoot</span>-<a name="line-97"></a> <span class='layout'>,</span> <span class='varid'>mkAttr</span>-<a name="line-98"></a> <span class='layout'>,</span> <span class='varid'>mergeAttrl</span>-<a name="line-99"></a> <span class='layout'>)</span>-<a name="line-100"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>-<a name="line-101"></a>-<a name="line-102"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>-<a name="line-103"></a> <span class='layout'>(</span> <span class='conid'>XmlTree</span>-<a name="line-104"></a> <span class='layout'>,</span> <span class='conid'>XNode</span><span class='layout'>(</span><span class='conid'>XTag</span><span class='layout'>,</span> <span class='conid'>XAttr</span><span class='layout'>)</span>-<a name="line-105"></a> <span class='layout'>,</span> <span class='conid'>QName</span><span class='layout'>(</span><span class='varid'>namePrefix</span><span class='layout'>,</span> <span class='varid'>localPart</span><span class='layout'>,</span> <span class='varid'>namespaceUri</span><span class='layout'>)</span>-<a name="line-106"></a> <span class='layout'>,</span> <span class='varid'>equivQName</span>-<a name="line-107"></a> <span class='layout'>,</span> <span class='varid'>mkName</span>-<a name="line-108"></a> <span class='layout'>,</span> <span class='varid'>mkQName</span>-<a name="line-109"></a> <span class='layout'>)</span>-<a name="line-110"></a>-<a name="line-111"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>FormatXmlTree</span>-<a name="line-112"></a> <span class='layout'>(</span> <span class='varid'>formatXmlTree</span> <span class='layout'>)</span>-<a name="line-113"></a>-<a name="line-114"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathDataTypes</span>-<a name="line-115"></a> <span class='layout'>(</span> <span class='conid'>Expr</span><span class='layout'>(</span><span class='conid'>LiteralExpr</span><span class='layout'>,</span> <span class='conid'>FctExpr</span><span class='layout'>,</span> <span class='conid'>GenExpr</span><span class='layout'>,</span> <span class='conid'>PathExpr</span><span class='layout'>)</span>-<a name="line-116"></a> <span class='layout'>,</span> <span class='conid'>Op</span><span class='layout'>(</span><span class='conid'>Union</span><span class='layout'>)</span>-<a name="line-117"></a> <span class='layout'>,</span> <span class='conid'>LocationPath</span> <span class='layout'>(</span><span class='conid'>LocPath</span><span class='layout'>)</span>-<a name="line-118"></a> <span class='layout'>,</span> <span class='conid'>Path</span> <span class='layout'>(</span><span class='conid'>Rel</span><span class='layout'>)</span>-<a name="line-119"></a> <span class='layout'>,</span> <span class='conid'>XStep</span> <span class='layout'>(</span><span class='conid'>Step</span><span class='layout'>)</span>-<a name="line-120"></a> <span class='layout'>,</span> <span class='conid'>NodeTest</span> <span class='layout'>(</span><span class='conid'>NameTest</span><span class='layout'>,</span> <span class='conid'>PI</span><span class='layout'>,</span> <span class='conid'>TypeTest</span><span class='layout'>)</span>-<a name="line-121"></a> <span class='layout'>,</span> <span class='conid'>NavXmlTree</span>-<a name="line-122"></a> <span class='layout'>,</span> <span class='conid'>XPathValue</span><span class='layout'>(</span><span class='conid'>XPVNode</span><span class='layout'>,</span> <span class='conid'>XPVBool</span><span class='layout'>,</span> <span class='conid'>XPVString</span><span class='layout'>,</span> <span class='conid'>XPVError</span><span class='layout'>)</span>-<a name="line-123"></a> <span class='layout'>)</span>-<a name="line-124"></a>-<a name="line-125"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathParser</span>-<a name="line-126"></a> <span class='layout'>(</span> <span class='varid'>parseXPath</span> <span class='layout'>)</span>-<a name="line-127"></a>-<a name="line-128"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathEval</span>-<a name="line-129"></a> <span class='layout'>(</span> <span class='varid'>evalExpr</span> <span class='layout'>)</span>-<a name="line-130"></a>-<a name="line-131"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathFct</span>-<a name="line-132"></a> <span class='layout'>(</span> <span class='varid'>isNotInNodeList</span> <span class='layout'>)</span>-<a name="line-133"></a>-<a name="line-134"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathToString</span>-<a name="line-135"></a> <span class='layout'>(</span> <span class='varid'>xPValue2XmlTrees</span> <span class='layout'>)</span>-<a name="line-136"></a>-<a name="line-137"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='layout'>)</span>-<a name="line-138"></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'>Map</span> <span class='varid'>hiding</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='layout'>)</span>-<a name="line-139"></a>-<a name="line-140"></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'>Class</span> +<a name="line-11"></a>+<a name="line-12"></a> Common imports and functions for HXSLT+<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'>XSLT</span><span class='varop'>.</span><span class='conid'>Common</span>+<a name="line-19"></a> <span class='layout'>(</span> <span class='keyword'>module</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</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'>XmlNode</span>+<a name="line-21"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlKeywords</span>+<a name="line-22"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span>+<a name="line-23"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>FormatXmlTree</span>+<a name="line-24"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathDataTypes</span>+<a name="line-25"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathParser</span>+<a name="line-26"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathEval</span>+<a name="line-27"></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'>XPath</span><span class='varop'>.</span><span class='conid'>XPathFct</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'>XPath</span><span class='varop'>.</span><span class='conid'>XPathToString</span>+<a name="line-29"></a> <span class='layout'>,</span> <span class='keyword'>module</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>NavTree</span>+<a name="line-30"></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'>Class</span>+<a name="line-31"></a>+<a name="line-32"></a> <span class='comment'>-- Tree Functions</span>+<a name="line-33"></a> <span class='layout'>,</span> <span class='varid'>filterTree</span> <span class='comment'>-- Tree t => (a -> Bool) -> t a -> Maybe (t a)</span>+<a name="line-34"></a> <span class='layout'>,</span> <span class='varid'>mapTreeCtx</span> <span class='comment'>-- Tree t => (c -> a -> (c, b)) -> c -> t a -> t b</span>+<a name="line-35"></a> <span class='layout'>,</span> <span class='varid'>filterTreeCtx</span> <span class='comment'>-- Tree t => (c -> a -> (c, Bool)) -> c -> t a -> Maybe (t a)</span>+<a name="line-36"></a> <span class='layout'>,</span> <span class='varid'>zipTreeWith</span> <span class='comment'>-- Tree t => (a -> b -> c) -> t a -> t b -> t c</span>+<a name="line-37"></a> <span class='layout'>,</span> <span class='varid'>zipTree</span> <span class='comment'>-- Tree t => t a -> t b -> t (a,b) (zipTreeWith (,))</span>+<a name="line-38"></a> <span class='layout'>,</span> <span class='varid'>unzipTree</span> <span class='comment'>-- Tree t => t (a,b) -> (t a, t b) (mapTree fst &&& mapTree snd)</span>+<a name="line-39"></a> <span class='layout'>,</span> <span class='varid'>showTrees</span>+<a name="line-40"></a>+<a name="line-41"></a> <span class='comment'>-- XML functions</span>+<a name="line-42"></a> <span class='layout'>,</span> <span class='varid'>isElemType</span> <span class='comment'>-- XmlNode n => QName -> n -> Bool</span>+<a name="line-43"></a> <span class='layout'>,</span> <span class='varid'>isAttrType</span> <span class='comment'>-- XmlNode n => QName -> n -> Bool</span>+<a name="line-44"></a> <span class='layout'>,</span> <span class='varid'>isWhitespaceNode</span> <span class='comment'>-- XmlTree -> Bool</span>+<a name="line-45"></a> <span class='layout'>,</span> <span class='varid'>collectTextnodes</span> <span class='comment'>-- [XmlTree] -> String</span>+<a name="line-46"></a> <span class='layout'>,</span> <span class='varid'>tryFetchAttribute</span> <span class='comment'>-- XmlNode n => n -> QName -> Maybe String</span>+<a name="line-47"></a> <span class='layout'>,</span> <span class='varid'>fetchAttributeWDefault</span> <span class='comment'>-- XmlNode n => n -> QName -> String -> String</span>+<a name="line-48"></a> <span class='layout'>,</span> <span class='varid'>fetchAttribute</span> <span class='comment'>-- XmlNode n => n -> QName -> String</span>+<a name="line-49"></a> <span class='layout'>,</span> <span class='varid'>hasAttribute</span> <span class='comment'>-- XmlNode n => n -> QName -> Bool</span>+<a name="line-50"></a> <span class='layout'>,</span> <span class='varid'>setAttribute</span> <span class='comment'>-- XmlNode n => QName -> String -> n -> n</span>+<a name="line-51"></a>+<a name="line-52"></a> <span class='comment'>-- Namespace functions</span>+<a name="line-53"></a> <span class='layout'>,</span> <span class='conid'>ExName</span><span class='layout'>(</span><span class='conid'>ExName</span><span class='layout'>)</span> <span class='comment'>-- String (local) -> String (uri) -> ExName</span>+<a name="line-54"></a> <span class='layout'>,</span> <span class='varid'>mkExName</span> <span class='comment'>-- QName -> ExName</span>+<a name="line-55"></a> <span class='layout'>,</span> <span class='varid'>exLocal</span> <span class='comment'>-- ExName -> String</span>+<a name="line-56"></a> <span class='layout'>,</span> <span class='varid'>exUri</span> <span class='comment'>-- ExName -> String</span>+<a name="line-57"></a> <span class='layout'>,</span> <span class='varid'>parseExName</span> <span class='comment'>-- UriMapping -> String -> ExName</span>+<a name="line-58"></a> <span class='layout'>,</span> <span class='conid'>UriMapping</span> <span class='comment'>-- Map String String</span>+<a name="line-59"></a> <span class='layout'>,</span> <span class='varid'>getUriMap</span> <span class='comment'>-- XmlNode n => n -> UriMapping (extract an Ns-Uri Map from an Element node)</span>+<a name="line-60"></a> <span class='layout'>,</span> <span class='varid'>setUriMap</span> <span class='comment'>-- XmlNode n => UriMap -> n -> n</span>+<a name="line-61"></a> <span class='layout'>,</span> <span class='varid'>uriMap2Attrs</span> <span class='comment'>-- UriMapping -> [XmlTree] (create xmlns:* Attribute nodes for Uri-Mapping)</span>+<a name="line-62"></a> <span class='layout'>,</span> <span class='varid'>expandNSDecls</span> <span class='comment'>-- XmlTree -> XmlTree</span>+<a name="line-63"></a> <span class='layout'>,</span> <span class='varid'>lookupPrefix</span> <span class='comment'>-- UriMapping -> String -> String</span>+<a name="line-64"></a> <span class='layout'>,</span> <span class='varid'>isNsAttr</span> <span class='comment'>-- XmlTree -> Bool</span>+<a name="line-65"></a>+<a name="line-66"></a> <span class='comment'>-- additions to XPATH:</span>+<a name="line-67"></a> <span class='layout'>,</span> <span class='varid'>mkLiteralExpr</span> <span class='comment'>-- String -> Expr</span>+<a name="line-68"></a> <span class='layout'>,</span> <span class='varid'>mkStringExpr</span> <span class='comment'>-- Expr -> Expr</span>+<a name="line-69"></a> <span class='layout'>,</span> <span class='varid'>mkBoolExpr</span> <span class='comment'>-- Expr -> Expr</span>+<a name="line-70"></a> <span class='layout'>,</span> <span class='varid'>mkTrueExpr</span> <span class='comment'>-- Expr</span>+<a name="line-71"></a> <span class='layout'>,</span> <span class='varid'>concatExpr</span> <span class='comment'>-- [Expr] -> Expr</span>+<a name="line-72"></a> <span class='layout'>,</span> <span class='varid'>splitExpr</span> <span class='comment'>-- Expr -> [Expr]</span>+<a name="line-73"></a> <span class='layout'>,</span> <span class='varid'>unionExpr</span> <span class='comment'>-- [Expr] -> Expr</span>+<a name="line-74"></a> <span class='layout'>,</span> <span class='varid'>splitMatchByPrio</span> <span class='comment'>-- Expr -> [(Float, Expr)]</span>+<a name="line-75"></a> <span class='layout'>,</span> <span class='varid'>computePriority</span> <span class='comment'>-- Expr -> Float</span>+<a name="line-76"></a> <span class='layout'>,</span> <span class='varid'>computeNTestPriority</span> <span class='comment'>-- NodeTest -> Float</span>+<a name="line-77"></a> <span class='layout'>,</span> <span class='varid'>isMatchExpr</span> <span class='comment'>-- Expr -> Bool</span>+<a name="line-78"></a>+<a name="line-79"></a> <span class='comment'>-- Misc.:</span>+<a name="line-80"></a> <span class='layout'>,</span> <span class='varid'>fromJustErr</span> <span class='comment'>-- String -> Maybe a -> a, fromJust with error message</span>+<a name="line-81"></a> <span class='layout'>,</span> <span class='varid'>readWDefault</span> <span class='comment'>-- Read a => a -> String -> a</span>+<a name="line-82"></a> <span class='layout'>)</span>+<a name="line-83"></a><span class='keyword'>where</span>+<a name="line-84"></a>+<a name="line-85"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span>+<a name="line-86"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ListArrow</span>+<a name="line-87"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowList</span>+<a name="line-88"></a>+<a name="line-89"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>XmlArrow</span> <span class='layout'>(</span> <span class='varid'>xshow</span>+<a name="line-90"></a> <span class='layout'>)</span>+<a name="line-91"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span 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-92"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>XmlNode</span> <span class='layout'>(</span> <span class='conid'>XmlNode</span> <span class='layout'>(</span><span class='keyglyph'>..</span><span class='layout'>)</span>+<a name="line-93"></a> <span class='layout'>,</span> <span class='varid'>mkElement</span>+<a name="line-94"></a> <span class='layout'>,</span> <span class='varid'>mkRoot</span>+<a name="line-95"></a> <span class='layout'>,</span> <span class='varid'>mkAttr</span>+<a name="line-96"></a> <span class='layout'>,</span> <span class='varid'>mergeAttrl</span>+<a name="line-97"></a> <span class='layout'>)</span>+<a name="line-98"></a>+<a name="line-99"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>TypeDefs</span> <span class='layout'>(</span> <span class='conid'>XmlTree</span>+<a name="line-100"></a> <span class='layout'>,</span> <span class='conid'>XNode</span><span class='layout'>(</span><span class='conid'>XTag</span><span class='layout'>,</span> <span class='conid'>XAttr</span><span class='layout'>)</span>+<a name="line-101"></a> <span class='layout'>,</span> <span class='conid'>QName</span>+<a name="line-102"></a> <span class='layout'>,</span> <span class='varid'>toNsEnv</span>+<a name="line-103"></a> <span class='layout'>,</span> <span class='varid'>namePrefix</span>+<a name="line-104"></a> <span class='layout'>,</span> <span class='varid'>localPart</span>+<a name="line-105"></a> <span class='layout'>,</span> <span class='varid'>namespaceUri</span>+<a name="line-106"></a> <span class='layout'>,</span> <span class='varid'>equivQName</span>+<a name="line-107"></a> <span class='layout'>,</span> <span class='varid'>mkName</span>+<a name="line-108"></a> <span class='layout'>,</span> <span class='varid'>mkQName</span>+<a name="line-109"></a> <span class='layout'>)</span>+<a name="line-110"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>DOM</span><span class='varop'>.</span><span class='conid'>FormatXmlTree</span> <span class='layout'>(</span> <span class='varid'>formatXmlTree</span>+<a name="line-111"></a> <span class='layout'>)</span>+<a name="line-112"></a>+<a name="line-113"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathDataTypes</span><span class='layout'>(</span> <span class='conid'>Expr</span> <span class='layout'>(</span> <span class='conid'>LiteralExpr</span>+<a name="line-114"></a> <span class='layout'>,</span> <span class='conid'>FctExpr</span>+<a name="line-115"></a> <span class='layout'>,</span> <span class='conid'>GenExpr</span>+<a name="line-116"></a> <span class='layout'>,</span> <span class='conid'>PathExpr</span>+<a name="line-117"></a> <span class='layout'>)</span>+<a name="line-118"></a> <span class='layout'>,</span> <span class='conid'>Op</span> <span class='layout'>(</span> <span class='conid'>Union</span> <span class='layout'>)</span>+<a name="line-119"></a> <span class='layout'>,</span> <span class='conid'>LocationPath</span> <span class='layout'>(</span> <span class='conid'>LocPath</span> <span class='layout'>)</span>+<a name="line-120"></a> <span class='layout'>,</span> <span class='conid'>Path</span> <span class='layout'>(</span> <span class='conid'>Rel</span> <span class='layout'>)</span>+<a name="line-121"></a> <span class='layout'>,</span> <span class='conid'>XStep</span> <span class='layout'>(</span> <span class='conid'>Step</span> <span class='layout'>)</span>+<a name="line-122"></a> <span class='layout'>,</span> <span class='conid'>NodeTest</span> <span class='layout'>(</span> <span class='conid'>NameTest</span>+<a name="line-123"></a> <span class='layout'>,</span> <span class='conid'>PI</span>+<a name="line-124"></a> <span class='layout'>,</span> <span class='conid'>TypeTest</span>+<a name="line-125"></a> <span class='layout'>)</span>+<a name="line-126"></a> <span class='layout'>,</span> <span class='conid'>NavXmlTree</span>+<a name="line-127"></a> <span class='layout'>,</span> <span class='conid'>XPathValue</span> <span class='layout'>(</span> <span class='conid'>XPVNode</span>+<a name="line-128"></a> <span class='layout'>,</span> <span class='conid'>XPVBool</span>+<a name="line-129"></a> <span class='layout'>,</span> <span class='conid'>XPVString</span>+<a name="line-130"></a> <span class='layout'>,</span> <span class='conid'>XPVError</span>+<a name="line-131"></a> <span class='layout'>)</span>+<a name="line-132"></a> <span class='layout'>)</span>+<a name="line-133"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathParser</span> <span class='layout'>(</span> <span class='varid'>parseXPath</span>+<a name="line-134"></a> <span class='layout'>)</span>+<a name="line-135"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathEval</span> <span class='layout'>(</span> <span class='varid'>evalExpr</span>+<a name="line-136"></a> <span class='layout'>)</span>+<a name="line-137"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathFct</span> <span class='layout'>(</span> <span class='varid'>isNotInNodeList</span>+<a name="line-138"></a> <span class='layout'>)</span>+<a name="line-139"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XPath</span><span class='varop'>.</span><span class='conid'>XPathToString</span> <span class='layout'>(</span> <span class='varid'>xPValue2XmlTrees</span>+<a name="line-140"></a> <span class='layout'>)</span> <a name="line-141"></a>-<a name="line-142"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>NavTree</span>-<a name="line-143"></a> <span class='layout'>(</span> <span class='conid'>NavTree</span>-<a name="line-144"></a> <span class='layout'>,</span> <span class='varid'>ntree</span>-<a name="line-145"></a> <span class='layout'>,</span> <span class='varid'>subtreeNT</span>-<a name="line-146"></a> <span class='layout'>,</span> <span class='varid'>upNT</span>-<a name="line-147"></a> <span class='layout'>,</span> <span class='varid'>downNT</span>-<a name="line-148"></a> <span class='layout'>,</span> <span class='varid'>rightNT</span>-<a name="line-149"></a> <span class='layout'>,</span> <span class='varid'>leftNT</span>-<a name="line-150"></a> <span class='layout'>,</span> <span class='varid'>getChildrenNT</span>-<a name="line-151"></a> <span class='layout'>)</span>-<a name="line-152"></a>-<a name="line-153"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-154"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>-<a name="line-155"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span>-<a name="line-156"></a>-<a name="line-157"></a><span class='comment'>--------------------------- </span>-<a name="line-158"></a><span class='comment'>-- Tree functions</span>+<a name="line-142"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='layout'>)</span>+<a name="line-143"></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'>Map</span> <span class='varid'>hiding</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='layout'>)</span>+<a name="line-144"></a>+<a name="line-145"></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'>Class</span> +<a name="line-146"></a>+<a name="line-147"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>NavTree</span> <span class='layout'>(</span> <span class='conid'>NavTree</span>+<a name="line-148"></a> <span class='layout'>,</span> <span class='varid'>ntree</span>+<a name="line-149"></a> <span class='layout'>,</span> <span class='varid'>subtreeNT</span>+<a name="line-150"></a> <span class='layout'>,</span> <span class='varid'>upNT</span>+<a name="line-151"></a> <span class='layout'>,</span> <span class='varid'>downNT</span>+<a name="line-152"></a> <span class='layout'>,</span> <span class='varid'>rightNT</span>+<a name="line-153"></a> <span class='layout'>,</span> <span class='varid'>leftNT</span>+<a name="line-154"></a> <span class='layout'>,</span> <span class='varid'>getChildrenNT</span>+<a name="line-155"></a> <span class='layout'>)</span>+<a name="line-156"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-157"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>+<a name="line-158"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Char</span> <a name="line-159"></a>-<a name="line-160"></a><span class='comment'>-- mapTree :: Functor t => (a -> b) -> t a -> t b</span>-<a name="line-161"></a><span class='comment'>-- mapTree = fmap</span>+<a name="line-160"></a><span class='comment'>--------------------------- </span>+<a name="line-161"></a><span class='comment'>-- Tree functions</span> <a name="line-162"></a>-<a name="line-163"></a><span class='comment'>-- "map" on a tree with a context. </span>-<a name="line-164"></a><span class='comment'>-- Contextual information from the ancestors of the current node can be collected in the context</span>+<a name="line-163"></a><span class='comment'>-- mapTree :: Functor t => (a -> b) -> t a -> t b</span>+<a name="line-164"></a><span class='comment'>-- mapTree = fmap</span> <a name="line-165"></a>-<a name="line-166"></a><a name="mapTreeCtx"></a><span class='definition'>mapTreeCtx</span> <span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>b</span>-<a name="line-167"></a><span class='definition'>mapTreeCtx</span> <span class='varid'>f</span> <span class='varid'>c</span> <span class='varid'>tree</span> <span class='keyglyph'>=</span> -<a name="line-168"></a> <span class='varid'>mkTree</span> <span class='varid'>b</span> <span class='varop'>$</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>mapTreeCtx</span> <span class='varid'>f</span> <span class='varid'>cN</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>tree</span>-<a name="line-169"></a> <span class='keyword'>where</span> -<a name="line-170"></a> <span class='layout'>(</span><span class='varid'>cN</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>c</span> <span class='varop'>$</span> <span class='varid'>getNode</span> <span class='varid'>tree</span>-<a name="line-171"></a>-<a name="line-172"></a><a name="filterTree"></a><span class='definition'>filterTree</span> <span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</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='varid'>t</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>a</span><span class='layout'>)</span>-<a name="line-173"></a><span class='definition'>filterTree</span> <span class='varid'>p</span> <span class='varid'>tree</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>p</span> <span class='varid'>node</span>-<a name="line-174"></a> <span class='keyword'>then</span> <span class='conid'>Just</span> <span class='varop'>$</span> <span class='varid'>mkTree</span> <span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>mapMaybe</span> <span class='layout'>(</span><span class='varid'>filterTree</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>tree</span>-<a name="line-175"></a> <span class='keyword'>else</span> <span class='conid'>Nothing</span>-<a name="line-176"></a> <span class='keyword'>where</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>getNode</span> <span class='varid'>tree</span>-<a name="line-177"></a>-<a name="line-178"></a><a name="filterTreeCtx"></a><span class='comment'>-- "filter" on a tree with a context. </span>-<a name="line-179"></a><span class='comment'>-- Contextual information from the ancestors of the current node can be collected in the context</span>-<a name="line-180"></a><span class='definition'>filterTreeCtx</span> <span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='conid'>Bool</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>a</span><span class='layout'>)</span>-<a name="line-181"></a><span class='definition'>filterTreeCtx</span> <span class='varid'>p</span> <span class='varid'>c</span> <span class='varid'>tree</span> <span class='keyglyph'>=</span>-<a name="line-182"></a> <span class='keyword'>if</span> <span class='varid'>b</span> -<a name="line-183"></a> <span class='keyword'>then</span> <span class='conid'>Just</span> <span class='varop'>$</span> <span class='varid'>mkTree</span> <span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>mapMaybe</span> <span class='layout'>(</span><span class='varid'>filterTreeCtx</span> <span class='varid'>p</span> <span class='varid'>cN</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>tree</span>-<a name="line-184"></a> <span class='keyword'>else</span> <span class='conid'>Nothing</span>-<a name="line-185"></a> <span class='keyword'>where</span> -<a name="line-186"></a> <span class='layout'>(</span><span class='varid'>cN</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>p</span> <span class='varid'>c</span> <span class='varid'>node</span>-<a name="line-187"></a> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>getNode</span> <span class='varid'>tree</span>-<a name="line-188"></a>-<a name="line-189"></a><a name="zipTreeWith"></a><span class='definition'>zipTreeWith</span> <span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</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='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>c</span>-<a name="line-190"></a><span class='definition'>zipTreeWith</span> <span class='varid'>f</span> <span class='varid'>a</span> <span class='varid'>b</span> <span class='keyglyph'>=</span> <span class='varid'>mkTree</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='layout'>(</span><span class='varid'>getNode</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>getNode</span> <span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span> -<a name="line-191"></a> <span class='varop'>$</span> <span class='varid'>zipWith</span> <span class='layout'>(</span><span class='varid'>zipTreeWith</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>b</span>-<a name="line-192"></a>-<a name="line-193"></a><a name="zipTree"></a><span class='definition'>zipTree</span> <span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=></span> <span class='varid'>t</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>)</span>-<a name="line-194"></a><span class='definition'>zipTree</span> <span class='keyglyph'>=</span> <span class='varid'>zipTreeWith</span> <span class='conid'>(,)</span>+<a name="line-166"></a><span class='comment'>-- "map" on a tree with a context. </span>+<a name="line-167"></a><span class='comment'>-- Contextual information from the ancestors of the current node can be collected in the context</span>+<a name="line-168"></a>+<a name="line-169"></a><a name="mapTreeCtx"></a><span class='definition'>mapTreeCtx</span> <span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>b</span>+<a name="line-170"></a><span class='definition'>mapTreeCtx</span> <span class='varid'>f</span> <span class='varid'>c</span> <span class='varid'>tree</span> <span class='keyglyph'>=</span> +<a name="line-171"></a> <span class='varid'>mkTree</span> <span class='varid'>b</span> <span class='varop'>$</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>mapTreeCtx</span> <span class='varid'>f</span> <span class='varid'>cN</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>tree</span>+<a name="line-172"></a> <span class='keyword'>where</span> +<a name="line-173"></a> <span class='layout'>(</span><span class='varid'>cN</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varid'>c</span> <span class='varop'>$</span> <span class='varid'>getNode</span> <span class='varid'>tree</span>+<a name="line-174"></a>+<a name="line-175"></a><a name="filterTree"></a><span class='definition'>filterTree</span> <span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</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='varid'>t</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>a</span><span class='layout'>)</span>+<a name="line-176"></a><span class='definition'>filterTree</span> <span class='varid'>p</span> <span class='varid'>tree</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>p</span> <span class='varid'>node</span>+<a name="line-177"></a> <span class='keyword'>then</span> <span class='conid'>Just</span> <span class='varop'>$</span> <span class='varid'>mkTree</span> <span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>mapMaybe</span> <span class='layout'>(</span><span class='varid'>filterTree</span> <span class='varid'>p</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>tree</span>+<a name="line-178"></a> <span class='keyword'>else</span> <span class='conid'>Nothing</span>+<a name="line-179"></a> <span class='keyword'>where</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>getNode</span> <span class='varid'>tree</span>+<a name="line-180"></a>+<a name="line-181"></a><a name="filterTreeCtx"></a><span class='comment'>-- "filter" on a tree with a context. </span>+<a name="line-182"></a><span class='comment'>-- Contextual information from the ancestors of the current node can be collected in the context</span>+<a name="line-183"></a><span class='definition'>filterTreeCtx</span> <span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='conid'>Bool</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>a</span><span class='layout'>)</span>+<a name="line-184"></a><span class='definition'>filterTreeCtx</span> <span class='varid'>p</span> <span class='varid'>c</span> <span class='varid'>tree</span> <span class='keyglyph'>=</span>+<a name="line-185"></a> <span class='keyword'>if</span> <span class='varid'>b</span> +<a name="line-186"></a> <span class='keyword'>then</span> <span class='conid'>Just</span> <span class='varop'>$</span> <span class='varid'>mkTree</span> <span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>mapMaybe</span> <span class='layout'>(</span><span class='varid'>filterTreeCtx</span> <span class='varid'>p</span> <span class='varid'>cN</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>tree</span>+<a name="line-187"></a> <span class='keyword'>else</span> <span class='conid'>Nothing</span>+<a name="line-188"></a> <span class='keyword'>where</span> +<a name="line-189"></a> <span class='layout'>(</span><span class='varid'>cN</span><span class='layout'>,</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>p</span> <span class='varid'>c</span> <span class='varid'>node</span>+<a name="line-190"></a> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>getNode</span> <span class='varid'>tree</span>+<a name="line-191"></a>+<a name="line-192"></a><a name="zipTreeWith"></a><span class='definition'>zipTreeWith</span> <span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</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='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>c</span>+<a name="line-193"></a><span class='definition'>zipTreeWith</span> <span class='varid'>f</span> <span class='varid'>a</span> <span class='varid'>b</span> <span class='keyglyph'>=</span> <span class='varid'>mkTree</span> <span class='layout'>(</span><span class='varid'>f</span> <span class='layout'>(</span><span class='varid'>getNode</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>getNode</span> <span class='varid'>b</span><span class='layout'>)</span><span class='layout'>)</span> +<a name="line-194"></a> <span class='varop'>$</span> <span class='varid'>zipWith</span> <span class='layout'>(</span><span class='varid'>zipTreeWith</span> <span class='varid'>f</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>b</span> <a name="line-195"></a>-<a name="line-196"></a><a name="unzipTree"></a><span class='definition'>unzipTree</span> <span class='keyglyph'>::</span> <span class='conid'>Functor</span> <span class='varid'>t</span> <span class='keyglyph'>=></span> <span class='varid'>t</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='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>-<a name="line-197"></a><span class='definition'>unzipTree</span> <span class='keyglyph'>=</span> <span class='varid'>fmap</span> <span class='varid'>fst</span> <span class='varop'>&&&</span> <span class='varid'>fmap</span> <span class='varid'>snd</span>+<a name="line-196"></a><a name="zipTree"></a><span class='definition'>zipTree</span> <span class='keyglyph'>::</span> <span class='conid'>Tree</span> <span class='varid'>t</span> <span class='keyglyph'>=></span> <span class='varid'>t</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='varid'>b</span> <span class='keyglyph'>-></span> <span class='varid'>t</span> <span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span><span class='varid'>b</span><span class='layout'>)</span>+<a name="line-197"></a><span class='definition'>zipTree</span> <span class='keyglyph'>=</span> <span class='varid'>zipTreeWith</span> <span class='conid'>(,)</span> <a name="line-198"></a>-<a name="line-199"></a><a name="showTrees"></a><span class='definition'>showTrees</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-200"></a><span class='definition'>showTrees</span> <span class='varid'>ts</span>-<a name="line-201"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> -<a name="line-202"></a> <span class='layout'>(</span><span class='varid'>runLA</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='layout'>(</span><span class='varid'>constL</span> <span class='varid'>ts</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>undefined</span><span class='layout'>)</span>-<a name="line-203"></a>-<a name="line-204"></a><span class='comment'>--------------------------- </span>-<a name="line-205"></a><span class='comment'>-- Xml Functions</span>+<a name="line-199"></a><a name="unzipTree"></a><span class='definition'>unzipTree</span> <span class='keyglyph'>::</span> <span class='conid'>Functor</span> <span class='varid'>t</span> <span class='keyglyph'>=></span> <span class='varid'>t</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='keyglyph'>-></span> <span class='layout'>(</span><span class='varid'>t</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='varid'>t</span> <span class='varid'>b</span><span class='layout'>)</span>+<a name="line-200"></a><span class='definition'>unzipTree</span> <span class='keyglyph'>=</span> <span class='varid'>fmap</span> <span class='varid'>fst</span> <span class='varop'>&&&</span> <span class='varid'>fmap</span> <span class='varid'>snd</span>+<a name="line-201"></a>+<a name="line-202"></a><a name="showTrees"></a><span class='definition'>showTrees</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-203"></a><span class='definition'>showTrees</span> <span class='varid'>ts</span>+<a name="line-204"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> +<a name="line-205"></a> <span class='layout'>(</span><span class='varid'>runLA</span> <span class='layout'>(</span><span class='varid'>xshow</span> <span class='layout'>(</span><span class='varid'>constL</span> <span class='varid'>ts</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>undefined</span><span class='layout'>)</span> <a name="line-206"></a>-<a name="line-207"></a><a name="collectTextnodes"></a><span class='definition'>collectTextnodes</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-208"></a><span class='definition'>collectTextnodes</span>-<a name="line-209"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>.</span> <span class='varid'>mapMaybe</span> <span class='varid'>getText</span>-<a name="line-210"></a>-<a name="line-211"></a><a name="isElemType"></a><span class='definition'>isElemType</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-212"></a><span class='definition'>isElemType</span> <span class='varid'>qn</span> <span class='varid'>node</span>-<a name="line-213"></a> <span class='keyglyph'>=</span> <span class='varid'>isElem</span> <span class='varid'>node</span>-<a name="line-214"></a> <span class='varop'>&&</span>-<a name="line-215"></a> <span class='varid'>equivQName</span> <span class='varid'>qn</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-216"></a>-<a name="line-217"></a><a name="isAttrType"></a><span class='definition'>isAttrType</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-218"></a><span class='definition'>isAttrType</span> <span class='varid'>qname</span> <span class='varid'>node</span>-<a name="line-219"></a> <span class='keyglyph'>=</span> <span class='varid'>isAttr</span> <span class='varid'>node</span>-<a name="line-220"></a> <span class='varop'>&&</span>-<a name="line-221"></a> <span class='varid'>equivQName</span> <span class='varid'>qname</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrName</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-222"></a>-<a name="line-223"></a><a name="tryFetchAttribute"></a><span class='definition'>tryFetchAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>String</span>-<a name="line-224"></a><span class='definition'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>qn</span>-<a name="line-225"></a> <span class='keyglyph'>|</span> <span class='varid'>isElem</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>-<a name="line-226"></a>-<a name="line-227"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>candidates</span> -<a name="line-228"></a> <span class='keyword'>then</span> <span class='conid'>Nothing</span>+<a name="line-207"></a><span class='comment'>--------------------------- </span>+<a name="line-208"></a><span class='comment'>-- Xml Functions</span>+<a name="line-209"></a>+<a name="line-210"></a><a name="collectTextnodes"></a><span class='definition'>collectTextnodes</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-211"></a><span class='definition'>collectTextnodes</span>+<a name="line-212"></a> <span class='keyglyph'>=</span> <span class='varid'>concat</span> <span class='varop'>.</span> <span class='varid'>mapMaybe</span> <span class='varid'>getText</span>+<a name="line-213"></a>+<a name="line-214"></a><a name="isElemType"></a><span class='definition'>isElemType</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-215"></a><span class='definition'>isElemType</span> <span class='varid'>qn</span> <span class='varid'>node</span>+<a name="line-216"></a> <span class='keyglyph'>=</span> <span class='varid'>isElem</span> <span class='varid'>node</span>+<a name="line-217"></a> <span class='varop'>&&</span>+<a name="line-218"></a> <span class='varid'>equivQName</span> <span class='varid'>qn</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-219"></a>+<a name="line-220"></a><a name="isAttrType"></a><span class='definition'>isAttrType</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-221"></a><span class='definition'>isAttrType</span> <span class='varid'>qname</span> <span class='varid'>node</span>+<a name="line-222"></a> <span class='keyglyph'>=</span> <span class='varid'>isAttr</span> <span class='varid'>node</span>+<a name="line-223"></a> <span class='varop'>&&</span>+<a name="line-224"></a> <span class='varid'>equivQName</span> <span class='varid'>qname</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrName</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-225"></a>+<a name="line-226"></a><a name="tryFetchAttribute"></a><span class='definition'>tryFetchAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>String</span>+<a name="line-227"></a><span class='definition'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>qn</span>+<a name="line-228"></a> <span class='keyglyph'>|</span> <span class='varid'>isElem</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <a name="line-229"></a>-<a name="line-230"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>length</span> <span class='varid'>candidates</span> <span class='varop'>></span> <span class='num'>1</span>-<a name="line-231"></a> <span class='keyword'>then</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"More than one attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>qn</span><span class='layout'>)</span>+<a name="line-230"></a> <span class='keyword'>if</span> <span class='varid'>null</span> <span class='varid'>candidates</span> +<a name="line-231"></a> <span class='keyword'>then</span> <span class='conid'>Nothing</span> <a name="line-232"></a>-<a name="line-233"></a> <span class='keyword'>else</span> <span class='conid'>Just</span> <span class='varop'>$</span> <span class='varid'>collectTextnodes</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varop'>$</span> <span class='varid'>head</span> <span class='varid'>candidates</span>-<a name="line-234"></a>-<a name="line-235"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span> -<a name="line-236"></a> <span class='keyword'>where</span> -<a name="line-237"></a> <span class='varid'>candidates</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>isAttrType</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrl</span> <span class='varid'>node</span>-<a name="line-238"></a>-<a name="line-239"></a><a name="fetchAttributeWDefault"></a><span class='definition'>fetchAttributeWDefault</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-240"></a><span class='definition'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>name</span> <span class='varid'>def</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>def</span> <span class='varid'>id</span> <span class='layout'>(</span><span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>name</span><span class='layout'>)</span>+<a name="line-233"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>length</span> <span class='varid'>candidates</span> <span class='varop'>></span> <span class='num'>1</span>+<a name="line-234"></a> <span class='keyword'>then</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"More than one attribute "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>qn</span><span class='layout'>)</span>+<a name="line-235"></a>+<a name="line-236"></a> <span class='keyword'>else</span> <span class='conid'>Just</span> <span class='varop'>$</span> <span class='varid'>collectTextnodes</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varop'>$</span> <span class='varid'>head</span> <span class='varid'>candidates</span>+<a name="line-237"></a>+<a name="line-238"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>Nothing</span> +<a name="line-239"></a> <span class='keyword'>where</span> +<a name="line-240"></a> <span class='varid'>candidates</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>isAttrType</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrl</span> <span class='varid'>node</span> <a name="line-241"></a>-<a name="line-242"></a><a name="fetchAttribute"></a><span class='definition'>fetchAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-243"></a><span class='definition'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>name</span> <span class='varop'>$</span> <span class='varid'>error</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'>getElemName</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" has no attribute: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span>+<a name="line-242"></a><a name="fetchAttributeWDefault"></a><span class='definition'>fetchAttributeWDefault</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-243"></a><span class='definition'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>name</span> <span class='varid'>def</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='varid'>def</span> <span class='varid'>id</span> <span class='layout'>(</span><span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>name</span><span class='layout'>)</span> <a name="line-244"></a>-<a name="line-245"></a><a name="hasAttribute"></a><span class='definition'>hasAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-246"></a><span class='definition'>hasAttribute</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>isJust</span> <span class='varop'>.</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span>+<a name="line-245"></a><a name="fetchAttribute"></a><span class='definition'>fetchAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-246"></a><span class='definition'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>name</span> <span class='varop'>$</span> <span class='varid'>error</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'>getElemName</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>++</span> <span class='str'>" has no attribute: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>name</span><span class='layout'>)</span> <a name="line-247"></a>-<a name="line-248"></a><a name="setAttribute"></a><span class='definition'>setAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>n</span>-<a name="line-249"></a><span class='definition'>setAttribute</span> <span class='varid'>qn</span> <span class='varid'>val</span> <span class='varid'>node</span>-<a name="line-250"></a> <span class='keyglyph'>|</span> <span class='varid'>isElem</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>setElemAttrl</span> <span class='layout'>(</span><span class='varid'>newA</span> <span class='conop'>:</span> <span class='varid'>attrs</span><span class='layout'>)</span> <span class='varid'>node</span>-<a name="line-251"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"setAttribute on none-element node"</span> <span class='comment'>-- how print an XmlNode...</span>-<a name="line-252"></a> <span class='keyword'>where</span> -<a name="line-253"></a> <span class='varid'>attrs</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isAttrType</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrl</span> <span class='varid'>node</span>-<a name="line-254"></a> <span class='varid'>newA</span> <span class='keyglyph'>=</span> <span class='varid'>mkTree</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='keyglyph'>[</span><span class='varid'>mkText</span> <span class='varid'>val</span><span class='keyglyph'>]</span>-<a name="line-255"></a>-<a name="line-256"></a><a name="isWhitespaceNode"></a><span class='definition'>isWhitespaceNode</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>XmlNode</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-257"></a><span class='definition'>isWhitespaceNode</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>all</span> <span class='varid'>isSpace</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>getText</span>+<a name="line-248"></a><a name="hasAttribute"></a><span class='definition'>hasAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-249"></a><span class='definition'>hasAttribute</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>isJust</span> <span class='varop'>.</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span>+<a name="line-250"></a>+<a name="line-251"></a><a name="setAttribute"></a><span class='definition'>setAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>n</span>+<a name="line-252"></a><span class='definition'>setAttribute</span> <span class='varid'>qn</span> <span class='varid'>val</span> <span class='varid'>node</span>+<a name="line-253"></a> <span class='keyglyph'>|</span> <span class='varid'>isElem</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>setElemAttrl</span> <span class='layout'>(</span><span class='varid'>newA</span> <span class='conop'>:</span> <span class='varid'>attrs</span><span class='layout'>)</span> <span class='varid'>node</span>+<a name="line-254"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"setAttribute on none-element node"</span> <span class='comment'>-- how print an XmlNode...</span>+<a name="line-255"></a> <span class='keyword'>where</span> +<a name="line-256"></a> <span class='varid'>attrs</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>not</span> <span class='varop'>.</span> <span class='varid'>isAttrType</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrl</span> <span class='varid'>node</span>+<a name="line-257"></a> <span class='varid'>newA</span> <span class='keyglyph'>=</span> <span class='varid'>mkTree</span> <span class='layout'>(</span><span class='conid'>XAttr</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='keyglyph'>[</span><span class='varid'>mkText</span> <span class='varid'>val</span><span class='keyglyph'>]</span> <a name="line-258"></a>-<a name="line-259"></a><span class='comment'>--------------------------- </span>-<a name="line-260"></a><span class='comment'>-- Namespace Functions</span>+<a name="line-259"></a><a name="isWhitespaceNode"></a><span class='definition'>isWhitespaceNode</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>XmlNode</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-260"></a><span class='definition'>isWhitespaceNode</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='varid'>all</span> <span class='varid'>isSpace</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>getText</span> <a name="line-261"></a>-<a name="line-262"></a><span class='comment'>-- Expanded name, is unique can therefore be used as a key (unlike QName)</span>-<a name="line-263"></a>-<a name="line-264"></a><a name="ExName"></a><span class='keyword'>data</span> <span class='conid'>ExName</span> <span class='keyglyph'>=</span> <span class='conid'>ExName</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-265"></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> <span class='conid'>Ord</span><span class='layout'>)</span>+<a name="line-262"></a><span class='comment'>--------------------------- </span>+<a name="line-263"></a><span class='comment'>-- Namespace Functions</span>+<a name="line-264"></a>+<a name="line-265"></a><span class='comment'>-- Expanded name, is unique can therefore be used as a key (unlike QName)</span> <a name="line-266"></a>-<a name="line-267"></a><a name="mkExName"></a><span class='definition'>mkExName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>ExName</span>-<a name="line-268"></a><span class='definition'>mkExName</span> <span class='varid'>qn</span> <span class='keyglyph'>=</span> <span class='conid'>ExName</span> <span class='layout'>(</span><span class='varid'>localPart</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>namespaceUri</span> <span class='varid'>qn</span><span class='layout'>)</span>+<a name="line-267"></a><a name="ExName"></a><span class='keyword'>data</span> <span class='conid'>ExName</span> <span class='keyglyph'>=</span> <span class='conid'>ExName</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-268"></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> <span class='conid'>Ord</span><span class='layout'>)</span> <a name="line-269"></a>-<a name="line-270"></a><a name="exLocal"></a><span class='definition'>exLocal</span><span class='layout'>,</span> <span class='varid'>exUri</span> <span class='keyglyph'>::</span> <span class='conid'>ExName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-271"></a><span class='definition'>exLocal</span> <span class='layout'>(</span><span class='conid'>ExName</span> <span class='varid'>l</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>l</span>-<a name="line-272"></a><a name="exUri"></a><span class='definition'>exUri</span> <span class='layout'>(</span><span class='conid'>ExName</span> <span class='keyword'>_</span> <span class='varid'>u</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>u</span>-<a name="line-273"></a>-<a name="line-274"></a><a name="parseExName"></a><span class='definition'>parseExName</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>ExName</span>-<a name="line-275"></a><span class='definition'>parseExName</span> <span class='varid'>uris</span> <span class='varid'>str</span>-<a name="line-276"></a> <span class='keyglyph'>|</span> <span class='varid'>noPrefix</span> <span class='keyglyph'>=</span> <span class='conid'>ExName</span> <span class='varid'>str</span> <span class='str'>""</span>-<a name="line-277"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>ExName</span> <span class='varid'>loc</span> <span class='varop'>$</span> <span class='varid'>lookupPrefix</span> <span class='varid'>uris</span> <span class='varid'>prefix</span>-<a name="line-278"></a> <span class='keyword'>where</span>-<a name="line-279"></a> <span class='varid'>noPrefix</span> <span class='keyglyph'>=</span> <span class='varid'>null</span> <span class='varid'>loc</span> -<a name="line-280"></a> <span class='varid'>loc</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>1</span> <span class='varid'>loc'</span> -<a name="line-281"></a> <span class='layout'>(</span><span class='varid'>prefix</span><span class='layout'>,</span> <span class='varid'>loc'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>str</span>-<a name="line-282"></a>-<a name="line-283"></a><span class='comment'>-- Mapping from namespace-Prefixes to namespace-URIs</span>-<a name="line-284"></a>-<a name="line-285"></a><a name="UriMapping"></a><span class='keyword'>type</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span> <span class='conid'>String</span> <span class='conid'>String</span>-<a name="line-286"></a>-<a name="line-287"></a><a name="getUriMap"></a><span class='definition'>getUriMap</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>UriMapping</span>-<a name="line-288"></a><span class='definition'>getUriMap</span>-<a name="line-289"></a> <span class='keyglyph'>=</span> <span class='varid'>uriMappingsFromNsAttrs</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='varid'>isNsAttr</span> <span class='varop'>.</span> <span class='varid'>maybe</span> <span class='varid'>err</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>getAttrl</span>-<a name="line-290"></a> <span class='keyword'>where</span>-<a name="line-291"></a> <span class='varid'>err</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='str'>"Internal error: getUriMap on none-element node"</span>-<a name="line-292"></a>-<a name="line-293"></a><a name="setUriMap"></a><span class='definition'>setUriMap</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>n</span>-<a name="line-294"></a><span class='definition'>setUriMap</span> <span class='varid'>nsMap</span> <span class='varid'>node</span>-<a name="line-295"></a> <span class='keyglyph'>=</span> <span class='varid'>setElemAttrl</span> <span class='layout'>(</span><span class='varid'>mergeAttrl</span> <span class='layout'>(</span><span class='varid'>maybe</span> <span class='conid'>[]</span> <span class='varid'>id</span> <span class='varop'>$</span> <span class='varid'>getAttrl</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>uriMap2Attrs</span> <span class='varid'>nsMap</span><span class='layout'>)</span> <span class='varid'>node</span>-<a name="line-296"></a>-<a name="line-297"></a><a name="uriMap2Attrs"></a><span class='definition'>uriMap2Attrs</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>-<a name="line-298"></a><span class='definition'>uriMap2Attrs</span>-<a name="line-299"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>joinNsAttr</span> <span class='varop'>.</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>toAscList</span>-<a name="line-300"></a>-<a name="line-301"></a><a name="lookupPrefix"></a><span class='definition'>lookupPrefix</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>-<a name="line-302"></a><span class='definition'>lookupPrefix</span> <span class='varid'>uris</span> <span class='varid'>prefix</span>-<a name="line-303"></a> <span class='keyglyph'>=</span> <span class='varid'>fromJustErr</span> <span class='layout'>(</span><span class='str'>"No namespace-Uri bound to prefix: "</span><span class='varop'>++</span><span class='varid'>prefix</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>prefix</span> <span class='varid'>uris</span>-<a name="line-304"></a>-<a name="line-305"></a><a name="expandNSDecls"></a><span class='definition'>expandNSDecls</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-306"></a><span class='definition'>expandNSDecls</span>-<a name="line-307"></a> <span class='keyglyph'>=</span> <span class='varid'>mapTreeCtx</span> <span class='layout'>(</span><span class='varid'>expandNSElem</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>fromAscList</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='str'>"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='str'>"xmlns"</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-308"></a>-<a name="line-309"></a><a name="expandNSElem"></a><span class='definition'>expandNSElem</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>UriMapping</span><span class='layout'>,</span> <span class='conid'>XNode</span><span class='layout'>)</span>-<a name="line-310"></a><span class='definition'>expandNSElem</span> <span class='varid'>umap</span> <span class='varid'>node</span>-<a name="line-311"></a> <span class='keyglyph'>|</span> <span class='varid'>isElem</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>umapNew</span><span class='layout'>,</span> <span class='varid'>nodeNew</span><span class='layout'>)</span>-<a name="line-312"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>umap</span><span class='layout'>,</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-313"></a> <span class='keyword'>where</span>-<a name="line-314"></a> <span class='varid'>nodeNew</span> <span class='keyglyph'>=</span> <span class='conid'>XTag</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varid'>attrNew</span>-<a name="line-315"></a> <span class='varid'>attrNew</span> <span class='keyglyph'>=</span> <span class='varid'>attrs</span> <span class='varop'>++</span> <span class='varid'>map</span> <span class='varid'>joinNsAttr</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>toAscList</span> <span class='varid'>umapNew</span><span class='layout'>)</span>-<a name="line-316"></a> <span class='varid'>umapNew</span> <span class='keyglyph'>=</span> <span class='varid'>uriMappingsFromNsAttrs</span> <span class='varid'>nsAttrs</span> <span class='varop'>`</span><span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>union</span><span class='varop'>`</span> <span class='varid'>umap</span>-<a name="line-317"></a> <span class='layout'>(</span><span class='varid'>nsAttrs</span><span class='layout'>,</span> <span class='varid'>attrs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='varid'>isNsAttr</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrl</span> <span class='varid'>node</span>-<a name="line-318"></a>-<a name="line-319"></a><a name="uriMappingsFromNsAttrs"></a><span class='definition'>uriMappingsFromNsAttrs</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>UriMapping</span>-<a name="line-320"></a><span class='definition'>uriMappingsFromNsAttrs</span>-<a name="line-321"></a> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>fromList</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>splitNsAttr</span>-<a name="line-322"></a>-<a name="line-323"></a><a name="isNsAttr"></a><span class='definition'>isNsAttr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-324"></a><span class='definition'>isNsAttr</span>-<a name="line-325"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span><span class='layout'>)</span> <span class='varid'>xmlnsNamespace</span> <span class='varop'>.</span> <span class='varid'>namespaceUri</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>getAttrName</span>-<a name="line-326"></a>-<a name="line-327"></a><a name="splitNsAttr"></a><span class='definition'>splitNsAttr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-328"></a><span class='definition'>splitNsAttr</span> <span class='varid'>node</span>-<a name="line-329"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>localPart</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrName</span> <span class='varid'>node</span><span class='layout'>,</span> <span class='varid'>collectTextnodes</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-330"></a>-<a name="line-331"></a><a name="joinNsAttr"></a><span class='definition'>joinNsAttr</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-332"></a><span class='definition'>joinNsAttr</span> <span class='layout'>(</span><span class='varid'>prefix</span><span class='layout'>,</span> <span class='varid'>uri</span><span class='layout'>)</span>-<a name="line-333"></a> <span class='keyglyph'>=</span> <span class='varid'>mkAttr</span> <span class='layout'>(</span><span class='varid'>mkQName</span> <span class='str'>"xmlns"</span> <span class='varid'>prefix</span> <span class='varid'>xmlnsNamespace</span><span class='layout'>)</span> <span class='keyglyph'>[</span><span class='varid'>mkText</span> <span class='varid'>uri</span><span class='keyglyph'>]</span>-<a name="line-334"></a>-<a name="line-335"></a><span class='comment'>-------------------------</span>-<a name="line-336"></a><span class='comment'>-- additions to XPATH:</span>+<a name="line-270"></a><a name="mkExName"></a><span class='definition'>mkExName</span> <span class='keyglyph'>::</span> <span class='conid'>QName</span> <span class='keyglyph'>-></span> <span class='conid'>ExName</span>+<a name="line-271"></a><span class='definition'>mkExName</span> <span class='varid'>qn</span> <span class='keyglyph'>=</span> <span class='conid'>ExName</span> <span class='layout'>(</span><span class='varid'>localPart</span> <span class='varid'>qn</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>namespaceUri</span> <span class='varid'>qn</span><span class='layout'>)</span>+<a name="line-272"></a>+<a name="line-273"></a><a name="exLocal"></a><span class='definition'>exLocal</span><span class='layout'>,</span> <span class='varid'>exUri</span> <span class='keyglyph'>::</span> <span class='conid'>ExName</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-274"></a><span class='definition'>exLocal</span> <span class='layout'>(</span><span class='conid'>ExName</span> <span class='varid'>l</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>l</span>+<a name="line-275"></a><a name="exUri"></a><span class='definition'>exUri</span> <span class='layout'>(</span><span class='conid'>ExName</span> <span class='keyword'>_</span> <span class='varid'>u</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>u</span>+<a name="line-276"></a>+<a name="line-277"></a><a name="parseExName"></a><span class='definition'>parseExName</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>ExName</span>+<a name="line-278"></a><span class='definition'>parseExName</span> <span class='varid'>uris</span> <span class='varid'>str</span>+<a name="line-279"></a> <span class='keyglyph'>|</span> <span class='varid'>noPrefix</span> <span class='keyglyph'>=</span> <span class='conid'>ExName</span> <span class='varid'>str</span> <span class='str'>""</span>+<a name="line-280"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='conid'>ExName</span> <span class='varid'>loc</span> <span class='varop'>$</span> <span class='varid'>lookupPrefix</span> <span class='varid'>uris</span> <span class='varid'>prefix</span>+<a name="line-281"></a> <span class='keyword'>where</span>+<a name="line-282"></a> <span class='varid'>noPrefix</span> <span class='keyglyph'>=</span> <span class='varid'>null</span> <span class='varid'>loc</span> +<a name="line-283"></a> <span class='varid'>loc</span> <span class='keyglyph'>=</span> <span class='varid'>drop</span> <span class='num'>1</span> <span class='varid'>loc'</span> +<a name="line-284"></a> <span class='layout'>(</span><span class='varid'>prefix</span><span class='layout'>,</span> <span class='varid'>loc'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>/=</span> <span class='chr'>':'</span><span class='layout'>)</span> <span class='varid'>str</span>+<a name="line-285"></a>+<a name="line-286"></a><span class='comment'>-- Mapping from namespace-Prefixes to namespace-URIs</span>+<a name="line-287"></a>+<a name="line-288"></a><a name="UriMapping"></a><span class='keyword'>type</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span> <span class='conid'>String</span> <span class='conid'>String</span>+<a name="line-289"></a>+<a name="line-290"></a><a name="getUriMap"></a><span class='definition'>getUriMap</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>UriMapping</span>+<a name="line-291"></a><span class='definition'>getUriMap</span>+<a name="line-292"></a> <span class='keyglyph'>=</span> <span class='varid'>uriMappingsFromNsAttrs</span> <span class='varop'>.</span> <span class='varid'>filter</span> <span class='varid'>isNsAttr</span> <span class='varop'>.</span> <span class='varid'>maybe</span> <span class='varid'>err</span> <span class='varid'>id</span> <span class='varop'>.</span> <span class='varid'>getAttrl</span>+<a name="line-293"></a> <span class='keyword'>where</span>+<a name="line-294"></a> <span class='varid'>err</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='str'>"Internal error: getUriMap on none-element node"</span>+<a name="line-295"></a>+<a name="line-296"></a><a name="setUriMap"></a><span class='definition'>setUriMap</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>n</span>+<a name="line-297"></a><span class='definition'>setUriMap</span> <span class='varid'>nsMap</span> <span class='varid'>node</span>+<a name="line-298"></a> <span class='keyglyph'>=</span> <span class='varid'>setElemAttrl</span> <span class='layout'>(</span><span class='varid'>mergeAttrl</span> <span class='layout'>(</span><span class='varid'>maybe</span> <span class='conid'>[]</span> <span class='varid'>id</span> <span class='varop'>$</span> <span class='varid'>getAttrl</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>uriMap2Attrs</span> <span class='varid'>nsMap</span><span class='layout'>)</span> <span class='varid'>node</span>+<a name="line-299"></a>+<a name="line-300"></a><a name="uriMap2Attrs"></a><span class='definition'>uriMap2Attrs</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span>+<a name="line-301"></a><span class='definition'>uriMap2Attrs</span>+<a name="line-302"></a> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>joinNsAttr</span> <span class='varop'>.</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>toAscList</span>+<a name="line-303"></a>+<a name="line-304"></a><a name="lookupPrefix"></a><span class='definition'>lookupPrefix</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>String</span>+<a name="line-305"></a><span class='definition'>lookupPrefix</span> <span class='varid'>uris</span> <span class='varid'>prefix</span>+<a name="line-306"></a> <span class='keyglyph'>=</span> <span class='varid'>fromJustErr</span> <span class='layout'>(</span><span class='str'>"No namespace-Uri bound to prefix: "</span><span class='varop'>++</span><span class='varid'>prefix</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>lookup</span> <span class='varid'>prefix</span> <span class='varid'>uris</span>+<a name="line-307"></a>+<a name="line-308"></a><a name="expandNSDecls"></a><span class='definition'>expandNSDecls</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>+<a name="line-309"></a><span class='definition'>expandNSDecls</span>+<a name="line-310"></a> <span class='keyglyph'>=</span> <span class='varid'>mapTreeCtx</span> <span class='layout'>(</span><span class='varid'>expandNSElem</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>fromAscList</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='str'>"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='str'>"xmlns"</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-311"></a>+<a name="line-312"></a><a name="expandNSElem"></a><span class='definition'>expandNSElem</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>UriMapping</span><span class='layout'>,</span> <span class='conid'>XNode</span><span class='layout'>)</span>+<a name="line-313"></a><span class='definition'>expandNSElem</span> <span class='varid'>umap</span> <span class='varid'>node</span>+<a name="line-314"></a> <span class='keyglyph'>|</span> <span class='varid'>isElem</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>umapNew</span><span class='layout'>,</span> <span class='varid'>nodeNew</span><span class='layout'>)</span>+<a name="line-315"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>umap</span><span class='layout'>,</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-316"></a> <span class='keyword'>where</span>+<a name="line-317"></a> <span class='varid'>nodeNew</span> <span class='keyglyph'>=</span> <span class='conid'>XTag</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varid'>attrNew</span>+<a name="line-318"></a> <span class='varid'>attrNew</span> <span class='keyglyph'>=</span> <span class='varid'>attrs</span> <span class='varop'>++</span> <span class='varid'>map</span> <span class='varid'>joinNsAttr</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>toAscList</span> <span class='varid'>umapNew</span><span class='layout'>)</span>+<a name="line-319"></a> <span class='varid'>umapNew</span> <span class='keyglyph'>=</span> <span class='varid'>uriMappingsFromNsAttrs</span> <span class='varid'>nsAttrs</span> <span class='varop'>`</span><span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>union</span><span class='varop'>`</span> <span class='varid'>umap</span>+<a name="line-320"></a> <span class='layout'>(</span><span class='varid'>nsAttrs</span><span class='layout'>,</span> <span class='varid'>attrs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='varid'>isNsAttr</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrl</span> <span class='varid'>node</span>+<a name="line-321"></a>+<a name="line-322"></a><a name="uriMappingsFromNsAttrs"></a><span class='definition'>uriMappingsFromNsAttrs</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>UriMapping</span>+<a name="line-323"></a><span class='definition'>uriMappingsFromNsAttrs</span>+<a name="line-324"></a> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>fromList</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='varid'>splitNsAttr</span>+<a name="line-325"></a>+<a name="line-326"></a><a name="isNsAttr"></a><span class='definition'>isNsAttr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-327"></a><span class='definition'>isNsAttr</span>+<a name="line-328"></a> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='conid'>False</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varop'>==</span><span class='layout'>)</span> <span class='varid'>xmlnsNamespace</span> <span class='varop'>.</span> <span class='varid'>namespaceUri</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>getAttrName</span>+<a name="line-329"></a>+<a name="line-330"></a><a name="splitNsAttr"></a><span class='definition'>splitNsAttr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-331"></a><span class='definition'>splitNsAttr</span> <span class='varid'>node</span>+<a name="line-332"></a> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>localPart</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrName</span> <span class='varid'>node</span><span class='layout'>,</span> <span class='varid'>collectTextnodes</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-333"></a>+<a name="line-334"></a><a name="joinNsAttr"></a><span class='definition'>joinNsAttr</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>+<a name="line-335"></a><span class='definition'>joinNsAttr</span> <span class='layout'>(</span><span class='varid'>prefix</span><span class='layout'>,</span> <span class='varid'>uri</span><span class='layout'>)</span>+<a name="line-336"></a> <span class='keyglyph'>=</span> <span class='varid'>mkAttr</span> <span class='layout'>(</span><span class='varid'>mkQName</span> <span class='str'>"xmlns"</span> <span class='varid'>prefix</span> <span class='varid'>xmlnsNamespace</span><span class='layout'>)</span> <span class='keyglyph'>[</span><span class='varid'>mkText</span> <span class='varid'>uri</span><span class='keyglyph'>]</span> <a name="line-337"></a>-<a name="line-338"></a><a name="mkLiteralExpr"></a><span class='definition'>mkLiteralExpr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>-<a name="line-339"></a><span class='definition'>mkLiteralExpr</span> <span class='keyglyph'>=</span> <span class='conid'>LiteralExpr</span>+<a name="line-338"></a><span class='comment'>-------------------------</span>+<a name="line-339"></a><span class='comment'>-- additions to XPATH:</span> <a name="line-340"></a>-<a name="line-341"></a><a name="mkStringExpr"></a><span class='definition'>mkStringExpr</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>-<a name="line-342"></a><span class='definition'>mkStringExpr</span> <span class='keyglyph'>=</span> <span class='conid'>FctExpr</span> <span class='str'>"string"</span> <span class='varop'>.</span> <span class='varid'>return</span>+<a name="line-341"></a><a name="mkLiteralExpr"></a><span class='definition'>mkLiteralExpr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>+<a name="line-342"></a><span class='definition'>mkLiteralExpr</span> <span class='keyglyph'>=</span> <span class='conid'>LiteralExpr</span> <a name="line-343"></a>-<a name="line-344"></a><a name="mkBoolExpr"></a><span class='definition'>mkBoolExpr</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>-<a name="line-345"></a><span class='definition'>mkBoolExpr</span> <span class='keyglyph'>=</span> <span class='conid'>FctExpr</span> <span class='str'>"boolean"</span> <span class='varop'>.</span> <span class='varid'>return</span>+<a name="line-344"></a><a name="mkStringExpr"></a><span class='definition'>mkStringExpr</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>+<a name="line-345"></a><span class='definition'>mkStringExpr</span> <span class='keyglyph'>=</span> <span class='conid'>FctExpr</span> <span class='str'>"string"</span> <span class='varop'>.</span> <span class='varid'>return</span> <a name="line-346"></a>-<a name="line-347"></a><a name="mkTrueExpr"></a><span class='definition'>mkTrueExpr</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span>-<a name="line-348"></a><span class='definition'>mkTrueExpr</span> <span class='keyglyph'>=</span> <span class='conid'>FctExpr</span> <span class='str'>"true"</span> <span class='conid'>[]</span>+<a name="line-347"></a><a name="mkBoolExpr"></a><span class='definition'>mkBoolExpr</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>+<a name="line-348"></a><span class='definition'>mkBoolExpr</span> <span class='keyglyph'>=</span> <span class='conid'>FctExpr</span> <span class='str'>"boolean"</span> <span class='varop'>.</span> <span class='varid'>return</span> <a name="line-349"></a>-<a name="line-350"></a><a name="concatExpr"></a><span class='definition'>concatExpr</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>-<a name="line-351"></a><span class='definition'>concatExpr</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='conid'>LiteralExpr</span> <span class='str'>""</span>-<a name="line-352"></a><span class='definition'>concatExpr</span> <span class='keyglyph'>[</span><span class='varid'>lit</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>LiteralExpr</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='varid'>lit</span>-<a name="line-353"></a><span class='definition'>concatExpr</span> <span class='varid'>xs1</span><span class='keyglyph'>@</span><span class='keyglyph'>[</span><span class='keyword'>_</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='conid'>FctExpr</span> <span class='str'>"string"</span> <span class='varid'>xs1</span>-<a name="line-354"></a><span class='definition'>concatExpr</span> <span class='varid'>xs</span> <span class='keyglyph'>=</span> <span class='conid'>FctExpr</span> <span class='str'>"concat"</span> <span class='varid'>xs</span>-<a name="line-355"></a>-<a name="line-356"></a><a name="splitExpr"></a><span class='definition'>splitExpr</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span>-<a name="line-357"></a><span class='definition'>splitExpr</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='conid'>Union</span> <span class='varid'>expr</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>expr</span>-<a name="line-358"></a><span class='definition'>splitExpr</span> <span class='varid'>rest</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>rest</span><span class='keyglyph'>]</span>-<a name="line-359"></a>-<a name="line-360"></a><a name="unionExpr"></a><span class='definition'>unionExpr</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>-<a name="line-361"></a><span class='definition'>unionExpr</span> <span class='keyglyph'>[</span><span class='varid'>e</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>-<a name="line-362"></a><span class='definition'>unionExpr</span> <span class='varid'>es</span> <span class='keyglyph'>=</span> <span class='conid'>GenExpr</span> <span class='conid'>Union</span> <span class='varid'>es</span>-<a name="line-363"></a>-<a name="line-364"></a><a name="splitMatchByPrio"></a><span class='comment'>-- Intelligent splitting: Split an expression into subexpressions with equal priority</span>-<a name="line-365"></a><span class='comment'>-- for example: "a|c/d|e|f/g" => [(0.0, "a|e"), (0.5, "c/d|f/g")]</span>-<a name="line-366"></a><span class='definition'>splitMatchByPrio</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Float</span><span class='layout'>,</span> <span class='conid'>Expr</span><span class='layout'>)</span><span class='keyglyph'>]</span>-<a name="line-367"></a><span class='definition'>splitMatchByPrio</span> <span class='keyglyph'>=</span> -<a name="line-368"></a> <span class='varid'>map</span> <span class='varid'>compress</span> <span class='varop'>.</span> <span class='varid'>groupBy</span> <span class='varid'>eq</span> <span class='varop'>.</span> <span class='varid'>sortBy</span> <span class='varid'>cmp</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>computePriority</span> <span class='varop'>&&&</span> <span class='varid'>id</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>splitExpr</span>-<a name="line-369"></a> <span class='keyword'>where</span>-<a name="line-370"></a> <span class='varid'>eq</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>fst</span> <span class='varid'>y</span>-<a name="line-371"></a> <span class='varid'>cmp</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>=</span> <span class='varid'>compare</span> <span class='layout'>(</span><span class='varid'>fst</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>fst</span> <span class='varid'>y</span><span class='layout'>)</span>-<a name="line-372"></a> <span class='varid'>compress</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varop'>***</span> <span class='varid'>unionExpr</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>unzip</span>-<a name="line-373"></a>-<a name="line-374"></a><a name="computePriority"></a><span class='definition'>computePriority</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Float</span>-<a name="line-375"></a><span class='definition'>computePriority</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Rel</span> <span class='keyglyph'>[</span><span class='conid'>Step</span> <span class='keyword'>_</span> <span class='varid'>ntest</span> <span class='conid'>[]</span><span class='keyglyph'>]</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>computeNTestPriority</span> <span class='varid'>ntest</span>-<a name="line-376"></a><span class='definition'>computePriority</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='num'>0.5</span>-<a name="line-377"></a>-<a name="line-378"></a><a name="computeNTestPriority"></a><span class='definition'>computeNTestPriority</span> <span class='keyglyph'>::</span> <span class='conid'>NodeTest</span> <span class='keyglyph'>-></span> <span class='conid'>Float</span>-<a name="line-379"></a><span class='definition'>computeNTestPriority</span> <span class='layout'>(</span><span class='conid'>PI</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='num'>0.0</span>-<a name="line-380"></a><span class='definition'>computeNTestPriority</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='comment'>-</span><span class='num'>0.5</span>-<a name="line-381"></a><span class='definition'>computeNTestPriority</span> <span class='layout'>(</span><span class='conid'>NameTest</span> <span class='varid'>nt</span><span class='layout'>)</span> -<a name="line-382"></a> <span class='keyglyph'>|</span> <span class='varid'>namePrefix</span> <span class='varid'>nt</span> <span class='varop'>/=</span> <span class='str'>""</span>-<a name="line-383"></a> <span class='varop'>&&</span> <span class='varid'>localPart</span> <span class='varid'>nt</span> <span class='varop'>==</span> <span class='str'>"*"</span> <span class='keyglyph'>=</span> <span class='comment'>-</span><span class='num'>0.25</span>-<a name="line-384"></a> <span class='keyglyph'>|</span> <span class='varid'>localPart</span> <span class='varid'>nt</span> <span class='varop'>==</span> <span class='str'>"*"</span> <span class='keyglyph'>=</span> <span class='comment'>-</span><span class='num'>0.5</span>-<a name="line-385"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='num'>0.0</span>-<a name="line-386"></a>-<a name="line-387"></a><a name="isMatchExpr"></a><span class='definition'>isMatchExpr</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>-<a name="line-388"></a><span class='definition'>isMatchExpr</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='conid'>Union</span> <span class='varid'>exprs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>all</span> <span class='varid'>isMatchExpr</span> <span class='varid'>exprs</span>-<a name="line-389"></a><span class='definition'>isMatchExpr</span> <span class='layout'>(</span><span class='conid'>PathExpr</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-390"></a><span class='definition'>isMatchExpr</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='str'>"id"</span> <span class='keyglyph'>[</span><span class='conid'>LiteralExpr</span> <span class='keyword'>_</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-391"></a><span class='definition'>isMatchExpr</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='str'>"key"</span> <span class='keyglyph'>[</span><span class='conid'>LiteralExpr</span> <span class='keyword'>_</span><span class='layout'>,</span> <span class='conid'>LiteralExpr</span> <span class='keyword'>_</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>-<a name="line-392"></a><span class='definition'>isMatchExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span>-<a name="line-393"></a>-<a name="line-394"></a><span class='comment'>--------------------------- </span>-<a name="line-395"></a><span class='comment'>-- Misc:</span>+<a name="line-350"></a><a name="mkTrueExpr"></a><span class='definition'>mkTrueExpr</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span>+<a name="line-351"></a><span class='definition'>mkTrueExpr</span> <span class='keyglyph'>=</span> <span class='conid'>FctExpr</span> <span class='str'>"true"</span> <span class='conid'>[]</span>+<a name="line-352"></a>+<a name="line-353"></a><a name="concatExpr"></a><span class='definition'>concatExpr</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>+<a name="line-354"></a><span class='definition'>concatExpr</span> <span class='conid'>[]</span> <span class='keyglyph'>=</span> <span class='conid'>LiteralExpr</span> <span class='str'>""</span>+<a name="line-355"></a><span class='definition'>concatExpr</span> <span class='keyglyph'>[</span><span class='varid'>lit</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>LiteralExpr</span> <span class='keyword'>_</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='varid'>lit</span>+<a name="line-356"></a><span class='definition'>concatExpr</span> <span class='varid'>xs1</span><span class='keyglyph'>@</span><span class='keyglyph'>[</span><span class='keyword'>_</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='conid'>FctExpr</span> <span class='str'>"string"</span> <span class='varid'>xs1</span>+<a name="line-357"></a><span class='definition'>concatExpr</span> <span class='varid'>xs</span> <span class='keyglyph'>=</span> <span class='conid'>FctExpr</span> <span class='str'>"concat"</span> <span class='varid'>xs</span>+<a name="line-358"></a>+<a name="line-359"></a><a name="splitExpr"></a><span class='definition'>splitExpr</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span>+<a name="line-360"></a><span class='definition'>splitExpr</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='conid'>Union</span> <span class='varid'>expr</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>expr</span>+<a name="line-361"></a><span class='definition'>splitExpr</span> <span class='varid'>rest</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>rest</span><span class='keyglyph'>]</span>+<a name="line-362"></a>+<a name="line-363"></a><a name="unionExpr"></a><span class='definition'>unionExpr</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>+<a name="line-364"></a><span class='definition'>unionExpr</span> <span class='keyglyph'>[</span><span class='varid'>e</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> <span class='varid'>e</span>+<a name="line-365"></a><span class='definition'>unionExpr</span> <span class='varid'>es</span> <span class='keyglyph'>=</span> <span class='conid'>GenExpr</span> <span class='conid'>Union</span> <span class='varid'>es</span>+<a name="line-366"></a>+<a name="line-367"></a><a name="splitMatchByPrio"></a><span class='comment'>-- Intelligent splitting: Split an expression into subexpressions with equal priority</span>+<a name="line-368"></a><span class='comment'>-- for example: "a|c/d|e|f/g" => [(0.0, "a|e"), (0.5, "c/d|f/g")]</span>+<a name="line-369"></a><span class='definition'>splitMatchByPrio</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Float</span><span class='layout'>,</span> <span class='conid'>Expr</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-370"></a><span class='definition'>splitMatchByPrio</span> <span class='keyglyph'>=</span> +<a name="line-371"></a> <span class='varid'>map</span> <span class='varid'>compress</span> <span class='varop'>.</span> <span class='varid'>groupBy</span> <span class='varid'>eq</span> <span class='varop'>.</span> <span class='varid'>sortBy</span> <span class='varid'>cmp</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>computePriority</span> <span class='varop'>&&&</span> <span class='varid'>id</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>splitExpr</span>+<a name="line-372"></a> <span class='keyword'>where</span>+<a name="line-373"></a> <span class='varid'>eq</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varid'>x</span> <span class='varop'>==</span> <span class='varid'>fst</span> <span class='varid'>y</span>+<a name="line-374"></a> <span class='varid'>cmp</span> <span class='varid'>x</span> <span class='varid'>y</span> <span class='keyglyph'>=</span> <span class='varid'>compare</span> <span class='layout'>(</span><span class='varid'>fst</span> <span class='varid'>x</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>fst</span> <span class='varid'>y</span><span class='layout'>)</span>+<a name="line-375"></a> <span class='varid'>compress</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>head</span> <span class='varop'>***</span> <span class='varid'>unionExpr</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>unzip</span>+<a name="line-376"></a>+<a name="line-377"></a><a name="computePriority"></a><span class='definition'>computePriority</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Float</span>+<a name="line-378"></a><span class='definition'>computePriority</span> <span class='layout'>(</span><span class='conid'>PathExpr</span> <span class='conid'>Nothing</span> <span class='layout'>(</span><span class='conid'>Just</span> <span class='layout'>(</span><span class='conid'>LocPath</span> <span class='conid'>Rel</span> <span class='keyglyph'>[</span><span class='conid'>Step</span> <span class='keyword'>_</span> <span class='varid'>ntest</span> <span class='conid'>[]</span><span class='keyglyph'>]</span><span class='layout'>)</span><span class='layout'>)</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>computeNTestPriority</span> <span class='varid'>ntest</span>+<a name="line-379"></a><span class='definition'>computePriority</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='num'>0.5</span>+<a name="line-380"></a>+<a name="line-381"></a><a name="computeNTestPriority"></a><span class='definition'>computeNTestPriority</span> <span class='keyglyph'>::</span> <span class='conid'>NodeTest</span> <span class='keyglyph'>-></span> <span class='conid'>Float</span>+<a name="line-382"></a><span class='definition'>computeNTestPriority</span> <span class='layout'>(</span><span class='conid'>PI</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='num'>0.0</span>+<a name="line-383"></a><span class='definition'>computeNTestPriority</span> <span class='layout'>(</span><span class='conid'>TypeTest</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='comment'>-</span><span class='num'>0.5</span>+<a name="line-384"></a><span class='definition'>computeNTestPriority</span> <span class='layout'>(</span><span class='conid'>NameTest</span> <span class='varid'>nt</span><span class='layout'>)</span> +<a name="line-385"></a> <span class='keyglyph'>|</span> <span class='varid'>namePrefix</span> <span class='varid'>nt</span> <span class='varop'>/=</span> <span class='str'>""</span>+<a name="line-386"></a> <span class='varop'>&&</span> <span class='varid'>localPart</span> <span class='varid'>nt</span> <span class='varop'>==</span> <span class='str'>"*"</span> <span class='keyglyph'>=</span> <span class='comment'>-</span><span class='num'>0.25</span>+<a name="line-387"></a> <span class='keyglyph'>|</span> <span class='varid'>localPart</span> <span class='varid'>nt</span> <span class='varop'>==</span> <span class='str'>"*"</span> <span class='keyglyph'>=</span> <span class='comment'>-</span><span class='num'>0.5</span>+<a name="line-388"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='num'>0.0</span>+<a name="line-389"></a>+<a name="line-390"></a><a name="isMatchExpr"></a><span class='definition'>isMatchExpr</span> <span class='keyglyph'>::</span> <span class='conid'>Expr</span> <span class='keyglyph'>-></span> <span class='conid'>Bool</span>+<a name="line-391"></a><span class='definition'>isMatchExpr</span> <span class='layout'>(</span><span class='conid'>GenExpr</span> <span class='conid'>Union</span> <span class='varid'>exprs</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>all</span> <span class='varid'>isMatchExpr</span> <span class='varid'>exprs</span>+<a name="line-392"></a><span class='definition'>isMatchExpr</span> <span class='layout'>(</span><span class='conid'>PathExpr</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-393"></a><span class='definition'>isMatchExpr</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='str'>"id"</span> <span class='keyglyph'>[</span><span class='conid'>LiteralExpr</span> <span class='keyword'>_</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-394"></a><span class='definition'>isMatchExpr</span> <span class='layout'>(</span><span class='conid'>FctExpr</span> <span class='str'>"key"</span> <span class='keyglyph'>[</span><span class='conid'>LiteralExpr</span> <span class='keyword'>_</span><span class='layout'>,</span> <span class='conid'>LiteralExpr</span> <span class='keyword'>_</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>True</span>+<a name="line-395"></a><span class='definition'>isMatchExpr</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='conid'>False</span> <a name="line-396"></a>-<a name="line-397"></a><a name="fromJustErr"></a><span class='definition'>fromJustErr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>a</span>-<a name="line-398"></a><span class='definition'>fromJustErr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='layout'>(</span><span class='varid'>error</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>id</span> +<a name="line-397"></a><span class='comment'>--------------------------- </span>+<a name="line-398"></a><span class='comment'>-- Misc:</span> <a name="line-399"></a>-<a name="line-400"></a><a name="readWDefault"></a><span class='definition'>readWDefault</span> <span class='keyglyph'>::</span> <span class='conid'>Read</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span>-<a name="line-401"></a><span class='definition'>readWDefault</span> <span class='varid'>a</span> <span class='varid'>str</span> <span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varop'>$</span> <span class='varid'>head</span> <span class='varop'>$</span> <span class='varid'>reads</span> <span class='varid'>str</span> <span class='varop'>++</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='str'>""</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-400"></a><a name="fromJustErr"></a><span class='definition'>fromJustErr</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='varid'>a</span>+<a name="line-401"></a><span class='definition'>fromJustErr</span> <span class='varid'>msg</span> <span class='keyglyph'>=</span> <span class='varid'>maybe</span> <span class='layout'>(</span><span class='varid'>error</span> <span class='varid'>msg</span><span class='layout'>)</span> <span class='varid'>id</span> <a name="line-402"></a>-<a name="line-403"></a><span class='comment'>--------------------------- </span>+<a name="line-403"></a><a name="readWDefault"></a><span class='definition'>readWDefault</span> <span class='keyglyph'>::</span> <span class='conid'>Read</span> <span class='varid'>a</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='varid'>a</span>+<a name="line-404"></a><span class='definition'>readWDefault</span> <span class='varid'>a</span> <span class='varid'>str</span> <span class='keyglyph'>=</span> <span class='varid'>fst</span> <span class='varop'>$</span> <span class='varid'>head</span> <span class='varop'>$</span> <span class='varid'>reads</span> <span class='varid'>str</span> <span class='varop'>++</span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='varid'>a</span><span class='layout'>,</span> <span class='str'>""</span><span class='layout'>)</span><span class='keyglyph'>]</span>+<a name="line-405"></a>+<a name="line-406"></a><span class='comment'>--------------------------- </span> </pre></body> </html>
doc/hdoc/src/Text-XML-HXT-XSLT-Compilation.html view
@@ -16,497 +16,496 @@ <a name="line-8"></a> Maintainer : Uwe Schmidt (uwe\@fh-wedel.de) <a name="line-9"></a> Stability : experimental <a name="line-10"></a> Portability: portable-<a name="line-11"></a> Version : $Id: Compilation.hs,v 1.7 2007/05/02 06:41:05 hxml Exp $-<a name="line-12"></a>-<a name="line-13"></a> The compilation functions for XSLT stylesheets-<a name="line-14"></a>-<a name="line-15"></a>-}</span>-<a name="line-16"></a>-<a name="line-17"></a><span class='comment'>-- ------------------------------------------------------------</span>-<a name="line-18"></a>-<a name="line-19"></a><span class='keyword'>module</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XSLT</span><span class='varop'>.</span><span class='conid'>Compilation</span> -<a name="line-20"></a> <span class='layout'>(</span> <span class='varid'>prepareXSLTDocument</span> <span class='comment'>-- :: XmlTree -> XmlTree</span>-<a name="line-21"></a> <span class='layout'>,</span> <span class='varid'>assembleStylesheet</span> <span class='comment'>-- :: XmlTree -> [CompiledStylesheet] -> CompiledStylesheet</span>-<a name="line-22"></a> <span class='layout'>)</span>-<a name="line-23"></a><span class='keyword'>where</span>-<a name="line-24"></a>-<a name="line-25"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span>-<a name="line-26"></a>-<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>-<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Either</span>-<a name="line-29"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>-<a name="line-30"></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'>Map</span> <span class='varid'>hiding</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='layout'>)</span>-<a name="line-31"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span><span class='layout'>(</span><span class='conid'>Map</span><span class='layout'>)</span>-<a name="line-32"></a>-<a name="line-33"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span><span class='varop'>.</span><span class='conid'>Prim</span><span class='layout'>(</span><span class='varid'>runParser</span><span class='layout'>)</span>-<a name="line-34"></a>-<a name="line-35"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XSLT</span><span class='varop'>.</span><span class='conid'>Common</span>-<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XSLT</span><span class='varop'>.</span><span class='conid'>Names</span>-<a name="line-37"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XSLT</span><span class='varop'>.</span><span class='conid'>CompiledStylesheet</span>-<a name="line-38"></a>-<a name="line-39"></a><span class='comment'>-- No deep meaning just a shortcut notation for a *very* common expression...</span>-<a name="line-40"></a>-<a name="line-41"></a><span class='keyword'>infixl</span> <span class='num'>9</span> <span class='varop'>><</span>-<a name="line-42"></a>-<a name="line-43"></a><a name="><"></a><span class='layout'>(</span><span class='varop'>><</span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>a</span>-<a name="line-44"></a><a name="f"></a><span class='definition'>f</span> <span class='varop'>><</span> <span class='varid'>node</span>-<a name="line-45"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>$</span> <span class='varid'>getUriMap</span> <span class='varid'>node</span>-<a name="line-46"></a>-<a name="line-47"></a><span class='comment'>-- --------------------------</span>-<a name="line-48"></a>-<a name="line-49"></a><a name="parseExpr"></a><span class='definition'>parseExpr</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>-<a name="line-50"></a><span class='definition'>parseExpr</span> <span class='varid'>uris</span> <span class='varid'>selectStr</span>-<a name="line-51"></a> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>error</span><span class='varop'>.</span><span class='varid'>show</span><span class='layout'>)</span> <span class='varid'>id</span> <span class='varid'>parseResult</span> -<a name="line-52"></a> <span class='keyword'>where</span>-<a name="line-53"></a> <span class='varid'>parseResult</span> <span class='keyglyph'>=</span> <span class='varid'>runParser</span> <span class='varid'>parseXPath</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>toList</span> <span class='varid'>uris</span><span class='layout'>)</span> <span class='layout'>(</span><span class='str'>"select-expr:"</span><span class='varop'>++</span><span class='varid'>selectStr</span><span class='layout'>)</span> <span class='varid'>selectStr</span> -<a name="line-54"></a>-<a name="line-55"></a><a name="parseSelect"></a><span class='definition'>parseSelect</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>SelectExpr</span>-<a name="line-56"></a><span class='definition'>parseSelect</span> <span class='varid'>uris</span>-<a name="line-57"></a> <span class='keyglyph'>=</span> <span class='conid'>SelectExpr</span> <span class='varop'>.</span> <span class='varid'>parseExpr</span> <span class='varid'>uris</span>-<a name="line-58"></a>-<a name="line-59"></a><a name="parseTest"></a><span class='definition'>parseTest</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>TestExpr</span>-<a name="line-60"></a><span class='definition'>parseTest</span> <span class='varid'>uris</span>-<a name="line-61"></a> <span class='keyglyph'>=</span> <span class='conid'>TestExpr</span> <span class='varop'>.</span> <span class='varid'>mkBoolExpr</span> <span class='varop'>.</span> <span class='varid'>parseExpr</span> <span class='varid'>uris</span>-<a name="line-62"></a>-<a name="line-63"></a><a name="parseStringExpr"></a><span class='definition'>parseStringExpr</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>StringExpr</span>-<a name="line-64"></a><span class='definition'>parseStringExpr</span> <span class='varid'>uris</span>-<a name="line-65"></a> <span class='keyglyph'>=</span> <span class='conid'>StringExpr</span> <span class='varop'>.</span> <span class='varid'>mkStringExpr</span> <span class='varop'>.</span> <span class='varid'>parseExpr</span> <span class='varid'>uris</span>-<a name="line-66"></a>-<a name="line-67"></a><a name="parseMatch"></a><span class='definition'>parseMatch</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>MatchExpr</span>-<a name="line-68"></a><span class='definition'>parseMatch</span> <span class='varid'>uris</span> <span class='varid'>str</span>-<a name="line-69"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>isMatchExpr</span> <span class='varid'>expr</span>-<a name="line-70"></a> <span class='keyword'>then</span> <span class='conid'>MatchExpr</span> <span class='varid'>expr</span>-<a name="line-71"></a> <span class='keyword'>else</span> <span class='varid'>error</span> <span class='varop'>$</span> <span class='varid'>str</span> <span class='varop'>++</span> <span class='str'>" is not a legal match-expression"</span>-<a name="line-72"></a> <span class='keyword'>where</span> -<a name="line-73"></a> <span class='varid'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>parseExpr</span> <span class='varid'>uris</span> <span class='varid'>str</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="parseAVT"></a><span class='definition'>parseAVT</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>StringExpr</span>-<a name="line-78"></a><span class='definition'>parseAVT</span> <span class='varid'>uris</span> <span class='varid'>str</span> <span class='keyglyph'>=</span> -<a name="line-79"></a> <span class='conid'>StringExpr</span> <span class='varop'>$</span> <span class='varid'>concatExpr</span> <span class='varop'>$</span> <span class='varid'>splitAVT</span> <span class='varid'>str</span> <span class='str'>""</span>-<a name="line-80"></a> <span class='keyword'>where</span>-<a name="line-81"></a>-<a name="line-82"></a> <span class='varid'>splitAVT</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='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span>-<a name="line-83"></a> <span class='varid'>splitAVT</span> <span class='str'>""</span> <span class='varid'>acc</span> <span class='keyglyph'>=</span> <span class='varid'>acc2lit</span> <span class='varid'>acc</span>-<a name="line-84"></a> <span class='varid'>splitAVT</span> <span class='layout'>(</span><span class='chr'>'{'</span><span class='conop'>:</span><span class='chr'>'{'</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>acc</span> <span class='keyglyph'>=</span> <span class='varid'>splitAVT</span> <span class='varid'>xs</span> <span class='varop'>$</span> <span class='chr'>'{'</span><span class='conop'>:</span><span class='varid'>acc</span>-<a name="line-85"></a> <span class='varid'>splitAVT</span> <span class='layout'>(</span><span class='chr'>'}'</span><span class='conop'>:</span><span class='chr'>'}'</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>acc</span> <span class='keyglyph'>=</span> <span class='varid'>splitAVT</span> <span class='varid'>xs</span> <span class='varop'>$</span> <span class='chr'>'}'</span><span class='conop'>:</span><span class='varid'>acc</span>-<a name="line-86"></a> <span class='varid'>splitAVT</span> <span class='layout'>(</span><span class='chr'>'{'</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>acc</span> <span class='keyglyph'>=</span> <span class='keyword'>let</span> <span class='layout'>(</span><span class='varid'>body</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>`notElem`</span> <span class='str'>"{}"</span><span class='layout'>)</span> <span class='varid'>xs</span> <span class='keyword'>in</span>-<a name="line-87"></a> <span class='keyword'>if</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>head</span> <span class='varid'>rest</span> <span class='varop'>==</span> <span class='chr'>'}'</span>-<a name="line-88"></a> <span class='keyword'>then</span> <span class='varid'>acc2lit</span> <span class='varid'>acc</span> <span class='varop'>++</span> <span class='varid'>parseExpr</span> <span class='varid'>uris</span> <span class='varid'>body</span> <span class='conop'>:</span> <span class='varid'>splitAVT</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='str'>""</span>-<a name="line-89"></a> <span class='keyword'>else</span> <span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"Unterminated expression "</span> <span class='varop'>++</span> <span class='varid'>xs</span> <span class='varop'>++</span> <span class='str'>" in AVT."</span>-<a name="line-90"></a> <span class='varid'>splitAVT</span> <span class='layout'>(</span><span class='chr'>'}'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"deserted '}' in AVT."</span>-<a name="line-91"></a> <span class='varid'>splitAVT</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='varid'>acc</span> <span class='keyglyph'>=</span> <span class='varid'>splitAVT</span> <span class='varid'>xs</span> <span class='varop'>$</span> <span class='varid'>x</span><span class='conop'>:</span><span class='varid'>acc</span>-<a name="line-92"></a>-<a name="line-93"></a> <span class='varid'>acc2lit</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span> -<a name="line-94"></a> <span class='varid'>acc2lit</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>-<a name="line-95"></a> <span class='varid'>acc2lit</span> <span class='varid'>acc</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>mkLiteralExpr</span> <span class='varop'>$</span> <span class='varid'>reverse</span> <span class='varid'>acc</span><span class='keyglyph'>]</span>-<a name="line-96"></a>-<a name="line-97"></a><span class='comment'>-- --------------------------</span>-<a name="line-98"></a>-<a name="line-99"></a><a name="compileComputedQName"></a><span class='comment'>-- extract ComputedQName from "name" and "namespace" AVTs of an xsl:element- or xsl-attribute-node</span>-<a name="line-100"></a><span class='definition'>compileComputedQName</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>ComputedQName</span>-<a name="line-101"></a><span class='definition'>compileComputedQName</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>-<a name="line-102"></a> <span class='layout'>(</span><span class='conid'>CompQName</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varid'>nameAVT</span> <span class='varid'>nsAVT</span>-<a name="line-103"></a> <span class='keyword'>where</span> -<a name="line-104"></a> <span class='varid'>nameAVT</span> <span class='keyglyph'>=</span> <span class='varid'>parseAVT</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>-<a name="line-105"></a> <span class='varid'>nsAVT</span> <span class='keyglyph'>=</span> <span class='varid'>parseAVT</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltNamespace</span> <span class='str'>""</span>-<a name="line-106"></a>-<a name="line-107"></a><span class='comment'>-- --------------------------</span>-<a name="line-108"></a>-<a name="line-109"></a><a name="compileComposite"></a><span class='definition'>compileComposite</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-110"></a><span class='definition'>compileComposite</span> <span class='keyglyph'>=</span> <span class='conid'>TemplComposite</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>compileTemplate</span> <span class='varop'>.</span> <span class='varid'>return</span><span class='layout'>)</span>-<a name="line-111"></a>-<a name="line-112"></a><a name="compileMessage"></a><span class='definition'>compileMessage</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-113"></a><span class='definition'>compileMessage</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>TemplMessage</span> <span class='varid'>halt</span> <span class='varid'>content</span>-<a name="line-114"></a> <span class='keyword'>where</span> <span class='varid'>halt</span> <span class='keyglyph'>=</span> <span class='varid'>termAttr</span> <span class='varop'>==</span> <span class='str'>"yes"</span>-<a name="line-115"></a> <span class='varid'>termAttr</span> <span class='keyglyph'>=</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltTerminate</span> <span class='str'>"no"</span>-<a name="line-116"></a> <span class='varid'>content</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-117"></a>-<a name="line-118"></a><a name="compileForEach"></a><span class='definition'>compileForEach</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-119"></a><span class='definition'>compileForEach</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>TemplForEach</span> <span class='varid'>expr</span> <span class='varid'>sorting</span> <span class='varid'>template</span>-<a name="line-120"></a> <span class='keyword'>where</span> <span class='varid'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>parseSelect</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span>-<a name="line-121"></a> <span class='varid'>sorting</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>compileSortKey</span> <span class='varid'>srt</span>-<a name="line-122"></a> <span class='varid'>template</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='varid'>cnt</span>-<a name="line-123"></a> <span class='layout'>(</span><span class='varid'>srt</span><span class='layout'>,</span> <span class='varid'>cnt</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltSort</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>-<a name="line-124"></a>-<a name="line-125"></a><a name="compileChoose"></a><span class='definition'>compileChoose</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-126"></a><span class='definition'>compileChoose</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>TemplChoose</span> <span class='varid'>whenParts</span>-<a name="line-127"></a> <span class='keyword'>where</span> <span class='varid'>whenParts</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>compl</span> <span class='varid'>children</span>-<a name="line-128"></a> <span class='varid'>children</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='varid'>isElem</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-129"></a> <span class='varid'>compl</span> <span class='varid'>node'</span> <span class='keyglyph'>=</span> <span class='keyword'>let</span> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node'</span> <span class='keyword'>in</span>-<a name="line-130"></a> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltWhen</span> <span class='keyword'>then</span> <span class='varid'>compileWhen</span> <span class='varid'>node'</span>-<a name="line-131"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltOtherwise</span> <span class='keyword'>then</span> <span class='varid'>compileOtherwise</span> <span class='varid'>node'</span>-<a name="line-132"></a> <span class='keyword'>else</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"No elements of type "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>elemName</span> <span class='varop'>++</span> <span class='str'>" allowed within xsl-choose template!"</span><span class='layout'>)</span>-<a name="line-133"></a>-<a name="line-134"></a><a name="compileWhen"></a><span class='definition'>compileWhen</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>When</span>-<a name="line-135"></a><span class='definition'>compileWhen</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>WhenPart</span> <span class='varid'>expr</span> <span class='varop'>$</span> <span class='varid'>compileTemplate</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>-<a name="line-136"></a> <span class='keyword'>where</span> <span class='varid'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>parseTest</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltTest</span>-<a name="line-137"></a>-<a name="line-138"></a><a name="compileOtherwise"></a><span class='comment'>-- Otherwise is treated as a when-Part with node-test "true()"</span>-<a name="line-139"></a><span class='definition'>compileOtherwise</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>When</span>-<a name="line-140"></a><span class='definition'>compileOtherwise</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>WhenPart</span> <span class='layout'>(</span><span class='conid'>TestExpr</span> <span class='varid'>mkTrueExpr</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>compileTemplate</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>-<a name="line-141"></a>-<a name="line-142"></a><a name="compileIf"></a><span class='comment'>-- "if" is treated as a convenience-form of choose with exactly one "when"-Part</span>-<a name="line-143"></a><span class='definition'>compileIf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-144"></a><span class='definition'>compileIf</span> <span class='keyglyph'>=</span> <span class='conid'>TemplChoose</span> <span class='varop'>.</span> <span class='varid'>return</span> <span class='varop'>.</span> <span class='varid'>compileWhen</span>-<a name="line-145"></a>-<a name="line-146"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-147"></a>-<a name="line-148"></a><a name="parseExNames"></a><span class='definition'>parseExNames</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>ExName</span><span class='keyglyph'>]</span>-<a name="line-149"></a><span class='definition'>parseExNames</span> <span class='varid'>urm</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>parseExName</span> <span class='varid'>urm</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>words</span>-<a name="line-150"></a>-<a name="line-151"></a><a name="compileElement"></a><span class='definition'>compileElement</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-152"></a><span class='definition'>compileElement</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> -<a name="line-153"></a> <span class='conid'>TemplElement</span> <span class='varid'>compQName</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span> <span class='varid'>attribSets</span> <span class='varid'>template</span>-<a name="line-154"></a> <span class='keyword'>where</span> -<a name="line-155"></a> <span class='varid'>compQName</span> <span class='keyglyph'>=</span> <span class='varid'>compileComputedQName</span> <span class='varid'>node</span>-<a name="line-156"></a> <span class='varid'>attribSets</span> <span class='keyglyph'>=</span> <span class='conid'>UsedAttribSets</span> <span class='varop'>$</span> <span class='varid'>parseExNames</span><span class='varop'>><</span><span class='varid'>node</span>-<a name="line-157"></a> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltUseAttributeSets</span> <span class='str'>""</span>-<a name="line-158"></a> <span class='varid'>template</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-159"></a>-<a name="line-160"></a><a name="compileAttribute"></a><span class='definition'>compileAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-161"></a><span class='definition'>compileAttribute</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> -<a name="line-162"></a> <span class='conid'>TemplAttribute</span> <span class='layout'>(</span><span class='varid'>compileComputedQName</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>compileTemplate</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-163"></a>-<a name="line-164"></a><a name="compileText"></a><span class='comment'>-- compiles xsl:text</span>-<a name="line-165"></a><span class='definition'>compileText</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-166"></a><span class='definition'>compileText</span> <span class='keyglyph'>=</span> <span class='conid'>TemplText</span> <span class='varop'>.</span> <span class='varid'>collectTextnodes</span> <span class='varop'>.</span> <span class='varid'>getChildren</span>-<a name="line-167"></a>-<a name="line-168"></a><a name="compileTextnode"></a><span class='comment'>-- compiles textNode </span>-<a name="line-169"></a><span class='definition'>compileTextnode</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-170"></a><span class='definition'>compileTextnode</span> <span class='keyglyph'>=</span> <span class='conid'>TemplText</span> <span class='varop'>.</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='varid'>getText</span>-<a name="line-171"></a>-<a name="line-172"></a><a name="compileValueOf"></a><span class='definition'>compileValueOf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-173"></a><span class='definition'>compileValueOf</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> -<a name="line-174"></a> <span class='conid'>TemplValueOf</span> <span class='varop'>$</span> <span class='varid'>parseStringExpr</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span>-<a name="line-175"></a>-<a name="line-176"></a><a name="compileComment"></a><span class='definition'>compileComment</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-177"></a><span class='definition'>compileComment</span> <span class='keyglyph'>=</span> <span class='conid'>TemplComment</span> <span class='varop'>.</span> <span class='varid'>compileTemplate</span> <span class='varop'>.</span> <span class='varid'>getChildren</span>-<a name="line-178"></a>-<a name="line-179"></a><a name="compileProcInstr"></a><span class='definition'>compileProcInstr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-180"></a><span class='definition'>compileProcInstr</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> -<a name="line-181"></a> <span class='conid'>TemplProcInstr</span> <span class='varid'>name</span> <span class='varid'>content</span>-<a name="line-182"></a> <span class='keyword'>where</span>-<a name="line-183"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>parseAVT</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>-<a name="line-184"></a> <span class='varid'>content</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>-<a name="line-185"></a>-<a name="line-186"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-187"></a>-<a name="line-188"></a><a name="compileLiteralResultElement"></a><span class='definition'>compileLiteralResultElement</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-189"></a><span class='definition'>compileLiteralResultElement</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>-<a name="line-190"></a> <span class='conid'>TemplElement</span> <span class='varid'>compQName</span> <span class='varid'>nsUris</span> <span class='varid'>attribSets</span> <span class='varid'>content</span>-<a name="line-191"></a> <span class='keyword'>where</span> -<a name="line-192"></a> <span class='varid'>nsUris</span> <span class='keyglyph'>=</span> <span class='varid'>extractAddUris</span> <span class='varid'>node</span>-<a name="line-193"></a> <span class='varid'>compQName</span> <span class='keyglyph'>=</span> <span class='conid'>LiteralQName</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node</span>-<a name="line-194"></a> <span class='varid'>attribSets</span> <span class='keyglyph'>=</span> <span class='conid'>UsedAttribSets</span> <span class='varop'>$</span> <span class='varid'>parseExNames</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>attrSetsStr</span>-<a name="line-195"></a> <span class='varid'>attrSetsStr</span> <span class='keyglyph'>=</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltUseAttributeSetsLRE</span> <span class='str'>""</span>-<a name="line-196"></a> <span class='varid'>content</span> <span class='keyglyph'>=</span> <span class='conid'>TemplComposite</span> <span class='varop'>$</span> <span class='varid'>attributes</span> <span class='varop'>++</span> <span class='keyglyph'>[</span><span class='varid'>template</span><span class='keyglyph'>]</span>-<a name="line-197"></a> <span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>mapMaybe</span> <span class='layout'>(</span><span class='varid'>compileLREAttribute</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrl</span> <span class='varid'>node</span>-<a name="line-198"></a> <span class='varid'>template</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-199"></a>-<a name="line-200"></a><a name="compileLREAttribute"></a><span class='definition'>compileLREAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>Template</span>-<a name="line-201"></a><span class='definition'>compileLREAttribute</span> <span class='varid'>uris</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> -<a name="line-202"></a> <span class='keyword'>if</span> <span class='varid'>isSpecial</span> -<a name="line-203"></a> <span class='keyword'>then</span> <span class='conid'>Nothing</span>-<a name="line-204"></a> <span class='keyword'>else</span> <span class='conid'>Just</span> <span class='varop'>$</span> <span class='conid'>TemplAttribute</span> <span class='layout'>(</span><span class='conid'>LiteralQName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varid'>val</span> -<a name="line-205"></a> <span class='keyword'>where</span> -<a name="line-206"></a> <span class='varid'>isSpecial</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='varid'>xsltUri</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span><span class='keyglyph'>]</span>-<a name="line-207"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrName</span> <span class='varid'>node</span>-<a name="line-208"></a> <span class='varid'>val</span> <span class='keyglyph'>=</span> <span class='conid'>TemplValueOf</span> <span class='varop'>$</span> <span class='varid'>parseAVT</span> <span class='varid'>uris</span> <span class='varop'>$</span> <span class='varid'>collectTextnodes</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>-<a name="line-209"></a>-<a name="line-210"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-211"></a>-<a name="line-212"></a><a name="compileApplyTempl"></a><span class='definition'>compileApplyTempl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-213"></a><span class='definition'>compileApplyTempl</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>-<a name="line-214"></a> <span class='conid'>TemplApply</span> <span class='varid'>expr</span> <span class='varid'>mode</span> <span class='varid'>args</span> <span class='varid'>sorting</span>-<a name="line-215"></a> <span class='keyword'>where</span>-<a name="line-216"></a> <span class='varid'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>parseSelect</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span>-<a name="line-217"></a> <span class='varid'>mode</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltMode</span>-<a name="line-218"></a> <span class='varid'>args</span> <span class='keyglyph'>=</span> <span class='varid'>compileVariables</span> <span class='varop'>$</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltWithParam</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>par</span>-<a name="line-219"></a> <span class='varid'>sorting</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>compileSortKey</span> <span class='varid'>srt</span>-<a name="line-220"></a> <span class='layout'>(</span><span class='varid'>srt</span><span class='layout'>,</span><span class='varid'>par</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltSort</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>-<a name="line-221"></a>-<a name="line-222"></a><a name="compileApplyImports"></a><span class='definition'>compileApplyImports</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-223"></a><span class='definition'>compileApplyImports</span> <span class='sel'>_node</span>-<a name="line-224"></a> <span class='keyglyph'>=</span> <span class='conid'>TemplApplyImports</span>-<a name="line-225"></a>-<a name="line-226"></a><a name="compileCallTempl"></a><span class='definition'>compileCallTempl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-227"></a><span class='definition'>compileCallTempl</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>-<a name="line-228"></a> <span class='conid'>TemplCall</span> <span class='varid'>name</span> <span class='varid'>args</span>-<a name="line-229"></a> <span class='keyword'>where</span>-<a name="line-230"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>-<a name="line-231"></a> <span class='varid'>args</span> <span class='keyglyph'>=</span> <span class='varid'>compileVariables</span> <span class='varop'>$</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltWithParam</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>-<a name="line-232"></a>-<a name="line-233"></a><a name="compileTemplVariable"></a><span class='definition'>compileTemplVariable</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-234"></a><span class='definition'>compileTemplVariable</span> <span class='keyglyph'>=</span> <span class='conid'>TemplVariable</span> <span class='varop'>.</span> <span class='varid'>compileVariable</span>-<a name="line-235"></a>-<a name="line-236"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-237"></a>-<a name="line-238"></a><a name="compileCopy"></a><span class='definition'>compileCopy</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-239"></a><span class='definition'>compileCopy</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>-<a name="line-240"></a> <span class='conid'>TemplCopy</span> <span class='varid'>attribSets</span> <span class='varop'>$</span> <span class='varid'>compileTemplate</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-241"></a> <span class='keyword'>where</span>-<a name="line-242"></a> <span class='varid'>attribSets</span> <span class='keyglyph'>=</span> <span class='conid'>UsedAttribSets</span> <span class='varop'>$</span> <span class='varid'>parseExNames</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltUseAttributeSets</span> <span class='str'>""</span>-<a name="line-243"></a>-<a name="line-244"></a><a name="compileCopyOf"></a><span class='definition'>compileCopyOf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-245"></a><span class='definition'>compileCopyOf</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>TemplCopyOf</span> <span class='varop'>$</span> <span class='varid'>parseExpr</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span>-<a name="line-246"></a>-<a name="line-247"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-248"></a>-<a name="line-249"></a><a name="compileTemplate"></a><span class='definition'>compileTemplate</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>-<a name="line-250"></a><span class='definition'>compileTemplate</span> <span class='keyglyph'>[</span><span class='varid'>node</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> -<a name="line-251"></a> <span class='keyword'>if</span> <span class='varid'>isElem</span> <span class='varid'>node</span>-<a name="line-252"></a> <span class='keyword'>then</span> <span class='keyword'>let</span> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node</span> <span class='keyword'>in</span> -<a name="line-253"></a> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltMessage</span> <span class='keyword'>then</span> <span class='varid'>compileMessage</span> <span class='varid'>node</span>-<a name="line-254"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltForEach</span> <span class='keyword'>then</span> <span class='varid'>compileForEach</span> <span class='varid'>node</span>-<a name="line-255"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltChoose</span> <span class='keyword'>then</span> <span class='varid'>compileChoose</span> <span class='varid'>node</span> -<a name="line-256"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltIf</span> <span class='keyword'>then</span> <span class='varid'>compileIf</span> <span class='varid'>node</span>-<a name="line-257"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltElement</span> <span class='keyword'>then</span> <span class='varid'>compileElement</span> <span class='varid'>node</span>-<a name="line-258"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltAttribute</span> <span class='keyword'>then</span> <span class='varid'>compileAttribute</span> <span class='varid'>node</span>-<a name="line-259"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltText</span> <span class='keyword'>then</span> <span class='varid'>compileText</span> <span class='varid'>node</span>-<a name="line-260"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltValueOf</span> <span class='keyword'>then</span> <span class='varid'>compileValueOf</span> <span class='varid'>node</span>-<a name="line-261"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltComment</span> <span class='keyword'>then</span> <span class='varid'>compileComment</span> <span class='varid'>node</span>-<a name="line-262"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltProcInstr</span> <span class='keyword'>then</span> <span class='varid'>compileProcInstr</span> <span class='varid'>node</span>-<a name="line-263"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltApplyTemplates</span> <span class='keyword'>then</span> <span class='varid'>compileApplyTempl</span> <span class='varid'>node</span>-<a name="line-264"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltApplyImports</span> <span class='keyword'>then</span> <span class='varid'>compileApplyImports</span> <span class='varid'>node</span>-<a name="line-265"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltCallTemplate</span> <span class='keyword'>then</span> <span class='varid'>compileCallTempl</span> <span class='varid'>node</span>-<a name="line-266"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltVariable</span> <span class='keyword'>then</span> <span class='varid'>compileTemplVariable</span> <span class='varid'>node</span>-<a name="line-267"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltCopy</span> <span class='keyword'>then</span> <span class='varid'>compileCopy</span> <span class='varid'>node</span>-<a name="line-268"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltCopyOf</span> <span class='keyword'>then</span> <span class='varid'>compileCopyOf</span> <span class='varid'>node</span>-<a name="line-269"></a>-<a name="line-270"></a> <span class='comment'>-- no other xslt elements allowed here:</span>-<a name="line-271"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>namespaceUri</span> <span class='varid'>elemName</span> <span class='varop'>==</span> <span class='varid'>xsltUri</span>-<a name="line-272"></a> <span class='keyword'>then</span> <span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"xslt-element "</span> <span class='varop'>++</span> <span class='varid'>localPart</span> <span class='varid'>elemName</span> <span class='varop'>++</span> <span class='str'>" not allowed within this context."</span>-<a name="line-273"></a>-<a name="line-274"></a> <span class='comment'>-- for now all other elements will be considered as Literal Result Elements</span>-<a name="line-275"></a> <span class='keyword'>else</span> <span class='varid'>compileLiteralResultElement</span> <span class='varid'>node</span>-<a name="line-276"></a>-<a name="line-277"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>isText</span> <span class='varid'>node</span> <span class='keyword'>then</span> <span class='varid'>compileTextnode</span> <span class='varid'>node</span>-<a name="line-278"></a>-<a name="line-279"></a> <span class='keyword'>else</span>-<a name="line-280"></a> <span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"Unsupported node-type in xslt sheet: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getNode</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-281"></a><span class='definition'>compileTemplate</span> <span class='varid'>list</span> <span class='keyglyph'>=</span> <span class='varid'>compileComposite</span> <span class='varid'>list</span>+<a name="line-11"></a>+<a name="line-12"></a> The compilation functions for XSLT stylesheets+<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'>XSLT</span><span class='varop'>.</span><span class='conid'>Compilation</span> +<a name="line-19"></a> <span class='layout'>(</span> <span class='varid'>prepareXSLTDocument</span> <span class='comment'>-- :: XmlTree -> XmlTree</span>+<a name="line-20"></a> <span class='layout'>,</span> <span class='varid'>assembleStylesheet</span> <span class='comment'>-- :: XmlTree -> [CompiledStylesheet] -> CompiledStylesheet</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'>Control</span><span class='varop'>.</span><span class='conid'>Monad</span>+<a name="line-25"></a>+<a name="line-26"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Maybe</span>+<a name="line-27"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Either</span>+<a name="line-28"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>List</span>+<a name="line-29"></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'>Map</span> <span class='varid'>hiding</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='layout'>)</span>+<a name="line-30"></a><span class='keyword'>import</span> <span class='conid'>Data</span><span class='varop'>.</span><span class='conid'>Map</span><span class='layout'>(</span><span class='conid'>Map</span><span class='layout'>)</span>+<a name="line-31"></a>+<a name="line-32"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>ParserCombinators</span><span class='varop'>.</span><span class='conid'>Parsec</span><span class='varop'>.</span><span class='conid'>Prim</span> <span class='layout'>(</span> <span class='varid'>runParser</span> <span class='layout'>)</span>+<a name="line-33"></a>+<a name="line-34"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XSLT</span><span class='varop'>.</span><span class='conid'>Common</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'>XSLT</span><span class='varop'>.</span><span class='conid'>Names</span>+<a name="line-36"></a><span class='keyword'>import</span> <span class='conid'>Text</span><span class='varop'>.</span><span class='conid'>XML</span><span class='varop'>.</span><span class='conid'>HXT</span><span class='varop'>.</span><span class='conid'>XSLT</span><span class='varop'>.</span><span class='conid'>CompiledStylesheet</span>+<a name="line-37"></a>+<a name="line-38"></a><span class='comment'>-- No deep meaning just a shortcut notation for a *very* common expression...</span>+<a name="line-39"></a>+<a name="line-40"></a><span class='keyword'>infixl</span> <span class='num'>9</span> <span class='varop'>><</span>+<a name="line-41"></a>+<a name="line-42"></a><a name="><"></a><span class='layout'>(</span><span class='varop'>><</span><span class='layout'>)</span> <span class='keyglyph'>::</span> <span class='conid'>XmlNode</span> <span class='varid'>n</span> <span class='keyglyph'>=></span> <span class='layout'>(</span><span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>a</span>+<a name="line-43"></a><a name="f"></a><span class='definition'>f</span> <span class='varop'>><</span> <span class='varid'>node</span>+<a name="line-44"></a> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>$</span> <span class='varid'>getUriMap</span> <span class='varid'>node</span>+<a name="line-45"></a>+<a name="line-46"></a><span class='comment'>-- --------------------------</span>+<a name="line-47"></a>+<a name="line-48"></a><a name="parseExpr"></a><span class='definition'>parseExpr</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>Expr</span>+<a name="line-49"></a><span class='definition'>parseExpr</span> <span class='varid'>uris</span> <span class='varid'>selectStr</span>+<a name="line-50"></a> <span class='keyglyph'>=</span> <span class='varid'>either</span> <span class='layout'>(</span><span class='varid'>error</span><span class='varop'>.</span><span class='varid'>show</span><span class='layout'>)</span> <span class='varid'>id</span> <span class='varid'>parseResult</span> +<a name="line-51"></a> <span class='keyword'>where</span>+<a name="line-52"></a> <span class='varid'>parseResult</span> <span class='keyglyph'>=</span> <span class='varid'>runParser</span> <span class='varid'>parseXPath</span> <span class='layout'>(</span><span class='varid'>toNsEnv</span> <span class='varop'>.</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>toList</span> <span class='varop'>$</span> <span class='varid'>uris</span><span class='layout'>)</span> <span class='layout'>(</span><span class='str'>"select-expr:"</span><span class='varop'>++</span><span class='varid'>selectStr</span><span class='layout'>)</span> <span class='varid'>selectStr</span> +<a name="line-53"></a>+<a name="line-54"></a><a name="parseSelect"></a><span class='definition'>parseSelect</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>SelectExpr</span>+<a name="line-55"></a><span class='definition'>parseSelect</span> <span class='varid'>uris</span>+<a name="line-56"></a> <span class='keyglyph'>=</span> <span class='conid'>SelectExpr</span> <span class='varop'>.</span> <span class='varid'>parseExpr</span> <span class='varid'>uris</span>+<a name="line-57"></a>+<a name="line-58"></a><a name="parseTest"></a><span class='definition'>parseTest</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>TestExpr</span>+<a name="line-59"></a><span class='definition'>parseTest</span> <span class='varid'>uris</span>+<a name="line-60"></a> <span class='keyglyph'>=</span> <span class='conid'>TestExpr</span> <span class='varop'>.</span> <span class='varid'>mkBoolExpr</span> <span class='varop'>.</span> <span class='varid'>parseExpr</span> <span class='varid'>uris</span>+<a name="line-61"></a>+<a name="line-62"></a><a name="parseStringExpr"></a><span class='definition'>parseStringExpr</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>StringExpr</span>+<a name="line-63"></a><span class='definition'>parseStringExpr</span> <span class='varid'>uris</span>+<a name="line-64"></a> <span class='keyglyph'>=</span> <span class='conid'>StringExpr</span> <span class='varop'>.</span> <span class='varid'>mkStringExpr</span> <span class='varop'>.</span> <span class='varid'>parseExpr</span> <span class='varid'>uris</span>+<a name="line-65"></a>+<a name="line-66"></a><a name="parseMatch"></a><span class='definition'>parseMatch</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>MatchExpr</span>+<a name="line-67"></a><span class='definition'>parseMatch</span> <span class='varid'>uris</span> <span class='varid'>str</span>+<a name="line-68"></a> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>isMatchExpr</span> <span class='varid'>expr</span>+<a name="line-69"></a> <span class='keyword'>then</span> <span class='conid'>MatchExpr</span> <span class='varid'>expr</span>+<a name="line-70"></a> <span class='keyword'>else</span> <span class='varid'>error</span> <span class='varop'>$</span> <span class='varid'>str</span> <span class='varop'>++</span> <span class='str'>" is not a legal match-expression"</span>+<a name="line-71"></a> <span class='keyword'>where</span> +<a name="line-72"></a> <span class='varid'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>parseExpr</span> <span class='varid'>uris</span> <span class='varid'>str</span>+<a name="line-73"></a>+<a name="line-74"></a><span class='comment'>-- --------------------------</span>+<a name="line-75"></a>+<a name="line-76"></a><a name="parseAVT"></a><span class='definition'>parseAVT</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='conid'>StringExpr</span>+<a name="line-77"></a><span class='definition'>parseAVT</span> <span class='varid'>uris</span> <span class='varid'>str</span> <span class='keyglyph'>=</span> +<a name="line-78"></a> <span class='conid'>StringExpr</span> <span class='varop'>$</span> <span class='varid'>concatExpr</span> <span class='varop'>$</span> <span class='varid'>splitAVT</span> <span class='varid'>str</span> <span class='str'>""</span>+<a name="line-79"></a> <span class='keyword'>where</span>+<a name="line-80"></a>+<a name="line-81"></a> <span class='varid'>splitAVT</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='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span>+<a name="line-82"></a> <span class='varid'>splitAVT</span> <span class='str'>""</span> <span class='varid'>acc</span> <span class='keyglyph'>=</span> <span class='varid'>acc2lit</span> <span class='varid'>acc</span>+<a name="line-83"></a> <span class='varid'>splitAVT</span> <span class='layout'>(</span><span class='chr'>'{'</span><span class='conop'>:</span><span class='chr'>'{'</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>acc</span> <span class='keyglyph'>=</span> <span class='varid'>splitAVT</span> <span class='varid'>xs</span> <span class='varop'>$</span> <span class='chr'>'{'</span><span class='conop'>:</span><span class='varid'>acc</span>+<a name="line-84"></a> <span class='varid'>splitAVT</span> <span class='layout'>(</span><span class='chr'>'}'</span><span class='conop'>:</span><span class='chr'>'}'</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>acc</span> <span class='keyglyph'>=</span> <span class='varid'>splitAVT</span> <span class='varid'>xs</span> <span class='varop'>$</span> <span class='chr'>'}'</span><span class='conop'>:</span><span class='varid'>acc</span>+<a name="line-85"></a> <span class='varid'>splitAVT</span> <span class='layout'>(</span><span class='chr'>'{'</span><span class='conop'>:</span><span class='varid'>xs</span><span class='layout'>)</span> <span class='varid'>acc</span> <span class='keyglyph'>=</span> <span class='keyword'>let</span> <span class='layout'>(</span><span class='varid'>body</span><span class='layout'>,</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>span</span> <span class='layout'>(</span><span class='varop'>`notElem`</span> <span class='str'>"{}"</span><span class='layout'>)</span> <span class='varid'>xs</span> <span class='keyword'>in</span>+<a name="line-86"></a> <span class='keyword'>if</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>null</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>head</span> <span class='varid'>rest</span> <span class='varop'>==</span> <span class='chr'>'}'</span>+<a name="line-87"></a> <span class='keyword'>then</span> <span class='varid'>acc2lit</span> <span class='varid'>acc</span> <span class='varop'>++</span> <span class='varid'>parseExpr</span> <span class='varid'>uris</span> <span class='varid'>body</span> <span class='conop'>:</span> <span class='varid'>splitAVT</span> <span class='layout'>(</span><span class='varid'>tail</span> <span class='varid'>rest</span><span class='layout'>)</span> <span class='str'>""</span>+<a name="line-88"></a> <span class='keyword'>else</span> <span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"Unterminated expression "</span> <span class='varop'>++</span> <span class='varid'>xs</span> <span class='varop'>++</span> <span class='str'>" in AVT."</span>+<a name="line-89"></a> <span class='varid'>splitAVT</span> <span class='layout'>(</span><span class='chr'>'}'</span><span class='conop'>:</span><span class='keyword'>_</span><span class='layout'>)</span> <span class='keyword'>_</span> <span class='keyglyph'>=</span> <span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"deserted '}' in AVT."</span>+<a name="line-90"></a> <span class='varid'>splitAVT</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='varid'>acc</span> <span class='keyglyph'>=</span> <span class='varid'>splitAVT</span> <span class='varid'>xs</span> <span class='varop'>$</span> <span class='varid'>x</span><span class='conop'>:</span><span class='varid'>acc</span>+<a name="line-91"></a>+<a name="line-92"></a> <span class='varid'>acc2lit</span> <span class='keyglyph'>::</span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Expr</span><span class='keyglyph'>]</span> +<a name="line-93"></a> <span class='varid'>acc2lit</span> <span class='str'>""</span> <span class='keyglyph'>=</span> <span class='conid'>[]</span>+<a name="line-94"></a> <span class='varid'>acc2lit</span> <span class='varid'>acc</span> <span class='keyglyph'>=</span> <span class='keyglyph'>[</span><span class='varid'>mkLiteralExpr</span> <span class='varop'>$</span> <span class='varid'>reverse</span> <span class='varid'>acc</span><span class='keyglyph'>]</span>+<a name="line-95"></a>+<a name="line-96"></a><span class='comment'>-- --------------------------</span>+<a name="line-97"></a>+<a name="line-98"></a><a name="compileComputedQName"></a><span class='comment'>-- extract ComputedQName from "name" and "namespace" AVTs of an xsl:element- or xsl-attribute-node</span>+<a name="line-99"></a><span class='definition'>compileComputedQName</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>ComputedQName</span>+<a name="line-100"></a><span class='definition'>compileComputedQName</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>+<a name="line-101"></a> <span class='layout'>(</span><span class='conid'>CompQName</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varid'>nameAVT</span> <span class='varid'>nsAVT</span>+<a name="line-102"></a> <span class='keyword'>where</span> +<a name="line-103"></a> <span class='varid'>nameAVT</span> <span class='keyglyph'>=</span> <span class='varid'>parseAVT</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>+<a name="line-104"></a> <span class='varid'>nsAVT</span> <span class='keyglyph'>=</span> <span class='varid'>parseAVT</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltNamespace</span> <span class='str'>""</span>+<a name="line-105"></a>+<a name="line-106"></a><span class='comment'>-- --------------------------</span>+<a name="line-107"></a>+<a name="line-108"></a><a name="compileComposite"></a><span class='definition'>compileComposite</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-109"></a><span class='definition'>compileComposite</span> <span class='keyglyph'>=</span> <span class='conid'>TemplComposite</span> <span class='varop'>.</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>compileTemplate</span> <span class='varop'>.</span> <span class='varid'>return</span><span class='layout'>)</span>+<a name="line-110"></a>+<a name="line-111"></a><a name="compileMessage"></a><span class='definition'>compileMessage</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-112"></a><span class='definition'>compileMessage</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>TemplMessage</span> <span class='varid'>halt</span> <span class='varid'>content</span>+<a name="line-113"></a> <span class='keyword'>where</span> <span class='varid'>halt</span> <span class='keyglyph'>=</span> <span class='varid'>termAttr</span> <span class='varop'>==</span> <span class='str'>"yes"</span>+<a name="line-114"></a> <span class='varid'>termAttr</span> <span class='keyglyph'>=</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltTerminate</span> <span class='str'>"no"</span>+<a name="line-115"></a> <span class='varid'>content</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-116"></a>+<a name="line-117"></a><a name="compileForEach"></a><span class='definition'>compileForEach</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-118"></a><span class='definition'>compileForEach</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>TemplForEach</span> <span class='varid'>expr</span> <span class='varid'>sorting</span> <span class='varid'>template</span>+<a name="line-119"></a> <span class='keyword'>where</span> <span class='varid'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>parseSelect</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span>+<a name="line-120"></a> <span class='varid'>sorting</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>compileSortKey</span> <span class='varid'>srt</span>+<a name="line-121"></a> <span class='varid'>template</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='varid'>cnt</span>+<a name="line-122"></a> <span class='layout'>(</span><span class='varid'>srt</span><span class='layout'>,</span> <span class='varid'>cnt</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltSort</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>+<a name="line-123"></a>+<a name="line-124"></a><a name="compileChoose"></a><span class='definition'>compileChoose</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-125"></a><span class='definition'>compileChoose</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>TemplChoose</span> <span class='varid'>whenParts</span>+<a name="line-126"></a> <span class='keyword'>where</span> <span class='varid'>whenParts</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>compl</span> <span class='varid'>children</span>+<a name="line-127"></a> <span class='varid'>children</span> <span class='keyglyph'>=</span> <span class='varid'>filter</span> <span class='varid'>isElem</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-128"></a> <span class='varid'>compl</span> <span class='varid'>node'</span> <span class='keyglyph'>=</span> <span class='keyword'>let</span> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node'</span> <span class='keyword'>in</span>+<a name="line-129"></a> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltWhen</span> <span class='keyword'>then</span> <span class='varid'>compileWhen</span> <span class='varid'>node'</span>+<a name="line-130"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltOtherwise</span> <span class='keyword'>then</span> <span class='varid'>compileOtherwise</span> <span class='varid'>node'</span>+<a name="line-131"></a> <span class='keyword'>else</span> <span class='varid'>error</span> <span class='layout'>(</span><span class='str'>"No elements of type "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='varid'>elemName</span> <span class='varop'>++</span> <span class='str'>" allowed within xsl-choose template!"</span><span class='layout'>)</span>+<a name="line-132"></a>+<a name="line-133"></a><a name="compileWhen"></a><span class='definition'>compileWhen</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>When</span>+<a name="line-134"></a><span class='definition'>compileWhen</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>WhenPart</span> <span class='varid'>expr</span> <span class='varop'>$</span> <span class='varid'>compileTemplate</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>+<a name="line-135"></a> <span class='keyword'>where</span> <span class='varid'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>parseTest</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltTest</span>+<a name="line-136"></a>+<a name="line-137"></a><a name="compileOtherwise"></a><span class='comment'>-- Otherwise is treated as a when-Part with node-test "true()"</span>+<a name="line-138"></a><span class='definition'>compileOtherwise</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>When</span>+<a name="line-139"></a><span class='definition'>compileOtherwise</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>WhenPart</span> <span class='layout'>(</span><span class='conid'>TestExpr</span> <span class='varid'>mkTrueExpr</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>compileTemplate</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>+<a name="line-140"></a>+<a name="line-141"></a><a name="compileIf"></a><span class='comment'>-- "if" is treated as a convenience-form of choose with exactly one "when"-Part</span>+<a name="line-142"></a><span class='definition'>compileIf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-143"></a><span class='definition'>compileIf</span> <span class='keyglyph'>=</span> <span class='conid'>TemplChoose</span> <span class='varop'>.</span> <span class='varid'>return</span> <span class='varop'>.</span> <span class='varid'>compileWhen</span>+<a name="line-144"></a>+<a name="line-145"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-146"></a>+<a name="line-147"></a><a name="parseExNames"></a><span class='definition'>parseExNames</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>ExName</span><span class='keyglyph'>]</span>+<a name="line-148"></a><span class='definition'>parseExNames</span> <span class='varid'>urm</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>parseExName</span> <span class='varid'>urm</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>words</span>+<a name="line-149"></a>+<a name="line-150"></a><a name="compileElement"></a><span class='definition'>compileElement</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-151"></a><span class='definition'>compileElement</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> +<a name="line-152"></a> <span class='conid'>TemplElement</span> <span class='varid'>compQName</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span> <span class='varid'>attribSets</span> <span class='varid'>template</span>+<a name="line-153"></a> <span class='keyword'>where</span> +<a name="line-154"></a> <span class='varid'>compQName</span> <span class='keyglyph'>=</span> <span class='varid'>compileComputedQName</span> <span class='varid'>node</span>+<a name="line-155"></a> <span class='varid'>attribSets</span> <span class='keyglyph'>=</span> <span class='conid'>UsedAttribSets</span> <span class='varop'>$</span> <span class='varid'>parseExNames</span><span class='varop'>><</span><span class='varid'>node</span>+<a name="line-156"></a> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltUseAttributeSets</span> <span class='str'>""</span>+<a name="line-157"></a> <span class='varid'>template</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-158"></a>+<a name="line-159"></a><a name="compileAttribute"></a><span class='definition'>compileAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-160"></a><span class='definition'>compileAttribute</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> +<a name="line-161"></a> <span class='conid'>TemplAttribute</span> <span class='layout'>(</span><span class='varid'>compileComputedQName</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>compileTemplate</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-162"></a>+<a name="line-163"></a><a name="compileText"></a><span class='comment'>-- compiles xsl:text</span>+<a name="line-164"></a><span class='definition'>compileText</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-165"></a><span class='definition'>compileText</span> <span class='keyglyph'>=</span> <span class='conid'>TemplText</span> <span class='varop'>.</span> <span class='varid'>collectTextnodes</span> <span class='varop'>.</span> <span class='varid'>getChildren</span>+<a name="line-166"></a>+<a name="line-167"></a><a name="compileTextnode"></a><span class='comment'>-- compiles textNode </span>+<a name="line-168"></a><span class='definition'>compileTextnode</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-169"></a><span class='definition'>compileTextnode</span> <span class='keyglyph'>=</span> <span class='conid'>TemplText</span> <span class='varop'>.</span> <span class='varid'>fromJust</span> <span class='varop'>.</span> <span class='varid'>getText</span>+<a name="line-170"></a>+<a name="line-171"></a><a name="compileValueOf"></a><span class='definition'>compileValueOf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-172"></a><span class='definition'>compileValueOf</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> +<a name="line-173"></a> <span class='conid'>TemplValueOf</span> <span class='varop'>$</span> <span class='varid'>parseStringExpr</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span>+<a name="line-174"></a>+<a name="line-175"></a><a name="compileComment"></a><span class='definition'>compileComment</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-176"></a><span class='definition'>compileComment</span> <span class='keyglyph'>=</span> <span class='conid'>TemplComment</span> <span class='varop'>.</span> <span class='varid'>compileTemplate</span> <span class='varop'>.</span> <span class='varid'>getChildren</span>+<a name="line-177"></a>+<a name="line-178"></a><a name="compileProcInstr"></a><span class='definition'>compileProcInstr</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-179"></a><span class='definition'>compileProcInstr</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> +<a name="line-180"></a> <span class='conid'>TemplProcInstr</span> <span class='varid'>name</span> <span class='varid'>content</span>+<a name="line-181"></a> <span class='keyword'>where</span>+<a name="line-182"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>parseAVT</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>+<a name="line-183"></a> <span class='varid'>content</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>+<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="compileLiteralResultElement"></a><span class='definition'>compileLiteralResultElement</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-188"></a><span class='definition'>compileLiteralResultElement</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>+<a name="line-189"></a> <span class='conid'>TemplElement</span> <span class='varid'>compQName</span> <span class='varid'>nsUris</span> <span class='varid'>attribSets</span> <span class='varid'>content</span>+<a name="line-190"></a> <span class='keyword'>where</span> +<a name="line-191"></a> <span class='varid'>nsUris</span> <span class='keyglyph'>=</span> <span class='varid'>extractAddUris</span> <span class='varid'>node</span>+<a name="line-192"></a> <span class='varid'>compQName</span> <span class='keyglyph'>=</span> <span class='conid'>LiteralQName</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node</span>+<a name="line-193"></a> <span class='varid'>attribSets</span> <span class='keyglyph'>=</span> <span class='conid'>UsedAttribSets</span> <span class='varop'>$</span> <span class='varid'>parseExNames</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>attrSetsStr</span>+<a name="line-194"></a> <span class='varid'>attrSetsStr</span> <span class='keyglyph'>=</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltUseAttributeSetsLRE</span> <span class='str'>""</span>+<a name="line-195"></a> <span class='varid'>content</span> <span class='keyglyph'>=</span> <span class='conid'>TemplComposite</span> <span class='varop'>$</span> <span class='varid'>attributes</span> <span class='varop'>++</span> <span class='keyglyph'>[</span><span class='varid'>template</span><span class='keyglyph'>]</span>+<a name="line-196"></a> <span class='varid'>attributes</span> <span class='keyglyph'>=</span> <span class='varid'>mapMaybe</span> <span class='layout'>(</span><span class='varid'>compileLREAttribute</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrl</span> <span class='varid'>node</span>+<a name="line-197"></a> <span class='varid'>template</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-198"></a>+<a name="line-199"></a><a name="compileLREAttribute"></a><span class='definition'>compileLREAttribute</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>Template</span>+<a name="line-200"></a><span class='definition'>compileLREAttribute</span> <span class='varid'>uris</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> +<a name="line-201"></a> <span class='keyword'>if</span> <span class='varid'>isSpecial</span> +<a name="line-202"></a> <span class='keyword'>then</span> <span class='conid'>Nothing</span>+<a name="line-203"></a> <span class='keyword'>else</span> <span class='conid'>Just</span> <span class='varop'>$</span> <span class='conid'>TemplAttribute</span> <span class='layout'>(</span><span class='conid'>LiteralQName</span> <span class='varid'>name</span><span class='layout'>)</span> <span class='varid'>val</span> +<a name="line-204"></a> <span class='keyword'>where</span> +<a name="line-205"></a> <span class='varid'>isSpecial</span> <span class='keyglyph'>=</span> <span class='varid'>namespaceUri</span> <span class='varid'>name</span> <span class='varop'>`elem`</span> <span class='keyglyph'>[</span><span class='varid'>xsltUri</span><span class='layout'>,</span> <span class='varid'>xmlnsNamespace</span><span class='keyglyph'>]</span>+<a name="line-206"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getAttrName</span> <span class='varid'>node</span>+<a name="line-207"></a> <span class='varid'>val</span> <span class='keyglyph'>=</span> <span class='conid'>TemplValueOf</span> <span class='varop'>$</span> <span class='varid'>parseAVT</span> <span class='varid'>uris</span> <span class='varop'>$</span> <span class='varid'>collectTextnodes</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>+<a name="line-208"></a>+<a name="line-209"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-210"></a>+<a name="line-211"></a><a name="compileApplyTempl"></a><span class='definition'>compileApplyTempl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-212"></a><span class='definition'>compileApplyTempl</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>+<a name="line-213"></a> <span class='conid'>TemplApply</span> <span class='varid'>expr</span> <span class='varid'>mode</span> <span class='varid'>args</span> <span class='varid'>sorting</span>+<a name="line-214"></a> <span class='keyword'>where</span>+<a name="line-215"></a> <span class='varid'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>parseSelect</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span>+<a name="line-216"></a> <span class='varid'>mode</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltMode</span>+<a name="line-217"></a> <span class='varid'>args</span> <span class='keyglyph'>=</span> <span class='varid'>compileVariables</span> <span class='varop'>$</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltWithParam</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>par</span>+<a name="line-218"></a> <span class='varid'>sorting</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>compileSortKey</span> <span class='varid'>srt</span>+<a name="line-219"></a> <span class='layout'>(</span><span class='varid'>srt</span><span class='layout'>,</span><span class='varid'>par</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltSort</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>+<a name="line-220"></a>+<a name="line-221"></a><a name="compileApplyImports"></a><span class='definition'>compileApplyImports</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-222"></a><span class='definition'>compileApplyImports</span> <span class='sel'>_node</span>+<a name="line-223"></a> <span class='keyglyph'>=</span> <span class='conid'>TemplApplyImports</span>+<a name="line-224"></a>+<a name="line-225"></a><a name="compileCallTempl"></a><span class='definition'>compileCallTempl</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-226"></a><span class='definition'>compileCallTempl</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>+<a name="line-227"></a> <span class='conid'>TemplCall</span> <span class='varid'>name</span> <span class='varid'>args</span>+<a name="line-228"></a> <span class='keyword'>where</span>+<a name="line-229"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>+<a name="line-230"></a> <span class='varid'>args</span> <span class='keyglyph'>=</span> <span class='varid'>compileVariables</span> <span class='varop'>$</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltWithParam</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>+<a name="line-231"></a>+<a name="line-232"></a><a name="compileTemplVariable"></a><span class='definition'>compileTemplVariable</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-233"></a><span class='definition'>compileTemplVariable</span> <span class='keyglyph'>=</span> <span class='conid'>TemplVariable</span> <span class='varop'>.</span> <span class='varid'>compileVariable</span>+<a name="line-234"></a>+<a name="line-235"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-236"></a>+<a name="line-237"></a><a name="compileCopy"></a><span class='definition'>compileCopy</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-238"></a><span class='definition'>compileCopy</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>+<a name="line-239"></a> <span class='conid'>TemplCopy</span> <span class='varid'>attribSets</span> <span class='varop'>$</span> <span class='varid'>compileTemplate</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-240"></a> <span class='keyword'>where</span>+<a name="line-241"></a> <span class='varid'>attribSets</span> <span class='keyglyph'>=</span> <span class='conid'>UsedAttribSets</span> <span class='varop'>$</span> <span class='varid'>parseExNames</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltUseAttributeSets</span> <span class='str'>""</span>+<a name="line-242"></a>+<a name="line-243"></a><a name="compileCopyOf"></a><span class='definition'>compileCopyOf</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-244"></a><span class='definition'>compileCopyOf</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='conid'>TemplCopyOf</span> <span class='varop'>$</span> <span class='varid'>parseExpr</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span>+<a name="line-245"></a>+<a name="line-246"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-247"></a>+<a name="line-248"></a><a name="compileTemplate"></a><span class='definition'>compileTemplate</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span>+<a name="line-249"></a><span class='definition'>compileTemplate</span> <span class='keyglyph'>[</span><span class='varid'>node</span><span class='keyglyph'>]</span> <span class='keyglyph'>=</span> +<a name="line-250"></a> <span class='keyword'>if</span> <span class='varid'>isElem</span> <span class='varid'>node</span>+<a name="line-251"></a> <span class='keyword'>then</span> <span class='keyword'>let</span> <span class='varid'>elemName</span> <span class='keyglyph'>=</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node</span> <span class='keyword'>in</span> +<a name="line-252"></a> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltMessage</span> <span class='keyword'>then</span> <span class='varid'>compileMessage</span> <span class='varid'>node</span>+<a name="line-253"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltForEach</span> <span class='keyword'>then</span> <span class='varid'>compileForEach</span> <span class='varid'>node</span>+<a name="line-254"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltChoose</span> <span class='keyword'>then</span> <span class='varid'>compileChoose</span> <span class='varid'>node</span> +<a name="line-255"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltIf</span> <span class='keyword'>then</span> <span class='varid'>compileIf</span> <span class='varid'>node</span>+<a name="line-256"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltElement</span> <span class='keyword'>then</span> <span class='varid'>compileElement</span> <span class='varid'>node</span>+<a name="line-257"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltAttribute</span> <span class='keyword'>then</span> <span class='varid'>compileAttribute</span> <span class='varid'>node</span>+<a name="line-258"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltText</span> <span class='keyword'>then</span> <span class='varid'>compileText</span> <span class='varid'>node</span>+<a name="line-259"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltValueOf</span> <span class='keyword'>then</span> <span class='varid'>compileValueOf</span> <span class='varid'>node</span>+<a name="line-260"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltComment</span> <span class='keyword'>then</span> <span class='varid'>compileComment</span> <span class='varid'>node</span>+<a name="line-261"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltProcInstr</span> <span class='keyword'>then</span> <span class='varid'>compileProcInstr</span> <span class='varid'>node</span>+<a name="line-262"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltApplyTemplates</span> <span class='keyword'>then</span> <span class='varid'>compileApplyTempl</span> <span class='varid'>node</span>+<a name="line-263"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltApplyImports</span> <span class='keyword'>then</span> <span class='varid'>compileApplyImports</span> <span class='varid'>node</span>+<a name="line-264"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltCallTemplate</span> <span class='keyword'>then</span> <span class='varid'>compileCallTempl</span> <span class='varid'>node</span>+<a name="line-265"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltVariable</span> <span class='keyword'>then</span> <span class='varid'>compileTemplVariable</span> <span class='varid'>node</span>+<a name="line-266"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltCopy</span> <span class='keyword'>then</span> <span class='varid'>compileCopy</span> <span class='varid'>node</span>+<a name="line-267"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>equivQName</span> <span class='varid'>elemName</span> <span class='varid'>xsltCopyOf</span> <span class='keyword'>then</span> <span class='varid'>compileCopyOf</span> <span class='varid'>node</span>+<a name="line-268"></a>+<a name="line-269"></a> <span class='comment'>-- no other xslt elements allowed here:</span>+<a name="line-270"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>namespaceUri</span> <span class='varid'>elemName</span> <span class='varop'>==</span> <span class='varid'>xsltUri</span>+<a name="line-271"></a> <span class='keyword'>then</span> <span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"xslt-element "</span> <span class='varop'>++</span> <span class='varid'>localPart</span> <span class='varid'>elemName</span> <span class='varop'>++</span> <span class='str'>" not allowed within this context."</span>+<a name="line-272"></a>+<a name="line-273"></a> <span class='comment'>-- for now all other elements will be considered as Literal Result Elements</span>+<a name="line-274"></a> <span class='keyword'>else</span> <span class='varid'>compileLiteralResultElement</span> <span class='varid'>node</span>+<a name="line-275"></a>+<a name="line-276"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>isText</span> <span class='varid'>node</span> <span class='keyword'>then</span> <span class='varid'>compileTextnode</span> <span class='varid'>node</span>+<a name="line-277"></a>+<a name="line-278"></a> <span class='keyword'>else</span>+<a name="line-279"></a> <span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"Unsupported node-type in xslt sheet: "</span> <span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getNode</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-280"></a><span class='definition'>compileTemplate</span> <span class='varid'>list</span> <span class='keyglyph'>=</span> <span class='varid'>compileComposite</span> <span class='varid'>list</span>+<a name="line-281"></a> <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'>-- Assembling of the entire stylesheet</span>-<a name="line-286"></a>-<a name="line-287"></a><a name="assembleStylesheet"></a><span class='definition'>assembleStylesheet</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>CompiledStylesheet</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>CompiledStylesheet</span>-<a name="line-288"></a><span class='definition'>assembleStylesheet</span> <span class='varid'>xslNode</span> <span class='varid'>imports</span> <span class='keyglyph'>=</span>-<a name="line-289"></a> <span class='conid'>CompStylesheet</span> <span class='varid'>matchRules</span> <span class='varid'>namedRules</span> <span class='varid'>variables</span> <span class='varid'>attsets</span> <span class='varid'>strips</span> <span class='varid'>aliases</span>-<a name="line-290"></a> <span class='keyword'>where</span> -<a name="line-291"></a> <span class='comment'>-- entire contents:</span>-<a name="line-292"></a> <span class='layout'>(</span><span class='varid'>namedRules</span><span class='layout'>,</span> -<a name="line-293"></a> <span class='varid'>matchRules</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>assembleRules</span> <span class='varid'>ruleElems</span> <span class='varid'>importedMatchRules</span> <span class='varid'>importedNamedRules</span>-<a name="line-294"></a> <span class='varid'>variables</span> <span class='keyglyph'>=</span> <span class='varid'>assembleVariables</span> <span class='varid'>varElems</span> <span class='varid'>importedVariables</span>-<a name="line-295"></a> <span class='varid'>attsets</span> <span class='keyglyph'>=</span> <span class='varid'>assembleAttrSets</span> <span class='varid'>attsetElems</span> <span class='varid'>importedAttribSets</span>-<a name="line-296"></a> <span class='varid'>strips</span> <span class='keyglyph'>=</span> <span class='varid'>assembleStrips</span> <span class='varid'>stripElems</span> <span class='varid'>preserveElems</span> <span class='varid'>importedStrips</span>-<a name="line-297"></a> <span class='varid'>aliases</span> <span class='keyglyph'>=</span> <span class='varid'>assembleAliases</span> <span class='varid'>nsAliasElems</span> <span class='varid'>importedAliases</span>-<a name="line-298"></a>-<a name="line-299"></a> <span class='comment'>-- element content:</span>-<a name="line-300"></a> <span class='layout'>(</span><span class='varid'>nsAliasElems</span><span class='layout'>,</span> <span class='sel'>_r5</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltNamespaceAlias</span><span class='layout'>)</span> <span class='varid'>r4</span>-<a name="line-301"></a> <span class='layout'>(</span><span class='varid'>ruleElems</span><span class='layout'>,</span> <span class='varid'>r4</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltTemplate</span><span class='layout'>)</span> <span class='varid'>r3</span>-<a name="line-302"></a> <span class='layout'>(</span><span class='varid'>varElems</span><span class='layout'>,</span> <span class='varid'>r3</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='varid'>isElemType</span> <span class='varid'>xsltVariable</span> <span class='varid'>node</span> <span class='varop'>||</span> <span class='varid'>isElemType</span> <span class='varid'>xsltParam</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varid'>r2</span>-<a name="line-303"></a> <span class='layout'>(</span><span class='varid'>attsetElems</span><span class='layout'>,</span> <span class='varid'>r2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltAttributeSet</span><span class='layout'>)</span> <span class='varid'>r1</span>-<a name="line-304"></a> <span class='layout'>(</span><span class='varid'>preserveElems</span><span class='layout'>,</span> <span class='varid'>r1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltPreserveSpace</span><span class='layout'>)</span> <span class='varid'>r0</span>-<a name="line-305"></a> <span class='layout'>(</span><span class='varid'>stripElems</span><span class='layout'>,</span> <span class='varid'>r0</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltStripSpace</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>xslNode</span>-<a name="line-306"></a>-<a name="line-307"></a> <span class='comment'>-- imported stuff:</span>-<a name="line-308"></a> <span class='varid'>importedAttribSets</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>getAttributeSets</span> <span class='varid'>imports</span>-<a name="line-309"></a> <span class='varid'>importedVariables</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>getVariables</span> <span class='varid'>revImports</span>-<a name="line-310"></a> <span class='varid'>importedNamedRules</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>getNamedRules</span> <span class='varid'>revImports</span>-<a name="line-311"></a> <span class='varid'>importedMatchRules</span> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>getMatchRules</span> <span class='varid'>revImports</span>-<a name="line-312"></a> <span class='varid'>importedStrips</span> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>getStrips</span> <span class='varid'>revImports</span>-<a name="line-313"></a> <span class='varid'>importedAliases</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>getAliases</span> <span class='varid'>revImports</span>-<a name="line-314"></a> <span class='varid'>revImports</span> <span class='keyglyph'>=</span> <span class='varid'>reverse</span> <span class='varid'>imports</span>-<a name="line-315"></a>-<a name="line-316"></a><a name="assembleRules"></a><span class='definition'>assembleRules</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='conid'>NamedRule</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='conid'>NamedRule</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-317"></a><span class='definition'>assembleRules</span> <span class='varid'>nodes</span> <span class='varid'>importedMatches</span> <span class='varid'>importedProcs</span> <span class='keyglyph'>=</span>-<a name="line-318"></a> <span class='layout'>(</span><span class='varid'>resProcs</span><span class='layout'>,</span> <span class='varid'>resMatches</span><span class='layout'>)</span>-<a name="line-319"></a> <span class='keyword'>where</span>-<a name="line-320"></a> -<a name="line-321"></a> <span class='comment'>-- matches: </span>-<a name="line-322"></a> <span class='varid'>resMatches</span> <span class='keyglyph'>=</span> <span class='varid'>localMatches</span> <span class='varop'>++</span> <span class='varid'>importedMatches</span>-<a name="line-323"></a> <span class='varid'>localMatches</span> <span class='keyglyph'>=</span> <span class='varid'>reverse</span> <span class='varop'>$</span> <span class='varid'>sortBy</span> <span class='varid'>cmp</span> <span class='varid'>matches</span>-<a name="line-324"></a> <span class='varid'>cmp</span> <span class='varid'>rulA</span> <span class='varid'>rulB</span> <span class='keyglyph'>=</span> <span class='varid'>compare</span> <span class='layout'>(</span><span class='varid'>getRulePrio</span> <span class='varid'>rulA</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>getRulePrio</span> <span class='varid'>rulB</span><span class='layout'>)</span>-<a name="line-325"></a>-<a name="line-326"></a> <span class='comment'>-- procedures:</span>-<a name="line-327"></a> <span class='varid'>resProcs</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>unions</span> <span class='layout'>(</span><span class='varid'>localProcs</span><span class='conop'>:</span><span class='varid'>importedProcs</span><span class='layout'>)</span>-<a name="line-328"></a> <span class='varid'>localProcs</span> <span class='keyglyph'>=</span> <span class='varid'>foldl</span> <span class='varid'>ins</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span> <span class='varid'>procs</span>-<a name="line-329"></a> <span class='varid'>ins</span> <span class='varid'>map'</span> <span class='varid'>rule</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>insertWith</span> <span class='layout'>(</span><span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"named-rule "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getRuleName</span> <span class='varid'>rule</span><span class='layout'>)</span> <span class='varop'>++</span><span class='str'>" is already defined on this level"</span><span class='layout'>)</span>-<a name="line-330"></a> <span class='layout'>(</span><span class='varid'>getRuleName</span> <span class='varid'>rule</span><span class='layout'>)</span> <span class='varid'>rule</span> <span class='varid'>map'</span>-<a name="line-331"></a>-<a name="line-332"></a> <span class='comment'>-- compile all xsl:template's:</span>-<a name="line-333"></a> <span class='layout'>(</span><span class='varid'>procs</span><span class='layout'>,</span> <span class='varid'>matches</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>catMaybes</span> <span class='varop'>***</span> <span class='varid'>concat</span> <span class='varop'>$</span> <span class='varid'>unzip</span> <span class='varop'>$</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>compileRule</span> <span class='varid'>importedMatches</span><span class='layout'>)</span> <span class='varid'>nodes</span>-<a name="line-334"></a>-<a name="line-335"></a><a name="assembleVariables"></a><span class='definition'>assembleVariables</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='conid'>Variable</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='conid'>Variable</span><span class='layout'>)</span> -<a name="line-336"></a><span class='definition'>assembleVariables</span> <span class='varid'>varElems</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>unions</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>compileVariables</span> <span class='varid'>varElems</span><span class='conop'>:</span><span class='layout'>)</span>-<a name="line-337"></a>-<a name="line-338"></a><a name="assembleAttrSets"></a><span class='definition'>assembleAttrSets</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='keyglyph'>[</span><span class='conid'>AttributeSet</span><span class='keyglyph'>]</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='keyglyph'>[</span><span class='conid'>AttributeSet</span><span class='keyglyph'>]</span>-<a name="line-339"></a><span class='definition'>assembleAttrSets</span> <span class='varid'>attsetElems</span> <span class='keyglyph'>=</span>-<a name="line-340"></a> <span class='varid'>foldr</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>unionWith</span> <span class='layout'>(</span><span class='varop'>++</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>localAttribSets</span>-<a name="line-341"></a> <span class='keyword'>where</span>-<a name="line-342"></a> <span class='varid'>localAttribSets</span> <span class='keyglyph'>=</span> <span class='varid'>foldr</span> <span class='varid'>insertAs</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span>-<a name="line-343"></a> <span class='varop'>$</span> <span class='varid'>map</span> <span class='varid'>compileAttributeSet</span> <span class='varid'>attsetElems</span>-<a name="line-344"></a> <span class='varid'>insertAs</span> <span class='keyword'>as</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>AttribSet</span> <span class='varid'>name</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>insertWith</span> <span class='layout'>(</span><span class='varop'>++</span><span class='layout'>)</span> <span class='varid'>name</span> <span class='keyglyph'>[</span><span class='keyword'>as</span><span class='keyglyph'>]</span>-<a name="line-345"></a>-<a name="line-346"></a><a name="assembleStrips"></a><span class='definition'>assembleStrips</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span><span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Strips</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Strips</span><span class='keyglyph'>]</span>-<a name="line-347"></a><span class='definition'>assembleStrips</span> <span class='varid'>stripElems</span> <span class='varid'>preserveElems</span> <span class='keyglyph'>=</span>-<a name="line-348"></a> <span class='layout'>(</span><span class='varid'>localStrips</span> <span class='conop'>:</span><span class='layout'>)</span>-<a name="line-349"></a> <span class='keyword'>where</span>-<a name="line-350"></a> <span class='varid'>localStrips</span> <span class='keyglyph'>=</span> <span class='varid'>feedStrips</span> <span class='layout'>(</span><span class='varid'>concatMap</span> <span class='varid'>compileStrips</span> <span class='varid'>stripElems</span><span class='layout'>)</span>-<a name="line-351"></a> <span class='varop'>$</span> <span class='varid'>feedPreserves</span> <span class='layout'>(</span><span class='varid'>concatMap</span> <span class='varid'>compilePreserves</span> <span class='varid'>preserveElems</span><span class='layout'>)</span>-<a name="line-352"></a> <span class='varop'>$</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span>-<a name="line-353"></a>-<a name="line-354"></a><a name="assembleAliases"></a><span class='definition'>assembleAliases</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>NSAliasing</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>NSAliasing</span>-<a name="line-355"></a><span class='definition'>assembleAliases</span> <span class='varid'>nsAliasElems</span> <span class='keyglyph'>=</span>-<a name="line-356"></a> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>unions</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>localAliases</span><span class='conop'>:</span><span class='layout'>)</span>-<a name="line-357"></a> <span class='keyword'>where</span>-<a name="line-358"></a> <span class='varid'>localAliases</span> <span class='keyglyph'>=</span> <span class='varid'>foldr</span> <span class='varid'>addAlias'</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span> <span class='varid'>nsAliasElems</span>-<a name="line-359"></a> <span class='varid'>addAlias'</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>uncurry</span> <span class='layout'>(</span><span class='varid'>addAlias</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>compileAlias</span> <span class='varid'>node</span>-<a name="line-360"></a>-<a name="line-361"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-362"></a>-<a name="line-363"></a><a name="compileRule"></a><span class='comment'>-- compile a rule from an xsl:template element.</span>-<a name="line-364"></a><span class='comment'>-- The resulting rule can either be a one or more match rule or a named rule, or both.</span>-<a name="line-365"></a><span class='comment'>-- The first argument is needed for xsl:apply-imports and contains</span>-<a name="line-366"></a><span class='comment'>-- a list of all subsequently imported rules</span>-<a name="line-367"></a><span class='definition'>compileRule</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='conid'>NamedRule</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span><span class='layout'>)</span>-<a name="line-368"></a><span class='definition'>compileRule</span> <span class='varid'>imports</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>-<a name="line-369"></a>-<a name="line-370"></a> <span class='keyword'>if</span> <span class='varid'>isNothing</span> <span class='varid'>match</span> <span class='varop'>&&</span> <span class='varid'>isNothing</span> <span class='varid'>name</span> -<a name="line-371"></a> <span class='keyword'>then</span> <span class='varid'>error</span> <span class='str'>"Error: Bogus rule (xsl:template) with neither match nor name attribute is illegal"</span>-<a name="line-372"></a>-<a name="line-373"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>isJust</span> <span class='varid'>mode</span> <span class='varop'>&&</span> <span class='varid'>isNothing</span> <span class='varid'>match</span> -<a name="line-374"></a> <span class='keyword'>then</span> <span class='varid'>error</span> <span class='str'>"Error: Bogus mode attribute on none-match rule is illegal"</span>-<a name="line-375"></a>-<a name="line-376"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>isJust</span> <span class='varid'>priority</span> <span class='varop'>&&</span> <span class='varid'>isNothing</span> <span class='varid'>match</span> -<a name="line-377"></a> <span class='keyword'>then</span> <span class='varid'>error</span> <span class='str'>"Error: Bogus priority attribute on none-match rule is illegal"</span>-<a name="line-378"></a>-<a name="line-379"></a> <span class='keyword'>else</span> -<a name="line-380"></a> <span class='layout'>(</span>-<a name="line-381"></a> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>NamRule</span> <span class='varid'>n</span> <span class='varid'>params</span> <span class='varid'>template</span><span class='layout'>)</span> <span class='varid'>name</span>-<a name="line-382"></a> <span class='layout'>,</span> <span class='varid'>concat</span> <span class='varop'>$</span> <span class='varid'>maybeToList</span> <span class='varop'>$</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>assembleMatchRule</span> <span class='varid'>priority</span> <span class='varid'>mode</span> <span class='varid'>imports</span> <span class='varid'>params</span> <span class='varid'>template</span><span class='layout'>)</span> <span class='varid'>match</span>-<a name="line-383"></a> <span class='layout'>)</span> -<a name="line-384"></a>-<a name="line-385"></a> <span class='keyword'>where</span>-<a name="line-386"></a> <span class='varid'>match</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>parseMatch</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltMatch</span>-<a name="line-387"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>-<a name="line-388"></a> <span class='varid'>priority</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='varid'>read</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltPriority</span>-<a name="line-389"></a> <span class='varid'>mode</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltMode</span>-<a name="line-390"></a> <span class='varid'>template</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='varid'>content</span>-<a name="line-391"></a> <span class='varid'>params</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>compileVariable</span> <span class='varid'>paramsXml</span>-<a name="line-392"></a> <span class='layout'>(</span><span class='varid'>paramsXml</span><span class='layout'>,</span> <span class='varid'>content</span><span class='layout'>)</span> <span class='keyglyph'>=</span>-<a name="line-393"></a> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltParam</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>-<a name="line-394"></a>-<a name="line-395"></a><a name="assembleMatchRule"></a><span class='definition'>assembleMatchRule</span> <span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='conid'>Float</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>ExName</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Variable</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span> <span class='keyglyph'>-></span> <span class='conid'>MatchExpr</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span>-<a name="line-396"></a><span class='definition'>assembleMatchRule</span> <span class='varid'>pri</span> <span class='varid'>m</span> <span class='varid'>imp</span> <span class='varid'>par</span> <span class='varid'>tmpl</span> <span class='varid'>mtch</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>MatchExpr</span> <span class='varid'>expr</span><span class='layout'>)</span> <span class='keyglyph'>=</span>-<a name="line-397"></a> <span class='keyword'>if</span> <span class='varid'>isJust</span> <span class='varid'>pri</span>-<a name="line-398"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='conid'>MatRule</span> <span class='varid'>mtch</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varid'>pri</span><span class='layout'>)</span> <span class='varid'>m</span> <span class='varid'>imp</span> <span class='varid'>par</span> <span class='varid'>tmpl</span>-<a name="line-399"></a> <span class='keyword'>else</span> <span class='varid'>map</span> <span class='varid'>expand</span> <span class='varop'>$</span> <span class='varid'>splitMatchByPrio</span> <span class='varid'>expr</span>-<a name="line-400"></a> <span class='keyword'>where</span> -<a name="line-401"></a> <span class='varid'>expand</span> <span class='layout'>(</span><span class='varid'>pri'</span><span class='layout'>,</span> <span class='varid'>mtch'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>MatRule</span> <span class='layout'>(</span><span class='conid'>MatchExpr</span> <span class='varid'>mtch'</span><span class='layout'>)</span> <span class='varid'>pri'</span> <span class='varid'>m</span> <span class='varid'>imp</span> <span class='varid'>par</span> <span class='varid'>tmpl</span>-<a name="line-402"></a>-<a name="line-403"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-404"></a>-<a name="line-405"></a><a name="compileVariables"></a><span class='definition'>compileVariables</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='conid'>Variable</span>-<a name="line-406"></a><span class='definition'>compileVariables</span> <span class='varid'>nodes</span> <span class='keyglyph'>=</span>-<a name="line-407"></a> <span class='varid'>foldl</span> <span class='varid'>insertVar</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span> <span class='varop'>$</span> <span class='varid'>varList</span>-<a name="line-408"></a> <span class='keyword'>where</span>-<a name="line-409"></a> <span class='varid'>varList</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>compileVariable</span> <span class='varop'>$</span> <span class='varid'>nodes</span>-<a name="line-410"></a> <span class='varid'>insertVar</span> <span class='varid'>map'</span> <span class='varid'>var</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>insertWith</span> <span class='layout'>(</span><span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"parameter or variable "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getVarName</span> <span class='varid'>var</span><span class='layout'>)</span> <span class='varop'>++</span><span class='str'>" is already defined on this level"</span><span class='layout'>)</span>-<a name="line-411"></a> <span class='layout'>(</span><span class='varid'>getVarName</span> <span class='varid'>var</span><span class='layout'>)</span> <span class='varid'>var</span> <span class='varid'>map'</span>-<a name="line-412"></a>-<a name="line-413"></a><a name="compileVariable"></a><span class='definition'>compileVariable</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Variable</span>-<a name="line-414"></a><span class='definition'>compileVariable</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>-<a name="line-415"></a> <span class='conid'>MkVar</span> <span class='varid'>modus</span> <span class='varid'>name</span> <span class='varid'>exprOrRtf</span>-<a name="line-416"></a> <span class='keyword'>where</span> -<a name="line-417"></a> <span class='varid'>modus</span> <span class='keyglyph'>=</span> <span class='varid'>isElemType</span> <span class='varid'>xsltParam</span> <span class='varid'>node</span>-<a name="line-418"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>-<a name="line-419"></a> <span class='varid'>exprOrRtf</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>hasAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span> <span class='varop'>||</span> <span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-420"></a> <span class='keyword'>then</span> <span class='conid'>Left</span> <span class='varop'>$</span> <span class='varid'>parseExpr</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span> <span class='str'>"''"</span>-<a name="line-421"></a> <span class='keyword'>else</span> <span class='conid'>Right</span> <span class='varop'>$</span> <span class='varid'>compileTemplate</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>-<a name="line-422"></a>-<a name="line-423"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-424"></a>-<a name="line-425"></a><a name="compileAttributeSet"></a><span class='definition'>compileAttributeSet</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>AttributeSet</span>-<a name="line-426"></a><span class='definition'>compileAttributeSet</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>-<a name="line-427"></a> <span class='conid'>AttribSet</span> <span class='varid'>name</span> <span class='varid'>usedsets</span> <span class='varid'>template</span>-<a name="line-428"></a> <span class='keyword'>where</span>-<a name="line-429"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>-<a name="line-430"></a> <span class='varid'>usedsets</span> <span class='keyglyph'>=</span> <span class='conid'>UsedAttribSets</span> <span class='varop'>$</span> <span class='varid'>parseExNames</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltUseAttributeSets</span> <span class='str'>""</span>-<a name="line-431"></a> <span class='varid'>template</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='varop'>$</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltAttribute</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>-<a name="line-432"></a>-<a name="line-433"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-434"></a>-<a name="line-435"></a><a name="compileSortKey"></a><span class='definition'>compileSortKey</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>SortKey</span>-<a name="line-436"></a><span class='definition'>compileSortKey</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>-<a name="line-437"></a> <span class='conid'>SortK</span> <span class='varid'>expr</span> <span class='varid'>dataType</span> <span class='varid'>order</span>-<a name="line-438"></a> <span class='keyword'>where</span>-<a name="line-439"></a> <span class='varid'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>parseStringExpr</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span> <span class='str'>"."</span>-<a name="line-440"></a> <span class='varid'>dataType</span> <span class='keyglyph'>=</span> <span class='varid'>parseAVT</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltDataType</span> <span class='str'>"text"</span>-<a name="line-441"></a> <span class='varid'>order</span> <span class='keyglyph'>=</span> <span class='varid'>parseAVT</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltOrder</span> <span class='str'>"ascending"</span>-<a name="line-442"></a>-<a name="line-443"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-444"></a>-<a name="line-445"></a><a name="parseNTests"></a><span class='definition'>parseNTests</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>NTest</span><span class='keyglyph'>]</span>-<a name="line-446"></a><span class='definition'>parseNTests</span> <span class='varid'>uris</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>parseNTest</span> <span class='varid'>uris</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>words</span>-<a name="line-447"></a>-<a name="line-448"></a><a name="compileStrips"></a><span class='definition'>compileStrips</span><span class='layout'>,</span><span class='varid'>compilePreserves</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>NTest</span><span class='keyglyph'>]</span>-<a name="line-449"></a><span class='definition'>compileStrips</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>parseNTests</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltElements</span>-<a name="line-450"></a><a name="compilePreserves"></a><span class='definition'>compilePreserves</span> <span class='keyglyph'>=</span> <span class='varid'>compileStrips</span>-<a name="line-451"></a>-<a name="line-452"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-453"></a>-<a name="line-454"></a><a name="compileAlias"></a><span class='definition'>compileAlias</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>-<a name="line-455"></a><span class='definition'>compileAlias</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> -<a name="line-456"></a> <span class='layout'>(</span><span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltStylesheetPrefix</span><span class='layout'>,</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltResultPrefix</span><span class='layout'>)</span>-<a name="line-457"></a>-<a name="line-458"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-459"></a><span class='comment'>-- Document level preprocessing</span>-<a name="line-460"></a>-<a name="line-461"></a><a name="prepareXSLTDocument"></a><span class='definition'>prepareXSLTDocument</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-462"></a><span class='definition'>prepareXSLTDocument</span> <span class='keyglyph'>=</span> <span class='varid'>expandExEx</span> <span class='varop'>.</span> <span class='varid'>expandNSDecls</span> <span class='varop'>.</span> <span class='varid'>stripStylesheet</span> <span class='varop'>.</span> <span class='varid'>removePiCmt</span>-<a name="line-463"></a>-<a name="line-464"></a><a name="removePiCmt"></a><span class='definition'>removePiCmt</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-465"></a><span class='definition'>removePiCmt</span> <span class='keyglyph'>=</span> <span class='varid'>fromJustErr</span> <span class='str'>"XSLT: No root element"</span> <span class='varop'>.</span> <span class='varid'>filterTree</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isPi</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isCmt</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span>-<a name="line-466"></a>-<a name="line-467"></a><span class='comment'>-- Expand exclude-result-prefixes AND extension-element-prefixes</span>-<a name="line-468"></a>-<a name="line-469"></a><a name="expandExEx"></a><span class='definition'>expandExEx</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>-<a name="line-470"></a><span class='definition'>expandExEx</span> <span class='keyglyph'>=</span> <span class='varid'>mapTreeCtx</span> <span class='varid'>expandExExElem</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='varid'>xsltUri</span><span class='layout'>,</span><span class='varid'>xmlNamespace</span><span class='layout'>,</span><span class='varid'>xmlnsNamespace</span><span class='keyglyph'>]</span><span class='layout'>,</span><span class='conid'>[]</span><span class='layout'>)</span>-<a name="line-471"></a>-<a name="line-472"></a><a name="expandExExElem"></a><span class='definition'>expandExExElem</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>)</span><span class='layout'>,</span> <span class='conid'>XNode</span><span class='layout'>)</span>-<a name="line-473"></a><span class='definition'>expandExExElem</span> <span class='varid'>c</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>excl</span><span class='layout'>,</span> <span class='varid'>ext</span><span class='layout'>)</span> <span class='varid'>node</span>-<a name="line-474"></a> <span class='keyglyph'>|</span> <span class='varid'>isElem</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>exclAcc</span><span class='layout'>,</span> <span class='varid'>extAcc</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>nodeNew</span><span class='layout'>)</span>-<a name="line-475"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>node</span><span class='layout'>)</span>-<a name="line-476"></a> <span class='keyword'>where</span>-<a name="line-477"></a> <span class='varid'>nodeNew</span> <span class='keyglyph'>=</span> <span class='varid'>setAttribute</span> <span class='varid'>nameExcl</span> <span class='layout'>(</span><span class='varid'>unwords</span> <span class='varid'>exclAcc</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>setAttribute</span> <span class='varid'>nameExt</span> <span class='layout'>(</span><span class='varid'>unwords</span> <span class='varid'>extAcc</span><span class='layout'>)</span> <span class='varid'>node</span>-<a name="line-478"></a> <span class='varid'>exclAcc</span> <span class='keyglyph'>=</span> <span class='varid'>exclNew</span> <span class='varop'>++</span> <span class='varid'>excl</span>-<a name="line-479"></a> <span class='varid'>extAcc</span> <span class='keyglyph'>=</span> <span class='varid'>extNew</span> <span class='varop'>++</span> <span class='varid'>ext</span>-<a name="line-480"></a> <span class='varid'>exclNew</span> <span class='keyglyph'>=</span> <span class='varid'>extNew</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>parsePreList</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>nameExcl</span> <span class='str'>""</span><span class='layout'>)</span>-<a name="line-481"></a> <span class='varid'>extNew</span> <span class='keyglyph'>=</span> <span class='varid'>parsePreList</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>nameExt</span> <span class='str'>""</span>-<a name="line-482"></a> <span class='layout'>(</span><span class='varid'>nameExcl</span><span class='layout'>,</span>-<a name="line-483"></a> <span class='varid'>nameExt</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>namespaceUri</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>xsltUri</span>-<a name="line-484"></a> <span class='keyword'>then</span> <span class='layout'>(</span><span class='varid'>xsltExlcudeResultPrefixes</span> <span class='layout'>,</span> <span class='varid'>xsltExtensionElementPrefixes</span> <span class='layout'>)</span>-<a name="line-485"></a> <span class='keyword'>else</span> <span class='layout'>(</span><span class='varid'>xsltExlcudeResultPrefixesLRE</span><span class='layout'>,</span> <span class='varid'>xsltExtensionElementPrefixesLRE</span><span class='layout'>)</span>-<a name="line-486"></a>-<a name="line-487"></a><span class='comment'>-- parse a prefix list, create a list of uris: </span>-<a name="line-488"></a><span class='comment'>-- "pre1 pre2 pre3" -> ["pre1.uri","pre2.uri","pre3.uri"]</span>-<a name="line-489"></a>-<a name="line-490"></a><a name="parsePreList"></a><span class='definition'>parsePreList</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</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>-<a name="line-491"></a><span class='definition'>parsePreList</span> <span class='varid'>uris</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>lookupPrefix</span> <span class='varid'>uris</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>words</span>-<a name="line-492"></a>-<a name="line-493"></a><span class='comment'>-- -----------------------------------</span>-<a name="line-494"></a><span class='comment'>-- Extraction of contextual Information from an XML-Node</span>-<a name="line-495"></a>-<a name="line-496"></a><a name="extractAddUris"></a><span class='definition'>extractAddUris</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>UriMapping</span>-<a name="line-497"></a><span class='definition'>extractAddUris</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> -<a name="line-498"></a> <span class='layout'>(</span><span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>filter</span> <span class='layout'>(</span><span class='varop'>`notElem`</span> <span class='varid'>exclUris</span><span class='layout'>)</span><span class='layout'>)</span><span class='varop'>><</span><span class='varid'>node</span>-<a name="line-499"></a> <span class='keyword'>where</span>-<a name="line-500"></a> <span class='varid'>exclUris</span> <span class='keyglyph'>=</span> <span class='varid'>words</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltExlcudeResultPrefixesLRE</span> <span class='str'>""</span>-<a name="line-501"></a>-<a name="line-502"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-283"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-284"></a><span class='comment'>-- Assembling of the entire stylesheet</span>+<a name="line-285"></a>+<a name="line-286"></a><a name="assembleStylesheet"></a><span class='definition'>assembleStylesheet</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>CompiledStylesheet</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>CompiledStylesheet</span>+<a name="line-287"></a><span class='definition'>assembleStylesheet</span> <span class='varid'>xslNode</span> <span class='varid'>imports</span> <span class='keyglyph'>=</span>+<a name="line-288"></a> <span class='conid'>CompStylesheet</span> <span class='varid'>matchRules</span> <span class='varid'>namedRules</span> <span class='varid'>variables</span> <span class='varid'>attsets</span> <span class='varid'>strips</span> <span class='varid'>aliases</span>+<a name="line-289"></a> <span class='keyword'>where</span> +<a name="line-290"></a> <span class='comment'>-- entire contents:</span>+<a name="line-291"></a> <span class='layout'>(</span><span class='varid'>namedRules</span><span class='layout'>,</span> +<a name="line-292"></a> <span class='varid'>matchRules</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>assembleRules</span> <span class='varid'>ruleElems</span> <span class='varid'>importedMatchRules</span> <span class='varid'>importedNamedRules</span>+<a name="line-293"></a> <span class='varid'>variables</span> <span class='keyglyph'>=</span> <span class='varid'>assembleVariables</span> <span class='varid'>varElems</span> <span class='varid'>importedVariables</span>+<a name="line-294"></a> <span class='varid'>attsets</span> <span class='keyglyph'>=</span> <span class='varid'>assembleAttrSets</span> <span class='varid'>attsetElems</span> <span class='varid'>importedAttribSets</span>+<a name="line-295"></a> <span class='varid'>strips</span> <span class='keyglyph'>=</span> <span class='varid'>assembleStrips</span> <span class='varid'>stripElems</span> <span class='varid'>preserveElems</span> <span class='varid'>importedStrips</span>+<a name="line-296"></a> <span class='varid'>aliases</span> <span class='keyglyph'>=</span> <span class='varid'>assembleAliases</span> <span class='varid'>nsAliasElems</span> <span class='varid'>importedAliases</span>+<a name="line-297"></a>+<a name="line-298"></a> <span class='comment'>-- element content:</span>+<a name="line-299"></a> <span class='layout'>(</span><span class='varid'>nsAliasElems</span><span class='layout'>,</span> <span class='sel'>_r5</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltNamespaceAlias</span><span class='layout'>)</span> <span class='varid'>r4</span>+<a name="line-300"></a> <span class='layout'>(</span><span class='varid'>ruleElems</span><span class='layout'>,</span> <span class='varid'>r4</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltTemplate</span><span class='layout'>)</span> <span class='varid'>r3</span>+<a name="line-301"></a> <span class='layout'>(</span><span class='varid'>varElems</span><span class='layout'>,</span> <span class='varid'>r3</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>node</span> <span class='keyglyph'>-></span> <span class='varid'>isElemType</span> <span class='varid'>xsltVariable</span> <span class='varid'>node</span> <span class='varop'>||</span> <span class='varid'>isElemType</span> <span class='varid'>xsltParam</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varid'>r2</span>+<a name="line-302"></a> <span class='layout'>(</span><span class='varid'>attsetElems</span><span class='layout'>,</span> <span class='varid'>r2</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltAttributeSet</span><span class='layout'>)</span> <span class='varid'>r1</span>+<a name="line-303"></a> <span class='layout'>(</span><span class='varid'>preserveElems</span><span class='layout'>,</span> <span class='varid'>r1</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltPreserveSpace</span><span class='layout'>)</span> <span class='varid'>r0</span>+<a name="line-304"></a> <span class='layout'>(</span><span class='varid'>stripElems</span><span class='layout'>,</span> <span class='varid'>r0</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltStripSpace</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>xslNode</span>+<a name="line-305"></a>+<a name="line-306"></a> <span class='comment'>-- imported stuff:</span>+<a name="line-307"></a> <span class='varid'>importedAttribSets</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>getAttributeSets</span> <span class='varid'>imports</span>+<a name="line-308"></a> <span class='varid'>importedVariables</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>getVariables</span> <span class='varid'>revImports</span>+<a name="line-309"></a> <span class='varid'>importedNamedRules</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>getNamedRules</span> <span class='varid'>revImports</span>+<a name="line-310"></a> <span class='varid'>importedMatchRules</span> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>getMatchRules</span> <span class='varid'>revImports</span>+<a name="line-311"></a> <span class='varid'>importedStrips</span> <span class='keyglyph'>=</span> <span class='varid'>concatMap</span> <span class='varid'>getStrips</span> <span class='varid'>revImports</span>+<a name="line-312"></a> <span class='varid'>importedAliases</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>getAliases</span> <span class='varid'>revImports</span>+<a name="line-313"></a> <span class='varid'>revImports</span> <span class='keyglyph'>=</span> <span class='varid'>reverse</span> <span class='varid'>imports</span>+<a name="line-314"></a>+<a name="line-315"></a><a name="assembleRules"></a><span class='definition'>assembleRules</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='conid'>NamedRule</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='conid'>NamedRule</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-316"></a><span class='definition'>assembleRules</span> <span class='varid'>nodes</span> <span class='varid'>importedMatches</span> <span class='varid'>importedProcs</span> <span class='keyglyph'>=</span>+<a name="line-317"></a> <span class='layout'>(</span><span class='varid'>resProcs</span><span class='layout'>,</span> <span class='varid'>resMatches</span><span class='layout'>)</span>+<a name="line-318"></a> <span class='keyword'>where</span>+<a name="line-319"></a> +<a name="line-320"></a> <span class='comment'>-- matches: </span>+<a name="line-321"></a> <span class='varid'>resMatches</span> <span class='keyglyph'>=</span> <span class='varid'>localMatches</span> <span class='varop'>++</span> <span class='varid'>importedMatches</span>+<a name="line-322"></a> <span class='varid'>localMatches</span> <span class='keyglyph'>=</span> <span class='varid'>reverse</span> <span class='varop'>$</span> <span class='varid'>sortBy</span> <span class='varid'>cmp</span> <span class='varid'>matches</span>+<a name="line-323"></a> <span class='varid'>cmp</span> <span class='varid'>rulA</span> <span class='varid'>rulB</span> <span class='keyglyph'>=</span> <span class='varid'>compare</span> <span class='layout'>(</span><span class='varid'>getRulePrio</span> <span class='varid'>rulA</span><span class='layout'>)</span> <span class='layout'>(</span><span class='varid'>getRulePrio</span> <span class='varid'>rulB</span><span class='layout'>)</span>+<a name="line-324"></a>+<a name="line-325"></a> <span class='comment'>-- procedures:</span>+<a name="line-326"></a> <span class='varid'>resProcs</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>unions</span> <span class='layout'>(</span><span class='varid'>localProcs</span><span class='conop'>:</span><span class='varid'>importedProcs</span><span class='layout'>)</span>+<a name="line-327"></a> <span class='varid'>localProcs</span> <span class='keyglyph'>=</span> <span class='varid'>foldl</span> <span class='varid'>ins</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span> <span class='varid'>procs</span>+<a name="line-328"></a> <span class='varid'>ins</span> <span class='varid'>map'</span> <span class='varid'>rule</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>insertWith</span> <span class='layout'>(</span><span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"named-rule "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getRuleName</span> <span class='varid'>rule</span><span class='layout'>)</span> <span class='varop'>++</span><span class='str'>" is already defined on this level"</span><span class='layout'>)</span>+<a name="line-329"></a> <span class='layout'>(</span><span class='varid'>getRuleName</span> <span class='varid'>rule</span><span class='layout'>)</span> <span class='varid'>rule</span> <span class='varid'>map'</span>+<a name="line-330"></a>+<a name="line-331"></a> <span class='comment'>-- compile all xsl:template's:</span>+<a name="line-332"></a> <span class='layout'>(</span><span class='varid'>procs</span><span class='layout'>,</span> <span class='varid'>matches</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='varid'>catMaybes</span> <span class='varop'>***</span> <span class='varid'>concat</span> <span class='varop'>$</span> <span class='varid'>unzip</span> <span class='varop'>$</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>compileRule</span> <span class='varid'>importedMatches</span><span class='layout'>)</span> <span class='varid'>nodes</span>+<a name="line-333"></a>+<a name="line-334"></a><a name="assembleVariables"></a><span class='definition'>assembleVariables</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='layout'>(</span><span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='conid'>Variable</span><span class='layout'>)</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='conid'>Variable</span><span class='layout'>)</span> +<a name="line-335"></a><span class='definition'>assembleVariables</span> <span class='varid'>varElems</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>unions</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>compileVariables</span> <span class='varid'>varElems</span><span class='conop'>:</span><span class='layout'>)</span>+<a name="line-336"></a>+<a name="line-337"></a><a name="assembleAttrSets"></a><span class='definition'>assembleAttrSets</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='keyglyph'>[</span><span class='conid'>AttributeSet</span><span class='keyglyph'>]</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='keyglyph'>[</span><span class='conid'>AttributeSet</span><span class='keyglyph'>]</span>+<a name="line-338"></a><span class='definition'>assembleAttrSets</span> <span class='varid'>attsetElems</span> <span class='keyglyph'>=</span>+<a name="line-339"></a> <span class='varid'>foldr</span> <span class='layout'>(</span><span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>unionWith</span> <span class='layout'>(</span><span class='varop'>++</span><span class='layout'>)</span><span class='layout'>)</span> <span class='varid'>localAttribSets</span>+<a name="line-340"></a> <span class='keyword'>where</span>+<a name="line-341"></a> <span class='varid'>localAttribSets</span> <span class='keyglyph'>=</span> <span class='varid'>foldr</span> <span class='varid'>insertAs</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span>+<a name="line-342"></a> <span class='varop'>$</span> <span class='varid'>map</span> <span class='varid'>compileAttributeSet</span> <span class='varid'>attsetElems</span>+<a name="line-343"></a> <span class='varid'>insertAs</span> <span class='keyword'>as</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>AttribSet</span> <span class='varid'>name</span> <span class='keyword'>_</span> <span class='keyword'>_</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>insertWith</span> <span class='layout'>(</span><span class='varop'>++</span><span class='layout'>)</span> <span class='varid'>name</span> <span class='keyglyph'>[</span><span class='keyword'>as</span><span class='keyglyph'>]</span>+<a name="line-344"></a>+<a name="line-345"></a><a name="assembleStrips"></a><span class='definition'>assembleStrips</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span><span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Strips</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Strips</span><span class='keyglyph'>]</span>+<a name="line-346"></a><span class='definition'>assembleStrips</span> <span class='varid'>stripElems</span> <span class='varid'>preserveElems</span> <span class='keyglyph'>=</span>+<a name="line-347"></a> <span class='layout'>(</span><span class='varid'>localStrips</span> <span class='conop'>:</span><span class='layout'>)</span>+<a name="line-348"></a> <span class='keyword'>where</span>+<a name="line-349"></a> <span class='varid'>localStrips</span> <span class='keyglyph'>=</span> <span class='varid'>feedStrips</span> <span class='layout'>(</span><span class='varid'>concatMap</span> <span class='varid'>compileStrips</span> <span class='varid'>stripElems</span><span class='layout'>)</span>+<a name="line-350"></a> <span class='varop'>$</span> <span class='varid'>feedPreserves</span> <span class='layout'>(</span><span class='varid'>concatMap</span> <span class='varid'>compilePreserves</span> <span class='varid'>preserveElems</span><span class='layout'>)</span>+<a name="line-351"></a> <span class='varop'>$</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span>+<a name="line-352"></a>+<a name="line-353"></a><a name="assembleAliases"></a><span class='definition'>assembleAliases</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>NSAliasing</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>NSAliasing</span>+<a name="line-354"></a><span class='definition'>assembleAliases</span> <span class='varid'>nsAliasElems</span> <span class='keyglyph'>=</span>+<a name="line-355"></a> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>unions</span> <span class='varop'>.</span> <span class='layout'>(</span><span class='varid'>localAliases</span><span class='conop'>:</span><span class='layout'>)</span>+<a name="line-356"></a> <span class='keyword'>where</span>+<a name="line-357"></a> <span class='varid'>localAliases</span> <span class='keyglyph'>=</span> <span class='varid'>foldr</span> <span class='varid'>addAlias'</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span> <span class='varid'>nsAliasElems</span>+<a name="line-358"></a> <span class='varid'>addAlias'</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>uncurry</span> <span class='layout'>(</span><span class='varid'>addAlias</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>compileAlias</span> <span class='varid'>node</span>+<a name="line-359"></a>+<a name="line-360"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-361"></a>+<a name="line-362"></a><a name="compileRule"></a><span class='comment'>-- compile a rule from an xsl:template element.</span>+<a name="line-363"></a><span class='comment'>-- The resulting rule can either be a one or more match rule or a named rule, or both.</span>+<a name="line-364"></a><span class='comment'>-- The first argument is needed for xsl:apply-imports and contains</span>+<a name="line-365"></a><span class='comment'>-- a list of all subsequently imported rules</span>+<a name="line-366"></a><span class='definition'>compileRule</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>Maybe</span> <span class='conid'>NamedRule</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span><span class='layout'>)</span>+<a name="line-367"></a><span class='definition'>compileRule</span> <span class='varid'>imports</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>+<a name="line-368"></a>+<a name="line-369"></a> <span class='keyword'>if</span> <span class='varid'>isNothing</span> <span class='varid'>match</span> <span class='varop'>&&</span> <span class='varid'>isNothing</span> <span class='varid'>name</span> +<a name="line-370"></a> <span class='keyword'>then</span> <span class='varid'>error</span> <span class='str'>"Error: Bogus rule (xsl:template) with neither match nor name attribute is illegal"</span>+<a name="line-371"></a>+<a name="line-372"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>isJust</span> <span class='varid'>mode</span> <span class='varop'>&&</span> <span class='varid'>isNothing</span> <span class='varid'>match</span> +<a name="line-373"></a> <span class='keyword'>then</span> <span class='varid'>error</span> <span class='str'>"Error: Bogus mode attribute on none-match rule is illegal"</span>+<a name="line-374"></a>+<a name="line-375"></a> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='varid'>isJust</span> <span class='varid'>priority</span> <span class='varop'>&&</span> <span class='varid'>isNothing</span> <span class='varid'>match</span> +<a name="line-376"></a> <span class='keyword'>then</span> <span class='varid'>error</span> <span class='str'>"Error: Bogus priority attribute on none-match rule is illegal"</span>+<a name="line-377"></a>+<a name="line-378"></a> <span class='keyword'>else</span> +<a name="line-379"></a> <span class='layout'>(</span>+<a name="line-380"></a> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='conid'>NamRule</span> <span class='varid'>n</span> <span class='varid'>params</span> <span class='varid'>template</span><span class='layout'>)</span> <span class='varid'>name</span>+<a name="line-381"></a> <span class='layout'>,</span> <span class='varid'>concat</span> <span class='varop'>$</span> <span class='varid'>maybeToList</span> <span class='varop'>$</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>assembleMatchRule</span> <span class='varid'>priority</span> <span class='varid'>mode</span> <span class='varid'>imports</span> <span class='varid'>params</span> <span class='varid'>template</span><span class='layout'>)</span> <span class='varid'>match</span>+<a name="line-382"></a> <span class='layout'>)</span> +<a name="line-383"></a>+<a name="line-384"></a> <span class='keyword'>where</span>+<a name="line-385"></a> <span class='varid'>match</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>parseMatch</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltMatch</span>+<a name="line-386"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>+<a name="line-387"></a> <span class='varid'>priority</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='varid'>read</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltPriority</span>+<a name="line-388"></a> <span class='varid'>mode</span> <span class='keyglyph'>=</span> <span class='varid'>liftM</span> <span class='layout'>(</span><span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>tryFetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltMode</span>+<a name="line-389"></a> <span class='varid'>template</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='varid'>content</span>+<a name="line-390"></a> <span class='varid'>params</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>compileVariable</span> <span class='varid'>paramsXml</span>+<a name="line-391"></a> <span class='layout'>(</span><span class='varid'>paramsXml</span><span class='layout'>,</span> <span class='varid'>content</span><span class='layout'>)</span> <span class='keyglyph'>=</span>+<a name="line-392"></a> <span class='varid'>partition</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltParam</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>+<a name="line-393"></a>+<a name="line-394"></a><a name="assembleMatchRule"></a><span class='definition'>assembleMatchRule</span> <span class='keyglyph'>::</span> <span class='conid'>Maybe</span> <span class='conid'>Float</span> <span class='keyglyph'>-></span> <span class='conid'>Maybe</span> <span class='conid'>ExName</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>Variable</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Template</span> <span class='keyglyph'>-></span> <span class='conid'>MatchExpr</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>MatchRule</span><span class='keyglyph'>]</span>+<a name="line-395"></a><span class='definition'>assembleMatchRule</span> <span class='varid'>pri</span> <span class='varid'>m</span> <span class='varid'>imp</span> <span class='varid'>par</span> <span class='varid'>tmpl</span> <span class='varid'>mtch</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='conid'>MatchExpr</span> <span class='varid'>expr</span><span class='layout'>)</span> <span class='keyglyph'>=</span>+<a name="line-396"></a> <span class='keyword'>if</span> <span class='varid'>isJust</span> <span class='varid'>pri</span>+<a name="line-397"></a> <span class='keyword'>then</span> <span class='varid'>return</span> <span class='varop'>$</span> <span class='conid'>MatRule</span> <span class='varid'>mtch</span> <span class='layout'>(</span><span class='varid'>fromJust</span> <span class='varid'>pri</span><span class='layout'>)</span> <span class='varid'>m</span> <span class='varid'>imp</span> <span class='varid'>par</span> <span class='varid'>tmpl</span>+<a name="line-398"></a> <span class='keyword'>else</span> <span class='varid'>map</span> <span class='varid'>expand</span> <span class='varop'>$</span> <span class='varid'>splitMatchByPrio</span> <span class='varid'>expr</span>+<a name="line-399"></a> <span class='keyword'>where</span> +<a name="line-400"></a> <span class='varid'>expand</span> <span class='layout'>(</span><span class='varid'>pri'</span><span class='layout'>,</span> <span class='varid'>mtch'</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='conid'>MatRule</span> <span class='layout'>(</span><span class='conid'>MatchExpr</span> <span class='varid'>mtch'</span><span class='layout'>)</span> <span class='varid'>pri'</span> <span class='varid'>m</span> <span class='varid'>imp</span> <span class='varid'>par</span> <span class='varid'>tmpl</span>+<a name="line-401"></a>+<a name="line-402"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-403"></a>+<a name="line-404"></a><a name="compileVariables"></a><span class='definition'>compileVariables</span> <span class='keyglyph'>::</span> <span class='keyglyph'>[</span><span class='conid'>XmlTree</span><span class='keyglyph'>]</span> <span class='keyglyph'>-></span> <span class='conid'>Map</span> <span class='conid'>ExName</span> <span class='conid'>Variable</span>+<a name="line-405"></a><span class='definition'>compileVariables</span> <span class='varid'>nodes</span> <span class='keyglyph'>=</span>+<a name="line-406"></a> <span class='varid'>foldl</span> <span class='varid'>insertVar</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>empty</span> <span class='varop'>$</span> <span class='varid'>varList</span>+<a name="line-407"></a> <span class='keyword'>where</span>+<a name="line-408"></a> <span class='varid'>varList</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='varid'>compileVariable</span> <span class='varop'>$</span> <span class='varid'>nodes</span>+<a name="line-409"></a> <span class='varid'>insertVar</span> <span class='varid'>map'</span> <span class='varid'>var</span> <span class='keyglyph'>=</span> <span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>insertWith</span> <span class='layout'>(</span><span class='varid'>error</span> <span class='varop'>$</span> <span class='str'>"parameter or variable "</span><span class='varop'>++</span> <span class='varid'>show</span> <span class='layout'>(</span><span class='varid'>getVarName</span> <span class='varid'>var</span><span class='layout'>)</span> <span class='varop'>++</span><span class='str'>" is already defined on this level"</span><span class='layout'>)</span>+<a name="line-410"></a> <span class='layout'>(</span><span class='varid'>getVarName</span> <span class='varid'>var</span><span class='layout'>)</span> <span class='varid'>var</span> <span class='varid'>map'</span>+<a name="line-411"></a>+<a name="line-412"></a><a name="compileVariable"></a><span class='definition'>compileVariable</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>Variable</span>+<a name="line-413"></a><span class='definition'>compileVariable</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>+<a name="line-414"></a> <span class='conid'>MkVar</span> <span class='varid'>modus</span> <span class='varid'>name</span> <span class='varid'>exprOrRtf</span>+<a name="line-415"></a> <span class='keyword'>where</span> +<a name="line-416"></a> <span class='varid'>modus</span> <span class='keyglyph'>=</span> <span class='varid'>isElemType</span> <span class='varid'>xsltParam</span> <span class='varid'>node</span>+<a name="line-417"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>+<a name="line-418"></a> <span class='varid'>exprOrRtf</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='varid'>hasAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span> <span class='varop'>||</span> <span class='varid'>null</span> <span class='layout'>(</span><span class='varid'>getChildren</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-419"></a> <span class='keyword'>then</span> <span class='conid'>Left</span> <span class='varop'>$</span> <span class='varid'>parseExpr</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span> <span class='str'>"''"</span>+<a name="line-420"></a> <span class='keyword'>else</span> <span class='conid'>Right</span> <span class='varop'>$</span> <span class='varid'>compileTemplate</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>+<a name="line-421"></a>+<a name="line-422"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-423"></a>+<a name="line-424"></a><a name="compileAttributeSet"></a><span class='definition'>compileAttributeSet</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>AttributeSet</span>+<a name="line-425"></a><span class='definition'>compileAttributeSet</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>+<a name="line-426"></a> <span class='conid'>AttribSet</span> <span class='varid'>name</span> <span class='varid'>usedsets</span> <span class='varid'>template</span>+<a name="line-427"></a> <span class='keyword'>where</span>+<a name="line-428"></a> <span class='varid'>name</span> <span class='keyglyph'>=</span> <span class='varid'>parseExName</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltName</span>+<a name="line-429"></a> <span class='varid'>usedsets</span> <span class='keyglyph'>=</span> <span class='conid'>UsedAttribSets</span> <span class='varop'>$</span> <span class='varid'>parseExNames</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltUseAttributeSets</span> <span class='str'>""</span>+<a name="line-430"></a> <span class='varid'>template</span> <span class='keyglyph'>=</span> <span class='varid'>compileTemplate</span> <span class='varop'>$</span> <span class='varid'>filter</span> <span class='layout'>(</span><span class='varid'>isElemType</span> <span class='varid'>xsltAttribute</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>getChildren</span> <span class='varid'>node</span>+<a name="line-431"></a>+<a name="line-432"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-433"></a>+<a name="line-434"></a><a name="compileSortKey"></a><span class='definition'>compileSortKey</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>SortKey</span>+<a name="line-435"></a><span class='definition'>compileSortKey</span> <span class='varid'>node</span> <span class='keyglyph'>=</span>+<a name="line-436"></a> <span class='conid'>SortK</span> <span class='varid'>expr</span> <span class='varid'>dataType</span> <span class='varid'>order</span>+<a name="line-437"></a> <span class='keyword'>where</span>+<a name="line-438"></a> <span class='varid'>expr</span> <span class='keyglyph'>=</span> <span class='varid'>parseStringExpr</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltSelect</span> <span class='str'>"."</span>+<a name="line-439"></a> <span class='varid'>dataType</span> <span class='keyglyph'>=</span> <span class='varid'>parseAVT</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltDataType</span> <span class='str'>"text"</span>+<a name="line-440"></a> <span class='varid'>order</span> <span class='keyglyph'>=</span> <span class='varid'>parseAVT</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltOrder</span> <span class='str'>"ascending"</span>+<a name="line-441"></a>+<a name="line-442"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-443"></a>+<a name="line-444"></a><a name="parseNTests"></a><span class='definition'>parseNTests</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</span> <span class='keyglyph'>-></span> <span class='conid'>String</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>NTest</span><span class='keyglyph'>]</span>+<a name="line-445"></a><span class='definition'>parseNTests</span> <span class='varid'>uris</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>parseNTest</span> <span class='varid'>uris</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>words</span>+<a name="line-446"></a>+<a name="line-447"></a><a name="compileStrips"></a><span class='definition'>compileStrips</span><span class='layout'>,</span><span class='varid'>compilePreserves</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='keyglyph'>[</span><span class='conid'>NTest</span><span class='keyglyph'>]</span>+<a name="line-448"></a><span class='definition'>compileStrips</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='varid'>parseNTests</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltElements</span>+<a name="line-449"></a><a name="compilePreserves"></a><span class='definition'>compilePreserves</span> <span class='keyglyph'>=</span> <span class='varid'>compileStrips</span>+<a name="line-450"></a>+<a name="line-451"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-452"></a>+<a name="line-453"></a><a name="compileAlias"></a><span class='definition'>compileAlias</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='conid'>String</span><span class='layout'>,</span> <span class='conid'>String</span><span class='layout'>)</span>+<a name="line-454"></a><span class='definition'>compileAlias</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> +<a name="line-455"></a> <span class='layout'>(</span><span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltStylesheetPrefix</span><span class='layout'>,</span> <span class='varid'>fetchAttribute</span> <span class='varid'>node</span> <span class='varid'>xsltResultPrefix</span><span class='layout'>)</span>+<a name="line-456"></a>+<a name="line-457"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-458"></a><span class='comment'>-- Document level preprocessing</span>+<a name="line-459"></a>+<a name="line-460"></a><a name="prepareXSLTDocument"></a><span class='definition'>prepareXSLTDocument</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>+<a name="line-461"></a><span class='definition'>prepareXSLTDocument</span> <span class='keyglyph'>=</span> <span class='varid'>expandExEx</span> <span class='varop'>.</span> <span class='varid'>expandNSDecls</span> <span class='varop'>.</span> <span class='varid'>stripStylesheet</span> <span class='varop'>.</span> <span class='varid'>removePiCmt</span>+<a name="line-462"></a>+<a name="line-463"></a><a name="removePiCmt"></a><span class='definition'>removePiCmt</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>+<a name="line-464"></a><span class='definition'>removePiCmt</span> <span class='keyglyph'>=</span> <span class='varid'>fromJustErr</span> <span class='str'>"XSLT: No root element"</span> <span class='varop'>.</span> <span class='varid'>filterTree</span> <span class='layout'>(</span><span class='keyglyph'>\</span><span class='varid'>n</span> <span class='keyglyph'>-></span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isPi</span> <span class='varid'>n</span><span class='layout'>)</span> <span class='varop'>&&</span> <span class='varid'>not</span> <span class='layout'>(</span><span class='varid'>isCmt</span> <span class='varid'>n</span><span class='layout'>)</span><span class='layout'>)</span>+<a name="line-465"></a>+<a name="line-466"></a><span class='comment'>-- Expand exclude-result-prefixes AND extension-element-prefixes</span>+<a name="line-467"></a>+<a name="line-468"></a><a name="expandExEx"></a><span class='definition'>expandExEx</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>XmlTree</span>+<a name="line-469"></a><span class='definition'>expandExEx</span> <span class='keyglyph'>=</span> <span class='varid'>mapTreeCtx</span> <span class='varid'>expandExExElem</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='varid'>xsltUri</span><span class='layout'>,</span><span class='varid'>xmlNamespace</span><span class='layout'>,</span><span class='varid'>xmlnsNamespace</span><span class='keyglyph'>]</span><span class='layout'>,</span><span class='conid'>[]</span><span class='layout'>)</span>+<a name="line-470"></a>+<a name="line-471"></a><a name="expandExExElem"></a><span class='definition'>expandExExElem</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>)</span> <span class='keyglyph'>-></span> <span class='conid'>XNode</span> <span class='keyglyph'>-></span> <span class='layout'>(</span><span class='layout'>(</span><span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>,</span> <span class='keyglyph'>[</span><span class='conid'>String</span><span class='keyglyph'>]</span><span class='layout'>)</span><span class='layout'>,</span> <span class='conid'>XNode</span><span class='layout'>)</span>+<a name="line-472"></a><span class='definition'>expandExExElem</span> <span class='varid'>c</span><span class='keyglyph'>@</span><span class='layout'>(</span><span class='varid'>excl</span><span class='layout'>,</span> <span class='varid'>ext</span><span class='layout'>)</span> <span class='varid'>node</span>+<a name="line-473"></a> <span class='keyglyph'>|</span> <span class='varid'>isElem</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='layout'>(</span><span class='varid'>exclAcc</span><span class='layout'>,</span> <span class='varid'>extAcc</span><span class='layout'>)</span><span class='layout'>,</span> <span class='varid'>nodeNew</span><span class='layout'>)</span>+<a name="line-474"></a> <span class='keyglyph'>|</span> <span class='varid'>otherwise</span> <span class='keyglyph'>=</span> <span class='layout'>(</span><span class='varid'>c</span><span class='layout'>,</span> <span class='varid'>node</span><span class='layout'>)</span>+<a name="line-475"></a> <span class='keyword'>where</span>+<a name="line-476"></a> <span class='varid'>nodeNew</span> <span class='keyglyph'>=</span> <span class='varid'>setAttribute</span> <span class='varid'>nameExcl</span> <span class='layout'>(</span><span class='varid'>unwords</span> <span class='varid'>exclAcc</span><span class='layout'>)</span> <span class='varop'>$</span> <span class='varid'>setAttribute</span> <span class='varid'>nameExt</span> <span class='layout'>(</span><span class='varid'>unwords</span> <span class='varid'>extAcc</span><span class='layout'>)</span> <span class='varid'>node</span>+<a name="line-477"></a> <span class='varid'>exclAcc</span> <span class='keyglyph'>=</span> <span class='varid'>exclNew</span> <span class='varop'>++</span> <span class='varid'>excl</span>+<a name="line-478"></a> <span class='varid'>extAcc</span> <span class='keyglyph'>=</span> <span class='varid'>extNew</span> <span class='varop'>++</span> <span class='varid'>ext</span>+<a name="line-479"></a> <span class='varid'>exclNew</span> <span class='keyglyph'>=</span> <span class='varid'>extNew</span> <span class='varop'>++</span> <span class='layout'>(</span><span class='varid'>parsePreList</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>nameExcl</span> <span class='str'>""</span><span class='layout'>)</span>+<a name="line-480"></a> <span class='varid'>extNew</span> <span class='keyglyph'>=</span> <span class='varid'>parsePreList</span><span class='varop'>><</span><span class='varid'>node</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>nameExt</span> <span class='str'>""</span>+<a name="line-481"></a> <span class='layout'>(</span><span class='varid'>nameExcl</span><span class='layout'>,</span>+<a name="line-482"></a> <span class='varid'>nameExt</span><span class='layout'>)</span> <span class='keyglyph'>=</span> <span class='keyword'>if</span> <span class='layout'>(</span><span class='varid'>namespaceUri</span> <span class='varop'>$</span> <span class='varid'>fromJust</span> <span class='varop'>$</span> <span class='varid'>getElemName</span> <span class='varid'>node</span><span class='layout'>)</span> <span class='varop'>==</span> <span class='varid'>xsltUri</span>+<a name="line-483"></a> <span class='keyword'>then</span> <span class='layout'>(</span><span class='varid'>xsltExlcudeResultPrefixes</span> <span class='layout'>,</span> <span class='varid'>xsltExtensionElementPrefixes</span> <span class='layout'>)</span>+<a name="line-484"></a> <span class='keyword'>else</span> <span class='layout'>(</span><span class='varid'>xsltExlcudeResultPrefixesLRE</span><span class='layout'>,</span> <span class='varid'>xsltExtensionElementPrefixesLRE</span><span class='layout'>)</span>+<a name="line-485"></a>+<a name="line-486"></a><span class='comment'>-- parse a prefix list, create a list of uris: </span>+<a name="line-487"></a><span class='comment'>-- "pre1 pre2 pre3" -> ["pre1.uri","pre2.uri","pre3.uri"]</span>+<a name="line-488"></a>+<a name="line-489"></a><a name="parsePreList"></a><span class='definition'>parsePreList</span> <span class='keyglyph'>::</span> <span class='conid'>UriMapping</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>+<a name="line-490"></a><span class='definition'>parsePreList</span> <span class='varid'>uris</span> <span class='keyglyph'>=</span> <span class='varid'>map</span> <span class='layout'>(</span><span class='varid'>lookupPrefix</span> <span class='varid'>uris</span><span class='layout'>)</span> <span class='varop'>.</span> <span class='varid'>words</span>+<a name="line-491"></a>+<a name="line-492"></a><span class='comment'>-- -----------------------------------</span>+<a name="line-493"></a><span class='comment'>-- Extraction of contextual Information from an XML-Node</span>+<a name="line-494"></a>+<a name="line-495"></a><a name="extractAddUris"></a><span class='definition'>extractAddUris</span> <span class='keyglyph'>::</span> <span class='conid'>XmlTree</span> <span class='keyglyph'>-></span> <span class='conid'>UriMapping</span>+<a name="line-496"></a><span class='definition'>extractAddUris</span> <span class='varid'>node</span> <span class='keyglyph'>=</span> +<a name="line-497"></a> <span class='layout'>(</span><span class='conid'>Map</span><span class='varop'>.</span><span class='varid'>filter</span> <span class='layout'>(</span><span class='varop'>`notElem`</span> <span class='varid'>exclUris</span><span class='layout'>)</span><span class='layout'>)</span><span class='varop'>><</span><span class='varid'>node</span>+<a name="line-498"></a> <span class='keyword'>where</span>+<a name="line-499"></a> <span class='varid'>exclUris</span> <span class='keyglyph'>=</span> <span class='varid'>words</span> <span class='varop'>$</span> <span class='varid'>fetchAttributeWDefault</span> <span class='varid'>node</span> <span class='varid'>xsltExlcudeResultPrefixesLRE</span> <span class='str'>""</span>+<a name="line-500"></a>+<a name="line-501"></a><span class='comment'>-- -----------------------------------</span> </pre></body> </html>
doc/index.html view
@@ -1,12 +1,12 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head>- <title>Haskell XML Toolbox 8.2.0</title>+ <title>Haskell XML Toolbox 8.3.0</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body style="background-color: #ffffff;">- <h1>Haskell XML Toolbox 8.2.0</h1>+ <h1>Haskell XML Toolbox 8.3.0</h1> <h3>Contents</h3> <ul>@@ -159,7 +159,7 @@ <p> The description of the development of the <a href="http://www.w3.org/TR/xpath">XPath</a> modules is described (in german) in <em>Konzeption und Implementierung- eines XPath-Moduls für die Haskell XML Toolbox</em>+ eines XPath-Moduls für die Haskell XML Toolbox</em> (<a href="./hxpath/diplomarbeit.pdf">PDF-document</a>). </p> @@ -185,8 +185,8 @@ <a name="down"></a> <h3>Downloads</h3> <p>- <a href="hxt-8.2.0.tar.gz">Haskell XML Toolbox 8.2.0</a>,- released 2008-11-20:+ <a href="hxt-8.3.0.tar.gz">Haskell XML Toolbox 8.3.0</a>,+ released 2009-03-18: </p> <ul> <li>This version works with ghc 6.10 with cabal 1.6.@@ -225,13 +225,12 @@ <p> Before installing this version, install the curl and tagsoup modules. For a quick install with Cabal execute the following commands in- <tt>.../HXT-8.2.0</tt>+ <tt>.../HXT-8.3.0</tt> </p> <pre>- make setup- ./setup configure --ghc- ./setup build- ./setup install # with root privileges+ cabal configure+ cabal build+ sudo cabal install --global </pre> <p> A quick test of the example programs:@@ -252,6 +251,27 @@ <a name="change"></a> <h3>Change History</h3> <ul>+ <li>In <a href="hxt-8.3.0.tar.gz">Version 8.3.0</a>+ <ul>+ <li>+ New output option "a_no_empty_elements" for preventing+ the XML short format "<name/>" for HTML elements,+ like "script", "p", and others. Especially a script tag+ of the form "<script href="..."/>" does not work in+ firefox.+ Turning on this option gives the form "<script href="..."></script>".+ </li>+ <li>+ An input option "a_strict_input" for bytestring input of+ files added. Lazy input, especially when using the tagsoup+ parser, can lead to error messages like "too many open+ files" when processing a whole bunsh of documents.+ </li>+ <li>Internal representation of qualified names changed to gain+ more space efficency.+ </li>+ </ul>+ </li> <li>In <a href="hxt-8.2.0.tar.gz">Version 8.2.0</a> <ul> <li>@@ -512,7 +532,7 @@ The filter package will not be actively developed any more. Please move to the arrow version for long term projects. Installation works with cabal in the usual way.- Download archive is <a href="hxt-filter-8.2.0.tar.gz">hxt-filter-8.2.0.tar.gz</a>,+ Download archive is <a href="hxt-filter-8.3.0.tar.gz">hxt-filter-8.3.0.tar.gz</a>, <em><a href="./hdoc-filter/index.html">HXT Filter API Documentation</a></em> with source links is availabe as well as a darcs repository under <a href="http://darcs2.fh-wedel.de/repos/hxt-filter/">http://darcs2.fh-wedel.de/repos/hxt-filter</a>.@@ -570,7 +590,7 @@ </a> </td> </tr>- <tr><td><i>Last modified: 2008-11-20</i></td><td> </td></tr>+ <tr><td><i>Last modified: 2009-03-18</i></td><td> </td></tr> </table> </body>
examples/arrows/Makefile view
@@ -9,7 +9,7 @@ hrelaxng \ RelaxTestSuite \ AGentleIntroductionToHXT \- performance+ performance RegexXMLSchema HXT_HOME = ../.. PKGFLAGS =
+ examples/arrows/RegexXMLSchema/Makefile view
@@ -0,0 +1,128 @@+# $Id: Makefile,v 1.9 2006/11/11 15:36:03 hxml Exp $++HXT_HOME = ../../..+PKGFLAGS = +GHCFLAGS = -Wall -O2+GHC = ghc $(GHCFLAGS) $(PKGFLAGS)++DIST = $(HXT_HOME)/dist/examples/arrows+DIST_DIR = $(DIST)/RegexXMLSchema++CNT = 3++ropts = +RTS -s -RTS ++prog = ./REtest+prog2 = ./Lines+prog3 = ./RElines+prog4 = ./Words+prog5 = ./REwords+prog0 = ./Copy++progs = $(prog) $(prog0) $(prog2) $(prog3) $(prog4) $(prog5)++all : $(progs)++$(prog) : $(prog).hs+ $(GHC) --make -o $@ $<++local :+ $(GHC) --make -o $(prog) -fglasgow-exts -ignore-package hxt -i../../../src $(prog).hs++$(prog2) : $(prog)+ ln -f $(prog) $(prog2)++$(prog3) : $(prog)+ ln -f $(prog) $(prog3)++$(prog4) : $(prog)+ ln -f $(prog) $(prog4)++$(prog5) : $(prog)+ ln -f $(prog) $(prog5)++$(prog0) : $(prog)+ ln -f $(prog) $(prog0)++# generate and read documents containing a binary tree+# with 2^i leaf nodes containing the numbers 1 to 2^i+# for i up to at least 22 (8M XML elements) output works fine+# for i up to 19 (1M XML elements) input works without swapping+# with i=20 swapping starts, but the program it still terminates+# the size of the XML file for i=20 is about 36Mb+# these tests have run on a box with 1Gb memory++tests = 18++test : $(prog)+ $(MAKE) genfiles tests="$(tests)"+ $(MAKE) copy tests="$(tests)"+ $(MAKE) lines tests="$(tests)"+ $(MAKE) relines tests="$(tests)"+ $(MAKE) words tests="$(tests)"+ $(MAKE) rewords tests="$(tests)"++perftest : $(prog)+ $(MAKE) test tests="2 3 10 11 12 13 14 15 16 17 18 19 20"++genfiles :+ @for i in $(tests) ; \+ do \+ echo time $(prog) $(ropts) $$i ; \+ time $(prog) $(ropts) $$i ; \+ ls -l tree-*$$i.xml ; \+ echo ; \+ done++copy :+ @for i in $(tests) ; \+ do \+ echo time $(prog0) $(ropts) $$i ; \+ time $(prog0) $(ropts) $$i ; \+ ls -l tree-*$$i.xml.copy ; \+ echo ; \+ done++lines :+ @for i in $(tests) ; \+ do \+ echo time $(prog2) $(ropts) $$i ; \+ time $(prog2) $(ropts) $$i ; \+ ls -l tree-*$$i.xml.lines ; \+ echo ; \+ done++relines :+ @for i in $(tests) ; \+ do \+ echo time $(prog3) $(ropts) $$i ; \+ time $(prog3) $(ropts) $$i ; \+ ls -l tree-*$$i.xml.relines ; \+ echo ; \+ done++words :+ @for i in $(tests) ; \+ do \+ echo time $(prog4) $(ropts) $$i ; \+ time $(prog4) $(ropts) $$i ; \+ ls -l tree-*$$i.xml.words ; \+ echo ; \+ done++rewords :+ @for i in $(tests) ; \+ do \+ echo time $(prog5) $$i ; \+ time $(prog5) $(ropts) $$i ; \+ ls -l tree-*$$i.xml.rewords ; \+ echo ; \+ done++dist :+ [ -d $(DIST_DIR) ] || mkdir -p $(DIST_DIR)+ cp Makefile REtest.hs $(DIST_DIR)++clean :+ rm -f $(progs) *.o *.hi *.xml *.xml.*+
+ examples/arrows/RegexXMLSchema/REtest.hs view
@@ -0,0 +1,172 @@+{-# LANGUAGE BangPatterns#-}++-- ----------------------------------------++module Main(main)+where++import Text.XML.HXT.Arrow+import Text.XML.HXT.RelaxNG.XmlSchema.RegexMatch++import Text.XML.HXT.DOM.Unicode+ ( unicodeToXmlEntity+ )++import Control.Monad.State.Strict hiding (when)++import Data.List+import Data.Maybe++import System.IO -- import the IO and commandline option stuff+import System.Environment++-- ----------------------------------------++main :: IO ()+main+ = do+ p <- getProgName+ al <- getArgs+ let i = if null al+ then 4+ else (read . head $ al)::Int+ main' p i+ where+ main' p' = fromMaybe main1 . lookup (pn p') $ mpt+ mpt = [ ("REtest", main1)+ , ("Copy", main2 "copy" (:[]))+ , ("Lines", main2 "lines" lines)+ , ("RElines", main2 "relines" relines)+ , ("Words", main2 "words" words)+ , ("REwords", main2 "rewords" rewords)+ ]++-- ----------------------------------------++-- generate a document containing a binary tree of 2^i leafs (= 2^(i-1) XML elements)++main1 :: Int -> IO ()+main1 i+ = do+ runX (genDoc i (fn i))+ return ()++-- ----------------------------------------++-- read a document containing a binary tree of 2^i leafs++main2 :: String -> (String -> [String]) -> Int -> IO ()+main2 ext lines' i+ = do+ hPutStrLn stderr "start processing"+ h <- openFile (fn i) ReadMode+ c <- hGetContents h+ let ls = lines' c+ o <- openFile (fn i ++ "." ++ ext) WriteMode+ mapM_ (hPutStrLn o) ls+ hClose o+ hClose h+ hPutStrLn stderr "end processing"++relines :: String -> [String]+relines = tokenize "[^\n\r]*"++rewords :: String -> [String]+rewords = tokenize "[^ \t\n\r]+"++-- ----------------------------------------++pn :: String -> String+pn = reverse . takeWhile (/= '/') . reverse++fn :: Int -> String+fn = ("tree-" ++) . (++ ".xml") . reverse . take 4 . reverse . ((replicate 4 '0') ++ ) . show++-- ----------------------------------------++genDoc :: Int -> String -> IOSArrow b XmlTree+genDoc d out = constA (mkBTree d)+ >>>+ xpickleVal xpickle+ >>>+ indentDoc+ >>>+ putDoc out++-- ----------------------------------------++type Counter a = State Int a++incr :: Counter Int+incr = do+ modify (+1)+ get++-- ----------------------------------------++data BTree = Leaf Int+ | Fork BTree BTree+ deriving (Show)++instance XmlPickler BTree where+ xpickle = xpAlt tag ps+ where+ tag (Leaf _ ) = 0+ tag (Fork _ _ ) = 1+ ps = [ xpWrap ( Leaf, \ (Leaf i) -> i)+ ( xpElem "leaf" $ xpAttr "value" $ xpickle )++ , xpWrap ( uncurry Fork, \ (Fork l r) -> (l, r))+ ( xpElem "fork" $ xpPair xpickle xpickle )+ ]++-- ----------------------------------------++mkBTree :: Int -> BTree+mkBTree depth = evalState (mkT depth) 0++mkT :: Int -> Counter BTree+mkT 0 = do+ i <- incr+ return (Leaf i)+mkT n = do+ l <- mkT (n-1)+ r <- mkT (n-1)+ return (Fork l r)++-- ----------------------------------------++-- output is done with low level ops to write the+-- document i a lasy manner+-- adding an xml pi and encoding is done "by hand"+-- latin1 decoding is the identity, so please generate the+-- docs with latin1 encoding. Here ist done even with ASCCI+-- every none ASCII char is represented by a char ref (&nnn;)++putDoc :: String -> IOStateArrow s XmlTree XmlTree+putDoc dst+ = addXmlPi+ >>>+ addXmlPiEncoding isoLatin1+ >>>+ xshow getChildren+ >>>+ arr unicodeToXmlEntity+ >>>+ arrIO (\ s -> hPutDocument (\h -> hPutStrLn h s))+ >>>+ none+ where+ isStdout = null dst || dst == "-"++ hPutDocument :: (Handle -> IO()) -> IO()+ hPutDocument action+ | isStdout+ = action stdout+ | otherwise+ = do+ handle <- openFile dst WriteMode+ action handle+ hClose handle++-- ----------------------------------------
examples/arrows/hparser/Makefile view
@@ -37,8 +37,9 @@ EX3 = ./namespace0.xml EX3a = ./namespace1.xml EX4 = ./lousy.html+EX4a = ./emptyElements.html -EX = $(wildcard example*.xml) $(wildcard lousy*.html) $(wildcard *valid*.xml *valid*.rng) $(wildcard namespace*.xml)+EX = $(wildcard example*.xml) $(wildcard lousy*.html) $(wildcard empty*.html) $(wildcard *valid*.xml *valid*.rng) $(wildcard namespace*.xml) test0 : @echo "===> a 1. simple valid document"@@ -108,6 +109,11 @@ $(prog) --indent --preserve-comment --parse-html $(EX4) @sleep 2 ; echo ; echo "===> same with lasy parser with tagsoup" ; echo ; sleep 2 $(prog) -H -T -r --indent $(EX4)+ @echo+ @echo "===> the source of another lousy html document containing empty elements" ; echo ; sleep 2+ cat $(EX4a)+ @sleep 2 ; echo ; echo "===> parser accepts this document and tries to build a document tree" ; echo ; sleep 2+ $(prog) --indent --preserve-comment --parse-html --output-html --no-empty-elements $(EX4a) @echo
+ examples/arrows/hparser/emptyElements.html view
@@ -0,0 +1,16 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">+<html>+ <head>+ <title/>+ <meta name="description" value="a lousy HTML doc with empty elements">+ <script href="javascript.js"/>+ </head>+ <body>+ <h1/>+ <h2/>+ <p/>+ <div/>+ <br/>+ <img src="pic.jpg"/>+ </body>+</html>
examples/arrows/hxpath/Makefile view
@@ -13,6 +13,9 @@ force : $(GHC) --make -o $(prog) $(prog).hs +local :+ ghc --make -o $(prog2) $(GHCFLAGS) -fglasgow-exts -ignore-package hxt -i../../../src $(prog2).hs+ $(prog) : $(prog).hs $(GHC) --make -o $@ $<
examples/arrows/hxpath/XPathShell.hs view
@@ -40,6 +40,7 @@ import Text.ParserCombinators.Parsec ( runParser ) +type NsEnv' = AssocList String String main :: IO() main@@ -50,17 +51,20 @@ then evalXPath path env (head doc) else evalLoop env doc -evalArgs :: [String] -> IO (String, NsEnv, XmlTrees)+evalArgs :: [String] -> IO (String, NsEnv', XmlTrees) evalArgs [] = evalArgs ("" : "[]" : "" : []) evalArgs [doc] = evalArgs ("" : "[]" : doc : []) evalArgs [path, doc] = evalArgs (path : "[]" : doc : [])-evalArgs [path, env, ""] = return (path, addEntries (read env) $ defaultEnv, [])+evalArgs [path, env, ""] = return (path, buildEnv env, []) evalArgs [path, env, doc] = do (d, ne) <- loadDoc doc- return (path, addEntries ne $ addEntries (read env) $ defaultEnv, d)+ return (path, addEntries ne . buildEnv $ env, d) evalArgs al = evalArgs (take 3 al) -loadDoc :: String -> IO ([XmlTree], NsEnv)+buildEnv :: String -> NsEnv'+buildEnv env = (addEntries . read $ env) $ defaultEnv++loadDoc :: String -> IO ([XmlTree], NsEnv') loadDoc doc = do d <- runX ( readDocument [ (a_tagsoup, v_0)@@ -98,7 +102,7 @@ ) return () -evalXPath :: String -> NsEnv -> XmlTree -> IO()+evalXPath :: String -> NsEnv' -> XmlTree -> IO() evalXPath path env doc | nr == xr = putStrLn . unlines $ "ok: " : nr@@ -112,11 +116,11 @@ ] ++ nr putStrLn $ xpt path where- xpt = either show show . runParser parseXPath env ""+ xpt = either show show . runParser parseXPath (toNsEnv env) "" nr = runLA (XPS.getXPathTreesWithNsEnv env path >>> xshow this) doc xr = runLA ( getXPathTreesWithNsEnv env path >>> xshow this) doc -evalLoop :: NsEnv -> XmlTrees -> IO ()+evalLoop :: NsEnv' -> XmlTrees -> IO () evalLoop env doc = do maybeLine <- readline "xpath> "@@ -163,7 +167,7 @@ (nd, nv) <- loadDoc n if null nd then do- putStrLn ("error when loading " ++ show doc)+ putStrLn ("error when loading " ++ show n) evalLoop env doc else evalLoop (addEntries nv env) nd evalCmd ws@((':':_):_)@@ -177,9 +181,9 @@ else evalXPath path env (head doc) evalLoop env doc -defaultEnv :: NsEnv-defaultEnv = [ ("xml",xmlNamespace)- , ("xmlns",xmlnsNamespace)- ]+defaultEnv :: NsEnv'+defaultEnv = [ ("xml",xmlNamespace)+ , ("xmlns",xmlnsNamespace)+ ] -- ----------------------------------------
examples/arrows/performance/GenDoc.hs view
@@ -102,7 +102,7 @@ >>> arr2 (\ ma mi -> "maximum value = " ++ show ma ++ ", minimum = " ++ show mi ) >>>- traceString 1 id+ traceValue 1 id ) putStrLn x @@ -161,7 +161,8 @@ , (a_remove_whitespace, v_1) , (a_encoding, isoLatin1) , (a_issue_warnings, v_0)- , (a_trace, "1")+ , (a_trace, v_1)+ , (a_strict_input, v_0) ] src >>> processChildren (isElem `guards` this)
examples/arrows/performance/Makefile view
@@ -8,6 +8,10 @@ DIST = $(HXT_HOME)/dist/examples/arrows DIST_DIR = $(DIST)/performance +CNT = 3++ropts = +RTS -s -RTS + prog = ./GenDoc prog2 = ./ReadDoc prog3 = ./PruneRight@@ -57,7 +61,7 @@ genfiles : @for i in $(tests) ; \ do \- echo time $(prog) $$i ; \+ echo time $(prog) $(ropts) $$i ; \ time $(prog) $$i ; \ ls -l tree-*$$i.xml ; \ echo ; \@@ -66,7 +70,7 @@ readfiles : @for i in $(tests) ; \ do \- echo time $(prog2) $$i ; \+ echo time $(prog2) $(ropts) $$i ; \ time $(prog2) $$i ; \ echo ; \ done@@ -74,7 +78,7 @@ pruneright : @for i in $(tests) ; \ do \- echo time $(prog3) $$i ; \+ echo time $(prog3) $(ropts) $$i ; \ time $(prog3) $$i ; \ echo ; \ done@@ -82,7 +86,7 @@ pruneleft : @for i in $(tests) ; \ do \- echo time $(prog4) $$i ; \+ echo time $(prog4) $(ropts) $$i ; \ time $(prog4) $$i ; \ echo ; \ done@@ -91,7 +95,7 @@ @for i in $(tests) ; \ do \ echo time $(prog5) $$i ; \- time $(prog5) $$i ; \+ time $(prog5) $(ropts) $$i ; \ echo ; \ done
hxt.cabal view
@@ -1,6 +1,6 @@ -- arch-tag: Haskell XML Toolbox main description file name: hxt-version: 8.2.0+version: 8.3.0 license: OtherLicense license-file: LICENCE maintainer: Uwe Schmidt <uwe@fh-wedel.de>@@ -31,7 +31,6 @@ Data.Char.UTF8, Data.NavTree, Data.Tree.Class,- Data.Tree.NTree.Filter, Data.Tree.NTree.TypeDefs, Text.XML.HXT.Arrow, Text.XML.HXT.Arrow.DTDProcessing,@@ -58,7 +57,6 @@ Text.XML.HXT.DOM.IsoLatinTables, Text.XML.HXT.DOM.MimeTypeDefaults, Text.XML.HXT.DOM.MimeTypes,- Text.XML.HXT.DOM.NamespacePredicates, Text.XML.HXT.DOM.QualifiedName, Text.XML.HXT.DOM.ShowXml, Text.XML.HXT.DOM.TypeDefs,@@ -68,7 +66,6 @@ Text.XML.HXT.DOM.XmlKeywords, Text.XML.HXT.DOM.XmlNode, Text.XML.HXT.DOM.XmlOptions,- Text.XML.HXT.DOM.XmlTreeTypes, Text.XML.HXT.DTDValidation.AttributeValueValidation, Text.XML.HXT.DTDValidation.DTDValidation, Text.XML.HXT.DTDValidation.DocTransformation,
src/Control/Arrow/ArrowNF.hs view
@@ -34,3 +34,5 @@ class (Arrow a) => ArrowNF a where rnfA :: (NFData c) => a b c -> a b c rnfA f = f >>> strictA++-- ------------------------------------------------------------
− src/Data/Tree/NTree/Filter.hs
@@ -1,913 +0,0 @@--- --------------------------------------------------------------{- |- Module : Data.Tree.NTree.Filter- Copyright : Copyright (C) 2005 Uwe Schmidt- License : MIT-- Maintainer : Uwe Schmidt (uwe\@fh-wedel.de)- Stability : experimental- Portability: portable- Version : $Id: Filter.hs,v 1.6 2006/11/12 14:52:59 hxml Exp $--Filter for n-ary tree structure with filter combinators-copied and modified from HxXml (<http://www.cs.york.ac.uk/fp/HaXml/>)--Similar but more flexible functions for tree processing are defined in the-arrow classes "Control.Arrow.ArrowList", "Control.Arrow.ArrowIf", "Control.Arrow.ArrowTree" and "Control.Arrow.ArrowState".-For new applications, especially for XML processing, it's recommended to use the arrow interface-"Text.XML.HXT.Arrow" instead of this filter approach as part of the api "Text.XML.HXT.Parser"---}---- --------------------------------------------------------------module Data.Tree.NTree.Filter- ( module Data.Tree.NTree.TypeDefs- , TFilter- , TSFilter- , satisfies-- -- * Filter- , none -- simple filter- , this-- , isOf- , isOfNode -- predicate filter-- , mkNTree -- contructor filter-- , replaceNode -- simple editing- , replaceChildren-- , modifyNode- , modifyNode0- , modifyChildren- , substChildren- , processChildren -- filter combinators-- , o- , (.>)- , seqF- , (..>)- , (+++)- , cat-- , orElse -- choices- , iff -- if then else filter- , choice- , IfThen(..)- , when- , whenNot- , guards- , neg -- negation- , containing -- previous: with, but with is keyword in haskell extensions- , notContaining -- previous: without-- , (/>) -- selectors- , (</)- , deep -- recursive search- , deepest- , multi- , processBottomUp -- recursive editing- , processBottomUpIfNot- , processTopDown- , processTopDownUntil- , insertChildrenAt- , insertChildrenAfter-- -- * Monadic Filter- , thisM -- monadic filter- , noneM- , (.>>) -- monadic composition- , seqM -- generalisation of .>>- , (+++>>) -- monadic parallel combination, monadic +++- , catM -- monadic form of cat- , ifM -- monadic if then else- , choiceM -- monadic choice- , whenM -- special monadic ifs- , whenNotM- , guardsM- , containingM- , processChildrenM -- monadic versions of recursive editing- , processTopDownM- , processBottomUpM- , liftMf -- lift a normal filter to a monadic filter- , ($$) -- apply a filter to a list- , ($$<) -- apply a monad filter to a list- , performAction -- run a command within a filter- )--where---import Data.Tree.NTree.TypeDefs--infixl 6 `containing`, `notContaining`, `containingM`-infixr 5 `o`, +++, +++>>-infixl 5 />, </, `orElse`, .>, ..>, .>>-infixr 4 `when`, `whenNot`, `guards`, `whenM`, `whenNotM`, `guardsM`-infixr 3 :->-infixr 0 $$, $$<---- |--- tree filter type: a function mapping a tree onto a list of trees------ filter can be used in various ways, as predicates, selectors, transformers, ...--type TFilter node = NTree node -> NTrees node---- |--- a filter for sequences--type TSFilter node = NTrees node -> NTrees node---- ---------------------------------------------------------------- |--- satisfies converts a result of a predicate filter into a boolean------ is a shortcut for not . null------ typical use in guards or ifs: @if (satisfies f) t then ... else ... @------ * 1.parameter f : the predicate filter------ - 2.parameter t : the tree to be tested------ - returns : @b = not (null (f t))@--satisfies :: (a -> [b]) -> a -> Bool-satisfies f = not . null . f---- ------------------------------------------------------------------ simple filter---- |--- the null filter, returns the empty list--none :: a -> [b]-none _ = []---- |--- the unit filter, returns the single element list containing the argument--this :: a -> [a]-this n = [n]---- ------------------------------------------------------------------ selecting filter---- |--- conversion from predicate function to filter------ * 1.parameter p : the predicate for testing the tree------ - returns : 'this' or 'none' depending on the predicate--isOf :: (a -> Bool) -> (a -> [a])-isOf p t- = if p t then [t] else []---- |--- select filter, selects trees with node values with a specific property------ * 1.parameter p : the predicate for testing the node value------ - returns : @[]@ or @[t]@ depending on @p t@------ a special case of 'isOf' filter--isOfNode :: (node -> Bool) -> TFilter node-isOfNode p = isOf (p . getNode)---- ------------------------------------------------------------------ simple editing filters---- |--- filter for substituting an arbitray tree by a constant------ * 1.parameter t : the result tree, the input tree is ignored------ - returns : the filter--mkNTree :: NTree node -> TFilter node-mkNTree t = const [t]---- |--- filter for replacing the node------ * 1.parameter n : the new node------ - returns : the editing filter--replaceNode :: node -> TFilter node-replaceNode n (NTree _ cs)- = [NTree n cs]---- |--- filter for replacing the children------ * 1.parameter cs : cs the list of children------ - returns : the filter--replaceChildren :: NTrees node -> TFilter node-replaceChildren cs (NTree n _)- = [NTree n cs]--modifyNode :: (node -> Maybe node) -> TFilter node-modifyNode tf (NTree n cs)- = maybe [] (\ n' -> [NTree n' cs]) (tf n)---- |--- filter for editing the node------ * 1.parameter nf : the XNode editing funtion------ - returns : the filter--modifyNode0 :: (node -> node) -> TFilter node-modifyNode0 tf = modifyNode (Just . tf)---- |--- filter for editing the children------ 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 @(f $$)@ (see '($$)') but also manipulation--- of the order of the elements, e.g. "reverse" is an appropriate childen--- editing function.------ * 1.parameter csf : the children editing function------ - returns : the filter------ see also : 'processChildren'--modifyChildren :: TSFilter node -> TFilter node-modifyChildren f -- (NTree n cs)- -- = [NTree n (f cs)]- = substChildren (f . getChildren)---- |--- filter for substituting the children of a tree by--- a new list of childen computed by applying a filter to the input tree.--- 'modifyChildren' can be expressed by 'substChildren':--- @modifyChildren f t@ is equal to @substChildren (f . getChildren)@--substChildren :: TFilter node -> TFilter node-substChildren f t@(NTree n _cs)- = [NTree n (f t)]---- ------------------------------------------------------------------ combinators (copied from HaXml)------- |--- sequential composition of filters, usually written in infix notation f2 `o` f1.------ for predicate filter the logical AND------ * 1.parameter f2 : the 2. filter------ - 2.parameter f1 : the 1. filter------ - returns : the fiter applying first f1 to n and then f2 to the result (like function composition)--o :: (a -> [b]) -> (c -> [a]) -> (c -> [b])-f `o` g = concatMap f . g---- |--- pronounced \"followed by\", defined as: @f .> g = g \`o\` f@.------ allows filter composition in a more readable way from left to right------ * 1.parameter f1 : the 1. filter------ - 2.parameter f2 : the 2. filter------ - returns : the composition of f1 and f2------ see also : 'o', '(..>)'--(.>) :: (a -> [b]) -> (b -> [c]) -> (a -> [c])-f .> g = g `o` f---- |--- apply a list of filters sequentially with '(.>)', for predicate filters the generalized AND------ see also : '(.>)'--seqF :: [a -> [a]] -> (a -> [a])-seqF = foldl (.>) this---- |--- binary parallel composition, the logical OR for predicate filter------ * 1.parameter f1 : the 1. filter------ - 2.parameter f2 : the 2. filter------ - returns : the filter for applying f1 and f2 both to an argument tree and concatenating the results--(+++) :: (a -> [b]) -> (a -> [b]) -> (a -> [b])-f +++ g = \ t -> f t ++ g t---- |--- special sequential composition.------ 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.------ This allows for step by step transformations of a tree--- with access to the original tree in every--- transformation step.------ see also : '(.>)', 'o'--(..>) :: (a -> [b]) -> (a -> b -> [d]) -> (a -> [d])-f ..> g = \ t -> (g t `o` f) t---- |--- apply a list of filters, a \"union\" for lists, for predicate filters the generalized OR------ * 1.parameter fs : the list of filters------ - returns : the composing filter--cat :: [a -> [b]] -> (a -> [b])-cat fs t- = concat [ f t | f <- fs ]---- |--- Filter for editing the children of a tree element wise------ * 1.parameter cf : the filter applied to the children------ - returns : the editing filter------ see also : 'modifyChildren'--processChildren :: TFilter node -> TFilter node-processChildren ft (NTree n cs)- = [NTree n (ft $$ cs)]---- |--- infix operator for applying a filter to a list of trees------ * 1.parameter f : the filter------ - 2.parameter ts : the list of trees------ - returns : the concatenated list of results--($$) :: (a -> [b]) -> [a] -> [b]-f $$ l- = concatMap f l---- ------------------------------------------------------------------ choices------- |--- directional choice, usually written in infix notation as f `orElse` g------ * 1.parameter f : the 1. filter------ - 2.parameter g : the 2. filter------ - 3.parameter t : the tree------ - 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--orElse :: (a -> [b]) -> (a -> [b]) -> (a -> [b])-f `orElse` g- = \ t-> let- res = f t- in- if null res- then g t- else res---- |--- if then else lifted to filters------ * 1.parameter p : the predicate filter------ - 2.parameter t : the \"then\" filter------ - 3.parameter e : the \"else\" filter------ - returns : the resulting conditional filter--iff :: (a -> [c]) -> (a -> [b]) -> (a -> [b]) -> (a -> [b])-iff p f g = \ c -> if (satisfies p) c then f c else g c---- |--- when the predicate p holds, f is applied, else the identity filter this------ * 1.parameter f : the conditinally applied filter------ - 2.parameter p : the predicate------ - returns : the conditional filter------ see also : 'iff', 'whenNot', 'guards', 'whenM'--when :: (a -> [a]) -> (a -> [a]) -> (a -> [a])-f `when` g = iff g f this---- |--- the complementary filter of when------ shortcut for f `when` neg g------ see also : 'iff', 'when', 'whenNotM', 'neg'--whenNot :: (a -> [a]) -> (a -> [a]) -> (a -> [a])-f `whenNot` g = iff g this f---- |--- when the predicate p holds, f is applied, else the null filter none------ * 1.parameter p : the predicate filter------ - 2.parameter f : the conditionally applied filter------ - returns : the conditional filter------ see also : 'iff', 'when', 'guardsM'--guards :: (a -> [b]) -> (a -> [b]) -> (a -> [b])-g `guards` f = iff g f none----- |--- negation lifted to filters------ * 1.parameter f : the predicate filter------ - returns : the filter, that succeeds, when f failed--neg :: (a -> [c]) -> a -> [a]-neg f = iff f none this---- |--- auxiliary datatype for cases within choice filter--data IfThen a b = a :-> b---- |--- multiway branch. The list of cases @f :-> g@ is processed sequentially,--- in the first case for that f holds g is applied, if no case matches, 'none' is--- applied.--- This filter can be used like a case expression: @choice [ p1 :-> f1, p2 :-> f2, ... , this :-> defaultFilter]@------ see also : 'iff', 'choiceM'--choice :: [IfThen (a -> [c]) (a -> [b])] -> (a -> [b])-choice []- = none--choice ((g :-> f) : cs)- = iff g f (choice cs)---- |--- pruning: keep only those results from f for which g holds, usually written in infix notation as f `containing` g------ * 1.parameter f : the processing filter------ - 2.parameter g : the predicate filter------ - 3.parameter t : the tree------ - returns : all trees r from f t, for which g r holds (is not the empty list)------ see also : 'notContaining'--containing :: (a -> [b]) -> (b -> [c]) -> a -> [b]-f `containing` g- = filter (satisfies g) . f---- |--- pruning: keep only those results from f for which g does not hold------ see also : 'containing'--notContaining :: (a -> [b]) -> (b -> [c]) -> a -> [b]-f `notContaining` g- = filter (null . g) . f---- |--- pruning: monadic version of containing, usually written in infix notation as f `containingM` g------ * 1.parameter f : the monadic processing filter------ - 2.parameter g : the predicate filter------ - 3.parameter t : the tree------ - returns : all trees r from f t, for which g r holds (is not the empty list)------ see also : 'notContaining'--containingM :: Monad m => (a -> m [b]) -> (b -> [c]) -> a -> m [b]-f `containingM` g- = \ t -> do- res <- f t- return $ filter (satisfies g) res---- |--- pronounced \"slash\", meaning g inside f--(/>) :: TFilter node -> TFilter node -> TFilter node-f /> g- = g `o` getChildren `o` f---- |--- pronounced \"outside\" meaning f containing g--(</) :: TFilter node -> TFilter node -> TFilter node-f </ g- = f `containing` (g `o` getChildren)---- ------------------------------------------------------------------ recursive search filters---- |--- top down search.------ search terminates, when filter f succeeds--- can e.g. be used for finding all outermost tag node of a specific kind--deep :: TFilter node -> TFilter node-deep f- = f `orElse` (deep f `o` getChildren)---- |--- bottom up search.------ 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--deepest :: TFilter node -> TFilter node-deepest f- = (getChildren .> deepest f) `orElse` f---- |--- process all nodes of the whole tree.------ can e.g. be used for finding all nodes of a specific kind--multi :: TFilter node -> TFilter node-multi f- = f +++ (getChildren .> multi f)---- ------------------------------------------------------------------ recursive transformation filters------- |--- bottom up transformation------ * 1.parameter f : the /simple/ transforming filter------ - returns : the filter that applies f to all subtrees and the tree itself in a deepth first left to right manner------ see also : 'processTopDown', 'processBottomUpIfNot'--processBottomUp :: TFilter node -> TFilter node-processBottomUp f- = processChildren (processBottomUp f) .> f---- |--- top down transformation------ * 1.parameter f : the /simple/ transforming filter------ - returns : the filter that applies f first to the tree and then recursively to all subtrees of the result------ see also : 'processBottomUp'--processTopDown :: TFilter node -> TFilter node-processTopDown f- = f .> processChildren (processTopDown f)---- |--- guarded bottom up transformation, stops at subtrees for which a predicate p holds------ * 1.parameter f : the transforming filter------ - 2.parameter p : the predicate filter for the guard------ - returns : the filter for processing all (sub-)trees------ see also : 'processBottomUp'--processBottomUpIfNot :: TFilter node -> TFilter node -> TFilter node-processBottomUpIfNot f p- = (processChildren (processBottomUpIfNot f p) .> f) `whenNot` p---- |--- top down transformation until a node to be transformed is found------ * 1.parameter f : the /simple/ transforming filter------ - 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.------ Example:------ @processTopDownUntil none@------ is the identity filter (maybe a bit more inefficient).------ Example:------ @processTopDownUntil (add1Attr \"border\" \"2\" \`containing\` isTag \"table\")@------ is a filter for adding an attribute border=\"2\" in all top level table tags.--- The content of table tags will remain unchanged.------ see also : 'processTopDown', 'processBottomUp'--processTopDownUntil :: TFilter node -> TFilter node-processTopDownUntil f t- | null res- = processChildren (processTopDownUntil f) t- | otherwise- = res- where- res = f t---- ------------------------------------------------------------------- |--- insertion of trees into the list of children at a given position------ useful for inserting something into the list of children at a given position--- the list of children is split with the @splitAt@ function--- the nodes are inserted between these two sublists.------ examples: @insertChildrenAt 0 ins t@ inserts all elements computed with @ins t@ in front--- of the childen of @t@, @insertChildrenAt 1 ins t@ behind the first child------ see also: 'insertChildrenAfter'---insertChildrenAt :: Int -> TFilter node -> TFilter node-insertChildrenAt i ins t- = replaceChildren (cl1 ++ ins t ++ cl2) t- where- (cl1, cl2) = splitAt i $ getChildren t---- |--- insertion of trees into the list of children after specific elements------ useful for inserting something into the list of children of a node--- the list of children is split with the @span@ function and the filter p as predicate--- the nodes are inserted between these two sublists------ examples: @insertChildrenAfter none ins t@ inserts all elements computed with @ins t@ in front--- of the childen of @t@, @insertChildrenAfter this ins t@ appends the elements to the children------ see also: 'insertChildrenAt'--insertChildrenAfter :: TFilter node -> TFilter node -> TFilter node-insertChildrenAfter p ins t- = replaceChildren (cl1 ++ ins t ++ cl2) t- where- (cl1, cl2) = span (not . null . p) $ getChildren t---- ------------------------------------------------------------------ monadic filter---- |--- the monadic version of the identity filter this.------ see also : 'this'--thisM :: Monad m => (a -> m [a])-thisM = liftMf this---- |--- the monadic version of the null filter none.------ see also : 'none'--noneM :: Monad m => (a -> m [b])-noneM = liftMf none---- |--- sequential composition of monadic filters, monadic version of \".>\".------ * 1.parameter f1 : the 1. monadic filter------ - 2.parameter f2 : the 2. monadic filter------ - returns : the monadic fiter applying first f1 to n and then f2 to the result (like function composition)------ see also : '(.>)'--(.>>) :: Monad m => (a -> m[b]) -> (b -> m [c]) -> (a -> m[c])-cmd1 .>> cmd2- = \ t ->- do- r1 <- cmd1 t- r2 <- mapM cmd2 r1- return (concat r2)---- |--- generalized sequential composition of monadic filters--seqM :: Monad m => [a -> m[a]] -> (a -> m[a])-seqM- = foldr (.>>) thisM---- |--- binary parallel composition, the logical OR for predicate filter------ * 1.parameter f1 : the 1. filter------ - 2.parameter f2 : the 2. filter------ - returns : the filter for applying f1 and f2 both to an argument tree and concatenating the results--- see also: 'cat', '+++', 'catM'--(+++>>) :: Monad m => (a -> m [b]) -> (a -> m [b]) -> (a -> m [b])-f +++>> g = \ t -> do- r1 <- f t- r2 <- g t- return (r1 ++ r2)---- |--- apply a list of monadic filters------ * 1.parameter fs : the list of filters------ - returns : the composing filter--- see also: 'cat', '+++', '+++>>'--catM :: Monad m => [a -> m [b]] -> (a -> m [b])-catM fs t- = do- res <- sequence (map ($ t) fs)- return $ concat res---- |--- monadic if-then-else.------ * 1.parameter p : the predicate------ - 2.parameter thenP : the then part: the monadic filter, that is applied if p holds for the input tree------ - 3.parameter elseP : the else part------ - returns : the monadic filter for the conditional--ifM :: Monad m => (a -> [b]) -> (a -> m [c]) -> (a -> m [c]) -> (a -> m [c])-ifM p thenPart elsePart- = \ t ->- if (satisfies p) t- then thenPart t- else elsePart t---- |--- monadic version of multiway branch. The list of cases @f :-> g@ is processed sequentially,--- in the first case for that f holds g is applied, if no case matches, 'noneM' is--- applied.--- This filter can be used like a case expression: @choiceM [ p1 :-> f1, p2 :-> f2, ... , thisM :-> defaultFilter]@------ see also : 'choice', 'ifM'--choiceM :: Monad m => [IfThen (a -> [c]) (a -> m [b])] -> (a -> m [b])-choiceM []- = noneM--choiceM ((g :-> f) : cs)- = ifM g f (choiceM cs)----- |--- when the predicate p holds, the monadic filter f is applied, else the identity filter.------ * 1.parameter f : the conditinally applied monadic filter------ - 2.parameter p : the simple predicate------ - returns : the conditional filter------ see also : 'ifM', 'when', 'guardsM', 'whenNotM'--whenM :: Monad m => (a -> m [a]) -> (a -> [b]) -> (a -> m [a])-f `whenM` g = ifM g f thisM---- |--- the complementary filter of whenM.------ see also : 'ifM', 'whenM', 'whenNot'--whenNotM :: Monad m => (a -> m [a]) -> (a -> [b]) -> (a -> m [a])-f `whenNotM` g = ifM g thisM f---- |--- when the predicate p holds, the monadic filter f is applied, else the null filter.------ * 1.parameter p : the simple predicate filter------ - 2.parameter f : the conditionally applied monadic filter------ - returns : the conditional filter------ see also : 'ifM', 'guards', 'whenM'--guardsM :: Monad m => (a -> [b]) -> (a -> m [c]) -> (a -> m [c])-g `guardsM` f = ifM g f noneM---- |--- Filter for editing the children of a tree with a monadic filter------ * 1.parameter cf : the monadic filter applied to the children------ - returns : the monadic editing filter------ see also : 'processChildren'--processChildrenM :: Monad m => (NTree node -> m [NTree node]) -> (NTree node -> m [NTree node])-processChildrenM ft (NTree n cs)- = do- res <- ft $$< cs- return [NTree n res]---- |--- monadic variant of 'processTopDown'--processTopDownM :: Monad m => (NTree node -> m [NTree node]) -> (NTree node -> m [NTree node])-processTopDownM f- = f .>> processChildrenM (processTopDownM f)---- |--- monadic variant of 'processBottomUp'--processBottomUpM :: Monad m => (NTree node -> m [NTree node]) -> (NTree node -> m [NTree node])-processBottomUpM f- = processChildrenM (processBottomUpM f) .>> f---- |--- infix operator for applying a monadic filter to a list of trees,--- typically used in do-notation for processing of intermediate results.------ * 1.parameter f : the monadic filter------ - 2.parameter ts : the list of trees------ - returns : the concatenated list of results------ see also : '($$)'--($$<) :: Monad m => (a -> m [b]) -> [a] -> m [b]-cmd $$< l- = do- r <- mapM cmd l- return (concat r)---- |--- lift a filter to a monadic filter------ * 1.parameter f : the /simple/ filter------ - returns : the lifted monadic version--liftMf :: Monad m => (a -> [b]) -> a -> m [b]-liftMf f t- = return (f t)---- |--- run an arbitray command on a tree t and return the tree,--- used for inserting arbitray commands in a filter pipeline------ * 1.parameter cmd : the command------ - 2.parameter t : the argument tree------ - returns : the unchanged tree as a single element list--performAction :: Monad m => (a -> m b) -> a -> m [a]-performAction cmd t- = do- cmd t- return [t]---- eof ------------------------------------------------------------
src/Data/Tree/NTree/TypeDefs.hs view
@@ -2,7 +2,7 @@ {- | Module : Data.Tree.NTree.TypeDefs- Copyright : Copyright (C) 2005 Uwe Schmidt+ Copyright : Copyright (C) 2005-2008 Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe\@fh-wedel.de)
src/Makefile view
@@ -69,7 +69,6 @@ Data/Char/UTF8.hs \ Data/NavTree.hs \ Data/Tree/Class.hs \- Data/Tree/NTree/Filter.hs \ Data/Tree/NTree/TypeDefs.hs \ Text/XML/HXT/Arrow/DocumentInput.hs \ Text/XML/HXT/Arrow/DocumentOutput.hs \@@ -96,7 +95,6 @@ Text/XML/HXT/DOM/IsoLatinTables.hs \ Text/XML/HXT/DOM/MimeTypeDefaults.hs \ Text/XML/HXT/DOM/MimeTypes.hs \- Text/XML/HXT/DOM/NamespacePredicates.hs \ Text/XML/HXT/DOM/QualifiedName.hs \ Text/XML/HXT/DOM/ShowXml.hs \ Text/XML/HXT/DOM/TypeDefs.hs \@@ -106,7 +104,6 @@ Text/XML/HXT/DOM/XmlKeywords.hs \ Text/XML/HXT/DOM/XmlNode.hs \ Text/XML/HXT/DOM/XmlOptions.hs \- Text/XML/HXT/DOM/XmlTreeTypes.hs \ Text/XML/HXT/DTDValidation/AttributeValueValidation.hs \ Text/XML/HXT/DTDValidation/DocTransformation.hs \ Text/XML/HXT/DTDValidation/DocValidation.hs \
src/Text/XML/HXT/Arrow/DocumentInput.hs view
@@ -113,11 +113,20 @@ getFileContents :: IOStateArrow s XmlTree XmlTree getFileContents- = applyA ( getAttrValue transferURI+ = applyA ( ( ( getAttrValue a_strict_input+ >>>+ arr isTrueValue+ )+ &&&+ ( getAttrValue transferURI+ >>>+ getPathFromURI+ )+ ) >>>- getPathFromURI+ traceValue 2 (\ (b, f) -> "read file " ++ show f ++ " (strict input = " ++ show b ++ ")") >>>- arrIO FILE.getCont+ arrIO (uncurry FILE.getCont) >>> ( arr addError -- io error occured |||@@ -129,7 +138,11 @@ getStdinContents :: IOStateArrow s XmlTree XmlTree getStdinContents- = applyA ( arrIO (\ _ -> FILE.getStdinCont)+ = applyA ( getAttrValue a_strict_input+ >>>+ arr isTrueValue+ >>>+ arrIO FILE.getStdinCont >>> ( arr addError -- io error occured |||@@ -267,7 +280,7 @@ getCont = applyA ( getBaseURI -- compute the handler and call it >>>- traceString 2 (("getURIContents: reading " ++) . show)+ traceValue 2 (("getURIContents: reading " ++) . show) >>> getSchemeFromURI >>>@@ -338,7 +351,7 @@ >>> perform ( getAttrValue transferURI >>>- traceString 1 (("getXmlContents: content read and decoded for " ++) . show)+ traceValue 1 (("getXmlContents: content read and decoded for " ++) . show) ) >>> traceTree
src/Text/XML/HXT/Arrow/DocumentOutput.hs view
@@ -1,7 +1,19 @@--- |--- state arrows for document output------ version: $Id: DocumentOutput.hs,v 1.7 2006/11/02 09:34:08 hxml Exp $+-- ------------------------------------------------------------++{- |+ Module : Text.XML.HXT.Arrow.DocumentOutput+ Copyright : Copyright (C) 2005-9 Uwe Schmidt+ License : MIT++ Maintainer : Uwe Schmidt (uwe@fh-wedel.de)+ Stability : experimental+ Portability: portable++ State arrows for document output++-}++-- ------------------------------------------------------------ module Text.XML.HXT.Arrow.DocumentOutput ( module Text.XML.HXT.Arrow.DocumentOutput )
src/Text/XML/HXT/Arrow/Edit.hs view
@@ -2,7 +2,7 @@ {- | Module : Text.XML.HXT.Arrow.Edit- Copyright : Copyright (C) 2006 Uwe Schmidt+ Copyright : Copyright (C) 2006-9 Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe@fh-wedel.de)@@ -33,6 +33,7 @@ , indentDoc , numberLinesInXmlDoc+ , preventEmptyElements , removeComment , removeAllComment@@ -56,35 +57,23 @@ ) where -import Control.Arrow-import Control.Arrow.ArrowList-import Control.Arrow.ArrowIf-import Control.Arrow.ArrowTree--import Control.Arrow.ListArrow--import Text.XML.HXT.Arrow.XmlArrow--import Text.XML.HXT.DOM.Interface--import qualified- Text.XML.HXT.DOM.XmlNode as XN--import Text.XML.HXT.DOM.Unicode- ( isXmlSpaceChar )--import Text.XML.HXT.DOM.FormatXmlTree- ( formatXmlTree )--import Text.XML.HXT.Parser.XmlEntities- ( xmlEntities )--import Text.XML.HXT.Parser.XhtmlEntities- ( xhtmlEntities )+import Control.Arrow+import Control.Arrow.ArrowList+import Control.Arrow.ArrowIf+import Control.Arrow.ArrowTree+import Control.Arrow.ListArrow -import Data.Maybe+import Text.XML.HXT.Arrow.XmlArrow+import Text.XML.HXT.DOM.Interface+import qualified Text.XML.HXT.DOM.XmlNode as XN+import Text.XML.HXT.DOM.Unicode ( isXmlSpaceChar )+import Text.XML.HXT.DOM.FormatXmlTree ( formatXmlTree )+import Text.XML.HXT.Parser.HtmlParsec ( emptyHtmlTags )+import Text.XML.HXT.Parser.XmlEntities ( xmlEntities )+import Text.XML.HXT.Parser.XhtmlEntities ( xhtmlEntities ) -import qualified Data.Map as M+import qualified Data.Map as M+import Data.Maybe -- ------------------------------------------------------------ @@ -304,6 +293,8 @@ escapeHtmlEntityRef :: Char -> XmlTree escapeHtmlEntityRef = escapeEntityRef xhtmlEntityRefTable +-- ------------------------------------------------------------+ -- | -- escape all special XML chars into XML entity references or char references --@@ -328,6 +319,8 @@ -- in attribute values also \', \", \>, \\n, \\r and \\t are converted into entity or char references, -- in comments nothing is converted +-- ------------------------------------------------------------+ escapeHtmlDoc :: ArrowList a => a XmlTree XmlTree escapeHtmlDoc = fromLA $ escapeDoc escHtmlText escHtmlAttrValue@@ -342,6 +335,8 @@ isHtmlAttrEsc c = c >= toEnum(128) || ( c `elem` "<>\"\'&\n\r\t" ) +-- ------------------------------------------------------------+ escapeDoc :: LA XmlTree XmlTree -> LA XmlTree XmlTree -> LA XmlTree XmlTree escapeDoc escText escAttr = escape@@ -359,6 +354,28 @@ ] escVal = processChildren escAttr escDTD = escVal `when` ( isDTDEntity <+> isDTDPEntity )++-- ------------------------------------------------------------++preventEmptyElements :: ArrowList a => Bool -> a XmlTree XmlTree+preventEmptyElements isHtml+ = fromLA $ insertDummyElem+ where+ isNoneEmpty+ | isHtml = hasNameWith (localPart >>> (`notElem` emptyHtmlTags))+ | otherwise = this++ insertDummyElem+ = processBottomUp+ ( replaceChildren (txt "")+ `when`+ ( isElem+ >>>+ isNoneEmpty+ >>>+ neg getChildren+ )+ ) -- ------------------------------------------------------------
src/Text/XML/HXT/Arrow/GeneralEntitySubstitution.hs view
@@ -132,7 +132,7 @@ addInternalEntity = ( ( getDTDAttrValue a_name >>>- traceString 2 (("processGeneralEntity: general entity definition for " ++) . show)+ traceValue 2 (("processGeneralEntity: general entity definition for " ++) . show) ) &&& xshow (getChildren >>> isText)@@ -160,7 +160,7 @@ addExternalEntity = ( ( getDTDAttrValue a_name >>>- traceString 2 (("processGeneralEntity: external entity definition for " ++) . show)+ traceValue 2 (("processGeneralEntity: external entity definition for " ++) . show) ) &&& getDTDAttrValue a_url -- the absolute URL, not the relative in attr: k_system@@ -174,7 +174,7 @@ addUnparsedEntity = getDTDAttrValue a_name >>>- traceString 2 (("processGeneralEntity: unparsed entity definition for " ++) . show)+ traceValue 2 (("processGeneralEntity: unparsed entity definition for " ++) . show) >>> applyA (arr (insertEntity substUnparsed)) >>>@@ -236,7 +236,7 @@ substEntityRef = applyA ( ( ( getEntityRef -- get the entity name and the env >>> -- and compute the arrow to be applied- traceString 2 (("processGeneralEntity: entity reference for entity " ++) . show)+ traceValue 2 (("processGeneralEntity: entity reference for entity " ++) . show) >>> traceMsg 3 ("recursion list = " ++ show recl) )
src/Text/XML/HXT/Arrow/Namespace.hs view
@@ -2,13 +2,12 @@ {- | Module : Text.XML.HXT.Arrow.Namespace- Copyright : Copyright (C) 2005 Uwe Schmidt+ Copyright : Copyright (C) 2005-2008 Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe@fh-wedel.de) Stability : experimental Portability: portable- Version : $Id: Namespace.hs,v 1.13 2006/11/12 14:52:59 hxml Exp $ namespace specific arrows @@ -41,13 +40,10 @@ import Text.XML.HXT.DOM.Interface import Text.XML.HXT.Arrow.XmlArrow -import Data.Maybe- ( isNothing- , fromJust- )--import Data.List- ( nub )+import Data.Maybe ( isNothing+ , fromJust+ )+import Data.List ( nub ) -- ------------------------------------------------------------ @@ -56,14 +52,7 @@ isNamespaceDeclAttr :: ArrowXml a => a XmlTree XmlTree isNamespaceDeclAttr = fromLA $- (getAttrName >>> isA isNsQName) `guards` this- where- isNsQName n- = px == a_xmlns- &&- (null lp || (not . null . tail $ lp))- where- (px, lp) = span (/= ':') . qualifiedName $ n+ (getAttrName >>> isA isNameSpaceName) `guards` this -- | get the namespace prefix and the namespace URI out of -- an attribute tree with a namespace declaration (see 'isNamespaceDeclAttr')@@ -145,7 +134,7 @@ cleanupNamespaces :: LA XmlTree (String, String) -> LA XmlTree XmlTree cleanupNamespaces collectNamespaces- = renameNamespaces $< (listA collectNamespaces >>^ nub)+ = renameNamespaces $< (listA collectNamespaces >>^ (toNsEnv >>> nub)) where renameNamespaces :: NsEnv -> LA XmlTree XmlTree renameNamespaces env@@ -163,11 +152,11 @@ where renamePrefix :: QName -> QName renamePrefix n- | null uri = n+ | isNullXName uri = n | isNothing newPx = n- | otherwise = n {namePrefix = fromJust newPx}+ | otherwise = setNamePrefix' (fromJust newPx) n where- uri = namespaceUri n+ uri = namespaceUri' n newPx = lookup uri revEnv1 revEnv1 = map (\ (x, y) -> (y, x)) env1@@ -175,13 +164,13 @@ env1 :: NsEnv env1 = newEnv [] uris - uris :: [String]+ uris :: [XName] uris = nub . map snd $ env - genPrefixes :: [String]- genPrefixes = map (("ns" ++) . show) [(0::Int)..]+ genPrefixes :: [XName]+ genPrefixes = map (newXName . ("ns" ++) . show) [(0::Int)..] - newEnv :: NsEnv -> [String] -> NsEnv+ newEnv :: NsEnv -> [XName] -> NsEnv newEnv env' [] = env' @@ -225,7 +214,7 @@ extendEnv :: NsEnv -> XmlTree -> NsEnv extendEnv env' t'- = addEntries newDecls env'+ = addEntries (toNsEnv newDecls) env' where newDecls = runLA ( getAttrl >>> getNamespaceDecl ) t' @@ -270,12 +259,13 @@ nsAttrl :: [LA XmlTree XmlTree] nsAttrl = map nsDeclToAttr env - nsDeclToAttr :: (String, String) -> LA XmlTree XmlTree+ nsDeclToAttr :: (XName, XName) -> LA XmlTree XmlTree nsDeclToAttr (n, uri)- = mkAttr qn (txt uri)+ = mkAttr qn (txt (show uri)) where qn :: QName- qn = mkNsName (a_xmlns ++ (if null n then "" else ':' : n)) xmlnsNamespace+ qn | isNullXName n = mkQName' nullXName xmlnsXName xmlnsNamespaceXName+ | otherwise = mkQName' xmlnsXName n xmlnsNamespaceXName -- ----------------------------------------------------------------------------- @@ -288,7 +278,10 @@ -- The arrow may be applied repeatedly if neccessary. propagateNamespaces :: ArrowXml a => a XmlTree XmlTree-propagateNamespaces = fromLA $ propagateNamespaceEnv [ (a_xml, xmlNamespace), (a_xmlns, xmlnsNamespace) ]+propagateNamespaces = fromLA $+ propagateNamespaceEnv [ (xmlXName, xmlNamespaceXName)+ , (xmlnsXName, xmlnsNamespaceXName)+ ] -- | -- attaches the namespace info given by the namespace table@@ -308,7 +301,7 @@ attachNamespaceUriToAttr :: NsEnv -> LA XmlTree XmlTree attachNamespaceUriToAttr attrEnv- = ( ( getName >>> isA hasPrefixLocalPart )+ = ( ( getQName >>> isA (not . null . namePrefix) ) `guards` changeAttrName (setNamespace attrEnv) )@@ -317,16 +310,6 @@ `when` hasName a_xmlns )- where- hasPrefixLocalPart :: String -> Bool- hasPrefixLocalPart s- = ( ':' `elem` s ) -- small optimization: only do some string handling when is ':' found- &&- ( let -- check none empty prefix and local part- (px, lp) = span (/= ':') s- in- not (null px) && not (null (drop 1 lp))- ) -- ----------------------------------------------------------------------------- @@ -334,7 +317,7 @@ -- validate the namespace constraints in a whole tree. -- -- Result is the list of errors concerning namespaces.--- Predicates 'isWellformedQName', 'isWellformedQualifiedName', 'isDeclaredNamespaces'+-- Predicates 'isWellformedQName', 'isWellformedQualifiedName', 'isDeclaredNamespace' -- and 'isWellformedNSDecl' are applied to the appropriate elements and attributes. validateNamespaces :: ArrowXml a => a XmlTree XmlTree@@ -420,7 +403,7 @@ where nsError :: (String -> String) -> LA XmlTree XmlTree nsError msg- = getName >>> nsErr msg+ = (getQName >>> arr show) >>> nsErr msg nsErr :: (String -> String) -> LA String XmlTree nsErr msg = arr msg >>> mkError c_err
src/Text/XML/HXT/Arrow/Pickle/Xml.hs view
@@ -2,35 +2,34 @@ {- | Module : Text.XML.HXT.Arrow.Pickle.Xml- Copyright : Copyright (C) 2005 Uwe Schmidt+ Copyright : Copyright (C) 2005-2008 Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe@fh-wedel.de) Stability : experimental Portability: portable- Version : $Id$ -Pickler functions for converting between user defined data types-and XmlTree data. Usefull for persistent storage and retreival-of arbitray data as XML documents+ Pickler functions for converting between user defined data types+ and XmlTree data. Usefull for persistent storage and retreival+ of arbitray data as XML documents -This module is an adaptation of the pickler combinators-developed by Andrew Kennedy-( http:\/\/research.microsoft.com\/~akenn\/fun\/picklercombinators.pdf )+ This module is an adaptation of the pickler combinators+ developed by Andrew Kennedy+ ( http:\/\/research.microsoft.com\/~akenn\/fun\/picklercombinators.pdf ) -The difference to Kennedys approach is that the target is not-a list of Chars but a list of XmlTrees. The basic picklers will-convert data into XML text nodes. New are the picklers for-creating elements and attributes.+ The difference to Kennedys approach is that the target is not+ a list of Chars but a list of XmlTrees. The basic picklers will+ convert data into XML text nodes. New are the picklers for+ creating elements and attributes. -One extension was neccessary: The unpickling may fail.-Therefore the unpickler has a Maybe result type.-Failure is used to unpickle optional elements-(Maybe data) and lists of arbitray length+ One extension was neccessary: The unpickling may fail.+ Therefore the unpickler has a Maybe result type.+ Failure is used to unpickle optional elements+ (Maybe data) and lists of arbitray length -There is an example program demonstrating the use-of the picklers for a none trivial data structure.-(see \"examples\/arrows\/pickle\" directory)+ There is an example program demonstrating the use+ of the picklers for a none trivial data structure.+ (see \"examples\/arrows\/pickle\" directory) -} @@ -77,12 +76,12 @@ dropCont :: St -> St dropCont s = s { contents = drop 1 (contents s) } -getAtt :: String -> St -> Maybe XmlTree-getAtt name s+getAtt :: QName -> St -> Maybe XmlTree+getAtt qn s = listToMaybe $ runLA ( arrL attributes >>>- isAttr >>> hasName name+ isAttr >>> hasQName qn ) s getCont :: St -> Maybe XmlTree@@ -494,41 +493,48 @@ -- | Pickler for wrapping\/unwrapping data into an XML element ----- Extra parameter is the element name. THE pickler for constructing+-- Extra parameter is the element name given as a QName. THE pickler for constructing -- nested structures -- -- Example: ----- > xpElem "number" $ xpickle+-- > xpElemQN (mkName "number") $ xpickle -- -- will map an (42::Int) onto -- -- > <number>42</number> -xpElem :: String -> PU a -> PU a-xpElem name pa+xpElemQN :: QName -> PU a -> PU a+xpElemQN qn pa = PU { appPickle = ( \ (a, st) -> let st' = appPickle pa (a, emptySt) in- addCont (XN.mkElement (mkName name) (attributes st') (contents st')) st+ addCont (XN.mkElement qn (attributes st') (contents st')) st ) , appUnPickle = \ st -> fromMaybe (Nothing, st) (unpickleElement st)- , theSchema = scElem name (theSchema pa)+ , theSchema = scElem (qualifiedName qn) (theSchema pa) } where unpickleElement st = do t <- getCont st n <- XN.getElemName t- if qualifiedName n /= name- then fail "element name does not match"+ if n /= qn+ then fail ("element name " ++ show n ++ " does not match" ++ show qn) else do let cs = XN.getChildren t al <- XN.getAttrl t res <- fst . appUnPickle pa $ St {attributes = al, contents = cs} return (Just res, dropCont st) +-- | convenient Pickler for xpElemQN+--+-- > xpElem n = xpElemQN (mkName n)++xpElem :: String -> PU a -> PU a+xpElem = xpElemQN . mkName+ -- ------------------------------------------------------------ -- | Pickler for wrapping\/unwrapping data into an XML element with an attribute with given value@@ -590,25 +596,32 @@ -- -- The attribute is inserted in the surrounding element constructed by the 'xpElem' pickler -xpAttr :: String -> PU a -> PU a-xpAttr name pa+xpAttrQN :: QName -> PU a -> PU a+xpAttrQN qn pa = PU { appPickle = ( \ (a, st) -> let st' = appPickle pa (a, emptySt) in- addAtt (XN.mkAttr (mkName name) (contents st')) st+ addAtt (XN.mkAttr qn (contents st')) st ) , appUnPickle = \ st -> fromMaybe (Nothing, st) (unpickleAttr st)- , theSchema = scAttr name (theSchema pa)+ , theSchema = scAttr (qualifiedName qn) (theSchema pa) } where unpickleAttr st = do- a <- getAtt name st+ a <- getAtt qn st let av = XN.getChildren a res <- fst . appUnPickle pa $ St {attributes = [], contents = av} return (Just res, st) -- attribute is not removed from attribute list, -- attributes are selected by name++-- | convenient Pickler for xpAttrQN+--+-- > xpAttr n = xpAttrQN (mkName n)++xpAttr :: String -> PU a -> PU a+xpAttr = xpAttrQN . mkName -- | Add an optional attribute for an optional value (Maybe a).
src/Text/XML/HXT/Arrow/ProcessDocument.hs view
@@ -10,9 +10,9 @@ Portability: portable Version : $Id: ProcessDocument.hs,v 1.3 2006/08/30 16:20:52 hxml Exp $ -Compound arrows for reading, parsing, validating and writing XML documents+ Compound arrows for reading, parsing, validating and writing XML documents -All arrows use IO and a global state for options, errorhandling, ...+ All arrows use IO and a global state for options, errorhandling, ... -} -- ------------------------------------------------------------@@ -131,7 +131,7 @@ parseHtmlDocument :: Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> IOStateArrow s XmlTree XmlTree parseHtmlDocument withTagSoup withNamespaces warnings preserveCmt removeWhitespace asHtml- = ( perform ( getAttrValue a_source >>> traceString 1 (("parseHtmlDoc: parse HTML document " ++) . show) )+ = ( perform ( getAttrValue a_source >>> traceValue 1 (("parseHtmlDoc: parse HTML document " ++) . show) ) >>> replaceChildren ( ( getAttrValue a_source -- get source name &&&@@ -151,7 +151,7 @@ >>> perform ( getAttrValue a_source >>>- traceString 1 (\ src -> "parse HTML document " ++ show src ++ " finished")+ traceValue 1 (\ src -> "parse HTML document " ++ show src ++ " finished") ) ) `when` documentStatusOk
src/Text/XML/HXT/Arrow/ReadDocument.hs view
@@ -109,6 +109,10 @@ - 'a_use_curl' : obsolete and ignored, HTTP acccess is always done with curl bindings for libcurl +- 'a_strict_input' : file input is done strictly using the 'Data.ByteString' input functions. This ensures correct closing of files, especially when working with+ the tagsoup parser and not processing the whole input data. Default is off. The @ByteString@ input usually is not faster than the buildin @hGetContents@+ for strings.+ - 'a_options_curl' : deprecated but for compatibility reasons still supported. More options passed to the curl binding. Instead of using this option to set a whole bunch of options at once for curl@@ -147,11 +151,12 @@ > ] "" reads a HTML document from standard input, no validation is done when parsing HTML, default encoding is 'isoLatin1',-parsing is done with tagsoup parser+parsing is done with tagsoup parser, but input is read strictly > readDocument [ (a_encoding, isoLatin1) > , (a_mime_type, "/etc/mime.types")-> , (a_tagsoup, "1")+> , (a_tagsoup, "1")+> , (a_strict_input, "1") > ] "test.svg" reads an SVG document from standard input, sets the mime type by looking in the system mimetype config file, default encoding is 'isoLatin1',@@ -198,6 +203,7 @@ defaultOptions = [ ( a_parse_html, v_0 ) , ( a_tagsoup, v_0 )+ , ( a_strict_input, v_0 ) , ( a_validate, v_1 ) , ( a_issue_warnings, v_1 ) , ( a_check_namespaces, v_0 )
src/Text/XML/HXT/Arrow/WriteDocument.hs view
@@ -2,15 +2,14 @@ {- | Module : Text.XML.HXT.Arrow.WriteDocument- Copyright : Copyright (C) 2005 Uwe Schmidt+ Copyright : Copyright (C) 2005-9 Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe@fh-wedel.de) Stability : experimental Portability: portable- Version : $Id: WriteDocument.hs,v 1.8 2006/11/09 20:27:42 hxml Exp $ -Compound arrow for writing XML documents+ Compound arrow for writing XML documents -} @@ -32,19 +31,18 @@ import Text.XML.HXT.Arrow.XmlArrow import Text.XML.HXT.Arrow.XmlIOStateArrow -import Text.XML.HXT.Arrow.Edit- ( indentDoc- , removeDocWhiteSpace- , treeRepOfXmlDoc- , haskellRepOfXmlDoc- , escapeXmlDoc- , escapeHtmlDoc- )+import Text.XML.HXT.Arrow.Edit ( escapeHtmlDoc+ , escapeXmlDoc+ , haskellRepOfXmlDoc+ , indentDoc+ , preventEmptyElements+ , removeDocWhiteSpace+ , treeRepOfXmlDoc+ ) -import Text.XML.HXT.Arrow.DocumentOutput- ( putXmlDocument- , encodeDocument- )+import Text.XML.HXT.Arrow.DocumentOutput ( putXmlDocument+ , encodeDocument+ ) -- ------------------------------------------------------------ @@ -73,6 +71,11 @@ - 'a_output_html' : issue XHTML: quote alle XML chars, use HTML entity refs or char refs for none ASCII chars +- 'a_no_empty_elements' : do not write the short form \<name .../\> for empty elements. When 'a_output_html' is set,+ the always empty HTML elements are still written in short form, but not the others, as e.g. the script element.+ Empty script elements, like \<script href=\"...\"/\>, are always a problem for firefox and others.+ When XML output is generated with this option, all empty elements are written in the long form.+ - 'a_no_xml_pi' : suppress generation of \<?xml ... ?\> processing instruction - 'a_show_tree' : show tree representation of document (for debugging)@@ -158,6 +161,9 @@ >>> format where+ formatEmptyElems+ | hasOption a_no_empty_elements = preventEmptyElements+ | otherwise = const this indent | hasOption a_indent = indentDoc -- document indentation | hasOption a_remove_whitespace = removeDocWhiteSpace -- remove all whitespace between tags@@ -166,12 +172,16 @@ format | hasOption a_show_tree = treeRepOfXmlDoc | hasOption a_show_haskell = haskellRepOfXmlDoc- | hasOption a_output_html = escapeHtmlDoc -- escape al XML and HTML chars >= 128+ | hasOption a_output_html = formatEmptyElems True >>>+ escapeHtmlDoc -- escape al XML and HTML chars >= 128+ >>> encodeDocument -- convert doc into text with respect to output encoding with ASCII as default suppressXmlPi ( lookupDef usAscii a_output_encoding options )- | hasOption a_output_xml = escapeXmlDoc -- escape lt, gt, amp, quot, + | hasOption a_output_xml = formatEmptyElems False >>>+ escapeXmlDoc -- escape lt, gt, amp, quot, + >>> encodeDocument -- convert doc into text with respect to output encoding suppressXmlPi ( lookupDef "" a_output_encoding options ) | otherwise = this@@ -191,6 +201,7 @@ , ( a_show_haskell, v_0 ) , ( a_output_html, v_0 ) , ( a_no_xml_pi, v_0 )+ , ( a_no_empty_elements, v_0 ) ] -- ------------------------------------------------------------
src/Text/XML/HXT/Arrow/XPath.hs view
@@ -83,7 +83,7 @@ -- | Same as 'getXPathTreesInDoc' but with namespace environment for the XPath names -getXPathTreesInDocWithNsEnv :: ArrowXml a => NsEnv -> String -> a XmlTree XmlTree+getXPathTreesInDocWithNsEnv :: ArrowXml a => Attributes -> String -> a XmlTree XmlTree getXPathTreesInDocWithNsEnv env query = canonicalizeForXPath >>> arrL (PT.getXPathSubTreesWithNsEnv env query)@@ -106,7 +106,7 @@ -- | Same as 'getXPathTrees' but with namespace environment for the XPath names -getXPathTreesWithNsEnv :: ArrowXml a => NsEnv -> String -> a XmlTree XmlTree+getXPathTreesWithNsEnv :: ArrowXml a => Attributes -> String -> a XmlTree XmlTree getXPathTreesWithNsEnv env query = arrL (PT.getXPathSubTreesWithNsEnv env query) -- | Select a set of nodes via an XPath expression from an arbitray XML tree@@ -122,7 +122,7 @@ -- | Same as 'getXPathNodeSet' but with namespace environment for the XPath names -getXPathNodeSetWithNsEnv :: ArrowXml a => NsEnv -> String -> a XmlTree XmlNodeSet+getXPathNodeSetWithNsEnv :: ArrowXml a => Attributes -> String -> a XmlTree XmlNodeSet getXPathNodeSetWithNsEnv nsEnv query = arr (PT.getXPathNodeSetWithNsEnv nsEnv query) -- ------------------------------------------------------------@@ -226,7 +226,7 @@ -- | Same as 'processXPathTrees' but with namespace environment for the XPath names -processXPathTreesWithNsEnv :: ArrowXml a => a XmlTree XmlTree -> NsEnv -> String -> a XmlTree XmlTree+processXPathTreesWithNsEnv :: ArrowXml a => a XmlTree XmlTree -> Attributes -> String -> a XmlTree XmlTree processXPathTreesWithNsEnv f nsEnv query = choiceA [ isRoot :-> processChildren pns
src/Text/XML/HXT/Arrow/XPathSimple.hs view
@@ -42,42 +42,37 @@ module Text.XML.HXT.Arrow.XPathSimple where +-- import qualified Debug.Trace as T+ import Control.Monad import Control.Arrow.ListArrows import Data.Maybe -import Text.ParserCombinators.Parsec- ( runParser )+import Text.ParserCombinators.Parsec ( runParser ) import Text.XML.HXT.DOM.Interface import Text.XML.HXT.Arrow.XmlArrow -import qualified Text.XML.HXT.Arrow.XPath as XP- ( getXPathTreesWithNsEnv- )--import Text.XML.HXT.Arrow.Edit- ( canonicalizeForXPath- )--import Text.XML.HXT.XPath.XPathDataTypes- ( XPNumber (..)- , Expr (..)- , Op (..)- , XPathNode (..)- , LocationPath (..)- , Path (..)- , XStep (..)- , AxisSpec (..)- , NodeTest (..)- , XPathValue (..)- )+import qualified Text.XML.HXT.Arrow.XPath as XP ( getXPathTreesWithNsEnv+ )+import Text.XML.HXT.Arrow.Edit ( canonicalizeForXPath+ ) -import Text.XML.HXT.XPath.XPathParser- ( parseXPath- , parseNumber- )+import Text.XML.HXT.XPath.XPathDataTypes ( XPNumber (..)+ , Expr (..)+ , Op (..)+ , XPathNode (..)+ , LocationPath (..)+ , Path (..)+ , XStep (..)+ , AxisSpec (..)+ , NodeTest (..)+ , XPathValue (..)+ )+import Text.XML.HXT.XPath.XPathParser ( parseXPath+ , parseNumber+ ) -- ---------------------------------------- @@ -90,7 +85,7 @@ -- | -- Same Functionality as 'Text.XML.HXT.Arrow.XPath.getXPathTreesInDocWithNsEnv' -getXPathTreesInDocWithNsEnv :: ArrowXml a => NsEnv -> String -> a XmlTree XmlTree+getXPathTreesInDocWithNsEnv :: ArrowXml a => Attributes -> String -> a XmlTree XmlTree getXPathTreesInDocWithNsEnv env query = canonicalizeForXPath >>> tryGetXPath env query@@ -103,11 +98,11 @@ -- | -- Same Functionality as 'Text.XML.HXT.Arrow.XPath.getXPathTreesWithNsEnv' -getXPathTreesWithNsEnv :: ArrowXml a => NsEnv -> String -> a XmlTree XmlTree+getXPathTreesWithNsEnv :: ArrowXml a => Attributes -> String -> a XmlTree XmlTree getXPathTreesWithNsEnv = tryGetXPath -tryGetXPath :: ArrowXml a => NsEnv -> String -> a XmlTree XmlTree+tryGetXPath :: ArrowXml a => Attributes -> String -> a XmlTree XmlTree tryGetXPath env query = ( listA (getXPathTreesWithNsEnvSimple env query) &&& listA ( XP.getXPathTreesWithNsEnv env query)@@ -123,25 +118,26 @@ -- In case of a too complicated or illegal xpath expression an error -- node is returned, else the list of selected XML trees -getXPathTreesWithNsEnvSimple :: ArrowXml a => NsEnv -> String -> a XmlTree XmlTree-getXPathTreesWithNsEnvSimple env s = fromLA $ getXP env s+getXPathTreesWithNsEnvSimple :: ArrowXml a => Attributes -> String -> a XmlTree XmlTree+getXPathTreesWithNsEnvSimple env s = fromLA $ getXP (toNsEnv env) s -- ---------------------------------------- -getXP :: NsEnv -> String -> LA XmlTree XmlTree-getXP env s = either (err- .- (("Syntax error in XPath expression " ++ show s ++ ": ") ++)+getXP :: NsEnv -> String -> LA XmlTree XmlTree+getXP env s = either ( err+ .+ (("Syntax error in XPath expression " ++ show s ++ ": ") ++)+ .+ show . show+ ) (fromMaybe (err ( "XPath expression " ++ show s +++ " too complicated for simple arrow evaluation"+ )+ ) . compXPath+ )+ -- . ( \ e -> T.trace (("getXP: xp = "++) . show $ e) e) .- show . show- ) (fromMaybe (err ( "XPath expression " ++ show s ++- " too complicated for simple arrow evaluation"- )- ) . compXPath- )- .- runParser parseXPath env ""- $ s+ runParser parseXPath env ""+ $ s -- ----------------------------------------
src/Text/XML/HXT/Arrow/XmlArrow.hs view
@@ -2,13 +2,12 @@ {- | Module : Text.XML.HXT.Arrow.XmlArrow- Copyright : Copyright (C) 2005 Uwe Schmidt+ Copyright : Copyright (C) 2005-9 Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe@fh-wedel.de) Stability : experimental Portability: portable- Version : $Id: XmlArrow.hs,v 1.34 2006/11/02 16:43:39 hxml Exp $ Basic arrows for processing XML documents @@ -22,25 +21,26 @@ ( module Text.XML.HXT.Arrow.XmlArrow ) where -import Data.Maybe+import Control.Arrow -- classes+import Control.Arrow.ArrowList+import Control.Arrow.ArrowIf+import Control.Arrow.ArrowTree -import Control.Arrow -- classes-import Control.Arrow.ArrowList-import Control.Arrow.ArrowIf-import Control.Arrow.ArrowTree+import Control.Arrow.ListArrow -- arrow types+import Control.Arrow.StateListArrow+import Control.Arrow.IOListArrow+import Control.Arrow.IOStateListArrow -import Control.Arrow.ListArrow -- arrow types-import Control.Arrow.StateListArrow-import Control.Arrow.IOListArrow-import Control.Arrow.IOStateListArrow+import Data.Maybe import Text.XML.HXT.DOM.Interface-import Text.XML.HXT.DOM.Unicode- ( isXmlSpaceChar- )+import Text.XML.HXT.DOM.Unicode ( isXmlSpaceChar+ ) import qualified Text.XML.HXT.DOM.XmlNode as XN import qualified Text.XML.HXT.DOM.ShowXml as XS +-- ------------------------------------------------------------+ {- | Arrows for processing 'Text.XML.HXT.DOM.TypeDefs.XmlTree's These arrows can be grouped into predicates, selectors, constructors, and transformers.@@ -237,21 +237,21 @@ mkqelem :: QName -> [a n XmlTree] -> [a n XmlTree] -> a n XmlTree mkqelem n afs cfs = mkElement n (catA afs) (catA cfs) - -- | convenient arrow for element construction with strings instead of qualified names as tagnames, see also 'mkElement' and 'mkelem'+ -- | convenient arrow for element construction with strings instead of qualified names as element names, see also 'mkElement' and 'mkelem' mkelem :: String -> [a n XmlTree] -> [a n XmlTree] -> a n XmlTree- mkelem n afs cfs = mkElement (mkSNsName n) (catA afs) (catA cfs)+ mkelem n afs cfs = mkElement (mkName n) (catA afs) (catA cfs) -- | convenient arrow for element constrution with attributes but without content, simple variant of 'mkelem' and 'mkElement' aelem :: String -> [a n XmlTree] -> a n XmlTree- aelem n afs = catA afs >. \ al -> XN.mkElement (mkSNsName n) al []+ aelem n afs = catA afs >. \ al -> XN.mkElement (mkName n) al [] -- | convenient arrow for simple element constrution without attributes, simple variant of 'mkelem' and 'mkElement' selem :: String -> [a n XmlTree] -> a n XmlTree- selem n cfs = catA cfs >. XN.mkElement (mkSNsName n) []+ selem n cfs = catA cfs >. XN.mkElement (mkName n) [] -- | convenient arrow for constrution of empty elements without attributes, simple variant of 'mkelem' and 'mkElement' eelem :: String -> a n XmlTree- eelem n = constA (XN.mkElement (mkSNsName n) [] [])+ eelem n = constA (XN.mkElement (mkName n) [] []) -- | construction of an element node with name \"\/\" for document roots root :: [a n XmlTree] -> [a n XmlTree] -> a n XmlTree@@ -263,7 +263,7 @@ -- | convenient arrow for attribute constrution, simple variant of 'mkAttr' attr :: String -> a n XmlTree -> a n XmlTree- attr = mkAttr . mkSNsName+ attr = mkAttr . mkName -- constant arrows (ignoring the input) for tree construction ------------------------------ @@ -297,7 +297,7 @@ -- | constant arrow for simple processing instructions, see 'mkPi' spi :: String -> String -> a n XmlTree- spi piName piCont = constA (XN.mkPi (mkSNsName piName) [XN.mkText piCont])+ spi piName piCont = constA (XN.mkPi (mkName piName) [XN.mkText piCont]) -- | constant arrow for attribute nodes, attribute name is a qualified name and value is a text, -- | see also 'mkAttr', 'qattr', 'attr'@@ -307,7 +307,7 @@ -- | constant arrow for attribute nodes, attribute name and value are -- | given by parameters, see 'mkAttr' sattr :: String -> String -> a n XmlTree- sattr an av = constA (XN.mkAttr (mkSNsName an) [XN.mkText av])+ sattr an av = constA (XN.mkAttr (mkName an) [XN.mkText av]) -- selector arrows --------------------------------------------------
src/Text/XML/HXT/Arrow/XmlIOStateArrow.hs view
@@ -101,6 +101,7 @@ withTraceLevel, trace, traceMsg,+ traceValue, traceString, traceSource, traceTree,@@ -633,7 +634,7 @@ setBaseURI = changeSysParam (\ b s -> s { xio_baseURI = b } ) >>>- traceString 2 (("setBaseURI: new base URI is " ++) . show)+ traceValue 2 (("setBaseURI: new base URI is " ++) . show) -- | read the base URI from the globale state @@ -675,7 +676,7 @@ >>> changeSysParam (\ b s -> s { xio_defaultBaseURI = b } ) >>>- traceString 2 (("setDefaultBaseURI: new default base URI is " ++) . show)+ traceValue 2 (("setDefaultBaseURI: new default base URI is " ++) . show) where getDir _ = do cwd <- getCurrentDirectory@@ -768,17 +769,25 @@ isA (>= level) ) --- | issue a string message as trace +-- | trace the current value transfered in a sequence of arrows.+--+-- The value is formated by a string conversion function. This is a substitute for+-- the old and less general traceString function++traceValue :: Int -> (b -> String) -> IOStateArrow s b b+traceValue level trc+ = trace level (arr $ (('-' : "- (" ++ show level ++ ") ") ++) . trc)++-- | an old alias for 'traceValue'++traceString :: Int -> (b -> String) -> IOStateArrow s b b+traceString = traceValue++-- | issue a string message as trace+ traceMsg :: Int -> String -> IOStateArrow s b b traceMsg level msg- = perform ( trace level $- constA ('-' : "- (" ++ show level ++ ") " ++ msg)- )---- | issue the string input of an arrow-traceString :: Int -> (String -> String) -> IOStateArrow s String String-traceString level f- = perform (applyA (arr f >>> arr (traceMsg level)))+ = traceValue level (const msg) -- | issue the source representation of a document if trace level >= 3 --@@ -832,7 +841,7 @@ applyA (arr formatParam) ) >>>- traceString 2 ("global state:\n" ++)+ traceValue 2 ("global state:\n" ++) ) where -- formatParam :: (String, XmlTrees) -> IOStateArrow s b1 XmlTree
src/Text/XML/HXT/DOM/Interface.hs view
@@ -20,7 +20,6 @@ module Text.XML.HXT.DOM.Interface ( module Text.XML.HXT.DOM.XmlKeywords , module Text.XML.HXT.DOM.TypeDefs- , module Text.XML.HXT.DOM.NamespacePredicates , module Text.XML.HXT.DOM.Util , module Text.XML.HXT.DOM.XmlOptions , module Text.XML.HXT.DOM.MimeTypes@@ -29,7 +28,6 @@ import Text.XML.HXT.DOM.XmlKeywords -- constants import Text.XML.HXT.DOM.TypeDefs -- XML Tree types-import Text.XML.HXT.DOM.NamespacePredicates import Text.XML.HXT.DOM.Util import Text.XML.HXT.DOM.XmlOptions -- predefined options import Text.XML.HXT.DOM.MimeTypes -- mime types related stuff
src/Text/XML/HXT/DOM/MimeTypes.hs view
@@ -18,11 +18,14 @@ module Text.XML.HXT.DOM.MimeTypes where -import Control.Monad (mplus)+import Control.Monad ( mplus ) +import qualified Data.ByteString as B+import qualified Data.ByteString.Char8 as C+ import Data.Char import Data.List-import qualified Data.Map as M+import qualified Data.Map as M import Data.Maybe import System.IO@@ -93,9 +96,8 @@ readMimeTypeTable :: FilePath -> IO MimeTypeTable readMimeTypeTable inp = do- h <- openFile inp ReadMode- c <- hGetContents h- return . M.fromList . parseMimeTypeTable $ c+ cb <- B.readFile inp+ return . M.fromList . parseMimeTypeTable . C.unpack $ cb parseMimeTypeTable :: String -> [(String, String)] parseMimeTypeTable
− src/Text/XML/HXT/DOM/NamespacePredicates.hs
@@ -1,128 +0,0 @@--- |--- basic Namespace and QName predicates and functions------ $Id: NamespacePredicates.hs,v 1.3 2006/11/12 14:53:00 hxml Exp $-----module Text.XML.HXT.DOM.NamespacePredicates- ( module Text.XML.HXT.DOM.NamespacePredicates- )-where--import Text.XML.HXT.DOM.XmlTreeTypes -- NTree and XNode types-import Text.XML.HXT.DOM.XmlKeywords -- keywords for DTD--import Text.XML.HXT.DOM.Unicode- ( isXmlNCNameStartChar- , isXmlNCNameChar- )---- ------------------------------------------------------------------------------------ |--- Compute the name prefix and the namespace uri for a qualified name.------ This function does not test whether the name is a wellformed qualified name.--- see Namespaces in XML Rule [6] to [8]. Error checking is done with separate functions,--- see 'isWellformedQName' and 'isWellformedQualifiedName' for error checking.--setNamespace :: NsEnv -> QName -> QName-setNamespace nst n- = uncurry ns . span (/= ':') $ qn- where- qn = qualifiedName n -- using qualifiedName instead of localPart enables recomputing of setNamespace-- ns :: String -> String -> QName- ns lp "" -- no ":" found in name, use default namespace uri- = mkQName "" lp (lookup1 "" nst)-- ns px@(_:_) (':' : lp@(_:_)) -- non empty prefix and non empty local part found- = mkQName px lp (lookup1 px nst)-- ns _ _ -- not a legal qualified name, don't change name- = n--xmlnsQN :: QName-xmlnsQN = mkQName "" a_xmlns xmlnsNamespace---- ------------------------------------------------------------------------------------ |--- test for wellformed NCName, rule [4] XML Namespaces--isNCName :: String -> Bool-isNCName []- = False-isNCName n- = and ( zipWith ($)- (isXmlNCNameStartChar : repeat isXmlNCNameChar)- n- )---- |--- test for wellformed QName, rule [6] XML Namespaces--- predicate is used in filter 'valdateNamespaces'.--isWellformedQualifiedName :: String -> Bool-isWellformedQualifiedName s- | null lp- = isNCName px- | otherwise- = isNCName px && isNCName (tail lp)- where- (px, lp) = span (/= ':') s---- |--- test for wellformed QName values.--- A QName is wellformed, if the local part is a NCName, the namePrefix, if not empty, is also a NCName.--- predicate is used in filter 'valdateNamespaces'.--isWellformedQName :: QName -> Bool-isWellformedQName n- = isNCName lp -- rule [8] XML Namespaces- &&- ( null px -- rule [6] XML Namespaces- ||- isNCName px -- rule [7] XML Namespaces- )- where- px = namePrefix n- lp = localPart n---- |--- test for a wellformed namespace declaration--- all namespace prefixes starting with \"xml\" are reserved for XML related definitions.--- predicate is used in filter 'valdateNamespaces'.--isWellformedNSDecl :: QName -> Bool-isWellformedNSDecl n- = null px- ||- px /= a_xmlns- ||- (take 3 lp) /= a_xml- where- lp = localPart n- px = namePrefix n---- |--- --- predicate is used in filter 'valdateNamespaces'.--isDeclaredNamespace :: QName -> Bool-isDeclaredNamespace n- | null px -- no namespace used- = True- | px == a_xmlns -- "xmlns" has a predefined namespace uri- = ns == xmlnsNamespace- | px == a_xml -- "xml" has a predefiend namespace"- = ns == xmlNamespace- | otherwise -- namespace values are not empty- = (not . null) ns- where- px = namePrefix n- ns = namespaceUri n---- -----------------------------------------------------------------------------
src/Text/XML/HXT/DOM/QualifiedName.hs view
@@ -16,17 +16,100 @@ -- ------------------------------------------------------------ module Text.XML.HXT.DOM.QualifiedName- ( module Text.XML.HXT.DOM.QualifiedName+ ( QName+ , XName+ , NsEnv++ , mkQName+ , mkName+ , mkNsName+ , mkSNsName+ , mkPrefixLocalPart++ , equivQName+ , equivUri+ , equalQNameBy++ , namePrefix+ , localPart+ , namespaceUri++ , newXName+ , nullXName+ , isNullXName++ , mkQName'+ , namePrefix'+ , localPart'+ , namespaceUri'++ , setNamePrefix'+ , setLocalPart'+ , setNamespaceUri'++ , qualifiedName+ , universalName+ , universalUri+ , buildUniversalName++ , normalizeNsUri++ , setNamespace -- namespace related functions+ , isNCName+ , isWellformedQualifiedName+ , isWellformedQName+ , isWellformedNSDecl+ , isWellformedNameSpaceName+ , isNameSpaceName+ , isDeclaredNamespace++ , xmlNamespaceXName+ , xmlXName+ , xmlnsNamespaceXName+ , xmlnsXName+ , xmlnsQN++ , toNsEnv ) where-import Control.Parallel.Strategies -import Data.Char (toLower)-import Data.Typeable+{-+import Debug.Trace+ -} +import Control.Arrow ( (***) )++import Control.Concurrent.MVar+import Control.Parallel.Strategies++import Data.AssocList+import Data.Char ( toLower )+import Data.List ( isPrefixOf )+import qualified Data.Map as M+import Data.Maybe+import Data.Typeable++import System.IO.Unsafe ( unsafePerformIO )++import Text.XML.HXT.DOM.XmlKeywords ( a_xml+ , a_xmlns+ , xmlNamespace+ , xmlnsNamespace+ )++import Text.XML.HXT.DOM.Unicode ( isXmlNCNameStartChar+ , isXmlNCNameChar+ )+ -- --------------------------------------------------------------------------------++-- | XML names are represented by Strings, but these strings do not mix up with normal strings.+-- Names are always reduced to normal form, and they are stored internally in a name cache+-- for sharing equal names by the same data structure++type XName = Atom+ -- | -- Namespace support for element and attribute names. --@@ -36,179 +119,419 @@ -- When dealing with namespaces, the document tree must be processed by "propagateNamespaces" -- to split names of structure \"prefix:localPart\" and label the name with the apropriate namespace uri -data QName = QN { namePrefix :: String -- ^ the name prefix part of a qualified name \"namePrefix:localPart\"- , localPart :: String -- ^ the local part of a qualified name \"namePrefix:localPart\"- , namespaceUri :: String -- ^ the associated namespace uri- }- deriving (Ord, Show, Read, Typeable)+data QName = LP ! XName+ | PX ! XName ! QName+ | NS ! XName ! QName+ deriving (Ord, Show, Read, Typeable) +-- |+-- Type for the namespace association list, used when propagating namespaces by+-- modifying the 'QName' values in a tree++type NsEnv = AssocList XName XName++-- -----------------------------------------------------------------------------+ -- | Two QNames are equal if (1. case) namespaces are both empty and the qualified names -- (prefix:localpart) are the same or (2. case) namespaces are set and namespaces and -- local parts both are equal instance Eq QName where- q1 == q2- | null ns1 && null ns2- = qualifiedName q1 == qualifiedName q2- | otherwise- = localPart q1 == localPart q2- &&- ns1 == ns2- where- ns1 = namespaceUri q1- ns2 = namespaceUri q2+ (LP lp1) == (LP lp2) = lp1 == lp2+ (PX px1 qn1) == (PX px2 qn2) = px1 == px2 && qn1== qn2+ (NS ns1 qn1) == (NS ns2 qn2) = ns1 == ns2 && localPart' qn1 == localPart' qn2+ n1@(PX _ _) == n2@(LP _) = qualifiedName n1 == qualifiedName n2+ n1@(LP _) == n2@(PX _ _) = qualifiedName n1 == qualifiedName n2+ _ == _ = False +-- the 4. and 5. rule are only neccessary when someone+-- uses XML names not in a systematical way+-- and does things like "mkName("x:y") == mkPrefixLocalPart("x","y")+ instance NFData QName where- rnf (QN np lp ns) = rnf np `seq` rnf lp `seq` rnf ns +-- ----------------------------------------------------------------------------- --- just for adding the module to the lib+newXName :: String -> XName+newXName = newAtom++isNullXName :: XName -> Bool+isNullXName = (== nullXName)++nullXName :: XName+nullXName = newXName ""++-- | access name prefix++namePrefix' :: QName -> XName+namePrefix' (LP _) = nullXName+namePrefix' (PX px _) = px+namePrefix' (NS _ n) = namePrefix' n++-- | access local part++localPart' :: QName -> XName+localPart' (LP lp) = lp+localPart' (PX _ n) = localPart' n+localPart' (NS _ n) = localPart' n++-- | access namespace uri++namespaceUri' :: QName -> XName+namespaceUri' (NS ns _) = ns+namespaceUri' _ = nullXName++namePrefix :: QName -> String+namePrefix = show . namePrefix'++localPart :: QName -> String+localPart = show . localPart'++namespaceUri :: QName -> String+namespaceUri = show . namespaceUri'++-- ------------------------------------------------------------++-- | set name prefix++setNamespaceUri' :: XName -> QName -> QName+setNamespaceUri' ns (NS _ n) = if isNullXName ns+ then n+ else NS ns n+setNamespaceUri' ns n = if isNullXName ns+ then n+ else NS ns n++-- | set local part++setLocalPart' :: XName -> QName -> QName+setLocalPart' lp (LP _) = LP lp+setLocalPart' lp (PX px n) = PX px (setLocalPart' lp n)+setLocalPart' lp (NS ns n) = NS ns (setLocalPart' lp n)++-- | set name prefix++setNamePrefix' :: XName -> QName -> QName+setNamePrefix' px (PX _ n) = if px == nullXName+ then n+ else PX px n+setNamePrefix' px n@(LP _) = if px == nullXName+ then n+ else PX px n+setNamePrefix' px (NS ns n) = NS ns (setNamePrefix' px n)+++-- ------------------------------------------------------------+ -- | -- builds the full name \"prefix:localPart\", if prefix is not null, else the local part is the result -qualifiedName :: QName -> String-qualifiedName n- | null px- = lp- | otherwise- = px ++ (':' : lp)- where- px = namePrefix n- lp = localPart n+qualifiedName :: QName -> String+qualifiedName (LP lp) = show lp+qualifiedName (PX px n) = show px ++ (':' : qualifiedName n)+qualifiedName (NS _ n) = qualifiedName n -- | -- builds the \"universal\" name, that is the namespace uri surrounded with \"{\" and \"}\" followed by the local part -- (specialisation of 'buildUniversalName') -universalName :: QName -> String-universalName = buildUniversalName (\ ns lp -> '{' : ns ++ '}' : lp)+universalName :: QName -> String+universalName = buildUniversalName (\ ns lp -> '{' : ns ++ '}' : lp) -- | -- builds an \"universal\" uri, that is the namespace uri followed by the local part. This is usefull for RDF applications, -- where the subject, predicate and object often are concatenated from namespace uri and local part -- (specialisation of 'buildUniversalName') -universalUri :: QName -> String-universalUri = buildUniversalName (++)+universalUri :: QName -> String+universalUri = buildUniversalName (++) -- | -- builds a string from the namespace uri and the local part. If the namespace uri is empty, the local part is returned, else -- namespace uri and local part are combined with the combining function given by the first parameter -buildUniversalName :: (String -> String -> String) -> QName -> String-buildUniversalName bf n- | null ns- = lp- | otherwise- = bf ns lp- where- ns = namespaceUri n- lp = localPart n---- |--- constructs a complete qualified name with 'namePrefix', 'localPart' and 'namespaceUri'.+buildUniversalName :: (String -> String -> String) -> QName -> String+buildUniversalName bf (NS ns n) = show ns `bf` localPart n+buildUniversalName _ n = localPart n -mkQName :: String -> String -> String -> QName-mkQName p l n- = QN { namePrefix = p- , localPart = l- , namespaceUri = n- }+-- ------------------------------------------------------------+--+-- internal XName functions --- |--- constructs a simple, namespace unaware name, 'namePrefix' and 'namespaceUri' are set to the empty string.+mkQName' :: XName -> XName -> XName -> QName+mkQName' px lp ns+ | isNullXName ns = px_lp+ | otherwise = NS ns px_lp+ where+ px_lp+ | isNullXName px = LP lp+ | otherwise = PX px (LP lp) -mkName :: String -> QName-mkName s- = QN { namePrefix = ""- , localPart = s- , namespaceUri = ""- }+-- ------------------------------------------------------------ -- | -- constructs a simple name, with prefix and localPart but without a namespace uri. ----- see also 'mkName', 'mkNsName', 'mkSNsName'+-- see also 'mkQName', 'mkName' -mkPrefixLocalPart :: String -> String -> QName-mkPrefixLocalPart p l- = QN { namePrefix = p- , localPart = l- , namespaceUri = ""- }+mkPrefixLocalPart :: String -> String -> QName+mkPrefixLocalPart px lp+ | null px = n1+ | otherwise = PX (newXName px) n1+ where+ n1 = LP (newXName lp) -- |--- constructs a simple, namespace aware name, with prefix:localPart as first parameter, namspace uri as second.------ see also 'mkName', 'mkPrefixLocalPart'--mkNsName :: String -> String -> QName-mkNsName n ns- = QN { namePrefix = p- , localPart = l- , namespaceUri = ns- }- where- (x1, x2) = span (/= ':') n- (p, l)- | null x2 = ("", x1)- | otherwise = (x1, tail x2)+-- constructs a simple, namespace unaware name.+-- If the name is in @prefix:localpart@ form and the prefix is not empty+-- the name is split internally into+-- a prefix and a local part. +mkName :: String -> QName+mkName n + | (':' `elem` n)+ &&+ not (null px) -- more restrictive: isWellformedQualifiedName n+ = mkPrefixLocalPart px lp+ | otherwise = mkPrefixLocalPart "" n+ where+ (px, (_:lp)) = span (/= ':') n -- |--- constructs a simple name, with prefix:localPart as 1 parameter, with empty namspace uri, same as 'mkPrefixLocalPart, but with a single parameter------ see also 'mkNsName', 'mkPrefixLocalPart'+-- constructs a complete qualified name with 'namePrefix', 'localPart' and 'namespaceUri'.+-- This function can be used to build not wellformed prefix:localpart names.+-- The XPath module uses wildcard names like @xxx:*@. These must be build with 'mkQName'+-- and not with mkName. -mkSNsName :: String -> QName-mkSNsName n = mkNsName n ""+mkQName :: String -> String -> String -> QName+mkQName px lp ns+ | null ns = n1+ | otherwise = NS (newXName ns) n1+ where+ n1 = mkPrefixLocalPart px lp --- | Empty QName+-- ------------------------------------------------------------ -nullQName :: QName-nullQName = QN "" "" ""+-- |+-- old name for 'mkName' --- | Equality of QNames: Two QNames are equal, if the local parts are equal--- and the namespace URIs are equal.--- The comparison works with and without namespace propagation.--- If namespaces have been propagated, the name is split into prefix and local part--- and the namespace uri is set. In this case the prefix is not significant for equality test.--- If namespaces have not been propagated, the local part contains the full name, prefix--- and namespace URI are empty. The full name (prefix and local part) is used for comparison.+mkSNsName :: String -> QName+mkSNsName = mkName -equalQName :: QName -> QName -> Bool-equalQName = equalQNameBy (==)+-- |+-- constructs a simple, namespace aware name, with prefix:localPart as first parameter,+-- namspace uri as second.+--+-- see also 'mkName', 'mkPrefixLocalPart' +mkNsName :: String -> String -> QName+mkNsName n ns+ | null ns = mkName n+ | otherwise = NS (newXName ns) (mkName n)++-- ------------------------------------------------------------+ -- | Equivalent QNames are defined as follows: The URIs are normalized before comparison. -- Comparison is done with 'equalQNameBy' and 'equivUri' -equivQName :: QName -> QName -> Bool-equivQName = equalQNameBy equivUri+equivQName :: QName -> QName -> Bool+equivQName = equalQNameBy equivUri -- | Comparison of normalized namespace URIs using 'normalizeNsUri' -equivUri :: String -> String -> Bool-equivUri x y = normalizeNsUri x == normalizeNsUri y+equivUri :: String -> String -> Bool+equivUri x y = normalizeNsUri x == normalizeNsUri y -- | Sometimes a weaker equality relation than 'equalQName' is appropriate, e.g no case significance in names, ... -- a name normalization function can be applied to the strings before comparing. Called by 'equalQName' and -- 'equivQName' -equalQNameBy :: (String -> String -> Bool) -> QName -> QName -> Bool-equalQNameBy equiv q1 q2- = localPart q1 == localPart q2- &&- (namespaceUri q1 `equiv` namespaceUri q2)+equalQNameBy :: (String -> String -> Bool) -> QName -> QName -> Bool+equalQNameBy equiv q1 q2 = localPart q1 == localPart q2+ &&+ (namespaceUri q1 `equiv` namespaceUri q2) -- | Normalization of URIs: Normalization is done by conversion into lowercase letters. A trailing \"\/\" is ignored -normalizeNsUri :: String -> String-normalizeNsUri- = map toLower . stripSlash+normalizeNsUri :: String -> String+normalizeNsUri = map toLower . stripSlash where- stripSlash "" = ""+ stripSlash "" = "" stripSlash s- | last s == '/' = init s- | otherwise = s+ | last s == '/' = init s+ | otherwise = s -- -----------------------------------------------------------------------------++-- Namespace predicates++-- |+-- Compute the name prefix and the namespace uri for a qualified name.+--+-- This function does not test whether the name is a wellformed qualified name.+-- see Namespaces in XML Rule [6] to [8]. Error checking is done with separate functions,+-- see 'isWellformedQName' and 'isWellformedQualifiedName' for error checking.++setNamespace :: NsEnv -> QName -> QName+setNamespace env n@(PX px _) = attachNS env px n -- none empty prefix found+setNamespace env n@(LP _) = attachNS env nullXName n -- use default namespace uri+setNamespace env (NS _ n) = setNamespace env n++attachNS :: NsEnv -> XName -> QName -> QName+attachNS env px n1 = maybe n1 (\ ns -> NS ns n1) . lookup px $ env++xmlnsNamespaceXName :: XName+xmlnsNamespaceXName = newXName xmlnsNamespace++xmlnsXName :: XName+xmlnsXName = newXName a_xmlns++xmlnsQN :: QName+xmlnsQN = NS xmlnsNamespaceXName (LP xmlnsXName)++xmlNamespaceXName :: XName+xmlNamespaceXName = newXName xmlNamespace++xmlXName :: XName+xmlXName = newXName a_xml++-- -----------------------------------------------------------------------------+--++-- |+-- test for wellformed NCName, rule [4] XML Namespaces++isNCName :: String -> Bool+isNCName [] = False+isNCName n = and ( zipWith ($)+ (isXmlNCNameStartChar : repeat isXmlNCNameChar)+ n+ )++-- |+-- test for wellformed QName, rule [6] XML Namespaces+-- predicate is used in filter 'valdateNamespaces'.++isWellformedQualifiedName :: String -> Bool+isWellformedQualifiedName s+ | null lp = isNCName px+ | otherwise = isNCName px && isNCName (tail lp)+ where+ (px, lp) = span (/= ':') s++-- |+-- test for wellformed QName values.+-- A QName is wellformed, if the local part is a NCName, the namePrefix, if not empty, is also a NCName.+-- predicate is used in filter 'valdateNamespaces'.++isWellformedQName :: QName -> Bool+isWellformedQName (LP lp) = isNCName . show $ lp -- rule [8] XML Namespaces+isWellformedQName (PX px n) = (isNCName . show) px -- rule [7] XML Namespaces+ &&+ isWellformedQName n+isWellformedQName (NS _ n) = isWellformedQName n++-- |+-- test whether an attribute name is a namesapce declaration name.+-- If this is not the case True is the result, else+-- the name must be a well formed namespace name:+-- All namespace prefixes starting with \"xml\" are reserved for XML related definitions.+-- predicate is used in filter 'valdateNamespaces'.++isWellformedNSDecl :: QName -> Bool+isWellformedNSDecl n = not (isNameSpaceName n)+ ||+ isWellformedNameSpaceName n++-- |+-- test for a namespace name to be well formed++isWellformedNameSpaceName :: QName -> Bool+isWellformedNameSpaceName (LP lp) = lp == xmlnsXName+isWellformedNameSpaceName (PX px n) = px == xmlnsXName+ &&+ not (null lp')+ &&+ not (a_xml `isPrefixOf` lp')+ where+ lp' = localPart n+isWellformedNameSpaceName (NS _ n) = isWellformedNSDecl n++-- |+-- test whether a name is a namespace declaration attribute name++isNameSpaceName :: QName -> Bool+isNameSpaceName (LP lp) = lp == xmlnsXName+isNameSpaceName (PX px _) = px == xmlnsXName+isNameSpaceName (NS _ n) = isNameSpaceName n++-- |+-- +-- predicate is used in filter 'valdateNamespaces'.++isDeclaredNamespace :: QName -> Bool+isDeclaredNamespace (NS ns n) = isNS ns n+isDeclaredNamespace n = isNS nullXName n++isNS :: XName -> QName -> Bool+isNS _ (LP _) = True -- no namespace used+isNS ns (PX px _)+ | px == xmlnsXName = ns == xmlnsNamespaceXName -- "xmlns" has a predefined namespace uri+ | px == xmlXName = ns == xmlNamespaceXName -- "xml" has a predefiend namespace"+ | otherwise = ns /= nullXName -- namespace values are not empty+isNS ns (NS _ n) = isNS ns n -- this does not occur, but warning is prevented++-- -----------------------------------------------------------------------------++toNsEnv :: AssocList String String -> NsEnv+toNsEnv = map (newXName *** newXName)++-- -----------------------------------------------------------------------------++-- the name cache, same implementation strategy as in Data.Atom,+-- but conversion to and from ByteString prevented++type Atoms = M.Map String String++newtype Atom = A String+ deriving (Eq, Ord, Typeable)++-- ------------------------------------------------------------++-- | the internal cache for the strings++theAtoms :: MVar Atoms+theAtoms = unsafePerformIO (newMVar M.empty)+{-# NOINLINE theAtoms #-}++-- | insert a bytestring into the atom cache++insertAtom :: String -> Atoms -> (Atoms, Atom)+insertAtom s m = maybe (M.insert {- (trace (show s) s) -} s s m, A s `demanding` rnf s)+ (\ s' -> (m, A s'))+ .+ M.lookup s $ m++-- | creation of an @Atom@ from a @String@++newAtom :: String -> Atom+newAtom = unsafePerformIO . newAtom'+{-# NOINLINE newAtom #-}++-- | The internal operation running in the IO monad+newAtom' :: String -> IO Atom+newAtom' s = do+ m <- takeMVar theAtoms+ let (m', a) = insertAtom s m+ putMVar theAtoms m'+ return a++instance Read Atom where+ readsPrec p str = [ (newAtom x, y) | (x, y) <- readsPrec p str ]++instance Show Atom where+ show (A s) = s++instance NFData Atom where++-----------------------------------------------------------------------------
src/Text/XML/HXT/DOM/ShowXml.hs view
@@ -2,7 +2,7 @@ {- | Module : Text.XML.HXT.DOM.ShowXml- Copyright : Copyright (C) 2008 Uwe Schmidt+ Copyright : Copyright (C) 2008-9 Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe@fh-wedel.de)@@ -21,15 +21,14 @@ ) where +import Data.Maybe import Data.Tree.NTree.TypeDefs import Text.XML.HXT.DOM.TypeDefs -- XML Tree types import Text.XML.HXT.DOM.XmlKeywords-import Text.XML.HXT.DOM.XmlNode- ( mkDTDElem- , getDTDAttrl- )-import Data.Maybe+import Text.XML.HXT.DOM.XmlNode ( mkDTDElem+ , getDTDAttrl+ ) -- ----------------------------------------------------------------------------- --
src/Text/XML/HXT/DOM/TypeDefs.hs view
@@ -29,7 +29,7 @@ import Data.Tree.NTree.TypeDefs import Data.Typeable -import Text.XML.HXT.DOM.QualifiedName hiding ( QN )+import Text.XML.HXT.DOM.QualifiedName -- ----------------------------------------------------------------------------- --@@ -126,15 +126,6 @@ -- used for storing option lists and features of DTD parts type Attributes = AssocList String String---- ------------------------------------------------------------------------------------ |--- Type for the namespace association list, used when propagating namespaces by--- modifying the 'QName' values in a tree--type NsEnv = AssocList String String -- ----------------------------------------------------------------------------- --
src/Text/XML/HXT/DOM/Unicode.hs view
@@ -2,13 +2,12 @@ {- | Module : Text.XML.HXT.DOM.Unicode- Copyright : Copyright (C) 2005 Uwe Schmidt+ Copyright : Copyright (C) 2005-2008 Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe@fh-wedel.de) Stability : experimental Portability: portable- Version : $Id$ Unicode and UTF-8 Conversion Functions @@ -279,9 +278,9 @@ isXmlPubidChar :: Unicode -> Bool isXmlPubidChar c- = isInList c [ ('A', 'Z')+ = isInList c [ ('0', '9')+ , ('A', 'Z') , ('a', 'z')- , ('0', '9') ] || ( c `elem` " \r\n-'()+,./:=?;!*#@$_%" )
src/Text/XML/HXT/DOM/XmlKeywords.hs view
@@ -56,6 +56,7 @@ a_module, a_modifier, a_name,+ a_no_empty_elements, a_no_xml_pi, a_options_curl, a_output_encoding,@@ -75,6 +76,7 @@ a_source, a_status, a_standalone,+ a_strict_input, a_tagsoup, a_trace, a_type,@@ -162,6 +164,7 @@ a_module = "module" a_modifier = "modifier" a_name = "name"+a_no_empty_elements = "no-empty-elements" a_no_xml_pi = "no-xml-pi" a_options_curl = "options-curl" a_output_file = "output-file"@@ -181,6 +184,7 @@ a_source = "source" a_standalone = "standalone" a_status = "status"+a_strict_input = "strict-input" a_tagsoup = "tagsoup" a_trace = "trace" a_type = "type"
src/Text/XML/HXT/DOM/XmlNode.hs view
@@ -303,7 +303,7 @@ mkElement n al = mkTree (mkElementNode n al) mkRoot :: XmlTrees -> XmlTrees -> XmlTree-mkRoot al = mkTree (mkElementNode (mkSNsName t_root) al)+mkRoot al = mkTree (mkElementNode (mkName t_root) al) mkAttr :: QName -> XmlTrees -> XmlTree mkAttr n = mkTree (mkAttrNode n)
src/Text/XML/HXT/DOM/XmlOptions.hs view
@@ -58,6 +58,7 @@ , Option "H" [a_parse_html] (NoArg (att a_parse_html v_1)) "parse input as HTML, try to interprete everything as HTML, no validation" , Option "M" [a_parse_by_mimetype] (NoArg (att a_parse_by_mimetype v_1)) "parse dependent on mime type: text/html as HTML, text/xml and text/xhtml and others as XML, else no parse" , Option "" [a_parse_xml] (NoArg (att a_parse_html v_0)) "parse input as XML, (default)"+ , Option "" [a_strict_input] (NoArg (att a_strict_input v_1)) "read input files strictly, this ensures closing the files correctly even if not read completely" , Option "T" [a_tagsoup] (NoArg (att a_tagsoup v_1)) "lasy tagsoup parser, for HTML and XML, no DTD, no validation, no PIs, only XHTML entityrefs" , Option "" [a_issue_warnings] (NoArg (att a_issue_warnings v_1)) "issue warnings, when parsing HTML (default)" , Option "Q" [a_do_not_issue_warnings] (NoArg (att a_issue_warnings v_0)) "ignore warnings, when parsing HTML"@@ -112,6 +113,7 @@ , Option "f" [a_output_file] (ReqArg (att a_output_file) "FILE") "output file for resulting document (default: stdout)" , Option "" [a_output_html] (NoArg (att a_output_html v_1)) "output of none ASCII chars as HTMl entity references" , Option "" [a_no_xml_pi] (NoArg (att a_no_xml_pi v_1)) ("output without <?xml ...?> processing instruction, useful in combination with --" ++ show a_output_html)+ , Option "" [a_no_empty_elements] (NoArg (att a_no_empty_elements v_1)) "output of empty elements done in format <elem...></elem> instead of <elem/>" ] where att n v = (n, v)
− src/Text/XML/HXT/DOM/XmlTreeTypes.hs
@@ -1,77 +0,0 @@--- |--- exports the core data types--- and some additional types and functions--- for compatibility with none arrow modules------ Version : $Id: XmlTreeTypes.hs,v 1.6 2006/05/09 15:30:43 hxml Exp $--module Text.XML.HXT.DOM.XmlTreeTypes- ( module Data.Tree.NTree.Filter- , module Text.XML.HXT.DOM.TypeDefs- , module Text.XML.HXT.DOM.XmlTreeTypes- )--where--import Data.Tree.NTree.Filter-import Text.XML.HXT.DOM.TypeDefs---- aliases for compatiblility reasons--mkNode :: node -> NTrees node -> NTree node-mkNode = mkTree--formatNTree :: (node -> String) -> NTree node -> String-formatNTree = formatTree--foldNTree :: (a -> [b] -> b) -> NTree a -> b-foldNTree = foldTree--mapNTree :: (a -> b) -> NTree a -> NTree b-mapNTree = fmap--nTreeToList :: NTree a -> [a]-nTreeToList = nodesTree--depthNTree :: NTree a -> Int-depthNTree = depthTree--cardNTree :: NTree a -> Int-cardNTree = cardNTree---- ----------------------------------------------------------------------------------- Basic types for filters---- | A functions that takes a node and returns a list of nodes--type XmlFilter = TFilter XNode---- | A function that takes a list of nodes and returns a list of nodes--type XmlSFilter = TSFilter XNode----- ------------------------------------------------------------------------------------ | Tag name-type TagName = QName---- | Attribute name-type AttrName = QName---- --------------------------------------------------------------------------------- | shortcut for 'qualifiedName'--tName :: QName -> String-tName = qualifiedName---- | shortcut for 'qualifiedName'--aName :: QName -> String-aName = qualifiedName---- ------------------------------------------------------------------------------
src/Text/XML/HXT/IO/GetFILE.hs view
@@ -1,40 +1,55 @@ -- ------------------------------------------------------------------ GET for local file access------ Version : $Id: GetFILE.hs,v 1.6 2006/09/04 06:03:03 hxml Exp $ +{- |+ Module : Text.XML.HXT.IO.GetFILE+ Copyright : Copyright (C) 2008 Uwe Schmidt+ License : MIT++ Maintainer : Uwe Schmidt (uwe@fh-wedel.de)+ Stability : stable+ Portability: portable++ The GET method for file protocol++-}++-- ------------------------------------------------------------+ module Text.XML.HXT.IO.GetFILE- ( module Text.XML.HXT.IO.GetFILE+ ( getStdinCont+ , getCont ) where -import System.IO- ( IOMode(..)- , openFile- -- , getContents is defined in the prelude- , hGetContents- )+import qualified Data.ByteString as B+import qualified Data.ByteString.Char8 as C -import System.IO.Error- ( ioeGetErrorString- , try- )+import System.IO ( IOMode(..)+ , openFile+ -- , getContents is defined in the prelude+ , hGetContents+ ) -import System.Directory- ( doesFileExist- , getPermissions- , readable- )+import System.IO.Error ( ioeGetErrorString+ , try+ ) +import System.Directory ( doesFileExist+ , getPermissions+ , readable+ )+ -- ------------------------------------------------------------ -getStdinCont :: IO (Either String String)-getStdinCont+getStdinCont :: Bool -> IO (Either String String)+getStdinCont strictInput = do- c <- try ( do- getContents+ c <- try ( if strictInput+ then do+ cb <- B.getContents+ return (C.unpack cb)+ else getContents ) return (either readErr Right c) where@@ -43,8 +58,8 @@ ++ ioeGetErrorString e ) -getCont :: String -> IO (Either String String)-getCont source+getCont :: Bool -> String -> IO (Either String String)+getCont strictInput source = do -- preliminary exists <- doesFileExist source' if not exists@@ -54,12 +69,17 @@ if not (readable perm) then return (Left ("file " ++ show source' ++ " not readable")) else do- c <- try ( do- h <- openFile source' ReadMode- hGetContents h+ c <- try ( if strictInput+ then do+ cb <- B.readFile source+ return (C.unpack cb)+ else do+ h <- openFile source' ReadMode+ hGetContents h ) return (either readErr Right c) where+ -- please NO call of unEscapeString for file names, NOT: source' = drivePath . unEscapeString $ source source' = drivePath $ source readErr e
src/Text/XML/HXT/Parser/TagSoup.hs view
@@ -2,7 +2,7 @@ {- | Module : Text.XML.HXT.Parser.TagSoup- Copyright : Copyright (C) 2005 Uwe Schmidt+ Copyright : Copyright (C) 2005-2008 Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe@fh-wedel.de)@@ -23,60 +23,41 @@ -- ------------------------------------------------------------ -import Data.Char (toLower)-import Data.Maybe-import qualified Data.Map as M-+import Data.Char (toLower)+import Data.Maybe import Text.HTML.TagSoup-import Text.HTML.TagSoup.Entity- ( lookupNumericEntity- )--import Text.XML.HXT.DOM.Unicode- ( isXmlSpaceChar- )--import Text.XML.HXT.DOM.NamespacePredicates- ( isWellformedQualifiedName- )--import Text.XML.HXT.Parser.XmlEntities- ( -- xmlEntities- )-+import Text.HTML.TagSoup.Entity ( lookupNumericEntity+ )+import Text.XML.HXT.DOM.Unicode ( isXmlSpaceChar+ )+import Text.XML.HXT.Parser.HtmlParsec ( isEmptyHtmlTag+ , isInnerHtmlTagOf+ , closesHtmlTag+ ) import Text.XML.HXT.Parser.XhtmlEntities- ( xhtmlEntities- )--import Text.XML.HXT.Parser.HtmlParsec- ( isEmptyHtmlTag- , isInnerHtmlTagOf- , closesHtmlTag- )--import Text.XML.HXT.DOM.Interface- ( XmlTrees- , QName- , NsEnv- , mkQName- , mkName- , mkPrefixLocalPart- , c_warn- , a_xml- , a_xmlns- , xmlNamespace- , xmlnsNamespace- )--import Text.XML.HXT.DOM.XmlNode- ( isElem- , mkError- , mkCmt- , mkText- , mkElement- , mkAttr- )+import Text.XML.HXT.DOM.Interface ( XmlTrees+ , QName+ , NsEnv+ , toNsEnv+ , newXName+ , nullXName+ , mkQName'+ , mkName+ , isWellformedQualifiedName+ , c_warn+ , a_xml+ , a_xmlns+ , xmlNamespace+ , xmlnsNamespace+ )+import Text.XML.HXT.DOM.XmlNode ( isElem+ , mkError+ , mkCmt+ , mkText+ , mkElement+ , mkAttr+ ) -- ---------------------------------------- @@ -84,15 +65,13 @@ -- the first time they are ecountered, and later always this name is used, -- not a string built by the parser. -type Tags = [Tag]--type NameTable = M.Map QName QName+type Tags = [Tag] -type Context = ([String], NsEnv)+type Context = ([String], NsEnv) -data State = S !Tags !NameTable -- the name table must be evaluated striktly, else a stack overflow occurs+type State = Tags -newtype Parser a = P { parse :: State -> (a, State)}+newtype Parser a = P { parse :: State -> (a, State)} instance Monad Parser where return x = P $ \ ts -> (x, ts)@@ -102,7 +81,7 @@ parse (f res) ts' runParser :: Parser a -> Tags -> a-runParser p ts = fst . parse p $ S ts M.empty+runParser p ts = fst . parse p $ ts -- ---------------------------------------- @@ -112,13 +91,13 @@ if p then t else e lookAhead :: (Tag -> Bool) -> Parser Bool-lookAhead p = P $ \ s@(S ts _) -> (not (null ts) && p (head ts), s)+lookAhead p = P $ \ s -> (not (null s) && p (head s), s) -- ---------------------------------------- -- primitive look ahead tests isEof :: Parser Bool-isEof = P $ \ s@(S ts _) -> (null ts, s)+isEof = P $ \ s -> (null s, s) isText :: Parser Bool isText = lookAhead is@@ -160,7 +139,7 @@ -- primitive symbol parsers getTag :: Parser Tag-getTag = P $ \ (S (t1:ts1) nt) -> (t1, S ts1 nt)+getTag = P $ \ (t1:ts1) -> (t1, ts1) getSym :: (Tag -> a) -> Parser a getSym f = do@@ -207,7 +186,7 @@ -- pushback parsers for inserting missing tags pushBack :: Tag -> Parser ()-pushBack t = P $ \ (S ts nt) -> ((), S (t:ts) nt)+pushBack t = P $ \ ts -> ((), t:ts) insCls :: String -> Parser () insCls n = pushBack (TagClose n)@@ -217,43 +196,31 @@ -- ---------------------------------------- -insertQName :: QName -> Parser QName-insertQName n = P $ \ (S ts nt) -> let- (n', nt') = insert n nt- in- (n', S ts nt')- where- insert s nt- | isJust r = (fromJust r, nt)- | otherwise = (s, M.insert s s nt)- where- r = M.lookup s nt- mkQN :: Bool -> Bool -> NsEnv -> String -> Parser QName mkQN withNamespaces isAttr env s | withNamespaces- = insertQName qn1+ = return qn1 | otherwise- = insertQName qn0+ = return qn0 where qn1- | isAttr && isSimpleName = mkName s- | isSimpleName = mkQName "" s (nsUri "")- | isWellformedQualifiedName s = mkQName px lp (nsUri px)- | otherwise = mkName s- qn0- | isSimpleName = mkName s- | isWellformedQualifiedName s = mkPrefixLocalPart px lp- | otherwise = mkName s+ | isAttr && isSimpleName = s'+ | isSimpleName = mkQName' nullXName (newXName s) (nsUri nullXName)+ | isWellformedQualifiedName s = mkQName' px' lp' (nsUri px')+ | otherwise = s'+ qn0 = s' - nsUri x = fromMaybe "" . lookup x $ env- isSimpleName = all (/= ':') s- (px, (_ : lp)) = span(/= ':') s+ nsUri x = fromMaybe nullXName . lookup x $ env+ isSimpleName = all (/= ':') s+ (px, (_ : lp)) = span(/= ':') s+ px' = newXName px+ lp' = newXName lp+ s' = mkName s extendNsEnv :: Bool -> [(String, String)] -> NsEnv -> NsEnv extendNsEnv withNamespaces al1 env | withNamespaces- = concatMap (uncurry addNs) al1 ++ env+ = toNsEnv (concatMap (uncurry addNs) al1) ++ env | otherwise = env where@@ -336,7 +303,8 @@ = take 1 . filter isElem initContext = ( []- , [ (a_xml, xmlNamespace)+ , toNsEnv $+ [ (a_xml, xmlNamespace) , (a_xmlns, xmlnsNamespace) ] )
src/Text/XML/HXT/RelaxNG/Simplification.hs view
@@ -89,7 +89,7 @@ ( processHref $< getBaseURI ) >>> -- 4.10 QNames- processWithNsEnv processEnvNames [("xml",xmlNamespace)]+ processWithNsEnv processEnvNames (toNsEnv [("xml",xmlNamespace)]) >>> -- 4.4 For any data or value element that does not have a datatypeLibrary attribute, -- a datatypeLibrary attribute is added.@@ -229,7 +229,7 @@ ) ) - processEnvNames :: [(String, String)] -> IOSArrow XmlTree XmlTree+ processEnvNames :: NsEnv -> IOSArrow XmlTree XmlTree processEnvNames env = ( ( (replaceQNames env $< getAttrValue "name") `when`@@ -252,29 +252,29 @@ = setBaseUri &&& constA (map createAttr env) >>> arr2L (:) where - createAttr :: (String, String) -> XmlTree+ createAttr :: (XName, XName) -> XmlTree createAttr (pre, uri)- = XN.mkAttr (mkName nm) [XN.mkText uri]+ = XN.mkAttr (mkName nm) [XN.mkText (show uri)] where- nm | null pre = "RelaxContextDefault"- | otherwise = contextAttributes ++ pre+ nm | isNullXName pre = "RelaxContextDefault"+ | otherwise = contextAttributes ++ show pre setBaseUri :: IOSArrow String XmlTree setBaseUri = mkAttr (mkName contextBaseAttr) (txt $< this) - replaceQNames :: [(String, String)] -> String -> IOSArrow XmlTree XmlTree + replaceQNames :: NsEnv -> String -> IOSArrow XmlTree XmlTree replaceQNames e name | isNothing uri = mkRelaxError "" ( "No Namespace-Mapping for the prefix " ++ show pre ++ " in the Context of Element: " ++ show name ) | otherwise- = addAttr "name" ( "{" ++ (fromJust uri) ++ "}" ++ local )+ = addAttr "name" ( "{" ++ (show . fromJust $ uri) ++ "}" ++ local ) where (pre, local') = span (/= ':') name local = tail local'- uri :: Maybe String- uri = lookup pre e+ uri :: Maybe XName+ uri = lookup (newXName pre) e -- The value of the added datatypeLibrary attribute is the value of the -- datatypeLibrary attribute of the nearest ancestor element that
src/Text/XML/HXT/RelaxNG/XmlSchema/DataTypeLibW3C.hs view
@@ -54,25 +54,21 @@ ) where -import Text.XML.HXT.RelaxNG.DataTypeLibUtils --import Network.URI- ( isURIReference )+import Data.Maybe+import Data.Ratio -import Text.XML.HXT.DOM.NamespacePredicates- ( isWellformedQualifiedName- , isNCName- )+import Network.URI ( isURIReference ) -import Text.XML.HXT.RelaxNG.XmlSchema.Regex- ( Regex- , matchWithRE- )+import Text.XML.HXT.DOM.QualifiedName ( isWellformedQualifiedName+ , isNCName+ )+import Text.XML.HXT.RelaxNG.DataTypeLibUtils+import Text.XML.HXT.RelaxNG.XmlSchema.Regex ( Regex+ , matchWithRE+ ) import Text.XML.HXT.RelaxNG.XmlSchema.RegexParser- ( parseRegex )--import Data.Maybe-import Data.Ratio+ ( parseRegex+ ) -- ------------------------------------------------------------
src/Text/XML/HXT/RelaxNG/XmlSchema/Regex.hs view
@@ -39,6 +39,8 @@ , nullable , delta , matchWithRE+ , (<&&>)+ , (<||>) ) where @@ -80,68 +82,74 @@ inv (Dif e1 e2) = inv e1 && inv e2 -}--- ------------------------------------------------------------------ smart constructors +-- ------------------------------------------------------------ -- | enumerate all chars specified by a predicate -- -- this function is expensive, it should only be used for testing -chars :: (Char -> Bool) -> [Char]-chars p = filter p $ [minBound .. maxBound]+chars :: (Char -> Bool) -> [Char]+chars p = filter p $ [minBound .. maxBound] -charRngs :: [Char] -> [(Char, Char)]-charRngs [] = []-charRngs (x:xs) = charRng x xs- where- charRng y [] = (x,y) : []- charRng y xs'@(x1:xs1)- | x1 == succ y = charRng x1 xs1- | otherwise = (x,y) : charRngs xs'+charRngs :: [Char] -> [(Char, Char)]+charRngs [] = []+charRngs (x:xs) = charRng x xs+ where+ charRng y [] = (x,y) : []+ charRng y xs'@(x1:xs1)+ | x1 == succ y = charRng x1 xs1+ | otherwise = (x,y) : charRngs xs' -mkZero :: String -> Regex-mkZero = Zero+-- ------------------------------------------------------------+--+-- smart constructors -mkUnit :: Regex-mkUnit = Unit+mkZero :: String -> Regex+mkZero = Zero+{-# INLINE mkZero #-} -mkSym :: (Char -> Bool) -> Regex-mkSym = Sym+mkUnit :: Regex+mkUnit = Unit+{-# INLINE mkUnit #-} -mkSym1 :: Char -> Regex-mkSym1 c = mkSym (==c)+mkSym :: (Char -> Bool) -> Regex+mkSym = Sym+{-# INLINE mkSym #-} -mkSymRng :: Char -> Char -> Regex+mkSym1 :: Char -> Regex+mkSym1 c = mkSym (==c)++mkSymRng :: Char -> Char -> Regex mkSymRng c1 c2 | c1 == minBound &&- c2 == maxBound = mkDot- | c1 <= c2 = mkSym $ ( \ x -> x >= c1 && x<= c2 )- | otherwise = mkZero $ "empty char range"+ c2 == maxBound = mkDot+ | c1 <= c2 = mkSym $ (>= c1) <&&> (<= c2)+ | otherwise = mkZero $ "empty char range" -mkDot :: Regex-mkDot = Dot+mkDot :: Regex+mkDot = Dot+{-# INLINE mkDot #-} -mkStar :: Regex -> Regex-mkStar (Zero _) = mkUnit -- {}* == ()-mkStar e@Unit = e -- ()* == ()-mkStar e@(Star _e1) = e -- (r*)* == r*-mkStar (Rep 1 e1) = mkStar e1 -- (r+)* == r*-mkStar e@(Alt _ _) = Star (rmStar e) -- (a*|b)* == (a|b)*-mkStar e = Star e+mkStar :: Regex -> Regex+mkStar (Zero _) = mkUnit -- {}* == ()+mkStar e@Unit = e -- ()* == ()+mkStar e@(Star _e1) = e -- (r*)* == r*+mkStar (Rep 1 e1) = mkStar e1 -- (r+)* == r*+mkStar e@(Alt _ _) = Star (rmStar e) -- (a*|b)* == (a|b)*+mkStar e = Star e -rmStar :: Regex -> Regex-rmStar (Alt e1 e2) = mkAlt (rmStar e1) (rmStar e2)-rmStar (Star e1) = rmStar e1-rmStar (Rep 1 e1) = rmStar e1-rmStar e1 = e1+rmStar :: Regex -> Regex+rmStar (Alt e1 e2) = mkAlt (rmStar e1) (rmStar e2)+rmStar (Star e1) = rmStar e1+rmStar (Rep 1 e1) = rmStar e1+rmStar e1 = e1 mkAlt :: Regex -> Regex -> Regex mkAlt e1 (Zero _) = e1 -- e1 u {} = e1 mkAlt (Zero _) e2 = e2 -- {} u e2 = e2 mkAlt e1@(Star Dot) _e2 = e1 -- A* u e1 = A* mkAlt _e1 e2@(Star Dot) = e2 -- e1 u A* = A*-mkAlt (Sym p1) (Sym p2) = mkSym $ \ x -> p1 x || p2 x -- melting of predicates+mkAlt (Sym p1) (Sym p2) = mkSym $ p1 <||> p2 -- melting of predicates mkAlt e1 e2@(Sym _) = mkAlt e2 e1 -- symmetry: predicates always first mkAlt e1@(Sym _) (Alt e2@(Sym _) e3) = mkAlt (mkAlt e1 e2) e3 -- prepare melting of predicates mkAlt (Alt e1 e2) e3 = mkAlt e1 (mkAlt e2 e3) -- associativity@@ -172,8 +180,8 @@ mkRng _l _u e@Unit = e mkRng lb ub e = Rng lb ub e -mkOpt :: Regex -> Regex-mkOpt = mkRng 0 1+mkOpt :: Regex -> Regex+mkOpt = mkRng 0 1 mkDif :: Regex -> Regex -> Regex mkDif e1@(Zero _) _e2 = e1@@ -186,8 +194,8 @@ = mkZero "empty set of chars in difference expr" mkDif e1 e2 = Dif e1 e2 -mkCompl :: Regex -> Regex-mkCompl = mkDif mkDot+mkCompl :: Regex -> Regex+mkCompl = mkDif mkDot -- ------------------------------------------------------------ @@ -231,6 +239,7 @@ isZero :: Regex -> Bool isZero (Zero _) = True isZero _ = False+{-# INLINE isZero #-} nullable :: Regex -> Bool nullable (Zero _) = False@@ -291,5 +300,18 @@ res re | nullable re = Nothing -- o.k. | otherwise = Just $ "input does not match " ++ show e++-- ------------------------------------------------------------++(<&&>) :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool)+f <&&> g = \ x -> f x && g x -- liftA2 (&&)++{-# INLINE (<&&>) #-}+++(<||>) :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool)+f <||> g = \ x -> f x || g x -- liftA2 (||)++{-# INLINE (<||>) #-} -- ------------------------------------------------------------
src/Text/XML/HXT/RelaxNG/XmlSchema/RegexMatch.hs view
@@ -37,8 +37,11 @@ import Text.XML.HXT.RelaxNG.XmlSchema.Regex import Text.XML.HXT.RelaxNG.XmlSchema.RegexParser --- ------------------------------------------------------------+{-+import qualified Debug.Trace as T+-} +-- ------------------------------------------------------------ splitRegex :: Regex -> String -> Maybe (String, String) splitRegex re ""@@ -47,14 +50,16 @@ splitRegex re inp@(c : inp') | isZero re = Nothing- | otherwise = evalRes . splitRegex (delta re c) $ inp'+ | otherwise = evalRes . splitRegex {- (T.trace (show re') re') -} re' $ inp' where+ re' = delta re c evalRes Nothing | nullable re = Just ("", inp) | otherwise = Nothing evalRes (Just (tok, rest)) = Just (c : tok, rest)+ -- ------------------------------------------------------------ -- | split a string by taking the longest prefix matching a regular expression@@ -65,7 +70,8 @@ -- examples: -- -- > splitRE "a*b" "abc" = Just ("ab","c")--- > splitRE "a*" "bc" = Just ("", "bc)+-- > splitRE "a*" "bc" = Just ("", "bc")+-- > splitRE "a+" "bc" = Nothing -- > splitRE "[" "abc" = Nothing splitRE :: String -> String -> Maybe (String, String)@@ -116,10 +122,11 @@ | null inp = [] | otherwise = evalRes . splitRegex re $ inp where- evalRes Nothing = token' re (tail inp) -- re does not match any prefix+ token'' = token' re+ evalRes Nothing = token'' (tail inp) -- re does not match any prefix evalRes (Just (tok, rest))- | null tok = token' re (tail rest) -- re is nullable and only the empty prefix matches- | otherwise = tok : token' re rest -- token found, tokenize the rest+ | null tok = token'' (tail rest) -- re is nullable and only the empty prefix matches+ | otherwise = tok : token'' rest -- token found, tokenize the rest -- | convenient function for tokenizeRE a string --@@ -229,4 +236,3 @@ -- ------------------------------------------------------------ --- ------------------------------------------------------------
src/Text/XML/HXT/RelaxNG/XmlSchema/RegexParser.hs view
@@ -22,8 +22,8 @@ ( parseRegex ) where -import Control.Applicative ( liftA2 ) import Data.Maybe+ import Text.ParserCombinators.Parsec import Text.XML.HXT.DOM.Unicode@@ -176,9 +176,9 @@ , ('w', not . isNotWord ) , ('W', isNotWord ) ]- isDigit = ('0' <=) &&& (<= '9')- isNotWord = isUnicodeP |||- isUnicodeZ |||+ isDigit = ('0' <=) <&&> (<= '9')+ isNotWord = isUnicodeP <||>+ isUnicodeZ <||> isUnicodeC catEsc :: Parser Regex@@ -204,7 +204,7 @@ then return $ let (lb, ub) = fromJust b in- (lb <=) &&& (<= ub)+ (lb <=) <&&> (<= ub) else fail $ "unknown Unicode code block " ++ show name where legalChar c = 'A' <= c && c <= 'Z' ||@@ -350,13 +350,5 @@ char '.' return $ mkSym (`notElem` "\n\r") ---- --------------------------------------------------------------(&&&) :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool)-(&&&) = liftA2 (&&)--(|||) :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool)-(|||) = liftA2 (||) -- ------------------------------------------------------------
src/Text/XML/HXT/Version.hs view
@@ -1,4 +1,4 @@ module Text.XML.HXT.Version where hxt_version :: String-hxt_version = "8.2.0"+hxt_version = "8.3.0"
src/Text/XML/HXT/XPath/XPathEval.hs view
@@ -95,10 +95,10 @@ -- Works like 'getXPath' but the prefix:localpart names in the XPath expression -- are interpreted with respect to the given namespace environment -getXPathWithNsEnv :: NsEnv -> String -> XmlTree -> XmlTrees+getXPathWithNsEnv :: Attributes -> String -> XmlTree -> XmlTrees getXPathWithNsEnv env s = runLA ( canonicalizeForXPath >>>- arrL (getXPathValues xPValue2XmlTrees xPathErr env s)+ arrL (getXPathValues xPValue2XmlTrees xPathErr (toNsEnv env) s) ) -- |@@ -119,9 +119,9 @@ -- | Same as 'getXPathSubTrees' but with namespace aware XPath expression -getXPathSubTreesWithNsEnv :: NsEnv -> String -> XmlTree -> XmlTrees+getXPathSubTreesWithNsEnv :: Attributes -> String -> XmlTree -> XmlTrees getXPathSubTreesWithNsEnv nsEnv xpStr- = getXPathValues xPValue2XmlTrees xPathErr nsEnv xpStr+ = getXPathValues xPValue2XmlTrees xPathErr (toNsEnv nsEnv) xpStr -- | compute the node set of an XPath query @@ -130,9 +130,9 @@ -- | compute the node set of a namespace aware XPath query -getXPathNodeSetWithNsEnv :: NsEnv -> String -> XmlTree -> XmlNodeSet+getXPathNodeSetWithNsEnv :: Attributes -> String -> XmlTree -> XmlNodeSet getXPathNodeSetWithNsEnv nsEnv xpStr- = getXPathValues xPValue2NodeSet (const (const emptyNodeSet)) nsEnv xpStr+ = getXPathValues xPValue2NodeSet (const (const emptyNodeSet)) (toNsEnv nsEnv) xpStr -- | parse xpath, evaluate xpath expr and prepare results
src/Text/XML/HXT/XPath/XPathParser.hs view
@@ -2,13 +2,12 @@ {- | Module : Text.XML.HXT.XPath.XPathParser- Copyright : Copyright (C) 2006 Uwe Schmidt+ Copyright : Copyright (C) 2006-2008 Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe@fh-wedel.de) Stability : experimental Portability: portable- Version : $Id: XPathParser.hs,v 1.6 2006/10/12 11:51:29 hxml Exp $ the XPath Parser @@ -39,27 +38,26 @@ , qName ) -lookupNs :: NsEnv -> String -> String+lookupNs :: NsEnv -> XName -> XName lookupNs uris prefix- -- downwards compatibility: if namespace env is not supported- -- no error is raised, but the uri remains empty- -- not conformant to XPath spec: If namespaces are used, an complete env must be supported,- -- but we don't care about this-- = lookup1 prefix uris+ -- downwards compatibility: if namespace env is not supported+ -- no error is raised, but the uri remains empty+ -- not conformant to XPath spec:+ -- If namespaces are used, a complete env must be supported,+ -- but we don't care about this+ = fromMaybe nullXName $ lookup prefix uris -enhanceAttrQName :: NsEnv -> QName -> QName+enhanceAttrQName :: NsEnv -> QName -> QName enhanceAttrQName uris qn- | null (namePrefix qn) = qn- | otherwise = enhanceQName uris qn+ | isNullXName (namePrefix' qn) = qn+ | otherwise = enhanceQName uris qn -enhanceQName :: NsEnv -> QName -> QName-enhanceQName uris qn- = qn {namespaceUri = lookupNs uris (namePrefix qn)}+enhanceQName :: NsEnv -> QName -> QName+enhanceQName uris qn = setNamespaceUri' ( lookupNs uris (namePrefix' qn) ) qn -enhanceQN :: AxisSpec -> NsEnv -> QName -> QName-enhanceQN Attribute = enhanceAttrQName-enhanceQN _ = enhanceQName+enhanceQN :: AxisSpec -> NsEnv -> QName -> QName+enhanceQN Attribute = enhanceAttrQName+enhanceQN _ = enhanceQName type XParser a = GenParser Char NsEnv a @@ -591,7 +589,9 @@ = try ( do (p, n) <- qName uris <- getState- u <- return $ if null p then "" else '{' : lookupNs uris p ++ "}"+ u <- return $ if null p+ then ""+ else '{' : show (lookupNs uris (newXName p)) ++ "}" let fn = (u ++ n) in if fn `elem` ["processing-instruction", "comment", "text", "node"] then fail ("function name: " ++ fn ++ "not allowed")@@ -607,29 +607,27 @@ tokenParser (symbol "$") (p,n) <- qName uris <- getState- return (lookupNs uris p, n)+ return (show (lookupNs uris (newXName p)), n) <?> "variableReference" -- [37] NameTest nameTest :: AxisSpec -> XParser QName nameTest as- = do- tokenParser (symbol "*")- uris <- getState- return (enhanceQN as uris $ mkName "*")- <|> try ( do- pre <- ncName- symbol ":*"- uris <- getState- return (enhanceQN as uris $ mkNsName (pre ++ ":*") "") - )+ = do tokenParser (symbol "*")+ uris <- getState+ return (enhanceQN as uris $ mkPrefixLocalPart "" "*") <|>- do- (pre,local) <- qName - uris <- getState- return (enhanceQN as uris $ mkNsName (pre ++ ":" ++ local) "")- <?> "nameTest" + try ( do pre <- ncName+ symbol ":*"+ uris <- getState+ return (enhanceQN as uris $ mkPrefixLocalPart pre "*")+ )+ <|>+ do (pre,local) <- qName+ uris <- getState+ return (enhanceQN as uris $ mkPrefixLocalPart pre local)+ <?> "nameTest" -- [38] NodeType@@ -650,3 +648,5 @@ , symbolParser (n_node, XPNode) ] <?> "nodeType"++-- ------------------------------------------------------------
src/Text/XML/HXT/XSLT/Common.hs view
@@ -2,13 +2,12 @@ {- | Module : Text.XML.HXT.XSLT.Application- Copyright : Copyright (C) 2006 Tim Walkenhorst, Uwe Schmidt+ Copyright : Copyright (C) 2006-2008 Tim Walkenhorst, Uwe Schmidt License : MIT Maintainer : Uwe Schmidt (uwe\@fh-wedel.de) Stability : experimental Portability: portable- Version : $Id: Common.hs,v 1.5 2007/05/02 06:41:05 hxml Exp $ Common imports and functions for HXSLT @@ -87,69 +86,73 @@ import Control.Arrow.ListArrow import Control.Arrow.ArrowList -import Text.XML.HXT.Arrow.XmlArrow- ( xshow- )-import Text.XML.HXT.DOM.XmlNode- ( XmlNode (..)- , mkElement- , mkRoot- , mkAttr- , mergeAttrl- )+import Text.XML.HXT.Arrow.XmlArrow ( xshow+ ) import Text.XML.HXT.DOM.XmlKeywords--import Text.XML.HXT.DOM.TypeDefs- ( XmlTree- , XNode(XTag, XAttr)- , QName(namePrefix, localPart, namespaceUri)- , equivQName- , mkName- , mkQName- )--import Text.XML.HXT.DOM.FormatXmlTree- ( formatXmlTree )--import Text.XML.HXT.XPath.XPathDataTypes- ( Expr(LiteralExpr, FctExpr, GenExpr, PathExpr)- , Op(Union)- , LocationPath (LocPath)- , Path (Rel)- , XStep (Step)- , NodeTest (NameTest, PI, TypeTest)- , NavXmlTree- , XPathValue(XPVNode, XPVBool, XPVString, XPVError)- )--import Text.XML.HXT.XPath.XPathParser- ( parseXPath )--import Text.XML.HXT.XPath.XPathEval- ( evalExpr )+import Text.XML.HXT.DOM.XmlNode ( XmlNode (..)+ , mkElement+ , mkRoot+ , mkAttr+ , mergeAttrl+ ) -import Text.XML.HXT.XPath.XPathFct- ( isNotInNodeList )+import Text.XML.HXT.DOM.TypeDefs ( XmlTree+ , XNode(XTag, XAttr)+ , QName+ , toNsEnv+ , namePrefix+ , localPart+ , namespaceUri+ , equivQName+ , mkName+ , mkQName+ )+import Text.XML.HXT.DOM.FormatXmlTree ( formatXmlTree+ ) -import Text.XML.HXT.XPath.XPathToString- ( xPValue2XmlTrees )+import Text.XML.HXT.XPath.XPathDataTypes( Expr ( LiteralExpr+ , FctExpr+ , GenExpr+ , PathExpr+ )+ , Op ( Union )+ , LocationPath ( LocPath )+ , Path ( Rel )+ , XStep ( Step )+ , NodeTest ( NameTest+ , PI+ , TypeTest+ )+ , NavXmlTree+ , XPathValue ( XPVNode+ , XPVBool+ , XPVString+ , XPVError+ )+ )+import Text.XML.HXT.XPath.XPathParser ( parseXPath+ )+import Text.XML.HXT.XPath.XPathEval ( evalExpr+ )+import Text.XML.HXT.XPath.XPathFct ( isNotInNodeList+ )+import Text.XML.HXT.XPath.XPathToString ( xPValue2XmlTrees+ ) -import Data.Map (Map)+import Data.Map (Map) import qualified Data.Map as Map hiding (Map) import Data.Tree.Class -import Data.NavTree- ( NavTree- , ntree- , subtreeNT- , upNT- , downNT- , rightNT- , leftNT- , getChildrenNT- )-+import Data.NavTree ( NavTree+ , ntree+ , subtreeNT+ , upNT+ , downNT+ , rightNT+ , leftNT+ , getChildrenNT+ ) import Data.Maybe import Data.List import Data.Char
src/Text/XML/HXT/XSLT/Compilation.hs view
@@ -8,7 +8,6 @@ Maintainer : Uwe Schmidt (uwe\@fh-wedel.de) Stability : experimental Portability: portable- Version : $Id: Compilation.hs,v 1.7 2007/05/02 06:41:05 hxml Exp $ The compilation functions for XSLT stylesheets @@ -22,19 +21,19 @@ ) where -import Control.Monad+import Control.Monad -import Data.Maybe-import Data.Either-import Data.List+import Data.Maybe+import Data.Either+import Data.List import qualified Data.Map as Map hiding (Map)-import Data.Map(Map)+import Data.Map(Map) -import Text.ParserCombinators.Parsec.Prim(runParser)+import Text.ParserCombinators.Parsec.Prim ( runParser ) -import Text.XML.HXT.XSLT.Common-import Text.XML.HXT.XSLT.Names-import Text.XML.HXT.XSLT.CompiledStylesheet+import Text.XML.HXT.XSLT.Common+import Text.XML.HXT.XSLT.Names+import Text.XML.HXT.XSLT.CompiledStylesheet -- No deep meaning just a shortcut notation for a *very* common expression... @@ -50,7 +49,7 @@ parseExpr uris selectStr = either (error.show) id parseResult where- parseResult = runParser parseXPath (Map.toList uris) ("select-expr:"++selectStr) selectStr + parseResult = runParser parseXPath (toNsEnv . Map.toList $ uris) ("select-expr:"++selectStr) selectStr parseSelect :: UriMapping -> String -> SelectExpr parseSelect uris
src/hxt-package.hs view
@@ -61,7 +61,7 @@ , "depends: base-4.0.0.0," , " haskell98-1.0.1.0," , " bytestring-0.9.1.4,"- , " parallel-1.0.0.1,"+ , " parallel-1.1.0.0," , " parsec-2.1.0.1," , " network-2.2.0.1," , " containers-0.2.0.0,"