!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k lmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ GFirst argument is a transformer for pattern strings, e.g. map toLower, E but only applying to parts of the pattern not in quotation marks. E (Needed to canonicalise HTML where tags are case-insensitive, but ) attribute values are case sensitive.)       :Source positions contain a filename, line, column, and an = inclusion point, which is itself another source position,  recursively.  BDummy value for generated data, where a true source position does  not exist. posInNewCxt name pos0 creates a new source position from an old one. H It is used when opening a new file (e.g. a DTD inclusion), to denote  the start of the file name*, but retain the stacked information that  it was included from the old pos. CJust used to strictify the internal values of a position, to avoid  space leaks. 1Add n character positions to the given position. ,Add a newline or tab to the given position. 5Add the given whitespace char to the given position.  Precondition: white c | isSpace c = True   BThe basic token type. lexical error ! fake token "any character data #begins with letter, no spaces $'' or "" %, &% '| () )( *# +; ,& -+ .* /? 0= 1] 2[ 3  4< 5/> 6</ 7DOCTYPE ELEMENT ATTLIST etc 8<! 9CDATA INCLUDE IGNORE etc :]]> ;<![ <?> =<? >-> ?<!-- @1All tokens are paired up with a source position. / Lexical errors are passed back as a special TokenT value.   AThe first argument to A- is the filename (used for source positions, J especially in error messages), and the second is the string content of  the XML file. BB9 is used when the parser expands a macro (PE reference). J The expansion of the macro must be re-lexed as if for the first time. CC/ is used solely within parsing an entityvalue. E Normally, a PERef is logically separated from its surroundings by D whitespace. But in an entityvalue, a PERef can be juxtaposed to ; an identifier, so the expansion forms a new identifier. ? Thus the need to rescan the whole text for possible PERefs. / !"#$%&'()*+,-./0123456789:;<=>?@ABC/ABC@?>=<;:9876543210/.-,+*)('&%$#"! / ?>=<;:9876543210/.-,+*)('&%$#"! !"#$%&'()*+,-./0123456789:;<=>?@ABC'DEF string only (#PCDATA) Gmixed (#PCDATA | ... )* HXML's contentspec allows ANY IJKNon-empty lists. LMString holds default value. NOPQRS Bool for main/aux. T:Need to keep both the XML and Haskell versions of a name. UVoriginal XML name Wmangled Haskell name X !"YPretty print Haskell name. ZPretty print XML name. [&Pretty print Haskell attributes name. #\0Make a type name valid in both XML and Haskell. ]9Append an underscore to the Haskell version of the name. ^FPrefix an attribute enumeration type name with its containing element  name. _GPrefix an attribute enumeration constructor with its element-tag name, " and its enumeration type name. `5Prefix a field name with its enclosing element name. a(Convert an XML name to a Haskell conid. $GEnsure a generated name does not conflict with a standard haskell one. b(Convert an XML name to a Haskell varid. %.Convert colon to prime, hyphen to underscore. &DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abQSRPODNMLKJIHGFEXYZ[TUVW\]^_`abD NMLKJIHGFEEFGHIJKLMNOPQSRRSTUVWUVWXYZ[\]^_`ab'()c<Convert typedef to appropriate instance declaration, either  XmlContent,   XmlAttributes, or  XmlAttrType. *+,-./0123456cccdefghijklmnopqrstuvwxyz{|}~ One Or More  Zero Or More  Zero Or One  Just One *bool is whether whitespace is significant CThe symbol table stored in a document holds all its general entity  reference definitions. defghijklmnopqrstuvwxyz{|}~op}~{|yzwxuvmnjlkhifgtsrqeddefgghiijlkklmnnoppqrstuvvwxxyzz{||}~~ 4FA LabelFilter is like a CFilter except that it pairs up a polymorphic + value (label) with each of its results. +Conjoin the two branches of a conditional. !All document transformations are content filters.  A filter takes a single XML  value and returns a sequence  of  values, possibly empty. ?Throw away current node, keep just the (unprocessed) children.  Select the n'"th positional result of a filter. !For a mandatory attribute field,  find key cont looks up the value of  the attribute name key, and applies the continuation cont to  the value.  +When an attribute field may be absent, use iffind key yes no to lookup : its value. If the attribute is absent, it acts as the no filter,  otherwise it applies the yes filter.   ifTxt yes no( processes any textual content with the yes filter, $ but otherwise is the same as the no filter.  9Select between the two branches of a joined conditional.   Sequential (Irish, backwards) composition  DBinary parallel composition. Each filter uses a copy of the input, 7 rather than one filter using the result of the other. 0 (Has a more general type than just CFilter.) <Glue a list of filters together. (A list version of union; 4 also has a more general type than just CFilter.) =A special form of filter composition where the second filter < works over the same data as the first, but also uses the  first' s result. *Process children using specified filters. Directional choice:  in f |>| g- give g-productions only if no f-productions  Pruning: in f  g, F keep only those f-productions which have at least one g-production  Pruning: in f  g, = keep only those f-productions which have no g-productions  Pronounced slash, f /> g means g inside f  Pronounced outside, f </ g means f containing g 8Join an element-matching filter with a text-only filter 4Express a list of filters like an XPath query, e.g.  path [children, tag "name1", attr "attr1", children, tag "name2"]  is like the XPath query /name1[@attr1]/name2. Interior editing:  f  g applies f only when the predicate g succeeds, ' otherwise the content is unchanged. Interior editing:  g  f applies f only when the predicate g succeeds, ' otherwise the content is discarded. BProcess CHildren In Place. The filter is applied to any children F of an element content, and the element rebuilt around the results. CProcess an element In Place. The filter is applied to the element E itself, and then the original element rebuilt around the results. ARecursive application of filters: a fold-like operator. Defined  as f   chip (foldXml f).  FBuild an element with the given tag name - its content is the results ! of the given list of filters. !?Build an element with the given name, attributes, and content. "Build some textual content. #Build some CDATA content. $5Rename an element tag (leaving attributes in place). %=Replace the attributes of an element (leaving tag the same). &BCompose a label-processing filter with a label-generating filter. '=Combine labels. Think of this as a pair-wise zip on labels.  e.g.  (numbered ' tagged) (#Number the results from 1 upwards. )In interspersed a f b, label each result of f with the string a, = except for the last one which is labelled with the string b. *ALabel each element in the result with its tag name. Non-element & results get an empty string label. +HLabel each element in the result with the value of the named attribute. C Elements without the attribute, and non-element results, get an  empty string label. ,>Label each textual part of the result with its text. Element & results get an empty string label. -@Label each content with some information extracted from itself. 4      !"#$%&'()*+,-4     !"#$% &'()*+,-4      !"#$%&'()*+,- [.:XParser is just a specialisation of the PolyState parser. 78/To parse a whole document, xmlParse file content takes a filename G (for generating error reports) and the string content of that file. A A parse error causes program failure, with message to stderr. 0To parse just a DTD, dtdParse file content takes a filename A (for generating error reports) and the string content of that ' file. If no DTD was found, you get Nothing rather than an error. H However, if a DTD is found but contains errors, the program crashes. 1To parse a whole document, xmlParse' file content takes a filename G (for generating error reports) and the string content of that file. D Any parse error message is passed back to the caller through the  Either type. 2To parse just a DTD, dtdParse' file content takes a filename A (for generating error reports) and the string content of that ' file. If no DTD was found, you get  Right Nothing. 5 If a DTD was found but contains errors, you get a  Left message. 93ETo parse a partial document, e.g. from an XML-based stream protocol, H where you may later want to get more document elements from the same C stream. Arguments are: a parser for the item you want, and the C already-lexed input to parse from. Returns the item you wanted ; (or an error message), plus the remainder of the input. 43Some empty symbol tables for GE and PE references. :;<=567>KParse a bracketed item, discarding the brackets AND NOT using adjustErrBad 8IReturn the next token from the input only if it matches the given token. ?97Return just a name, e.g. element name, attribute name. @ABCDEFGHIJKLM:BReturn an entire XML document including prolog and trailing junk. ;Return an XML comment. < Parse a processing instruction. =NOPQ>)Return a DOCTYPE decl, indicating a DTD. R5Return a DTD markup decl, e.g. ELEMENT, ATTLIST, etc STU?;Return a complete element including all its inner content. V@?Parse only the parts between angle brackets in an element tag. AHFor use with stream parsers - returns the complete opening element tag. BAFor use with stream parsers - accepts a closing tag, provided it # matches the given element name. WC>Return a content particle, e.g. text, element, reference, etc XYZ[\]^_`abcdefghDDReturn either a general entity reference, or a character reference. ijklmnopqrstuvwxyE4Return parsed freetext (i.e. until the next markup) ./0123456789:;<=>?@ABCDE/1023:?C;=ED><@98AB4.567./0123456789:;<=>?@ABCDE 3z{FG|}~HIJKFGHIJKFJIHGKFGHIJK LMNOPQRSTUVWXYZ[\]^_`abcdefghijLMNOPQRSTUVWXYZ[\]^_`abcdefghijLMNOPQRST]^_`abUVWXYhiZ[\cdefgjLMNOPQRSTUVWXYZ[\]^_`abcdefghij /kEThe first argument is the name of the file, the second is the string F contents of the file. The result is the generic representation of N an XML document. Any errors cause program failure with message to stderr. EThe first argument is the name of the file, the second is the string F contents of the file. The result is the generic representation of < an XML document. Any parsing errors are returned in the Either type. kkkl?This useful auxiliary checks the commandline arguments for two A filenames, the input and output file respectively. If either ! is missing, it is replaced by ", which can be interpreted by the  caller as stdin and/ or stdout. m The wrapper processXmlWith returns an IO () computation ( that collects the filenames (or stdin/stdout) to use when  reading/-writing XML documents. Its CFilter argument ? is applied to transform the XML document from the input and > write it to the output. No DTD is attached to the output. BIf the input filename ends with .html or .htm, it is parsed using G the error-correcting HTML parser rather than the strict XML parser. n The wrapper  onContent, simply applies a given content filter to a C document. Ambiguous or empty results raise an error exception. lmnlmnlmnportable experimentalsimons@cryp.too&This class promises that the function p knows how to : format this data type into a string without changing the  formatting. pq?This is a helper function is required because Haskell does not ' allow to make an ordinary tuple (like ) an instance of a D class. The resulting output will preface the actual attribute with ! a single blank so that lists of s can be handled + implicitly by the definition for lists of o data types. opqopqoppqrstuvwxrstuvwxsutvrwxrstuvwx?yz{|}~      !"#yz{|}~y}|{z~yz{|}~$%&'()-*+,EThe first argument is the name of the file, the second is the string F contents of the file. The result is the generic representation of N an XML document. Any errors cause program failure with message to stderr. -./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU0VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Y>XParser is just a specialisation of the PolyStateLazy parser. To parse a whole document, xmlParse file content takes a filename G (for generating error reports) and the string content of that file. A A parse error causes program failure, with message to stderr. To parse just a DTD, dtdParse file content takes a filename A (for generating error reports) and the string content of that ' file. If no DTD was found, you get Nothing rather than an error. H However, if a DTD is found but contains errors, the program crashes. ETo parse a partial document, e.g. from an XML-based stream protocol, H where you may later want to get more document elements from the same C stream. Arguments are: a parser for the item you want, and the C already-lexed input to parse from. Returns the item you wanted ; (or an error message), plus the remainder of the input. 3Some empty symbol tables for GE and PE references. KParse a bracketed item, discarding the brackets AND NOT using adjustErrBad IReturn the next token from the input only if it matches the given token. 7Return just a name, e.g. element name, attribute name. BReturn an entire XML document including prolog and trailing junk. Return an XML comment.  Parse a processing instruction. )Return a DOCTYPE decl, indicating a DTD. 5Return a DTD markup decl, e.g. ELEMENT, ATTLIST, etc ;Return a complete element including all its inner content. ?Parse only the parts between angle brackets in an element tag. HFor use with stream parsers - returns the complete opening element tag. AFor use with stream parsers - accepts a closing tag, provided it # matches the given element name. >Return a content particle, e.g. text, element, reference, etc DReturn either a general entity reference, or a character reference. 4Return parsed freetext (i.e. until the next markup) A reference occured Some string data occured $An element without content occured (</>) An element was closed (</>) An element was opened (<>) A comment occured (<!-- -->) "A processing instruction occured (<??>) A doctype declaration occured(<!DOCTYPE>) saxParse file content1 takes a filename and the string content of that " file and generates a stream of  SaxElements. If an error occurs, the 4 parsing stops and a string is returned using the Maybe type.  The filename The content of the file #A tuple of the parsed elements and Nothing, if no  error occured, or Just String if an error occured.    CA concrete representation of any user-defined Haskell constructor. G The constructor has a name, and a sequence of component types. The C first sequence of types represents the minimum set of free type E variables occurring in the (second) list of real component types. F If there are fieldnames, they are contained in the final list, and 3 correspond one-to-one with the component types. /A concrete representation of any Haskell type. >A user-defined type has a name, a sequence of type variables, ? and a set of constructors. (The variables might already be " instantiated to actual types.) #separate Haskell name and XML name  HTypeable; promises that we can create an explicit representation of  of the type of any value.  Project the n'8th constructor from an HType and convert it to a string  suitable for an XML tagname. ; converts a concrete representation of the Haskell type of # a value (obtained by the method ) into a real DocTypeDecl. H It ensures that PERefs are defined before they are used, and that no 9 element or attribute-list is declared more than once. ;Get the main element of the document so that you can apply  CFilters directly. i is typically (posInNewCxt filename Nothing) >If you know that your CFilter returns a tag, you can use this ' function to get the tagged Element. 1;The List1 type represents lists with at least one element. C It is required for DTD content models that use + as a modifier. A type corresponding to XML's ANY contentspec. * It is either a list of unconverted xml   or some  -able value. Parsing functions (e.g. ) will always produce .  Note: The Show instance for  uses p. AIf an attribute is defaultable, then it either takes the default D value (which is omitted from the output), or a non-default value & (which obviously must be printed). The  XmlAttrType0 class promises that an attribute taking an XML A enumerated type can be converted to and from a Haskell value. The  XmlAttributes2 class promises that a list of XML tag attributes 1 can be converted to and from a Haskell value. The  XmlContent3 class promises that an XML Content element can be * converted to and from a Haskell value. Convert from XML to Haskell Convert from Haskell to XML 'Dummy functions (for most types): used only in the Char instance + for coercing lists of Char into String. FWe need a parsing monad for reading generic XML Content into specific K datatypes. This is a specialisation of the Text.ParserCombinators.Poly = ones, where the input token type is fixed as XML Content. Read a single attribute called value. Generate a single attribute. =Generate an element with no attributes, named for its HType. 8Generate an element with no attributes, named directly. $Turn a simple string into XML text. )Turn a string into an XML CDATA section. ! (i.e. special characters like &( are preserved without interpretation.) DThe most primitive combinator for XMLParser - get one content item. GGet the next content element, checking that it has one of the required , tags, using the given matching function. ? (Skips over comments and whitespace, rejects text and refs. ' Also returns position of element.) A specialisation of posnElementWith (==). GGet the next content element, checking that it has one of the required G tags. (Skips over comments and whitespace, rejects text and refs.) FLike element, only permits a more flexible match against the tagname. GRun an XMLParser on the contents of the given element (i.e. not on the E current monadic content sequence), checking that the contents are G exhausted, before returning the calculated value within the current  parser context. %A combination of element + interior. )A combination of elementWith + interior. 7Do some parsing of the attributes of the given element  is a counterpart to , parsing text content if it 8 exists. Adjacent text and references are coalesced. ' choice f p'9 means if parseContents succeeds, apply f to the result, * otherwise use the continuation parser. not sure this is needed now. ' definite p' previously ensured that H an element was definitely present. Now I think the monad might take  care of that for us.      opCop/ ARead an XML document from a file and convert it to a fully-typed  Haskell value. >Write a fully-typed Haskell value to the given file as an XML  document. >Write any Haskell value to the given file as an XML document, I using the FastPackedString interface (output will not be prettified). /Read a fully-typed XML document from a string. >Convert a fully-typed XML document to a string (without DTD). BConvert a fully-typed XML document to a ByteString (without DTD). FConvert a fully-typed XML document to a string (with or without DTD). @Read a Haskell value from an XML document, ignoring the DTD and ? using the Haskell result type to determine how to parse it. 4Read a fully-typed XML document from a file handle. 3Write a fully-typed XML document to a file handle. =Write a fully-typed XML document to a file handle, using the ? FastPackedString interface (output will not be prettified).      op  9 takes a DTD and a tagged element, and returns a list of 3 errors in the document with respect to its DTD. @If you have several documents to validate against a single DTD, H then you will gain efficiency by freezing-in the DTD through partial  application, e.g. checkMyDTD = validate myDTD. 6 is like validate, except that it does not check that + the element type matches that of the DTD's root element.  !"      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~p}|{zyxwvutsrqaonmlkjihgfedcbQ`_^]\[ZYXWVUTSR@PONMLKJIHGFEDCBA.?>=<;:9876543210/-,+*)('&%$#"!                -,+*)('&%$#"!  !"#$%&'()*+,-.?>=<;:9876543210//0123456789:;<=>?@PONMLKJIHGFEDCBAABCDEFGHIJKLMNOPQ`_^]\[ZYXWVUTSRRSTUVWXYZ[\]^_`aonmlkjihgfedcbbcdefghijklmnop }|{zyxwvutsrqqrstuvwxyz{|}~    @#>Convert a fully-typed XML document to a string (without DTD). $FConvert a fully-typed XML document to a string (with or without DTD). %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a ARead an XML document from a file and convert it to a fully-typed  Haskell value. >Write a fully-typed Haskell value to the given file as an XML  document. >Write any Haskell value to the given file as an XML document, I using the FastPackedString interface (output will not be prettified). /Read a fully-typed XML document from a string. >Convert a fully-typed XML document to a string (without DTD). BConvert a fully-typed XML document to a ByteString (without DTD). FConvert a fully-typed XML document to a string (with or without DTD). @Read a Haskell value from an XML document, ignoring the DTD and ? using the Haskell result type to determine how to parse it. 4Read a fully-typed XML document from a file handle. 3Write a fully-typed XML document to a file handle. =Write a fully-typed XML document to a file handle, using the ? FastPackedString interface (output will not be prettified).      op  =double content filter - takes document root + local subtree. 4lift an ordinary content filter to a double filter. 4drop a double filter to an ordinary content filter. 1 (permitting interior access to document root) 4drop a double filter to an ordinary content filter. B (Where interior access to the document root is not needed, the ? retaining pointer to the outer element can be pruned away.   is more space-efficient than  in this situation.) 2lift a CFilter combinator to a DFilter combinator (lifted composition over double filters. lifted choice. lifted union. lifted predicates. lifted unit and zero. bcITo convert an Xtract query into an ordinary HaXml combinator expression. I First arg is a tag-transformation function (e.g. map toLower) applied AThe cool thing is that the Xtract command parser directly builds  a higher-order  (see !Text.XML.HaXml.Xtract.Combinators) @ which can be applied to an XML document without further ado.  ( parseXtract/ halts the program if a parse error is found.) d parseXtract'1 returns error messages through the Either type. efghijklmnopqrstuvwxyz{|The version of the library. defghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-/0ILMNOPQRSTUVWXYZ[\]^_`abcdefghijklmopqrstuvwx} !"#$%&'()*+,-*./0123456789:;<=>?@A&BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a,bcdefghijklmnopqrstuuvwxyz{|}~u                                      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 | 9 : ; < = > ? @ A B C D 9 E = > B F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e fghijklmnopqrs9E=>BFtf9>uB./0345678|9:;=>?@ABCDvwxyz{|}~fgkmoln B>       !"#$%&'()*+,-./012345678+9:;<=>?@ABCDE9FGHIJKLMNOPQFRSTUVWXYZ[\R]^_`abcdef]ghijklmnogpqrstuvwpxyz{|}~x    4567+                        E         u     F                                        u             C                   D <          8 |            9 : ; < E    =  >     B ? u C      D  m!"#$%&'()*+,-./0123456789:;<=c >uC    D<?@ABCDE8|9:;<E=>B?uC   DE= FC    D<EuF    FGHIJKLMNbOPQRS TU TV TW TX TY TZ T[ T\ T] T^ T_ T` Ta Tb Tc Td Te Te Tf Tg Th Ti Tj Tk Tl Tm Tm no pqrstruvruwruxruyruzru{ru|r}~r}r}r}r}r}r}r}r}r}r}r}r}r}r}r}r}r}r}r}rrrr$%&b7:856<c=9E=> >uBFC    D<. HaXml-1.20.2 Text.XML.HaXml.XmlContent.ParserText.XML.HaXmlText.XML.HaXml.Xtract.LexText.XML.HaXml.PosnText.XML.HaXml.Lex#Text.XML.HaXml.DtdToHaskell.TypeDef$Text.XML.HaXml.DtdToHaskell.InstanceText.XML.HaXml.TypesText.XML.HaXml.CombinatorsText.XML.HaXml.ParseText.XML.HaXml.PrettyText.XML.HaXml.Html.GenerateText.XML.HaXml.Html.ParseText.XML.HaXml.WrappersText.XML.HaXml.VerbatimText.XML.HaXml.EscapeText.XML.HaXml.ByteStringPP#Text.XML.HaXml.DtdToHaskell.ConvertText.XML.HaXml.Html.ParseLazyText.XML.HaXml.Html.PrettyText.XML.HaXml.ParseLazyText.XML.HaXml.SAXText.XML.HaXml.TypeMappingText.XML.HaXml.UtilText.XML.HaXml.XmlContentText.XML.HaXml.ValidateText.XML.HaXml.OneOfNText.XML.HaXml.ShowXmlLazy!Text.XML.HaXml.XmlContent.Haskell!Text.XML.HaXml.Xtract.CombinatorsText.XML.HaXml.Xtract.Parsebase Data.Maybe catMaybespretty-1.0.1.2Text.PrettyPrint.HughesPJrenderTokenTTokNum TokStringSymbolPosnPnToken lexXtract posnFilenameposnLine posnColumnnoPos posInNewCxtforcepaddcolnewlinetabwhiteSectionIGNORExINCLUDExCDATAxSpecial NOTATIONxENTITYxATTLISTxELEMENTxDOCTYPExTokErrorTokNull TokFreeTextTokNameTokQuoteTokComma TokPercentTokPipe TokBraClose TokBraOpenTokHashTokSemiTokAmpTokPlusTokStarTokQueryTokEqual TokSqClose TokSqOpen TokAnyClose TokAnyOpen TokEndClose TokEndOpen TokSpecialTokSpecialOpen TokSectionTokSectionCloseTokSectionOpen TokPIClose TokPIOpenTokCommentCloseTokCommentOpenxmlLexxmlReLexreLexEntityValue StructTypeDefinedString StringMixedAnyOneOfTupleList1List DefaultableMaybe AttrFields ConstructorsTypeDefEnumDefDataDefNamexNamehName ppTypeDefppHNameppXNameppANamenamename_name_aname_acname_fmanglemanglef mkInstanceCDSectCharData SystemLiteral PubidLiteralEVEVRefEVString EntityValueAttValueNmTokensNmTokenNames EncodingDeclPublicIDPUBLICID NotationDeclNOTATIONExtPE ExtParsedEntTextDecl NDataDeclNDATA ExternalIDPUBLICSYSTEMPEDefPEDefExternalIDPEDefEntityValue EntityDef DefExternalIDDefEntityValuePEDeclGEDecl EntityDecl EntityPEDecl EntityGEDecl PEReferenceCharRef EntityRef ReferenceRefChar RefEntityIgnoreSectContentsIgnore IgnoreSect IncludeSectConditionalSectFIXED DefaultDecl DefaultToIMPLIEDREQUIRED Enumeration NotationTypeEnumeratedType TokenizedTypeNMTOKENSNMTOKENENTITIESENTITYIDREFSIDREFIDAttType StringTypeAttDef AttListDeclMixed PCDATAplusPCDATAModifierPlusStarQueryNoneCPSeqChoiceTagName ContentSpecANYEMPTY ElementDeclContentCMiscCRefCStringCElem AttributeElemTagElementElem ExtSubsetDeclExtConditionalSect ExtMarkupDecl ExtSubset MarkupDecl MarkupMiscNotationEntityAttList DocTypeDeclDTDPITargetComment VersionInfoSDDeclProcessingInstructionMiscPIXMLDeclPrologDocumentSymTabemptySTaddSTlookupSTinfo LabelFilterThenElse:>CFilterkeepnonechildrenpositionelmtxttagtagWithattrattrvalfindiffindifTxt?>ounioncatandThen childrenBy|>|withwithout/><+>$$hcathsepvcatsepfsepnest carryscantoWord8RecordRconvertmkData mkAttrDef mkAttrField parseStreamsaxsaxelementopensaxelementclose saxcomment saxchardata saxreferencesaxdoctypedeclsaxprocessinginstruction flatConstr outerHtExpr innerHtExpr constrHtExpr searchMaybeControl.Applicative ApplicativeoptionalliftA3liftA2liftA<**><**><*>puremanysome<|>empty AlternativegetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipList Data.Functor<$>GHC.Base<$ polyparse-1.7!Text.ParserCombinators.Poly.Plain runParser"Text.ParserCombinators.Poly.ParserreparsesatisfyeofnextonFailPParser Text.ParserCombinators.Poly.Base manyFinally' manyFinallybracket bracketSepsepBy1sepBymany1uptoexactlyindentoneOf adjustErrBadfailBaddiscardapplyoneOf' adjustErrcommit Commitment PolyParse"Text.ParserCombinators.Poly.ResultSuccessFailure CommittedResult SimpleDTDelementsrequiredidsidrefs simplifyDTDgivescpErrordisplay duplicatesDoc toXmlLazyunescape parseXtract'numbersymbolquotepamaquerytqueryxtagxquery tpredicate upredicate vpredicate tattribute uattribute vattribute wattributeiindex simpleindexrrange numberdollaridxcommaopnop