} !      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh i j k l m n o p q r s t u v w x y z { | } ~                                   ! " # $ % & ' ( ) * + , - . / 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 l m n o p q r s t u v w x y z { | } ~                                                                                                                               !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG 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 l m n o p q r s t u v w x y z { | } ~       !"#$%&'()*+,-./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)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) ) )  * ******************* ** Safe-Inferred 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.)  !"#$%&' ()*+,-.       !"#$%&' ()*+,-. Safe-Inferred string only (#PCDATA) mixed (#PCDATA | ... )* XML's contentspec allows ANY Non-empty lists. String holds default value.  Bool for main/aux. :Need to keep both the XML and Haskell versions of a name. original XML name !mangled Haskell name #Pretty print Haskell name. $Pretty 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. +(Convert an XML name to a Haskell conid. /GEnsure a generated name does not conflict with a standard haskell one. ,(Convert an XML name to a Haskell varid. 0.Convert colon to prime, hyphen to underscore. ( !"1234#$%5&'()*+/,067 !"#$%&'()*+,"#$% !&'()*+,  !"1234#$%5&'()*+/,067 Safe-Inferred-<Convert typedef to appropriate instance declaration, either  XmlContent,   XmlAttributes, or  XmlAttrType. 89:-;<=>?@ABCDEFG--8:9-;<=>?@ABCDEFG Safe-Inferred.:Source positions contain a filename, line, column, and an = inclusion point, which is itself another source position,  recursively. 2BDummy value for generated data, where a true source position does  not exist. 3posInNewCxt 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. 4CJust used to strictify the internal values of a position, to avoid  space leaks. 51Add n character positions to the given position. 6,Add a newline or tab to the given position. 7,Add a newline or tab to the given position. 85Add the given whitespace char to the given position.  Precondition: white c | isSpace c = True .H/012345678I ./012345678 .3245678/01 .H/012345678I Safe-Inferred%CThe basic token type. Dlexical error E fake token Fany character data Gbegins with letter, no spaces H'' or "" I, J% K| L) M( N# O; P& Q+ R* S? T= U] V[ W  X< Y/> Z</ [DOCTYPE ELEMENT ATTLIST etc \<! ]CDATA INCLUDE IGNORE etc ^]]> _<![ `?> a<? b-> c<!-- d1All tokens are paired up with a source position. / Lexical errors are passed back as a special TokenT value. eThe first argument to e- is the filename (used for source positions, J especially in error messages), and the second is the string content of  the XML file. ff9 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. gg/ 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. C9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdJKLMNOPQRSefgTUVWXYZ[\]/9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg/efgdCcba`_^]\[ZYXWVUTSRQPONMLKJIHGFED=BA@?>9<;:9<;:=BA@?>C cba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDdJLKMNOPQRSefgTUVWXYZ[\]  Safe-Inferredy:Namespaces are not defined in the XML spec itself, but at  http: www.w3.orgTR xml-names }HA QName is a (possibly) qualified name, in the sense of XML namespaces.  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. hijklmnopqrstuvwxyz{|}~^_`abcdehijklmnopqrstuvwxyz{|}~stqrnpolmjk}~yz{|xwvuihOhijklmnpoqrstuvwxyz{|}~^_`abcde  Safe-Inferred (The null Namespace (no prefix, no URI). HEvery Name can be split into a Namespace and local Name. The Namespace  might of course be missing. <Return the (possibly absent) Namespace component of a Name. =Return the local component of a Name, without its Namespace.  @Return the printable string for a Name, i.e. attaching a prefix & for its namespace (if it has one).    splits a Name of the form pr:nm into the  prefix pr and local name nm!, and looks up the prefix in the F given environment to determine its Namespace. There may also be a A default namespace (the first argument) for unqualified names. D In the absence of a default Namespace, a Name that does not have D a prefix remains unqualified. A prefix that is not known in the H environment becomes a fresh namespace with null URI. A Name that is F already qualified is passed unchanged, unless its URI was null, in B which case we check afresh for that prefix in the environment.    has the same signature as  , but ignores the K arguments for default namespace and environment, and simply removes any  pre-existing qualification.   1 converts names to qualified names, except where J an existing qualification matches the default namespace, in which case J the qualification is removed. (This is useful when translating QNames F to Haskell, because Haskell qualified names cannot use the current  module name.)  CThe initial Namespace environment. It always has bindings for the  prefixes xml and xmlns. AAdd a fresh Namespace into the Namespace environment. It is not $ permitted to rebind the prefixes xml or xmlns, but that is not  checked here. @resolveAllNames in a document, causes every name to be properly G qualified with its namespace. There is a default namespace for any J name that was originally unqualified. This is likely only useful when H dealing with parsed document, less useful when generating a document  from scratch.                          Safe-Inferred !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~fg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~stuvwxyz{|}~opqrghijklmncfed]^_`abWXYZ[\PQRSTUVLMNOHIJKFGBEDC.A@?>=<;:9876543210/*-,+)('#&%$ "!0 "!#&%$'()*-,+.A@?>=<;:9876543210/BEDCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcfedghijklmnopqrs tuvwxyz{|}~     fg Safe-InferredDCUltimately, an XML parser will find some plain text as the content H of a simpleType, which will need to be parsed. We use a TextParser, F because values of simpleTypes can also be given elsewhere, e.g. as K attribute values in an XSD definition, e.g. to restrict the permissible J values of the simpleType. Such restrictions are therefore implemented  as layered parsers. |      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFhijklmnopqrstuvwxyz{|}~}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFWDEFABC?@=>78;<}~9:563412/0-.+,)*'(%&#$!"      T      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFhijklmnopqrstuvwxyz{|}~ portable experimentalsimons@cryp.to Safe-InferredG&This class promises that the function H knows how to : format this data type into a string without changing the  formatting. J?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 G data types. GHIJGHIJIGHJ GHIJ  Safe-Inferred(KFA LabelFilter is like a CFilter except that it pairs up a polymorphic + value (label) with each of its results. L+Conjoin the two branches of a conditional. N!All document transformations are content filters.  A filter takes a single XML  value and returns a sequence  of  values, possibly empty. Q?Throw away current node, keep just the (unprocessed) children. R Select the n'"th positional result of a filter. Y!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. Z+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. a*Process children using specified filters. bDirectional choice:  in f |>| g- give g-productions only if no f-productions c Pruning: in f c g, F keep only those f-productions which have at least one g-production d Pruning: in f d g, = keep only those f-productions which have no g-productions e Pronounced slash, f /> g means g inside f f Pronounced outside, f </ g means f containing g g8Join an element-matching filter with a text-only filter h4Express 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. lInterior editing:  f l g applies f only when the predicate g succeeds, ' otherwise the content is unchanged. mInterior editing:  g m f applies f only when the predicate g succeeds, ' otherwise the content is discarded. nBProcess CHildren In Place. The filter is applied to any children F of an element content, and the element rebuilt around the results. oCProcess an element In Place. The filter is applied to the element E itself, and then the original element rebuilt around the results. pARecursive application of filters: a fold-like operator. Defined  as f ] chip (foldXml f). qFBuild an element with the given tag name - its content is the results ! of the given list of filters. r?Build an element with the given name, attributes, and content. sBuild some textual content. tBuild some CDATA content. u5Rename an element tag (leaving attributes in place). v=Replace the attributes of an element (leaving tag the same). wBCompose a label-processing filter with a label-generating filter. x=Combine labels. Think of this as a pair-wise zip on labels.  e.g.  (numbered x tagged) y#Number the results from 1 upwards. zIn 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. 4KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~4KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~4NOPQaRSTUWXVYZ[]^_`bcdefghijklmnopqrstuvLM\Kwxyz{|}~3KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None:XParser is just a specialisation of the PolyState 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. To 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. 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  Right Nothing. 5 If a DTD was found but contains errors, you get a  Left message. 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. EReturn a qualified name (although the namespace qualification is not < processed here; this is merely to get the correct type). 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) ^      !"#$%&'()*+,-./0123^      !"#$%&'()*+,-./0123 Safe-Inferred4456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a4456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a Safe-Inferred Safe-InferredEThe 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. 0bcdefghijklmnopqrstuvwxyz{|}~0bcdefghijklmnopqrstuvwxyz{|}~None?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.  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.  The wrapper  onContent, simply applies a given content filter to a C document. Ambiguous or empty results raise an error exception.  Safe-Inferred Safe-Inferred@@ Safe-InferredNoneEThe 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. .     .      Safe-Inferred1 !"#$%&'()*+,-./0123456789:;<=>?1 !"#$%&'()*+,-./0123456789:;<=>?None>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. EReturn a qualified name (although the namespace qualification is not < processed here; this is merely to get the correct type). 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. A5Return 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) \BCDEFGH@IJKLMNOPQRSTUVWXYZ[\A]^_`abcdefghijklmnopqrstuvwxyz{|}~\BCDEFGH@IJKLMNOPQRSTUVWXYZ[\A]^_`abcdefghijklmnopqrstuvwxyz{|}~None 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.     Safe-Inferred CA NameConverter is a collection of functions that convert an XName G into an HName, for various Haskell namespaces. You can define your C own arbitrary resolver, but should ensure that you abide by the ( Haskell rules for conid, varid, etc. for forward type decls BAn HName is a resolved version of an XName. It should conform to A the various namespace rules, and may already include a module  qualifier if appropriate. BAn XName just holds the original XSD qualified name. It does not G ensure that the string conforms to any rules of the various Haskell G namespaces. Use a NameConverter to define how you would like names  to be mangled. @A simple default set of rules for resolving XNames into HNames. 7Ensure that a string does not match a Haskell keyword. ?A specialised module-name converter for FpML module names with / multiple dashes, including version numbers, I e.g. fpml-dividend-swaps-4-7.xsd becomes FpML.V47.Swaps.Dividend N but fpml-posttrade-execution-4-7.xsd becomes FpML.V47.PostTrade.Execution FChop a list into segments, at separators identified by the predicate. & The separator items are discarded. ?Remove any prefix directory names, and given suffix extension.   Safe-InferredCA 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. ,               $      Safe-Inferred;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 H. 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.) 0DThe most primitive combinator for XMLParser - get one content item. 1GGet 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.) 2A specialisation of posnElementWith (==). 3GGet the next content element, checking that it has one of the required G tags. (Skips over comments and whitespace, rejects text and refs.) 4FLike element, only permits a more flexible match against the tagname. 5GRun 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. 6%A combination of element + interior. 7)A combination of elementWith + interior. 87Do some parsing of the attributes of the given element 99 is a counterpart to 3, 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. E !"#$%&'()*+,-./0123456789:;<=>?@ABCDst      !"#$%&'()*+,-./0123456789:;<=>?@ABCDCst$%&'(!"# )0235698147:;,-+./<=>?@ABCD*8 !"#$%&'()*+,-./0123456789:;<=>?@ABCDNone EARead an XML document from a file and convert it to a fully-typed  Haskell value. F>Write a fully-typed Haskell value to the given file as an XML  document. G>Write any Haskell value to the given file as an XML document, I using the FastPackedString interface (output will not be prettified). H/Read a fully-typed XML document from a string. I>Convert a fully-typed XML document to a string (without DTD). JBConvert a fully-typed XML document to a ByteString (without DTD). KFConvert a fully-typed XML document to a string (with or without DTD). L@Read a Haskell value from an XML document, ignoring the DTD and ? using the Haskell result type to determine how to parse it. M4Read a fully-typed XML document from a file handle. N3Write a fully-typed XML document to a file handle. O=Write a fully-typed XML document to a file handle, using the ? FastPackedString interface (output will not be prettified). EFGHIJKLMNOst      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO KLHIJEFGMNOEFGHIJKLMNONonePP9 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. QQ6 is like validate, except that it does not check that + the element type matches that of the DTD's root element. PQPQPQ PQ Safe-Inferred5RBWe need a Parser monad for reading from a sequence of generic XML D Contents into specific datatypes that model the structure of XSD I descriptions. This is a specialisation of the polyparse combinators,  fixing the input token type. S Lift boolean  over predicates. T1Qualify an ordinary name with the XSD namespace. UFPredicate for comparing against an XSD-qualified name. (Also accepts J unqualified names, but this is probably a bit too lax. Doing it right B would require checking to see whether the current schema module' s default  namespace is XSD or not.) VFGet the next content element, checking that it matches some criterion  given by the predicate. ? (Skips over comments and whitespace, rejects text and refs. ' Also returns position of element.) D The list of strings argument is for error reporting - it usually ' represents a list of expected tags. WDGet the next content element, checking that it has the required tag # belonging to the XSD namespace. X.Get the next content element, whatever it is. Y9Grab and parse any and all children of the next element. ZFRun an XsdParser on the child contents of the given element (i.e. not D in the current monadic content sequence), filtering the children H before parsing, and checking that the contents are exhausted, before E returning the calculated value within the current parser context. [ICheck for the presence (and value) of an attribute in the given element.  Absence results in failure. \=Grab any attributes that declare a locally-used prefix for a  specific namespace. ]APredicate for whether an attribute belongs to a given namespace. ^Tidy up the parsing context. _BGiven a URI for a targetNamespace, and a list of Namespaces, tell 7 me the prefix corresponding to the targetNamespace. `3An auxiliary you might expect to find in Data.List aETurn a qualified attribute value (two strings) into a qualified name J (QName), but excluding the case where the namespace prefix corresponds : to the targetNamespace of the current schema document. bParse a Schema declaration cParse a (possibly missing)  xsd:annotation element. dParse a definitely-occurring  xsd:annotation element. eParse a FormDefault attribute. f"Parse a Final or Block attribute. h-Parse a schema item (just under the toplevel  xsd:schema) i Parse an  xsd:include. j Parse an  xsd:import. kParse a  xsd:redefine. lParse a  xsd:simpleType decl. oParse a  xsd:complexType decl. p$Parse the alternative contents of a  xsd:complexType decl. qParse a particle decl. r0Parse a particle decl with optional attributes. s Parse an  xsd:all,  xsd:choice, or  xsd:sequence decl. tParse a  xsd:group decl. u Parse an  xsd:element,  xsd:group,  xsd:all,  xsd:choice,   xsd:sequence or  xsd:any. v Parse an  xsd:any. w Parse an  xsd:anyAttribute. x Parse an  xsd:attributegroup. y Parse an  xsd:element decl. z Parse name and type attributes. { Parse an  xsd:attribute decl. |<Parse an occurrence range from attributes of given element. }Parse a  xsd:unique,  xsd:key, or  xsd:keyref. ~Parse a  xsd:unique. Parse a  xsd:key. Parse a  xsd:keyref. Parse a  xsd:selector. Parse a  xsd:field. IText parser for a URI (very simple, non-validating, probably incorrect). LText parser for an arbitrary string consisting of possibly multiple tokens. Parse a textual boolean, i.e. true, false, 0, or 1 Parse a use attribute value, i.e. required, optional, or  prohibited Parse a processContents attribute, i.e. skip, lax, or strict. 1Parse an attribute value that should be a QName. 7Parse an attribute value that should be a simple Name. 8RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8STURVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-InferredRestrictions on simpleType EThere are essentially simple types, and complex types, each of which J can be either restricted or extended. There are four kinds of complex M type: choices, sequences, named groups, or a simple element with content. The whole Haskell module. IComments can be attached to most things, but not all of them will exist. 3A helper for building the formal Module structure. 77;  Safe-InferredHVertically pretty-print a list of things, with open and close brackets,  and separators. .Generate aligned haddock-style documentation. - (but without escapes in comment text yet) CGenerate aligned haddock-style docs for choices (where each choice H has its own documentation, but haddock cannot place it directly next ! to the appropriate component. #Pretty-print a Haskell-style name.  Pretty-print an XML-style name. 3Some different ways of using a Haskell identifier. 3Some different ways of using a Haskell identifier. 3Some different ways of using a Haskell identifier. 3Some different ways of using a Haskell identifier. 3Some different ways of using a Haskell identifier. 3Some different ways of using a Haskell identifier. GConvert a whole document from HaskellTypeModel to Haskell source text. 0Generate a fragmentary parser for an attribute. /Generate a fragmentary toXML for an attribute. .Generate a fragmentary parser for an element. EGenerate a fragmentary toXML for an element. Fragment must still be ' applied to an actual element value. @Convert multiple HaskellTypeModel Decls to Haskell source text. 8Convert a single Haskell Decl into Haskell source text. 9Generate an instance of the Extension class for a subtype/supertype pair. ?Generate an instance of the Extension class for a type and its  grand5-supertype, that is, the supertype of its supertype. 4Generate named fields from elements and attributes. DGenerate a single named field (including type sig) from an element. =Generate a single named field (no type sig) from an element. EWhat is the name of the type for an Element (or choice of Elements)? 1Generate a single named field from an attribute. =Generate a list or maybe type name (possibly parenthesised). -Generate a parser for a list or Maybe value. ,Generate a toXML for a list or Maybe value. BEliminate a Maybe type modifier, when it occurs directly inside a K choice construct (since a parsed Nothing would always be preferred over B a real value later in the choice). Likewise, empty lists must  be disallowed inside choice. HSometimes, a choice without a type modifier contains element sequences, M all of which have the same modifier. In that case, it makes sense to lift 6 the modifier (typically Maybe) to the outer layer. HSplit long lines of comment text into a paragraph with a maximum width. %#! Safe-InferredHVertically pretty-print a list of things, with open and close brackets,  and separators. .Generate aligned haddock-style documentation. - (but without escapes in comment text yet) #Pretty-print a Haskell-style name.  Pretty-print an XML-style name. 3Some different ways of using a Haskell identifier. 3Some different ways of using a Haskell identifier. 3Some different ways of using a Haskell identifier. 3Some different ways of using a Haskell identifier. 3Some different ways of using a Haskell identifier. 3Some different ways of using a Haskell identifier. GConvert a whole document from HaskellTypeModel to Haskell source text. 0Generate a fragmentary parser for an attribute. .Generate a fragmentary parser for an element. @Convert multiple HaskellTypeModel Decls to Haskell source text. 8Convert a single Haskell Decl into Haskell source text.  Instances that depend on FwdDecl'"d types, need to be declared in a L different module. So they have been separated out from ppHighLevelDecl. 9Generate an instance of the Extension class for a subtype/supertype pair. ?Generate an instance of the Extension class for a type and its  grand5-supertype, that is, the supertype of its supertype. 4Generate named fields from elements and attributes. /Generate a single named field from an element. EWhat is the name of the type for an Element (or choice of Elements)? 1Generate a single named field from an attribute.  =Generate a list or maybe type name (possibly parenthesised).  -Generate a parser for a list or Maybe value.  HSplit long lines of comment text into a paragraph with a maximum width.           " Safe-Inferred type definitions in scope *all type definitions, regardless of scope supertype -> subtypes substitution groups where type is defined +An empty environment of XSD type mappings. DCombine two environments (e.g. read from different interface files) @Build an environment of XSD type mappings from a schema module. %Find all direct module dependencies.  # Safe-InferredCGiven an environment of schema type mappings, and a schema module, = create a bunch of Decls that describe the types in a more  Haskell-friendly way. ;Consolidate a Facet occurrence into a single Occurs value. 8Find the supertype (if it exists) of a given type name. CKeep applying the function to transform the value, until it yields 9 Nothing. Returns the sequence of transformed values.    $None>Convert a fully-typed XML document to a string (without DTD). FConvert a fully-typed XML document to a string (with or without DTD). A !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRA !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR% Safe-Inferred;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. &None 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). STUVWXYZ[\st      !"#$%&'()*+,-./0123456789:;<=>?@ABCD STUVWXYZ[\' Safe-Inferred=double content filter - takes document root + local subtree. 4lift an ordinary content filter to a double filter. 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 2lift a CFilter combinator to a DFilter combinator (lifted composition over double filters. lifted choice. lifted union. lifted predicates. lifted predicates. lifted unit and zero. lifted unit and zero.                     ( Safe-InferredITo 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.) ] parseXtract'1 returns error messages through the Either type. ^_]`abcdefghijklmnopqrstuvw^_]`abcdefghijklmnopqrstuvw)None<Equivalent to the Either type, but using the regular naming  scheme of this module. FSomewhat of a nonsense - a choice of a single item. But sometimes it " occurs in auto-generated code. " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  xyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  p~}|{zyxwvutsrq_onmlkjihgfedcba`M^]\[ZYXWVUTSRQPON:LKJIHGFEDCBA@?>=<;&9876543210/.-,+*)(' %$#"!  P%$#"! &9876543210/.-,+*)(':LKJIHGFEDCBA@?>=<;M^]\[ZYXWVUTSRQPON_onmlkjihgfedcba`p~}|{zyxwvutsrq       xyz{|}~None The version of the library.  hijklmnopqrstuvwxyz{|}~GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~P   *None  The  xsd:any' type. Parsing will always produce an UnconvertedANY. EA trick to enable forward-declaration of a type that will be defined ? properly in another module, higher in the dependency graph. fd is  a dummy type e.g. the empty  data FwdA, where a is the proper  data A, not yet available. EA type t can restrict another type s, that is, t admits fewer values F than s, but all the values t does admit also belong to the type s. EA type t can extend another type s by the addition of extra elements  and/3or attributes. s is therefore the supertype of t. <A SchemaType promises to interconvert between a generic XML D content tree and a Haskell value, according to the rules of XSD. EGiven a TextParser for a SimpleType, make it into an XMLParser, i.e. @ consuming textual XML content as input rather than a String. =Between is a list parser that tries to ensure that any range @ specification (min and max elements) is obeyed when parsing. Generated parsers will use  as a convenient wrapper 7 to lift a SchemaAttribute parser into an XMLParser. (Parse the textual part of mixed content  KFor a ComplexType that is an extension of a SimpleType, it is necessary to I convert the value to XML first, then add in the extra attributes that  constitute the extension. C   sFGDEF)12359 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     %DEFFG  )21359 =   +,-+,.+,/0123456789:;<=>?@ABCDEFGHIJKLMNOPQQRSTUVWXYZ[\]^_=`abcdefghijklmnopqrs9tuvwxyz{|}~?                 Q                                                                                                                                                         ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6  7  8 9 :   ; < = > ? @ A B C D E F - . G H C I J K L M M N N O P Q Q R S T T U V W X Y Z Z [ \ ] ^ _ _ ` a b c d e f g h h i j k l m n o p q r   s t u v w x y z { | } ~ ~         E E                                                                                              1             QQ??>>??@@AABBCCDDEEFFGG;;<<==H                               ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 :;<=>?@ABCDEXFGHIJKLMNOPQFRJKOSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~FRJKOSsFKO;<=@ABCDEXFGHJKLMNOPQBCGIKHJ-OK    X 89KF !"#$%&'()*+,-.//012345 6 7 8 9 :!6!7!8!9!:";";"<"=">"?"@"A"B"C"D"E"F"G"H"I#J#G#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)l)m)n)o)p)q)r)s)t)u)b)v)w)x)y)z){)|)})~)))))))))))v)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) ) ) ) ) )))))))))))))))))))))) )!)")#)$))%)&)')()))%)*)+),)-)*).)/)0).)1)2)1)3)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)GH*I*J*K*L*M*N**O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\]^fghi_`abcdefghijklmnopqrstuvwxyz{|}~>f]^_e          33333333333333333333333333333p       ! " # $ % &'()*+,-./0 123456789:_;R<=>?@ABCDESFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc32<>A(defgCDFGHIJKLMNPhiRSTUVWX[\Z5_]^a`QIjkl*mnopEX 123456789FGHIR<=>JAKqrstOLPWZ_`aQ3uvxwxyz{|}~32p<>A(defCDFGHIJKLMNPhiRSTUVWX[\Z5_]^a`QIjJkl*nopEX 123456789FGHIR<=>JAKqrstOLPWZ_`aQ32R<>AJ(defCDSFGHIJKLMNPhiRSTUVWX[\Z5_]^a`Q'()*+,-./0 123456789:_;IR<=>?@ABCDESFGHIJKLMNOPQRSTUVWXYZ[\]^_`abco*z{|F3  U V                             !U!V!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$$$$$$p$$3$2$F$R$<$>$A$J$($K$d$e$f$$$O$C$D$S$F$G$H$I$J$K$L$M$$N$P$h$i$R$S$T$U$V$W$X$[$\$Z$5$_$]$^$a$`$Q$I$$j&&&&&& & & & & ((;(( ((((( ((((((((((((( (!("(#($(%)&)')()))*)+),)-).)/)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*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{| HaXml-1.23.3$Text.XML.HaXml.Schema.PrimitiveTypes Text.XML.HaXml.XmlContent.ParserText.XML.HaXmlText.XML.HaXml.Xtract.Lex#Text.XML.HaXml.DtdToHaskell.TypeDef$Text.XML.HaXml.DtdToHaskell.InstanceText.XML.HaXml.PosnText.XML.HaXml.LexText.XML.HaXml.TypesText.XML.HaXml.Namespaces"Text.XML.HaXml.Schema.XSDTypeModelText.XML.HaXml.VerbatimText.XML.HaXml.CombinatorsText.XML.HaXml.ParseText.XML.HaXml.PrettyText.XML.HaXml.Html.GenerateText.XML.HaXml.Html.ParseText.XML.HaXml.WrappersText.XML.HaXml.EscapeText.XML.HaXml.ByteStringPP#Text.XML.HaXml.DtdToHaskell.ConvertText.XML.HaXml.Html.ParseLazyText.XML.HaXml.Html.PrettyText.XML.HaXml.ParseLazyText.XML.HaXml.SAX$Text.XML.HaXml.Schema.NameConversionText.XML.HaXml.TypeMappingText.XML.HaXml.XmlContentText.XML.HaXml.ValidateText.XML.HaXml.Schema.Parse&Text.XML.HaXml.Schema.HaskellTypeModel#Text.XML.HaXml.Schema.PrettyHaskell"Text.XML.HaXml.Schema.PrettyHsBoot!Text.XML.HaXml.Schema.Environment$Text.XML.HaXml.Schema.TypeConversionText.XML.HaXml.ShowXmlLazyText.XML.HaXml.Util!Text.XML.HaXml.XmlContent.Haskell!Text.XML.HaXml.Xtract.CombinatorsText.XML.HaXml.Xtract.ParseText.XML.HaXml.OneOfNText.XML.HaXml.Schema.Schemaghc-prim GHC.TypesDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerbase Data.Maybe catMaybespretty-1.1.1.0Text.PrettyPrint.HughesPJrenderTokenTTokNum TokStringSymbolPosnPnToken lexXtract StructTypeDefinedString StringMixedAnyOneOfTupleList1List DefaultableMaybe AttrFields ConstructorsTypeDefEnumDefDataDefNamexNamehName ppTypeDefppHNameppXNameppANamenamename_name_aname_acname_fmanglemanglef mkInstance posnFilenameposnLine posnColumnnoPos posInNewCxtforcepaddcolnewlinetabwhiteSectionIGNORExINCLUDExCDATAxSpecial NOTATIONxENTITYxATTLISTxELEMENTxDOCTYPExTokErrorTokNull TokFreeTextTokNameTokQuoteTokComma TokPercentTokPipe TokBraClose TokBraOpenTokHashTokSemiTokAmpTokPlusTokStarTokQueryTokEqual TokSqClose TokSqOpen TokAnyClose TokAnyOpen TokEndClose TokEndOpen TokSpecialTokSpecialOpen TokSectionTokSectionCloseTokSectionOpen TokPIClose TokPIOpenTokCommentCloseTokCommentOpenxmlLexxmlReLexreLexEntityValueCDSectCharData SystemLiteral PubidLiteralEVEVRefEVString EntityValueAttValueNmTokensNmTokenNames NamespacensPrefixnsURIQNameQNN 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 nullNamespace expandedName namespaceName localName printableNamequalify deQualifyqualifyExceptLocalinitNamespaceEnvaugmentNamespaceEnvresolveAllNamesTypeNameURIRegexp FixedValue DefaultValueSchemaLocationProcessContentsStrictLaxSkipBlockFinalAllFinal NoRestriction NoExtensionTargetNamespaceQForm Unqualified Qualified Annotation NoAnnotationAppInfo DocumentationFixedNillable MyRestrictionPatternRange PrimitiveTypeAnyURI HexBinary Base64BinaryGMonthGDay GMonthDayGYear GYearMonthDateTimeDateTimeDurationDecimalBooleanUse ProhibitedOptionalRequiredOccursFieldfield_annotation field_xpathSelectorselector_annotationselector_xpathKeyRefkeyref_annotation keyref_name keyref_referkeyref_selector keyref_fieldsKeykey_annotationkey_name key_selector key_fieldsUniqueunique_annotation unique_nameunique_selector unique_fieldsUniqueKeyOrKeyRefKRKU AttributeDeclattr_annotationattr_nameOrRefattr_use attr_defFixed attr_formattr_simpleType NameAndTypeNTtheNametheTypeelem_annotationelem_nameOrRef elem_occurs elem_nillableelem_substGroup elem_abstract elem_final elem_block elem_form elem_content elem_stuff AttrGroupattrgroup_annotationattrgroup_nameOrRefattrgroup_stuffAnyAttranyattr_annotationanyattr_namespaceanyattr_processContentsany_annotation any_namespaceany_processContents any_occurs ElementEtcHasAnyHasCSHasGroup HasElement ChoiceOrSeqSequenceAllGroupgroup_annotationgroup_nameOrRef group_occurs group_stuff ParticleAttrsPAParticle Extensionextension_annotationextension_baseextension_newstuff Restriction1 ComplexItemThisType ci_thistypeComplexContentci_mixed SimpleContent ci_annotationci_stuff ComplexTypecomplex_annotation complex_namecomplex_abstract complex_final complex_block complex_mixedcomplex_content FacetTypeUnorderedMinLengthUnorderedMaxLengthUnorderedLengthUnorderedWhitespaceUnorderedEnumerationUnorderedPatternOrderedNumericFractionDigitsOrderedNumericTotalDigitsOrderedBoundsMaxExclOrderedBoundsMaxInclOrderedBoundsMinExclOrderedBoundsMinInclFacetfacet_facetTypefacet_annotationfacet_facetValue facet_fixed Restriction RestrictType restrict_typerestrict_facets RestrictSim1restrict_annotation restrict_base restrict_r1 SimpleTypeUnionOf simple_unionsimple_membersListOf simple_type Restrictedsimple_annotation simple_name simple_finalsimple_restriction Primitivesimple_primitive SchemaItem SchemaGroupAttributeGroupSchemaAttribute SchemaElementComplexSimpleRedefineImportIncludeSchemaschema_elementFormDefaultschema_attributeFormDefaultschema_finalDefaultschema_blockDefaultschema_targetNamespaceschema_versionschema_namespaces schema_itemsPositiveIntegerPositive UnsignedByteUByte UnsignedShortUShort UnsignedIntUInt UnsignedLongULongNonNegativeIntegerNonNegByteShortLongNegativeIntegerNegativeNonPositiveIntegerNonPosNCNameLanguageNormalizedString Normalized XsdStringacceptingParsersimpleTypeTextVerbatimverbatimqnameverbAttr LabelFilterThenElse:>CFilterkeepnonechildrenpositionelmtxttagtagWithattrattrvalfindiffindifTxt?>ounioncatandThen childrenBy|>|withwithout/><**><*>puremanysome<|>empty AlternativegetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipList Data.Functor<$>GHC.Base<$ polyparse-1.9 Text.Parse allAsString parseLitChar parseFloatparseHexparseOctparseDecparseInt parseSigned enumeration constructorsfieldoptionalParensisWordwordreadsPrecByParsePrec readByParse parseByRead TextParser parseList parsePrecparseParse!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$fVerbatimAttValue$fVerbatimReference$fVerbatimElement$fVerbatimContent$fVerbatimEither$fVerbatimChar $fVerbatim[] myBracket markupdeclSymTabsdebugtoEOFaddPEaddGElookupPE flattenEVnottokfreetextmaybeeitherposnnmtokenfailPfailBadPreport adjustErrPpeRefjustDTDxmldecl versioninfomisc extsubset extsubsetdeclsddecl checkmatch elementdecl contentspecsequencemodifiermixed attlistdeclattdefatttype tokenizedtypeenumeratedtype notationtype defaultdeclconditionalsect newIgnore pereference entitydeclgedeclpedecl entitydefpedef externalid ndatadecltextdecl encodingdecl notationdeclpublicid entityvalueevattvalue systemliteral pubidliteral$fShowModifier$fShowCPisText carryelem carrycontent spancontent entityrefcharrefcontainsDoubleQuoteStackHParsersimplifyselfclosingtagscloseInnerTagscloses closeInnerunparse reformatAttrs reformatTagsGHC.Num-toEscape fromEscapeisEscape FiniteMaplistToFMlookupFM escapeElementescapeAttributesescapeAttValue escapeContentmkEscapeunEscapeElementunEscapeAttributesunEscapeAttValueunEscapeContent unEscapeCharcompressElementcompressAttributescompressAttValuecompressContent<><+>$$hcathsepvcatsepfsepnest carryscantoWord8RecordRmkData mkAttrDef mkAttrField parseStreamsaxsaxelementopensaxelementclose saxcomment saxchardata saxreferencesaxdoctypedeclsaxprocessinginstruction flatConstr outerHtExpr innerHtExpr constrHtExpr $fHTypeable[]$fHTypeableEither$fHTypeableMaybe$fHTypeable(,,,,,,,,,,,,,,)$fHTypeable(,,,,,,,,,,,,,)$fHTypeable(,,,,,,,,,,,,)$fHTypeable(,,,,,,,,,,,)$fHTypeable(,,,,,,,,,,)$fHTypeable(,,,,,,,,,)$fHTypeable(,,,,,,,,)$fHTypeable(,,,,,,,)$fHTypeable(,,,,,,)$fHTypeable(,,,,,)$fHTypeable(,,,,)$fHTypeable(,,,)$fHTypeable(,,)$fHTypeable(,) $fHTypeable()$fHTypeableChar$fHTypeableDouble$fHTypeableFloat$fHTypeableInteger$fHTypeableInt$fHTypeableBool $fEqHType searchMaybe$fXmlContentANYContent$fHTypeableANYContent$fXmlContentList1$fHTypeableList1$fEqANYContent$fShowANYContent$fXmlContent(,,,,,,,,,,,,,,)$fXmlContent(,,,,,,,,,,,,,)$fXmlContent(,,,,,,,,,,,,)$fXmlContent(,,,,,,,,,,,)$fXmlContent(,,,,,,,,,,)$fXmlContent(,,,,,,,,,)$fXmlContent(,,,,,,,,)$fXmlContent(,,,,,,,)$fXmlContent(,,,,,,)$fXmlContent(,,,,,)$fXmlContent(,,,,)$fXmlContent(,,,)$fXmlContent(,,)$fXmlContent(,)$fXmlContentMaybe$fXmlContent[]$fXmlContentChar SimpleDTDelementsrequiredidsidrefs simplifyDTDgivescpErrordisplay duplicatesGHC.ListorppCommentForChoiceppModIdppConIdppVarId ppUnqConId ppUnqVarId ppFwdConIdppAttr toXmlAttrppElem toXmlElem ppExtensionppSuperExtensionppFieldsppFieldElement ppFieldNameppElemTypeNameppFieldAttributeppTypeModifierppElemModifierxmlElemModifier cleanChoicesliftedElemModifier paragraphCommentPositionAfterBefore ppJoinConId ppFieldId uniqueifyppHighLevelInstancesppElementAbstractOfType toXmlLazyDoc$fXmlContentEither$fXmlContent()$fXmlContentDouble$fXmlContentFloat$fXmlContentInteger$fXmlContentInt$fXmlContentBool parseXtract'unescapenumbersymbolquotepamaquerytqueryxtagxquery tpredicate upredicate vpredicate tattribute uattribute vattribute wattributeiindex simpleindexrrange numberdollaridxcommaopnop$fXmlContentOneOf20$fHTypeableOneOf20$fXmlContentOneOf19$fHTypeableOneOf19$fXmlContentOneOf18$fHTypeableOneOf18$fXmlContentOneOf17$fHTypeableOneOf17$fXmlContentOneOf16$fHTypeableOneOf16$fXmlContentOneOf15$fHTypeableOneOf15$fXmlContentOneOf14$fHTypeableOneOf14$fXmlContentOneOf13$fHTypeableOneOf13$fXmlContentOneOf12$fHTypeableOneOf12$fXmlContentOneOf11$fHTypeableOneOf11$fXmlContentOneOf10$fHTypeableOneOf10$fXmlContentOneOf9$fHTypeableOneOf9$fXmlContentOneOf8$fHTypeableOneOf8$fXmlContentOneOf7$fHTypeableOneOf7$fXmlContentOneOf6$fHTypeableOneOf6$fXmlContentOneOf5$fHTypeableOneOf5$fXmlContentOneOf4$fHTypeableOneOf4$fXmlContentOneOf3$fHTypeableOneOf3$fXmlContentOneOf2$fHTypeableOneOf2$fXmlContentOneOf1$fHTypeableOneOf1$fSchemaTypePositiveInteger$fSchemaTypeUnsignedByte$fSchemaTypeUnsignedShort$fSchemaTypeUnsignedInt$fSchemaTypeUnsignedLong$fSchemaTypeNonNegativeInteger$fSchemaTypeByte$fSchemaTypeShort$fSchemaTypeInt$fSchemaTypeLong$fSchemaTypeNegativeInteger$fSchemaTypeNonPositiveInteger$fSchemaTypeInteger$fSchemaTypeNMTOKENS$fSchemaTypeNMTOKEN$fSchemaTypeENTITIES$fSchemaTypeENTITY$fSchemaTypeIDREFS$fSchemaTypeIDREF$fSchemaTypeID$fSchemaTypeNCName$fSchemaTypeName$fSchemaTypeLanguage$fSchemaTypeToken$fSchemaTypeNormalizedString$fSchemaTypeGMonth$fSchemaTypeGDay$fSchemaTypeGMonthDay$fSchemaTypeGYear$fSchemaTypeGYearMonth$fSchemaTypeDate$fSchemaTypeTime$fSchemaTypeDateTime$fSchemaTypeDuration$fSchemaTypeNOTATION$fSchemaTypeAnyURI$fSchemaTypeDouble$fSchemaTypeDecimal$fSchemaTypeFloat$fSchemaTypeHexBinary$fSchemaTypeBase64Binary$fSchemaTypeBool$fSchemaTypeXsdString$fSchemaTypeAnyElement$fEqAnyElement$fShowAnyElement